// Copyright (C) 2024-2026 Petr Mironychev // SPDX-License-Identifier: GPL-3.0-or-later #include "ProviderFactory.hpp" #include namespace QodeAssist::Providers::ProviderFactory { namespace { QHash &table() { static QHash t; return t; } } // namespace void registerType(const QString &name, FactoryFn fn) { if (name.isEmpty() || !fn) return; table().insert(name, std::move(fn)); } Provider *create(const QString &name, QObject *parent) { auto it = table().constFind(name); if (it == table().constEnd()) return nullptr; return it.value()(parent); } QStringList knownNames() { return table().keys(); } void clear() { table().clear(); } } // namespace QodeAssist::Providers::ProviderFactory