mkxp/src/iniconfig.h

47 lines
955 B
C++

#ifndef INICONFIG_H
#define INICONFIG_H
#include <iostream>
#include <map>
class INIConfiguration
{
class Section
{
friend class INIConfiguration;
struct Property
{
std::string m_Name;
std::string m_Value;
};
typedef std::map<std::string, Property> property_map;
public:
Section (const Section& s) = default;
Section (Section&& s) = default;
bool getStringProperty (const std::string& name, std::string& outPropStr) const;
private:
explicit Section (const std::string& name);
std::string m_Name;
property_map m_PropertyMap;
};
typedef std::map<std::string, Section> section_map;
public:
bool load (std::istream& inStream);
std::string getStringProperty(const std::string& sname, const std::string& name, const std::string& def = "") const;
protected:
void addProperty (const std::string& sname, const std::string& name, const std::string& val);
private:
section_map m_SectionMap;
};
#endif // INICONFIG_H