API review
Proposer: Mirza
Present at review:
- Tully
- William
- Dirk
- Mirza
Question / concerns / comments
Issue in c++ name mangling is not standard across compilers
4 options:
Just open and call known methods in a library
No way to easily introspect a library
Need 1 well known function
- uses extern c to avoid mangling, poco_build_manifest()
- Poco poco_build_manifest inserts factories for each class registered by a macro system. connecting class name to factory.
- two other libraries do the same thing.
- this require macros declared in one place, standard practice is to put all macros in a single file
current implementation
- Poco named manifests
- poco_build_manifest_FOO
- need the name from the xml files in the manifest
Ioan's approach
- Create a proxy class
- library links against it
- contains registry of plugins
- In your cpp file you call your macro, the macro creates a constructor, which registers it with the proxy library
- a static global variable is instantiated to force loading
- Issues:
- cleaning up on unload
- do we do one proxy for all plugins
- aggregate at pluginlib
- want to avoid symbol visibility to protect from unload failures
- possibly a header only implementation
Meeting agenda
To be filled out by proposer based on comments gathered during API review period
Conclusion
We're going to try to continue with Ioan's approach.
- {x} Might be able to keep API compatiability for pluginlib MACROS, might deprecate one of the arguments as it's now unnecessary. Provides easy migration.