Initial
This commit is contained in:
parent
d4c558a59a
commit
db05d963be
74 changed files with 4473 additions and 3231 deletions
81
BaseModule/private/BaseModule.cpp
Normal file
81
BaseModule/private/BaseModule.cpp
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
|
||||
#include "BaseModule.hpp"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
using namespace tp;
|
||||
|
||||
static bool init(const ModuleManifest* self) {
|
||||
gEnvironment.log();
|
||||
return true;
|
||||
}
|
||||
|
||||
static ModuleManifest* deps[] = { nullptr };
|
||||
ModuleManifest tp::gModuleBase = ModuleManifest("Common", init, nullptr, deps);
|
||||
|
||||
ModuleManifest::ModuleManifest(const char* aModuleName, ModuleInit aInit, ModuleDeinit aDeinit, ModuleManifest** aDependencies) {
|
||||
mInit = aInit;
|
||||
mDeinit = aDeinit;
|
||||
mDependencies = aDependencies;
|
||||
mModuleName = aModuleName;
|
||||
}
|
||||
|
||||
bool ModuleManifest::isInitialized() const {
|
||||
return mInitialized;
|
||||
}
|
||||
|
||||
bool ModuleManifest::initialize() {
|
||||
|
||||
mInitCount++;
|
||||
|
||||
if (isInitialized()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
mInitialized = true;
|
||||
|
||||
for (auto module = mDependencies; module && *module; module++) {
|
||||
mInitialized &= (*module)->initialize();
|
||||
}
|
||||
|
||||
std::cout << "====== Initializing \"" << mModuleName << "\"\n";
|
||||
|
||||
if (mInit) mInitialized &= mInit(this);
|
||||
|
||||
if (!mInitialized) {
|
||||
std::cout << "Failed to Initialize.\n";
|
||||
}
|
||||
|
||||
return mInitialized;
|
||||
}
|
||||
|
||||
void ModuleManifest::deinitialize() {
|
||||
mInitCount--;
|
||||
|
||||
if (mInitCount > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isInitialized()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mDeinit) mDeinit(this);
|
||||
mInitialized = false;
|
||||
|
||||
auto len = 0;
|
||||
for (auto module = mDependencies; module && *module; module++) {
|
||||
len++;
|
||||
}
|
||||
|
||||
for (auto i = 0; i < len; i++) {
|
||||
auto module = mDependencies + (len - i - 1);
|
||||
if ((*module)->isInitialized()) {
|
||||
(*module)->deinitialize();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const char *ModuleManifest::getName() const {
|
||||
return mModuleName;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue