#pragma once #include "CFactoryInitterBase.h" #include "CObjectFactory.h" #include #include "U_Macros.h" template class CFactoryInitter : public CFactoryInitterBase { public: CFactoryInitter() = delete; CFactoryInitter(std::string _name, CObjectFactory* factory = nullptr) { m_name = _name; m_factory = factory; if constexpr (!early) { Initters.push_back(this); } else { EarlyInitters.push_back(this); } } CFactoryInitter(std::string _name, std::function*)> func) { m_name = _name; m_factory = nullptr; PreProcess = func; if constexpr (!early) { Initters.push_back(this); } else { EarlyInitters.push_back(this); } } void Process() override { if (PreProcess) { PreProcess(this); } if (m_factory) { m_factory->template add(m_name); } } std::function*)> PreProcess; CObjectFactory* m_factory = nullptr; };