bool QueryReader::readOne(UInt8 type, DataWriter& writer) { const UInt8* cur = packet.current(); const UInt8* end = cur+packet.available(); if (type==OBJECT) { // OBJECT writer.beginObject(); do { cur = packet.current(); writer.writePropertyName(_property.c_str()); writeValue(valueType(), writer); // next! while (cur<end && *cur != '&') cur++; packet.next(cur-packet.current() + (*cur=='&')); _type = END; } while (cur<end && (_type=followingType())==OBJECT); writer.endObject(); return true; } writeValue(type, writer); // next! while (cur<end && *cur != '&') cur++; packet.next(cur-packet.current() + (*cur=='&')); _type = END; return true; }