plugify 1.2.8
Loading...
Searching...
No Matches
language_module.hpp
1#pragma once
2
3#include <memory>
4#include <string>
5#include <vector>
6
7#include "plugify/mem_addr.hpp"
8#include "plugify/method.hpp"
9#include "plugify/types.hpp"
10
11namespace plugify {
12 class Extension;
13 class Provider;
14
21 struct InitData {
22 MethodTable table;
23 };
24
32 struct LoadData {
33 std::vector<MethodData> methods;
36 };
37
46 protected:
47 ~ILanguageModule() = default;
48
49 public:
56 virtual Result<InitData> Initialize(const Provider& provider, const Extension& module) = 0;
57
61 virtual void Shutdown() = 0;
62
67 virtual void OnUpdate(std::chrono::milliseconds deltaTime) = 0;
68
72 // virtual void OnPluginInitialize(const Extension& plugin) = 0;
73
79 virtual Result<LoadData> OnPluginLoad(const Extension& plugin) = 0;
80
85 virtual void OnPluginStart(const Extension& plugin) = 0;
86
92 virtual void OnPluginUpdate(const Extension& plugin, std::chrono::milliseconds deltaTime) = 0;
93
98 virtual void OnPluginEnd(const Extension& plugin) = 0;
99
104 virtual void OnMethodExport(const Extension& plugin) = 0;
105
110 virtual bool IsDebugBuild() = 0;
111 };
112} // namespace plugify
Interface for user-implemented language modules.
virtual bool IsDebugBuild()=0
Determine if language module is build with debugging mode.
virtual void OnMethodExport(const Extension &plugin)=0
Handle method export event.
virtual Result< LoadData > OnPluginLoad(const Extension &plugin)=0
Handle plugin load event.
virtual Result< InitData > Initialize(const Provider &provider, const Extension &module)=0
Initialize the language module.
virtual void Shutdown()=0
Shutdown the language module.
virtual void OnUpdate(std::chrono::milliseconds deltaTime)=0
Handle actions to be performed on each frame.
virtual void OnPluginEnd(const Extension &plugin)=0
Handle plugin end event.
virtual void OnPluginStart(const Extension &plugin)=0
Handle plugin start event.
virtual void OnPluginUpdate(const Extension &plugin, std::chrono::milliseconds deltaTime)=0
Handle plugin update event.
A wrapper class for memory addresses, providing utility functions for pointer manipulation.
Definition mem_addr.hpp:12
Holds information about the initialization result.
Holds information about the load result.
std::vector< MethodData > methods
Methods exported by the loaded plugin.
MemAddr data
Data associated with the loaded plugin.
MethodTable table
Method table for the loaded plugin.
Represents a table of method availability flags.
Definition method.hpp:71