feat: AbstractTask新增附加已有插件、插件查找 (#9816)

* feat: 新增插件查找

* feat: AbstractTask增加附加已有插件

* perf: attach -> append
This commit is contained in:
status102
2024-07-22 16:28:33 +08:00
committed by GitHub
parent 8d75c42adc
commit 7ee9415863

View File

@@ -47,6 +47,25 @@ namespace asst
m_plugins.emplace_back(plugin);
return plugin;
}
template <typename PluginType>
requires std::derived_from<PluginType, AbstractTaskPlugin> // Plugin must inherit AbstractTaskPlugin
void append_plugin(const std::shared_ptr<PluginType>& plugin)
{
m_plugins.emplace_back(plugin);
}
template <typename PluginType>
requires std::derived_from<PluginType, AbstractTaskPlugin>
std::shared_ptr<PluginType> find_plugin()
{
for (const auto& plugin : m_plugins) {
if (auto ptr = std::dynamic_pointer_cast<PluginType>(plugin)) {
return ptr;
}
}
return nullptr;
}
void clear_plugin() noexcept;
bool get_enable() const noexcept { return m_enable; }