Mana
Plugin.h
Go to the documentation of this file.
1 
8 #pragma once
9 #include "common/Setup.h"
10 #include <string>
11 #include <memory>
12 #include <vector>
13 
14 namespace mana
15 {
16  class VM;
17 
19  {
20 #if defined(MANA_TARGET_WINDOWS)
21  using MODULE = HMODULE;
22 #else
23  using MODULE = void*;
24 #endif
25 
26  public:
27  explicit Plugin(const std::shared_ptr<VM>& vm);
28 
29  virtual ~Plugin();
30 
31  void Load(const std::string& fileName);
32  void Register(const std::string& directoryName);
33 
34  private:
35  std::vector<MODULE> mPlugins;
36  std::weak_ptr<VM> mVM;
37  };
38 }
39 
40 #include "Plugin.inl"
Definition: Plugin.h:19
void Register(const std::string &directoryName)
Definition: Plugin.inl:88
Plugin(const std::shared_ptr< VM > &vm)
Definition: Plugin.inl:42
virtual ~Plugin()
Definition: Plugin.inl:47
void Load(const std::string &fileName)
Definition: Plugin.inl:64
Definition: CodeBuffer.cpp:12
Definition: Noncopyable.h:18