plugify 1.0.0.0
Loading...
Searching...
No Matches
plugin_manager.hpp
1#pragma once
2
3#include <cstdint>
4#include <string>
5#include <filesystem>
6#include <functional>
7
8#include "date_time.hpp"
9
10#include <plugify_export.h>
11
12namespace plugify {
13 class ModuleHandle;
14 class PluginHandle;
15 class PluginReferenceDescriptorHandle;
16
20 using UniqueId = std::ptrdiff_t;
21
27 public:
28 virtual ~IPluginManager() = default;
29
34 virtual bool Initialize() = 0;
35
39 virtual void Terminate() = 0;
40
45 virtual bool IsInitialized() const = 0;
46
51 virtual void Update(DateTime dt) = 0;
52
58 virtual ModuleHandle FindModule(std::string_view moduleName) const = 0;
59
65 virtual ModuleHandle FindModuleFromId(UniqueId moduleId) const = 0;
66
72 virtual ModuleHandle FindModuleFromLang(std::string_view moduleLang) const = 0;
73
79 virtual ModuleHandle FindModuleFromPath(const std::filesystem::path& moduleFilePath) const = 0;
80
85 virtual std::vector<ModuleHandle> GetModules() const = 0;
86
92 virtual PluginHandle FindPlugin(std::string_view pluginName) const = 0;
93
99 virtual PluginHandle FindPluginFromId(UniqueId pluginId) const = 0;
100
106 virtual PluginHandle FindPluginFromDescriptor(const PluginReferenceDescriptorHandle & pluginDescriptor) const = 0;
107
112 virtual std::vector<PluginHandle> GetPlugins() const = 0;
113 };
114} // namespace plugify
Interface for the plugin manager provided to the user, implemented in the core.
virtual bool Initialize()=0
Initialize the plugin manager.
virtual PluginHandle FindPluginFromId(UniqueId pluginId) const =0
Find a plugin by unique identifier.
virtual ModuleHandle FindModuleFromPath(const std::filesystem::path &moduleFilePath) const =0
Find a module by file path.
virtual ModuleHandle FindModuleFromLang(std::string_view moduleLang) const =0
Find a module by language.
virtual void Update(DateTime dt)=0
Updates the package manager.
virtual ModuleHandle FindModuleFromId(UniqueId moduleId) const =0
Find a module by unique identifier.
virtual std::vector< ModuleHandle > GetModules() const =0
Get a vector of handles to all modules.
virtual void Terminate()=0
Terminate the plugin manager.
virtual std::vector< PluginHandle > GetPlugins() const =0
Get a vector of handles to all plugins.
virtual bool IsInitialized() const =0
Check if the plugin manager is initialized.
virtual PluginHandle FindPluginFromDescriptor(const PluginReferenceDescriptorHandle &pluginDescriptor) const =0
Find a plugin by its descriptor.
virtual PluginHandle FindPlugin(std::string_view pluginName) const =0
Find a plugin by name.
virtual ModuleHandle FindModule(std::string_view moduleName) const =0
Find a module by name.
Handle wrapper to access language module's information.
Definition module.hpp:39
Handle wrapper to access plugin's information.
Definition plugin.hpp:46
A handle class for the PluginReferenceDescriptor structure.