Pregunta

Tengo una aplicación que usa Boost.Program_options para almacenar y administrar sus opciones de configuración. Actualmente nos estamos alejando de los archivos de configuración y en su lugar estamos usando la configuración cargada de la base de datos. He escrito una API que lee las opciones de configuración de la base de datos por nombre de host y nombre de instancia. (¡genial!) Sin embargo, hasta donde puedo ver, no hay forma de insertar manualmente estas opciones en las opciones_programación de impulso. ¿Alguien ha usado esto antes, alguna idea? Los documentos de boost parecen indicar que la única forma de obtener cosas en ese mapa es mediante la función store, que se lee desde la línea de comandos o el archivo de configuración (no es lo que quiero). Básicamente, busca una forma de insertar manualmente los valores de lectura de DB en el mapa.

¿Fue útil?

Solución

Mi respuesta llega un poco tarde, pero pasé un tiempo tratando de hacer algo similar y encontré una solución molestamente obvia (en caso de que alguien más esté buscando esto) ...

Recordando que boost::program_options::variables_map se deriva de std::map<std::string, boost::program_options::variable_value>, puede hacer un procesamiento de mapa STL perfectamente legal que incluye una inserción ...

namespace po = boost::program_options;
po::variables_map vm;
vm.insert(std::make_pair("MyNewEmptyOption", po::variable_value());
vm.insert(std::make_pair("MyNewIntOption", po::variable_value(32, false));
po::notify(vm);

-Edmond-

Otros consejos

¿Has mirado las funciones extra_parser o allow_unregistered de Boost::Program_Options? Dependiendo exactamente de cómo funciona su programa, uno o ambos deberían ser capaces de soportar lo que desea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top