#include #include namespace extra2d { ModuleRegistry& ModuleRegistry::instance() { static ModuleRegistry instance; return instance; } std::vector> ModuleRegistry::createModules() { // 按优先级排序(值小的先初始化) std::vector sorted = registrations_; std::sort(sorted.begin(), sorted.end(), [](const ModuleInfo& a, const ModuleInfo& b) { return a.priority < b.priority; }); std::vector> modules; modules.reserve(sorted.size()); for (const auto& info : sorted) { modules.push_back(info.factory()); } return modules; } void ModuleRegistry::storeModuleInstance(Module* module) { if (!module) return; // 通过模块名称查找对应的注册信息 for (const auto& info : registrations_) { if (info.name == module->getName()) { // 使用注册时存储的 type 作为键 instances_[info.type] = module; return; } } } void ModuleRegistry::clearInstances() { instances_.clear(); } } // namespace extra2d