| 100 | ::SerializeMany(*this, std::forward<Args>(args)...); |
| 101 | } |
| 102 | void write(const char* pch, size_t nSize) |
| 103 | { |
| 104 | assert(nPos <= vchData.size()); |
| 105 | size_t nOverwrite = std::min(nSize, vchData.size() - nPos); |
| 106 | if (nOverwrite) { |
| 107 | memcpy(vchData.data() + nPos, reinterpret_cast<const unsigned char*>(pch), nOverwrite); |
| 108 | } |
| 109 | if (nOverwrite < nSize) { |
| 110 | vchData.insert(vchData.end(), reinterpret_cast<const unsigned char*>(pch) + nOverwrite, reinterpret_cast<const unsigned char*>(pch) + nSize); |
| 111 | } |
| 112 | nPos += nSize; |
| 113 | } |
| 114 | template<typename T> |
| 115 | CVectorWriter& operator<<(const T& obj) |
| 116 | { |