CyberEngineMkIII
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
CYBModuleManager.hpp
Go to the documentation of this file.
1 #pragma once
3 namespace CYB {
4  namespace Platform {
5  namespace Modules {
7  class Manager {
8  ENABLE_TEST_HOOKS
9  private:
17  template <typename AAutoModule> auto GetAutoModule(void) noexcept -> AAutoModule*;
24  template <typename AAutoModule> void LoadAutoModule(void) noexcept;
31  template <typename AAutoModule> void UnloadAutoModule(void) noexcept;
32 
41  template <typename AAutoModule> bool LoadedInternal(void) const noexcept;
42  private:
44  //Windows
45  REQUIRED_MODULE_FIELD(Kernel32);
46  REQUIRED_MODULE_FIELD(Kernel32Extended);
47  REQUIRED_MODULE_FIELD(Shell);
48  REQUIRED_MODULE_FIELD(Ole32);
49  REQUIRED_MODULE_FIELD(ShellAPI);
50 
51  //Posix
52  REQUIRED_MODULE_FIELD(LibC);
53  REQUIRED_MODULE_FIELD(PThread);
54 
55  //Linux
56  REQUIRED_MODULE_FIELD(RT);
57 
58  //OSX
59  REQUIRED_MODULE_FIELD(System);
60  REQUIRED_MODULE_FIELD(DyLD);
62  public:
68  Manager();
74  ~Manager();
75 
77  template <typename AIndexClass, typename... AArgs> auto Call(AArgs&&... AArguments);
78 
87  template <template <bool AOptionalFunctions, unsigned int AN, typename... AFunctionTypes> class AAutoModule> bool Loaded(void) const noexcept;
89  template <typename AIndexClass> bool Loaded(void) noexcept;
90  };
91  };
92  };
93 };
94 
95 #include "CYBModuleManager.inl"
~Manager()
For unloading optional AutoModules.
bool LoadedInternal(void) const noexcept
Check if an AutoModule is loaded.
bool Loaded(void) const noexcept
Check if an AutoModule is loaded.
Manager()
For loading optional AutoModules.
auto GetAutoModule(void) noexcept-> AAutoModule *
Get a pointer to the requested AutoModule.
void UnloadAutoModule(void) noexcept
Unoad the requested optional AutoModule. Should be alternated with calls to LoadAutoModule<AAutoModul...
Encapsulates the engine's loaded modules.
auto Call(AArgs &&...AArguments)
Call a loaded function.
void LoadAutoModule(void) noexcept
Load the requested optional AutoModule. Should be alternated with calls to UnloadAutoModule<AAutoModu...