Value *DictionaryValue::next() { if (!_validIteration) { _iteration = _elements.begin(); _validIteration = true; } else if (_iteration == _elements.end()) { return 0; } ArrayValue *pair = new ArrayValue; pair->add(_iteration->first.value->duplicate()); pair->add(_iteration->second->duplicate()); ++_iteration; return pair; }
void DataValue::parseArray(const ustring &text, void *value) { ArrayValue *arr = (ArrayValue*)value; int i = 1; // skip [ while (text[i] != ']') { i++; // skip ' int p = text.find('\'', i); void *v = arr->add(ustring(text, i, p - i)); i = p + 2; // skip = p = text.find(',', i); if(p == -1) p = text.length() - 1; parse(ustring(text, i, p - i), arr->type, v); i = p; if(text[i] == ',') i++; } }