Because different extension objects may be configured to run in different processes, I needed a way to determine what extensions were available to the extension factory in a process. I took advantage of run-time initialization to register extension creators with the extension factory singleton. By merely linking different object files in the executable, different extensions are available. H describes a generic extension. H is the singleton extension factory residing in a process.
C implements the extension factory.
H contains the abstract interface for creating extensions. In addition, there's a templated class that simplifies registering of new extension creators with the extension factory.