1234567891011121314151617181920212223242526272829 |
- #pragma once
- #include <mutex>
- #include <map>
- #include <memory>
- #include <IGenerator.h>
- #define REGISTER(CLASS) registerGenerator<CLASS>(#CLASS);
- namespace mdd {
- class Registration {
- private:
- std::map<std::string, std::shared_ptr<IGenerator>> _gens;
- //std::mutex _mutex;
- public:
- template<class MODULE_CLASS>
- void registerGenerator(const std::string& name) {
- auto generator = std::make_shared<Generator<MODULE_CLASS>>();
- if (generator != nullptr)
- {
- //_mutex.lock();
- _gens[name] = generator;
- //_mutex.unlock();
- }
- }
- Registration();
- IModule::Ptr generateModule(const std::string& name);
- };
- }
|