1 #ifndef VTESTBED_INI_INI_HH 2 #define VTESTBED_INI_INI_HH 9 #include <vtestbed/ini/types.hh> 25 READ_STATE_POST_CATEGORY,
34 bool _has_changes =
false;
38 int load(
const string_type& filename,
bool keep_existing =
false);
40 inline bool HasChanges()
const {
return this->_has_changes; }
41 inline const map_2d& sections()
const {
return this->_categories; }
42 bool HasCategory(
const string_type& category)
const;
45 T find(
const char* category,
const char* key)
const {
46 auto r1 = this->_categories.find(category);
47 if (r1 == this->_categories.end()) {
50 auto r2 = r1->second.find(key);
51 if (r2 == r1->second.end()) {
69 auto r1 = this->_categories.find(category);
70 if (r1 == this->_categories.end()) {
return def_value; }
71 auto r2 = r1->second.find(key);
72 if (r2 == r1->second.end()) {
return def_value; }
76 if (in >> value) {
return value; }
84 const char* def_value =
"" 86 return this->get<string_type>(category, key, def_value);
90 void set(
const char* category,
const char* key, T value) {
94 this->_categories[category][key] = out.str();
95 this->_has_changes =
true;
99 set(
const char* category,
const char* key,
const char* value) {
100 this->_categories[category][key] = value;
101 this->_has_changes =
true;
105 set(
const char* category,
const char* key,
const string_type& value) {
106 this->_categories[category][key] = value;
107 this->_has_changes =
true;
114 #endif // vim:filetype=cpp