0xd34df00d
16.06.2012 14:33 Azoth_primary
Объебался и обрабатываю различные виды тегов (хендлеры которых наследуются от одного базового класса) через Boost.MPL. Этакая диспетчеризация по типу в рантайме. Получилось, ИМХО, няшно:
код инициализации обработки → http://codepad.org/kJrw7cYN
сам обработчик → http://codepad.org/mtMxXl5X
заебато выглядит. Непонятно только, что это за IF_ и как оно вообще, блядь, работает.
В обработчик передается функтор, добавляющий инфу куда надо, называется F_. Он принимает две строки. Чтобы не конвертировать постоянно число в строку руками, я сделал функтор-адаптер над F_ и обозвал его IF_, который принимает строку и число — название поля и его значение (типа числа каналов).