/* inifile.h Copyright (C) 2007 Acekard, www.acekard.com Copyright (C) 2007-2009 somebody Copyright (C) 2009-2010 yellow wood goblin SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include #include #include class CIniFile { public: CIniFile(); CIniFile(const std::string& filename); virtual ~CIniFile(); public: bool LoadIniFile(const std::string& FileName); bool SaveIniFile(const std::string& FileName); bool SaveIniFileModified(const std::string& FileName); std::string GetString(const std::string& Section, const std::string& Item, const std::string& DefaultValue); void SetString(const std::string& Section, const std::string& Item, const std::string& Value); int GetInt(const std::string& Section, const std::string& Item, int DefaultValue); void SetInt(const std::string& Section, const std::string& Item, int Value); void GetStringVector(const std::string& Section, const std::string& Item, std::vector& strings, char delimiter = ','); void SetStringVector(const std::string& Section, const std::string& Item, std::vector& strings, char delimiter = ','); protected: std::string m_sFileName; typedef std::vector cStringArray; cStringArray m_FileContainer; bool m_bLastResult; bool m_bModified; bool m_bReadOnly; typedef std::map cSectionCache; cSectionCache m_Cache; bool InsertLine(size_t line, const std::string& str); bool ReplaceLine(size_t line, const std::string& str); void SetFileString(const std::string& Section, const std::string& Item, const std::string& Value); std::string GetFileString(const std::string& Section, const std::string& Item); std::string GetString(const std::string& Section, const std::string& Item); int GetInt(const std::string& Section, const std::string& Item); };