diff --git a/src/Serializer.cpp b/src/Serializer.cpp index 32b7175ffe..8bbd0b4c72 100644 --- a/src/Serializer.cpp +++ b/src/Serializer.cpp @@ -64,6 +64,13 @@ int Serializer::addRaw(const std::vector &vector) return ret; } +int Serializer::addRaw(const Serializer &s) +{ + int ret = mData.size(); + mData.insert(mData.end(), s.begin(), s.end()); + return ret; +} + int Serializer::addRaw(const void *ptr, int len) { int ret = mData.size(); diff --git a/src/Serializer.h b/src/Serializer.h index 1a038251c0..c10805e175 100644 --- a/src/Serializer.h +++ b/src/Serializer.h @@ -35,6 +35,7 @@ class Serializer int add256(const uint256&); // transaction and ledger hashes int addRaw(const std::vector &vector); int addRaw(const void *ptr, int len); + int addRaw(const Serializer& s); int addVL(const std::vector &vector); int addVL(const void *ptr, int len); @@ -61,7 +62,6 @@ class Serializer bool getTaggedList(std::list&, int offset, int& length) const; bool getTaggedList(std::vector&, int offset, int& length) const; - // hash functions uint160 getRIPEMD160(int size=-1) const; uint256 getSHA256(int size=-1) const; @@ -81,7 +81,14 @@ class Serializer void erase() { mData.clear(); } int removeLastByte(); bool chop(int num); - + + // vector-like functions + std::vector::iterator begin() { return mData.begin(); } + std::vector::iterator end() { return mData.end(); } + std::vector::const_iterator begin() const { return mData.begin(); } + std::vector::const_iterator end() const { return mData.end(); } + std::vector::size_type size() const { return mData.size(); } + // signature functions bool checkSignature(int pubkeyOffset, int signatureOffset) const; bool checkSignature(const std::vector& signature, CKey& rkey) const;