12GX_CORE_NAMESPACE_BEGIN()
35 SEQUENTIAL_THREAD_SAFE,
53 virtual b32 initialize(
const GxClassBase* pInitialiInformation =
nullptr);
55 virtual void terminate(
void);
58 void terminateGxModules(
void);
67 virtual void update(
void);
70 void lock(LOCK_TYPE type = LOCK_TYPE::THREAD_SAFE);
72 void unlock(LOCK_TYPE type = LOCK_TYPE::THREAD_SAFE);
82 for (
auto* pModule : *_pModules)
84 if (
static_cast<GxModSysBase*
>(pModule)->getRtti().isDerived(T::GX_RTTI)
85 || T::GX_RTTI.isDerived(
static_cast<GxModSysBase*
>(pModule)->getRtti()))
87 GX_ERROR(
false,
"Module(%s) is already craeted", T::GX_RTTI.getName());
92 if (getRtti().isDerived(T::getOwnerDerivedRtti()))
94 auto pModule =
static_cast<T*
>(T::GX_RTTI.GX_CREATE_INSTANCE());
95 GX_ASSERT(pModule,
"Module(%s) create error", T::GX_RTTI.getName());
96 pModule->setOwner(
this);
97 _pModules->addBottom(pModule);
108 for (u32 i = 0; i < _pModules->getCount(); i++)
110 auto* pModule =
static_cast<GxModSysBase*
>((*_pModules)[i]);
111 if (pModule->getRtti() == T::GX_RTTI)
113 _pModules->remove(i);
114 GX_SAFE_DELETE(pModule);
124 void sleep(f32 time);
137 for (
auto* pModule : *_pModules)
139 if (
static_cast<GxModSysBase*
>(pModule)->getRtti() == T::GX_RTTI)
141 return static_cast<T*
>(pModule);
190GX_CORE_NAMESPACE_END()
#define GX_PROHIBIT_COPY(__CLASS__)
コピー禁止
Definition GxBase.h:233
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
配列クラス
Definition GxArrayClassBase.h:18
オブジェクト基底クラス
Definition GxBase.h:88
クリティカルセクションクラス
Definition GxThread.h:20
システムモジュール基礎クラス
Definition GxModSysBase.h:20
スコープ内システムロッククラス
Definition GxSysBase.h:164
GxScopeLock(GxSysBase *pSystem, GxSysBase::LOCK_TYPE type=LOCK_TYPE::THREAD_SAFE)
コンストラクタ
Definition GxSysBase.h:171
virtual ~GxScopeLock(void)
デストラクタ
Definition GxSysBase.h:173
システム基底クラス
Definition GxSysBase.h:18
void unlock(LOCK_TYPE type=LOCK_TYPE::THREAD_SAFE)
クリティカルセクションを出る
Definition GxSysBase.cpp:123
~GxSysBase(void) override
デストラクタ
Definition GxSysBase.h:50
void removeModule(void)
モジュールを削除
Definition GxSysBase.h:104
T * getModule(void) const
モジュールを取得
Definition GxSysBase.h:133
T * addModule(void)
モジュールを作成
Definition GxSysBase.h:75
LOCK_TYPE
ロックタイプ
Definition GxSysBase.h:34
void lock(LOCK_TYPE type=LOCK_TYPE::THREAD_SAFE)
クリティカルセクションに入る
Definition GxSysBase.cpp:94
GxSysBase(void)
デフォルトコンストラクタ
Definition GxSysBase.h:48
32bitブーリアン
Definition GxDefine.h:173