This commit is contained in:
IlushaShurupov 2023-07-16 18:28:24 +03:00 committed by Ilya Shurupov
parent f91b45643d
commit 53aa0e34a8
24 changed files with 116 additions and 110 deletions

View file

@ -24,7 +24,7 @@ bool ModuleManifest::isInitialized() const {
return mInitialized;
}
bool ModuleManifest::initialize() {
bool ModuleManifest::initialize(const ModuleManifest* parent) {
mInitCount++;
@ -35,10 +35,10 @@ bool ModuleManifest::initialize() {
mInitialized = true;
for (auto module = mDependencies; module && *module; module++) {
mInitialized &= (*module)->initialize();
mInitialized &= (*module)->initialize(this);
}
std::cout << "====== Initializing \"" << mModuleName << "\"\n";
std::cout << "=== Initializing \"" << mModuleName << "\" from \"" << (parent ? parent->mModuleName : mModuleName ) << "\"\n";
if (mInit) mInitialized &= mInit(this);

View file

@ -15,9 +15,12 @@ namespace tp {
ModuleManifest(const char* aModuleName, ModuleInit aInit, ModuleDeinit aDeinit, ModuleManifest** aDependencies);
[[nodiscard]] bool isInitialized() const;
bool initialize();
bool initialize(const ModuleManifest* parent = nullptr);
void deinitialize();
[[nodiscard]] const char* getName() const;
void setCustomData(void* data) { mCustomData = data; }
void* getCustomData(void* data) const { return mCustomData; }
private:
const char* mModuleName = nullptr;
ModuleManifest** mDependencies; // NULL terminated
@ -25,6 +28,7 @@ namespace tp {
ModuleInit mInit = nullptr;
ModuleDeinit mDeinit = nullptr;
uhalni mInitCount = 0;
void* mCustomData = nullptr;
};
extern ModuleManifest gModuleBase;