/* * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #ifndef TRINITYCORE_CONFIG_H #define TRINITYCORE_CONFIG_H #include "Define.h" #include #include #include class TC_COMMON_API ConfigMgr { ConfigMgr() = default; ConfigMgr(ConfigMgr const&) = delete; ConfigMgr& operator=(ConfigMgr const&) = delete; ~ConfigMgr() = default; public: /// Method used only for loading main configuration files (bnetserver.conf and worldserver.conf) bool LoadInitial(std::string file, std::vector args, std::string& error); bool LoadAdditionalFile(std::string file, bool keepOnReload, std::string& error); bool LoadAdditionalDir(std::string const& dir, bool keepOnReload, std::vector& loadedFiles, std::vector& errors); /// Overrides configuration with environment variables and returns overridden keys std::vector OverrideWithEnvVariablesIfAny(); static ConfigMgr* instance(); bool Reload(std::vector& errors); std::string GetStringDefault(std::string_view name, std::string_view def, bool quiet = false) const; bool GetBoolDefault(std::string_view name, bool def, bool quiet = false) const; int32 GetIntDefault(std::string_view name, int32 def, bool quiet = false) const; int64 GetInt64Default(std::string_view name, int64 def, bool quiet = false) const; float GetFloatDefault(std::string_view name, float def, bool quiet = false) const; std::string const& GetFilename(); std::vector const& GetArguments() const; std::vector GetKeysByString(std::string const& name); private: template R GetValueDefault(std::string_view const& name, T def, bool quiet) const; }; #define sConfigMgr ConfigMgr::instance() #endif