Changeset View
Changeset View
Standalone View
Standalone View
src/streams.h
Show First 20 Lines • Show All 78 Lines • ▼ Show 20 Lines | CVectorWriter(int nTypeIn, int nVersionIn, std::vector<uint8_t> &vchDataIn, | ||||
} | } | ||||
} | } | ||||
/** | /** | ||||
* (other params same as above) | * (other params same as above) | ||||
* @param[in] args A list of items to serialize starting at nPosIn. | * @param[in] args A list of items to serialize starting at nPosIn. | ||||
*/ | */ | ||||
template <typename... Args> | template <typename... Args> | ||||
CVectorWriter(int nTypeIn, int nVersionIn, std::vector<uint8_t> &vchDataIn, | CVectorWriter(int nTypeIn, int nVersionIn, std::vector<uint8_t> &vchDataIn, | ||||
size_t nPosIn, Args &&... args) | size_t nPosIn, Args &&...args) | ||||
: CVectorWriter(nTypeIn, nVersionIn, vchDataIn, nPosIn) { | : CVectorWriter(nTypeIn, nVersionIn, vchDataIn, nPosIn) { | ||||
::SerializeMany(*this, std::forward<Args>(args)...); | ::SerializeMany(*this, std::forward<Args>(args)...); | ||||
} | } | ||||
void write(const char *pch, size_t nSize) { | void write(const char *pch, size_t nSize) { | ||||
assert(nPos <= vchData.size()); | assert(nPos <= vchData.size()); | ||||
size_t nOverwrite = std::min(nSize, vchData.size() - nPos); | size_t nOverwrite = std::min(nSize, vchData.size() - nPos); | ||||
if (nOverwrite) { | if (nOverwrite) { | ||||
memcpy(vchData.data() + nPos, | memcpy(vchData.data() + nPos, | ||||
▲ Show 20 Lines • Show All 54 Lines • ▼ Show 20 Lines | public: | ||||
} | } | ||||
/** | /** | ||||
* (other params same as above) | * (other params same as above) | ||||
* @param[in] args A list of items to deserialize starting at pos. | * @param[in] args A list of items to deserialize starting at pos. | ||||
*/ | */ | ||||
template <typename... Args> | template <typename... Args> | ||||
VectorReader(int type, int version, const std::vector<uint8_t> &data, | VectorReader(int type, int version, const std::vector<uint8_t> &data, | ||||
size_t pos, Args &&... args) | size_t pos, Args &&...args) | ||||
: VectorReader(type, version, data, pos) { | : VectorReader(type, version, data, pos) { | ||||
::UnserializeMany(*this, std::forward<Args>(args)...); | ::UnserializeMany(*this, std::forward<Args>(args)...); | ||||
} | } | ||||
template <typename T> VectorReader &operator>>(T &obj) { | template <typename T> VectorReader &operator>>(T &obj) { | ||||
// Unserialize from this stream | // Unserialize from this stream | ||||
::Unserialize(*this, obj); | ::Unserialize(*this, obj); | ||||
return (*this); | return (*this); | ||||
▲ Show 20 Lines • Show All 74 Lines • ▼ Show 20 Lines | public: | ||||
} | } | ||||
CDataStream(const std::vector<uint8_t> &vchIn, int nTypeIn, int nVersionIn) | CDataStream(const std::vector<uint8_t> &vchIn, int nTypeIn, int nVersionIn) | ||||
: vch(vchIn.begin(), vchIn.end()) { | : vch(vchIn.begin(), vchIn.end()) { | ||||
Init(nTypeIn, nVersionIn); | Init(nTypeIn, nVersionIn); | ||||
} | } | ||||
template <typename... Args> | template <typename... Args> | ||||
CDataStream(int nTypeIn, int nVersionIn, Args &&... args) { | CDataStream(int nTypeIn, int nVersionIn, Args &&...args) { | ||||
Init(nTypeIn, nVersionIn); | Init(nTypeIn, nVersionIn); | ||||
::SerializeMany(*this, std::forward<Args>(args)...); | ::SerializeMany(*this, std::forward<Args>(args)...); | ||||
} | } | ||||
void Init(int nTypeIn, int nVersionIn) { | void Init(int nTypeIn, int nVersionIn) { | ||||
nReadPos = 0; | nReadPos = 0; | ||||
nType = nTypeIn; | nType = nTypeIn; | ||||
nVersion = nVersionIn; | nVersion = nVersionIn; | ||||
▲ Show 20 Lines • Show All 592 Lines • Show Last 20 Lines |