Extra2D/src/module/module_registry.cpp

30 lines
739 B
C++
Raw Normal View History

#include <module/module_registry.h>
#include <algorithm>
namespace extra2d {
ModuleRegistry& ModuleRegistry::instance() {
static ModuleRegistry instance;
return instance;
}
std::vector<std::unique_ptr<Module>> ModuleRegistry::createModules() {
// 按优先级排序(值小的先初始化)
std::vector<ModuleInfo> sorted = registrations_;
std::sort(sorted.begin(), sorted.end(),
[](const ModuleInfo& a, const ModuleInfo& b) {
return a.priority < b.priority;
});
std::vector<std::unique_ptr<Module>> modules;
modules.reserve(sorted.size());
for (const auto& info : sorted) {
modules.push_back(info.factory());
}
return modules;
}
} // namespace extra2d