update ConfigIni
This commit is contained in:
parent
bd8b328d01
commit
a25597223d
|
|
@ -39,7 +39,7 @@ StringView Trim(StringView str)
|
||||||
while (std::isspace(str[end - 1]))
|
while (std::isspace(str[end - 1]))
|
||||||
--end;
|
--end;
|
||||||
|
|
||||||
if (end - start)
|
if (end > start)
|
||||||
return StringView(str.Data() + start, end - start);
|
return StringView(str.Data() + start, end - start);
|
||||||
}
|
}
|
||||||
return StringView();
|
return StringView();
|
||||||
|
|
@ -177,23 +177,20 @@ ConfigIni::SectionMap ConfigIni::GetSectionMap() const
|
||||||
|
|
||||||
ConfigIni::ValueMap ConfigIni::GetSection(const String& section) const
|
ConfigIni::ValueMap ConfigIni::GetSection(const String& section) const
|
||||||
{
|
{
|
||||||
auto iter = sections_.find(section);
|
if (HasSection(section))
|
||||||
if (iter != sections_.end())
|
{
|
||||||
return iter->second;
|
return sections_.at(section);
|
||||||
|
}
|
||||||
return ValueMap();
|
return ValueMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
String ConfigIni::GetString(const String& section_name, const String& key) const
|
String ConfigIni::GetString(const String& section, const String& key, const String& default_value) const
|
||||||
{
|
{
|
||||||
if (HasSection(section_name))
|
if (HasKey(section, key))
|
||||||
{
|
{
|
||||||
const auto& section = sections_.at(section_name);
|
return sections_.at(section).at(key);
|
||||||
|
|
||||||
auto iter_key = section.find(key);
|
|
||||||
if (iter_key != section.end())
|
|
||||||
return iter_key->second;
|
|
||||||
}
|
}
|
||||||
return String();
|
return default_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
float ConfigIni::GetFloat(const String& section, const String& key, float default_value) const
|
float ConfigIni::GetFloat(const String& section, const String& key, float default_value) const
|
||||||
|
|
@ -274,7 +271,7 @@ bool ConfigIni::HasSection(const String& section) const
|
||||||
return !!sections_.count(section);
|
return !!sections_.count(section);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ConfigIni::HasValue(const String& section, const String& key) const
|
bool ConfigIni::HasKey(const String& section, const String& key) const
|
||||||
{
|
{
|
||||||
if (HasSection(section))
|
if (HasSection(section))
|
||||||
{
|
{
|
||||||
|
|
@ -324,6 +321,22 @@ void ConfigIni::SetBool(const String& section, const String& key, bool value)
|
||||||
SetString(section, key, value ? "true" : "false");
|
SetString(section, key, value ? "true" : "false");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ConfigIni::DeleteSection(const String& section)
|
||||||
|
{
|
||||||
|
if (HasSection(section))
|
||||||
|
{
|
||||||
|
sections_.erase(section);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigIni::DeleteKey(const String& section, const String& key)
|
||||||
|
{
|
||||||
|
if (HasKey(section, key))
|
||||||
|
{
|
||||||
|
sections_.at(section).erase(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ConfigIni::ValueMap& ConfigIni::operator[](const String& section)
|
ConfigIni::ValueMap& ConfigIni::operator[](const String& section)
|
||||||
{
|
{
|
||||||
if (!HasSection(section))
|
if (!HasSection(section))
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ public:
|
||||||
|
|
||||||
/// \~chinese
|
/// \~chinese
|
||||||
/// @brief 键值字典
|
/// @brief 键值字典
|
||||||
typedef Map<String, String> ValueMap;
|
typedef UnorderedMap<String, String> ValueMap;
|
||||||
|
|
||||||
/// \~chinese
|
/// \~chinese
|
||||||
/// @brief Section字典
|
/// @brief Section字典
|
||||||
|
|
@ -65,6 +65,17 @@ public:
|
||||||
/// @param os 输出流
|
/// @param os 输出流
|
||||||
bool Save(std::ostream& os);
|
bool Save(std::ostream& os);
|
||||||
|
|
||||||
|
/// \~chinese
|
||||||
|
/// @brief 是否存在section
|
||||||
|
/// @param section section的名称
|
||||||
|
bool HasSection(const String& section) const;
|
||||||
|
|
||||||
|
/// \~chinese
|
||||||
|
/// @brief 是否存在值
|
||||||
|
/// @param section section的名称
|
||||||
|
/// @param key key的名称
|
||||||
|
bool HasKey(const String& section, const String& key) const;
|
||||||
|
|
||||||
/// \~chinese
|
/// \~chinese
|
||||||
/// @brief 获取所有section
|
/// @brief 获取所有section
|
||||||
SectionMap GetSectionMap() const;
|
SectionMap GetSectionMap() const;
|
||||||
|
|
@ -78,7 +89,7 @@ public:
|
||||||
/// @brief 获取值
|
/// @brief 获取值
|
||||||
/// @param section section的名称
|
/// @param section section的名称
|
||||||
/// @param key key的名称
|
/// @param key key的名称
|
||||||
String GetString(const String& section, const String& key) const;
|
String GetString(const String& section, const String& key, const String& default_value = String()) const;
|
||||||
|
|
||||||
/// \~chinese
|
/// \~chinese
|
||||||
/// @brief 获取值
|
/// @brief 获取值
|
||||||
|
|
@ -108,17 +119,6 @@ public:
|
||||||
/// @param default_value 不存在时的默认值
|
/// @param default_value 不存在时的默认值
|
||||||
bool GetBool(const String& section, const String& key, bool default_value = false) const;
|
bool GetBool(const String& section, const String& key, bool default_value = false) const;
|
||||||
|
|
||||||
/// \~chinese
|
|
||||||
/// @brief 是否存在section
|
|
||||||
/// @param section section的名称
|
|
||||||
bool HasSection(const String& section) const;
|
|
||||||
|
|
||||||
/// \~chinese
|
|
||||||
/// @brief 是否存在值
|
|
||||||
/// @param section section的名称
|
|
||||||
/// @param key key的名称
|
|
||||||
bool HasValue(const String& section, const String& key) const;
|
|
||||||
|
|
||||||
/// \~chinese
|
/// \~chinese
|
||||||
/// @brief 设置所有section
|
/// @brief 设置所有section
|
||||||
/// @param sections section字典
|
/// @param sections section字典
|
||||||
|
|
@ -165,6 +165,17 @@ public:
|
||||||
/// @param value 值
|
/// @param value 值
|
||||||
void SetBool(const String& section, const String& key, bool value);
|
void SetBool(const String& section, const String& key, bool value);
|
||||||
|
|
||||||
|
/// \~chinese
|
||||||
|
/// @brief 删除section
|
||||||
|
/// @param section section的名称
|
||||||
|
void DeleteSection(const String& section);
|
||||||
|
|
||||||
|
/// \~chinese
|
||||||
|
/// @brief 删除值
|
||||||
|
/// @param section section的名称
|
||||||
|
/// @param key key的名称
|
||||||
|
void DeleteKey(const String& section, const String& key);
|
||||||
|
|
||||||
ValueMap& operator[](const String& section);
|
ValueMap& operator[](const String& section);
|
||||||
|
|
||||||
const ValueMap& operator[](const String& section) const;
|
const ValueMap& operator[](const String& section) const;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue