SDXFrameWork  0.04
SDXFrameWork
 全て クラス ネームスペース 関数 変数 ページ
Module.h
1 #pragma once
2 #include <memory>
3 #include <functional>
4 
5 namespace SDX
6 {
9 class IModule
10 {
11  public:
12  virtual void Update() = 0;
13 };
14 
17 class PartTimeModule : public IModule
18 {
19  private:
20  std::list< std::shared_ptr<IModule> > modules;
21  std::function<bool()> judge;
22  public:
23  PartTimeModule(IModule *module , std::function<bool()> judge) :
24  judge(judge)
25  {
26  this->Add( module );
27  }
28 
29  void Update()
30  {
31  if( !judge() ) return;
32 
33  for( auto &it : modules )
34  {
35  it->Update();
36  }
37  };
38 
39  void Add( IModule *module )
40  {
41  this->modules.push_back( std::shared_ptr<IModule>(module) );
42  }
43 };
44 
47 class FuncModule : public IModule
48 {
49  private:
50  std::function<void()> func;
51  public:
52  FuncModule( std::function<void()> func):
53  func(func)
54  {}
55 
56  void Update()
57  {
58  func();
59  }
60 };
61 
62 }
関数オブジェクトをモジュール化するクラス
Definition: Module.h:47
Exeモジュールのインターフェース
Definition: Module.h:9
ラムダ式で実行条件を追加可能なモジュール
Definition: Module.h:17