RLP::iterator::iterator(RLP const& _parent, bool _begin) { if (_begin && _parent.isList()) { auto pl = _parent.payload(); m_currentItem = pl.cropped(0, sizeAsEncoded(pl)); m_remaining = pl.size() - m_currentItem.size(); } else { m_currentItem = _parent.data().cropped(_parent.data().size()); m_remaining = 0; } }
RLP::iterator::iterator(RLP const& _parent, bool _begin) { if (_begin && _parent.isList()) { auto pl = _parent.payload(); m_lastItem = pl.cropped(0, RLP(pl).actualSize()); m_remaining = pl.size() - m_lastItem.size(); } else { m_lastItem = _parent.data().cropped(_parent.data().size()); m_remaining = 0; } }
RLP::iterator::iterator(RLP const& _parent, bool _begin) { if (_begin && _parent.isList()) { auto pl = _parent.payload(); m_lastItem = pl.cropped(0, RLP(pl).actualSize()); uint t = 0; for (uint i = 0; i < _parent.itemCount(); ++i) t += _parent[i].actualSize(); if (pl.size() != t) cout << _parent.itemCount() << " " << asHex(pl); assert(pl.size() == t); m_remaining = pl.size() - m_lastItem.size(); } else { m_lastItem = _parent.data().cropped(_parent.data().size()); m_remaining = 0; } }