bool BinTreeNodeReader::nextTreeInternal(ProtocolTreeNode& node, QDataStream &in) { quint8 b; in >> b; int size = readListSize(b,in); in >> b; if (b == 2) return false; QByteArray tag; readString(b, tag, in); int attribCount = (size - 2 + size % 2) / 2; AttributeList attribs; readAttributes(attribs,attribCount,in); node.setTag(tag); node.setAttributes(attribs); if ((size % 2) == 1) return true; in >> b; if (isListTag(b)) { readList(b,node,in); return true; } QByteArray data; readString(b,data,in); node.setData(data); return true; }
bool BinTreeNodeReader::nextTreeInternal(ProtocolTreeNode& node) { quint8 b; if (!readInt8(b)) return false; int size = -1; if (!readListSize(b, size)) return false; if (size < 0) return false; if (!readInt8(b)) return false; if (b == 2) return false; QByteArray tag; if (!readString(b, tag)) return false; int attribCount = (size - 2 + size % 2) / 2; AttributeList attribs; if (!readAttributes(attribs,attribCount)) return false; node.setTag(tag); node.setAttributes(attribs); if ((size % 2) == 1) return true; if (!readInt8(b)) return false; if (isListTag(b)) { return readList(b,node); } QByteArray data; if (!readString(b,data)) return false; node.setData(data); return true; }