6#include <albert/export.h>
46 template<
typename T> std::map<QString, T*>
extensions()
const
48 std::map<QString, T*> results;
49 for (
auto &[
id, extension] : extensions_)
50 if (T *t =
dynamic_cast<T*
>(extension))
51 results.emplace(
id, t);
58 template<
typename T> T*
extension(
const QString &
id)
const
61 return dynamic_cast<T*
>(extensions_.at(
id));
62 }
catch (
const std::out_of_range &) {
81 std::map<QString,Extension*> extensions_;
The common extension pool.
Definition extensionregistry.h:23
std::map< QString, T * > extensions() const
Get map of all extensions of type T.
Definition extensionregistry.h:46
bool registerExtension(Extension *)
Add extension to the registry.
T * extension(const QString &id) const
Get extension by id implicitly dynamic_cast'ed to type T.
Definition extensionregistry.h:58
void deregisterExtension(Extension *)
Remove extension from the registry.
const std::map< QString, Extension * > & extensions() const
Get map of all registered extensions.
void added(albert::Extension *)
Emitted when an extension has been registered.
void removed(albert::Extension *)
Emitted when an extension has been deregistered.
Abstract extension class.
Definition extension.h:19