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