2026-02-28 20:56:11 +08:00
|
|
|
#include <module/module_registry.h>
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
|
|
|
|
|
namespace extra2d {
|
|
|
|
|
|
2026-02-28 23:35:34 +08:00
|
|
|
ModuleRegistry& ModuleRegistry::instance() {
|
|
|
|
|
static ModuleRegistry instance;
|
|
|
|
|
return instance;
|
2026-02-28 20:56:11 +08:00
|
|
|
}
|
|
|
|
|
|
2026-02-28 23:35:34 +08:00
|
|
|
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;
|
|
|
|
|
});
|
2026-02-28 20:56:11 +08:00
|
|
|
|
2026-02-28 23:35:34 +08:00
|
|
|
std::vector<std::unique_ptr<Module>> modules;
|
|
|
|
|
modules.reserve(sorted.size());
|
2026-02-28 20:56:11 +08:00
|
|
|
|
2026-02-28 23:35:34 +08:00
|
|
|
for (const auto& info : sorted) {
|
|
|
|
|
modules.push_back(info.factory());
|
2026-02-28 20:56:11 +08:00
|
|
|
}
|
|
|
|
|
|
2026-02-28 23:35:34 +08:00
|
|
|
return modules;
|
2026-02-28 20:56:11 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // namespace extra2d
|