Extracted VariantData and CollectionData classes

This commit is contained in:
Benoit Blanchon
2018-12-07 09:16:58 +01:00
parent 1ad97ebf85
commit b77b203935
45 changed files with 1129 additions and 1007 deletions

View File

@@ -20,15 +20,16 @@ class JsonSerializer {
_writer.writeFloat(value);
}
void visitArray(ArrayConstRef array) {
void visitArray(const CollectionData &array) {
_writer.beginArray();
ArrayConstRef::iterator it = array.begin();
while (it != array.end()) {
it->accept(*this);
VariantSlot *slot = array.head();
++it;
if (it == array.end()) break;
while (slot != 0) {
slot->data()->accept(*this);
slot = slot->next();
if (slot == 0) break;
_writer.writeComma();
}
@@ -36,17 +37,18 @@ class JsonSerializer {
_writer.endArray();
}
void visitObject(ObjectConstRef object) {
void visitObject(const CollectionData &object) {
_writer.beginObject();
ObjectConstRef::iterator it = object.begin();
while (it != object.end()) {
_writer.writeString(it->key());
_writer.writeColon();
it->value().accept(*this);
VariantSlot *slot = object.head();
++it;
if (it == object.end()) break;
while (slot != 0) {
_writer.writeString(slot->key());
_writer.writeColon();
slot->data()->accept(*this);
slot = slot->next();
if (slot == 0) break;
_writer.writeComma();
}