// Copyright (C) 2020 Jérôme Leclercq // This file is part of the "Nazara Engine - Core module" // For conditions of distribution and use, see copyright notice in Config.hpp #include #include #include namespace Nz { template ModuleBase::ModuleBase(std::string moduleName, T* pointer) : ModuleBase(std::move(moduleName), pointer, NoLog{}) { LogInit(); } template ModuleBase::ModuleBase(std::string moduleName, T* pointer, NoLog) : m_moduleName(std::move(moduleName)) { NazaraAssert(T::s_instance == nullptr, "only one instance of " + m_moduleName + " must exist at a given time"); T::s_instance = pointer; } template ModuleBase::~ModuleBase() { NazaraNotice("Uninitializing " + m_moduleName + "..."); T::s_instance = nullptr; } template T* ModuleBase::Instance() { return T::s_instance; } template void ModuleBase::LogInit() { NazaraNotice("Initializing " + m_moduleName + "..."); } } #include