Управление контекстом инициализации «трамплинных» библиотек
По работе часто приходится писать вещи, чем-то похожие на glew.
То есть, необходимо работать с динамически-загружаемыми библиотеками, используя указатели на ее функции, посредством вызова пары функций вроде dlopen/dlsym для сабжа или LoadLibrary / GetProcAddress для оффтопика.
Например, в такой способ организована в боевом коде работа с OpenCL ICD, NVML, NVRTC, CUDA Driver API итд.
Хотелось бы организовать некий «контекст инициализации», то есть вызывать dlsym не для всех функций спецификации OpenCL 1.2, а только тех, которые потом используются приложением.
Если вы знаете примеры программ в которых организована такая ‘хотелка’, или сами делали что-то подобное - поделитесь опытом.
В данный момент думаю в качестве «объекта контекста инициализации» использовать ассоциативный массив вроде ID -> имя_нужной_функции.
Интересует также способы как-то автоматизировать парсинг клиентского кода, для того чтоб правильно сформировать этот ассоциативный массив (контекст инициализации).
Может вы знаете литературу в которой описано что-то подходящее, потому как городить Visitor из банды 4х или из Александресочки кажется небольшим оверкилом.