diff options
Diffstat (limited to 'src/misc/blob.hpp')
-rw-r--r-- | src/misc/blob.hpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/misc/blob.hpp b/src/misc/blob.hpp index ed8c52ac6..6c271cdcf 100644 --- a/src/misc/blob.hpp +++ b/src/misc/blob.hpp @@ -74,6 +74,12 @@ public: /** default constructor - initializes empty blob */ FORCEINLINE ByteBlob() { InitEmpty(); } + /** copy constructor */ + FORCEINLINE ByteBlob(const ByteBlob &src) { + InitEmpty(); + AppendRaw(src); + } + /** move constructor - take ownership of blob data */ FORCEINLINE ByteBlob(BlobHeader * const & src) { @@ -216,6 +222,14 @@ public: } } + /** append bytes from given source blob to the end of existing data bytes - reallocates if necessary */ + FORCEINLINE void AppendRaw(const ByteBlob& src) + { + if (!src.IsEmpty()) { + memcpy(Append(src.Length()), src.Begin(), src.Length()); + } + } + /** Reallocate if there is no free space for num_bytes bytes. * @return pointer to the new data to be added */ FORCEINLINE byte *Prepare(uint num_bytes) |