1 #include "MapValue.h"
\r
5 #include "IntegerValue.h"
\r
6 #include "Constants.h"
\r
8 namespace Databoard {
\r
11 MapValue::MapValue(Databoard::Type::DataType* dataBoard) : Value(dataBoard)
\r
15 MapValue::~MapValue()
\r
17 for(MKVMap::iterator it = values.begin(); it != values.end(); ++it)
\r
26 bool MapValue::put(Value* key, Value* value)
\r
28 if(containsKey(key) == false)
\r
30 values[key] = value;
\r
36 MKVMap::iterator it = values.find(key);
\r
43 values[key] = value;
\r
49 int MapValue::count()
\r
51 return (int)values.size();
\r
54 Value* MapValue::get(Value* key)
\r
56 if(containsKey(key) == true)
\r
66 bool MapValue::containsKey(Value* key)
\r
68 return (values.find(key) != values.end());
\r
71 Value* MapValue::remove(Value* key)
\r
73 if(containsKey(key) == true)
\r
75 Value* oldValue = values[key];
\r
87 void MapValue::removeRange(Value* startKey, Value* endKey)
\r
89 if(containsKey(startKey) && containsKey(endKey))
\r
91 MKVMap::iterator iBegin = values.find(startKey);
\r
92 MKVMap::iterator iEnd = values.find(endKey);
\r
94 int indexBegin = -1;
\r
99 for(MKVMap::iterator it = values.begin(); it != values.end(); ++i, ++it)
\r
112 if(indexBegin == -1 || indexEnd == -1 ||
\r
113 (indexBegin > indexEnd))
\r
118 MKVMap::iterator it = values.begin();
\r
120 for(int j = 0; j < indexBegin; ++j)
\r
125 for(i = indexBegin; i < indexEnd; ++i)
\r
133 values.erase(iBegin, iEnd);
\r
137 void MapValue::clear()
\r
142 std::string MapValue::writeOut(int /*indent*/)
\r
148 // counter is inside the block
\r
149 for(MKVMap::iterator it = values.begin(); it != values.end(); )
\r
151 s += it->first->writeOut();
\r
153 s += it->second->writeOut();
\r
155 if(++it != values.end())
\r
166 bool MapValue::equals(const Value* other)
\r
168 MapValue* o = (MapValue*)other;
\r
170 return true;//(this->value < o->value);
\r
174 std::string MapValue::isValid()
\r
176 for(MKVMap::iterator it = values.begin(); it != values.end(); ++it)
\r
180 s = it->first->isValid();
\r
187 s = it->second->isValid();
\r
198 bool ValueComparison::operator()(Value* const &a, Value* const &b) const
\r
200 return a->equals(b);
\r