PROBLEM
Currently our configuration files tend to contain a comprehensive list of all available properties for all the components that are used.
This serves somehow as a documentation for the user, letting him know what are the available properties with their types.
This has a significant maintenance cost when the module components evolves (add/remove/rename properties).
But this is the only way for us to let the user know about the properties in a convenient manner, apart from documenting them in the component header file (which we do), or in a textual documentation shipped with the component.
All these solutions have the same maintenance issue.
SUGGESTED SOLUTIONS
It'd be nice if we could have only one source of truth, the source code.
It appears that the xpcfcli project does just that.
This could allow us to reduce the size of our configuration files, and give a user a way to update its configuration file without having access to the source (since the definition of the module properties is done in the .cpp file).
I gave it a try on on of our modules, but it crashed after having partially produced an xml output of the component list:
xpcfcli: ../../.conan/data/boost/1.78.0/_/_/package/9c097173c769786802e85151204758f1f62f461f/include/boost/smart_ptr/shared_ptr.hpp:786: typename boost::detail::sp_member_access<T>::type boost::shared_ptr<T>::operator->() const [with T = org::bcom::xpcf::IPropertyManager; typename boost::detail::sp_member_access<T>::type = org::bcom::xpcf::IPropertyManager*]: Assertion `px != 0' failed.
Aborted
So I guess this project might need an update.
We coud use it to dump a configuration file template for the all modules for example, filter components by name to get a template with only the one we intend to use in a given app, or find other usage to be determine.