11 return m_Map.count(keyname) != 0;
20 auto outerIter =
m_Map.find(a_KeyName);
21 if (outerIter ==
m_Map.end())
25 auto iter = outerIter->second.find(a_ValueName);
26 if (iter == outerIter->second.end())
39 m_Map.emplace(a_keyname, std::unordered_multimap<AString, sValue>{});
78 m_Map[a_KeyName].emplace(a_ValueName,
sValue(a_Value));
90 m_Map[a_KeyName].emplace(a_ValueName,
sValue(a_Value));
102 m_Map[a_KeyName].emplace(a_ValueName,
sValue(a_Value));
112 std::vector<std::pair<AString, AString>> ret;
113 for (
auto pair :
m_Map[a_keyName])
115 ret.emplace_back(pair.first, pair.second.getStringValue());
126 auto outerIter =
m_Map.find(a_KeyName);
127 if (outerIter ==
m_Map.end())
131 auto iter = outerIter->second.find(a_ValueName);
132 if (iter == outerIter->second.end())
136 return iter->second.getStringValue();
145 auto outerIter =
m_Map.find(a_KeyName);
146 if (outerIter ==
m_Map.end())
148 AddValue(a_KeyName, a_ValueName, defValue);
151 auto iter = outerIter->second.find(a_ValueName);
152 if (iter == outerIter->second.end())
154 AddValue(a_KeyName, a_ValueName, defValue);
157 return iter->second.getStringValue();
166 auto outerIter =
m_Map.find(a_KeyName);
167 if (outerIter ==
m_Map.end())
169 AddValue(a_KeyName, a_ValueName, static_cast<Int64>(defValue));
172 auto iter = outerIter->second.find(a_ValueName);
173 if (iter == outerIter->second.end())
175 AddValue(a_KeyName, a_ValueName, static_cast<Int64>(defValue));
178 return static_cast<int>(iter->second.getIntValue());
187 auto outerIter =
m_Map.find(a_KeyName);
188 if (outerIter ==
m_Map.end())
190 AddValue(a_KeyName, a_ValueName, defValue);
193 auto iter = outerIter->second.find(a_ValueName);
194 if (iter == outerIter->second.end())
196 AddValue(a_KeyName, a_ValueName, defValue);
199 return iter->second.getIntValue();
208 auto outerIter =
m_Map.find(a_KeyName);
209 if (outerIter ==
m_Map.end())
211 AddValue(a_KeyName, a_ValueName, defValue);
214 auto iter = outerIter->second.find(a_ValueName);
215 if (iter == outerIter->second.end())
217 AddValue(a_KeyName, a_ValueName, defValue);
220 return iter->second.getBoolValue();
233 auto outerIter =
m_Map.find(a_KeyName);
234 if (outerIter ==
m_Map.end())
236 if (a_CreateIfNotExists)
238 AddValue(a_KeyName, a_ValueName, a_Value);
240 return a_CreateIfNotExists;
242 auto iter = outerIter->second.find(a_ValueName);
243 if (iter == outerIter->second.end())
245 if (a_CreateIfNotExists)
247 AddValue(a_KeyName, a_ValueName, a_Value);
249 return a_CreateIfNotExists;
251 iter->second =
sValue(a_Value);
265 auto outerIter =
m_Map.find(a_KeyName);
266 if (outerIter ==
m_Map.end())
268 if (a_CreateIfNotExists)
270 AddValue(a_KeyName, a_ValueName, static_cast<Int64>(a_Value));
272 return a_CreateIfNotExists;
274 auto iter = outerIter->second.find(a_ValueName);
275 if (iter == outerIter->second.end())
277 if (a_CreateIfNotExists)
279 AddValue(a_KeyName, a_ValueName, static_cast<Int64>(a_Value));
281 return a_CreateIfNotExists;
283 iter->second =
sValue(static_cast<Int64>(a_Value));
297 auto outerIter =
m_Map.find(a_KeyName);
298 if (outerIter ==
m_Map.end())
302 auto iter = outerIter->second.find(a_ValueName);
303 if (iter == outerIter->second.end())
307 outerIter->second.erase(iter);
virtual bool KeyExists(const AString keyname) const override
Returns true iff the specified key exists.
virtual bool SetValueI(const AString &a_KeyName, const AString &a_ValueName, const int a_Value, const bool a_CreateIfNotExists=true) override
virtual AString GetValueSet(const AString &keyname, const AString &valuename, const AString &defValue="") override
Gets the value; if not found, write the default to the repository.
virtual bool GetValueSetB(const AString &keyname, const AString &valuename, const bool defValue=false) override
virtual int GetValueSetI(const AString &keyname, const AString &valuename, const int defValue=0) override
virtual bool Flush() override
Writes the changes to the backing store, if the repository has one.
virtual std::vector< std::pair< AString, AString > > GetValues(AString a_keyName) override
returns a vector containing a name, value pair for each value under the key
virtual void AddValue(const AString &a_KeyName, const AString &a_ValueName, const AString &a_Value) override
Adds a new value to the specified key.
virtual bool DeleteValue(const AString &keyname, const AString &valuename) override
Deletes the specified key, value pair.
virtual int AddKeyName(const AString &keyname) override
Add a key name.
std::unordered_map< AString, std::unordered_multimap< AString, sValue > > m_Map
virtual bool HasValue(const AString &a_KeyName, const AString &a_ValueName) const override
Returns true iff the specified value exists.
virtual bool SetValue(const AString &a_KeyName, const AString &a_ValueName, const AString &a_Value, const bool a_CreateIfNotExists=true) override
Overwrites the value of the key, value pair Specify the optional parameter as false if you do not wan...
virtual bool AddKeyComment(const AString &keyname, const AString &comment) override
Add a key comment, will always fail if the repository does not support comments.
virtual bool DeleteKeyComment(const AString &keyname, const int commentID) override
Delete a key comment, will always fail if the repository does not support comments.
virtual AString GetKeyComment(const AString &keyname, const int commentID) const override
Return a key comment, returns "" for repositories that do not return comments.
virtual AString GetValue(const AString &keyname, const AString &valuename, const AString &defValue="") const override
Get the value at the specified key and value, returns defValue on failure.