Dogecoin Core  1.14.2
P2P Digital Currency
Classes | Macros | Enumerations | Functions | Variables
serialize.h File Reference
#include "compat/endian.h"
#include <algorithm>
#include <assert.h>
#include <ios>
#include <limits>
#include <map>
#include <memory>
#include <set>
#include <stdint.h>
#include <string>
#include <string.h>
#include <utility>
#include <vector>
#include "prevector.h"
Include dependency graph for serialize.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  deserialize_type
 Dummy data type to identify deserializing constructors. More...
 
class  CFlatData
 Wrapper for serializing arrays and POD. More...
 
class  CVarInt< I >
 
class  CCompactSize
 
class  LimitedString< Limit >
 
struct  CSerActionSerialize
 Support for ADD_SERIALIZE_METHODS and READWRITE macro. More...
 
struct  CSerActionUnserialize
 
class  CSizeComputer
 

Macros

#define READWRITE(obj)   (::SerReadWrite(s, (obj), ser_action))
 
#define READWRITEMANY(...)   (::SerReadWriteMany(s, ser_action, __VA_ARGS__))
 
#define ADD_SERIALIZE_METHODS
 Implement three methods for serializable objects. More...
 
#define FLATDATA(obj)   REF(CFlatData((char*)&(obj), (char*)&(obj) + sizeof(obj)))
 
#define VARINT(obj)   REF(WrapVarInt(REF(obj)))
 
#define COMPACTSIZE(obj)   REF(CCompactSize(REF(obj)))
 
#define LIMITED_STRING(obj, n)   REF(LimitedString< n >(REF(obj)))
 

Enumerations

enum  { SER_NETWORK = (1 << 0) , SER_DISK = (1 << 1) , SER_GETHASH = (1 << 2) }
 

Functions

template<typename T >
T & REF (const T &val)
 Used to bypass the rule against non-const reference to temporary where it makes sense with wrappers such as CFlatData or CTxDB. More...
 
template<typename T >
T * NCONST_PTR (const T *val)
 Used to acquire a non-const pointer "this" to generate bodies of const serialization operations from a template. More...
 
template<typename Stream >
void ser_writedata8 (Stream &s, uint8_t obj)
 
template<typename Stream >
void ser_writedata16 (Stream &s, uint16_t obj)
 
template<typename Stream >
void ser_writedata32 (Stream &s, uint32_t obj)
 
template<typename Stream >
void ser_writedata64 (Stream &s, uint64_t obj)
 
template<typename Stream >
uint8_t ser_readdata8 (Stream &s)
 
template<typename Stream >
uint16_t ser_readdata16 (Stream &s)
 
template<typename Stream >
uint32_t ser_readdata32 (Stream &s)
 
template<typename Stream >
uint64_t ser_readdata64 (Stream &s)
 
uint64_t ser_double_to_uint64 (double x)
 
uint32_t ser_float_to_uint32 (float x)
 
double ser_uint64_to_double (uint64_t y)
 
float ser_uint32_to_float (uint32_t y)
 
template<typename Stream >
void Serialize (Stream &s, char a)
 
template<typename Stream >
void Serialize (Stream &s, int8_t a)
 
template<typename Stream >
void Serialize (Stream &s, uint8_t a)
 
template<typename Stream >
void Serialize (Stream &s, int16_t a)
 
template<typename Stream >
void Serialize (Stream &s, uint16_t a)
 
template<typename Stream >
void Serialize (Stream &s, int32_t a)
 
template<typename Stream >
void Serialize (Stream &s, uint32_t a)
 
template<typename Stream >
void Serialize (Stream &s, int64_t a)
 
template<typename Stream >
void Serialize (Stream &s, uint64_t a)
 
template<typename Stream >
void Serialize (Stream &s, float a)
 
template<typename Stream >
void Serialize (Stream &s, double a)
 
template<typename Stream >
void Unserialize (Stream &s, char &a)
 
template<typename Stream >
void Unserialize (Stream &s, int8_t &a)
 
template<typename Stream >
void Unserialize (Stream &s, uint8_t &a)
 
template<typename Stream >
void Unserialize (Stream &s, int16_t &a)
 
template<typename Stream >
void Unserialize (Stream &s, uint16_t &a)
 
template<typename Stream >
void Unserialize (Stream &s, int32_t &a)
 
template<typename Stream >
void Unserialize (Stream &s, uint32_t &a)
 
template<typename Stream >
void Unserialize (Stream &s, int64_t &a)
 
template<typename Stream >
void Unserialize (Stream &s, uint64_t &a)
 
template<typename Stream >
void Unserialize (Stream &s, float &a)
 
template<typename Stream >
void Unserialize (Stream &s, double &a)
 
template<typename Stream >
void Serialize (Stream &s, bool a)
 
template<typename Stream >
void Unserialize (Stream &s, bool &a)
 
unsigned int GetSizeOfCompactSize (uint64_t nSize)
 Compact Size size < 253 – 1 byte size <= USHRT_MAX – 3 bytes (253 + 2 bytes) size <= UINT_MAX – 5 bytes (254 + 4 bytes) size > UINT_MAX – 9 bytes (255 + 8 bytes) More...
 
void WriteCompactSize (CSizeComputer &os, uint64_t nSize)
 
template<typename Stream >
void WriteCompactSize (Stream &os, uint64_t nSize)
 
template<typename Stream >
uint64_t ReadCompactSize (Stream &is)
 
template<typename I >
unsigned int GetSizeOfVarInt (I n)
 Variable-length integers: bytes are a MSB base-128 encoding of the number. More...
 
template<typename I >
void WriteVarInt (CSizeComputer &os, I n)
 
template<typename Stream , typename I >
void WriteVarInt (Stream &os, I n)
 
template<typename Stream , typename I >
ReadVarInt (Stream &is)
 
template<typename I >
CVarInt< I > WrapVarInt (I &n)
 
template<typename Stream , typename C >
void Serialize (Stream &os, const std::basic_string< C > &str)
 Forward declarations. More...
 
template<typename Stream , typename C >
void Unserialize (Stream &is, std::basic_string< C > &str)
 
template<typename Stream , unsigned int N, typename T >
void Serialize_impl (Stream &os, const prevector< N, T > &v, const unsigned char &)
 prevector prevectors of unsigned char are a special case and are intended to be serialized as a single opaque blob. More...
 
template<typename Stream , unsigned int N, typename T , typename V >
void Serialize_impl (Stream &os, const prevector< N, T > &v, const V &)
 
template<typename Stream , unsigned int N, typename T >
void Serialize (Stream &os, const prevector< N, T > &v)
 
template<typename Stream , unsigned int N, typename T >
void Unserialize_impl (Stream &is, prevector< N, T > &v, const unsigned char &)
 
template<typename Stream , unsigned int N, typename T , typename V >
void Unserialize_impl (Stream &is, prevector< N, T > &v, const V &)
 
template<typename Stream , unsigned int N, typename T >
void Unserialize (Stream &is, prevector< N, T > &v)
 
template<typename Stream , typename T , typename A >
void Serialize_impl (Stream &os, const std::vector< T, A > &v, const unsigned char &)
 vector vectors of unsigned char are a special case and are intended to be serialized as a single opaque blob. More...
 
template<typename Stream , typename T , typename A , typename V >
void Serialize_impl (Stream &os, const std::vector< T, A > &v, const V &)
 
template<typename Stream , typename T , typename A >
void Serialize (Stream &os, const std::vector< T, A > &v)
 
template<typename Stream , typename T , typename A >
void Unserialize_impl (Stream &is, std::vector< T, A > &v, const unsigned char &)
 
template<typename Stream , typename T , typename A , typename V >
void Unserialize_impl (Stream &is, std::vector< T, A > &v, const V &)
 
template<typename Stream , typename T , typename A >
void Unserialize (Stream &is, std::vector< T, A > &v)
 
template<typename Stream , typename K , typename T >
void Serialize (Stream &os, const std::pair< K, T > &item)
 pair More...
 
template<typename Stream , typename K , typename T >
void Unserialize (Stream &is, std::pair< K, T > &item)
 
template<typename Stream , typename K , typename T , typename Pred , typename A >
void Serialize (Stream &os, const std::map< K, T, Pred, A > &m)
 map More...
 
template<typename Stream , typename K , typename T , typename Pred , typename A >
void Unserialize (Stream &is, std::map< K, T, Pred, A > &m)
 
template<typename Stream , typename K , typename Pred , typename A >
void Serialize (Stream &os, const std::set< K, Pred, A > &m)
 set More...
 
template<typename Stream , typename K , typename Pred , typename A >
void Unserialize (Stream &is, std::set< K, Pred, A > &m)
 
template<typename Stream , typename T >
void Serialize (Stream &os, const std::shared_ptr< const T > &p)
 shared_ptr More...
 
template<typename Stream , typename T >
void Unserialize (Stream &os, std::shared_ptr< const T > &p)
 
template<typename Stream , typename T >
void Serialize (Stream &os, const std::unique_ptr< const T > &p)
 unique_ptr More...
 
template<typename Stream , typename T >
void Unserialize (Stream &os, std::unique_ptr< const T > &p)
 
template<typename Stream , typename T >
void Serialize (Stream &os, const T &a)
 If none of the specialized versions above matched, default to calling member function. More...
 
template<typename Stream , typename T >
void Unserialize (Stream &is, T &a)
 
template<typename Stream , typename T >
void SerReadWrite (Stream &s, const T &obj, CSerActionSerialize ser_action)
 
template<typename Stream , typename T >
void SerReadWrite (Stream &s, T &obj, CSerActionUnserialize ser_action)
 
template<typename Stream >
void SerializeMany (Stream &s)
 
template<typename Stream , typename Arg >
void SerializeMany (Stream &s, Arg &&arg)
 
template<typename Stream , typename Arg , typename... Args>
void SerializeMany (Stream &s, Arg &&arg, Args &&... args)
 
template<typename Stream >
void UnserializeMany (Stream &s)
 
template<typename Stream , typename Arg >
void UnserializeMany (Stream &s, Arg &arg)
 
template<typename Stream , typename Arg , typename... Args>
void UnserializeMany (Stream &s, Arg &arg, Args &... args)
 
template<typename Stream , typename... Args>
void SerReadWriteMany (Stream &s, CSerActionSerialize ser_action, Args &&... args)
 
template<typename Stream , typename... Args>
void SerReadWriteMany (Stream &s, CSerActionUnserialize ser_action, Args &... args)
 
template<typename T >
size_t GetSerializeSize (const T &t, int nType, int nVersion=0)
 
template<typename S , typename T >
size_t GetSerializeSize (const S &s, const T &t)
 

Variables

constexpr deserialize_type deserialize {}
 

Macro Definition Documentation

◆ ADD_SERIALIZE_METHODS

#define ADD_SERIALIZE_METHODS
Value:
template<typename Stream> \
void Serialize(Stream& s) const { \
NCONST_PTR(this)->SerializationOp(s, CSerActionSerialize()); \
} \
template<typename Stream> \
void Unserialize(Stream& s) { \
SerializationOp(s, CSerActionUnserialize()); \
}
void Serialize(Stream &s, char a)
Definition: serialize.h:170
void Unserialize(Stream &s, char &a)
Definition: serialize.h:182
Support for ADD_SERIALIZE_METHODS and READWRITE macro.
Definition: serialize.h:813

Implement three methods for serializable objects.

These are actually wrappers over "SerializationOp" template, which implements the body of each class' serialization code. Adding "ADD_SERIALIZE_METHODS" in the body of the class causes these wrappers to be added as members.

Definition at line 160 of file serialize.h.

◆ COMPACTSIZE

#define COMPACTSIZE (   obj)    REF(CCompactSize(REF(obj)))

Definition at line 349 of file serialize.h.

◆ FLATDATA

#define FLATDATA (   obj)    REF(CFlatData((char*)&(obj), (char*)&(obj) + sizeof(obj)))

Definition at line 347 of file serialize.h.

◆ LIMITED_STRING

#define LIMITED_STRING (   obj,
 
)    REF(LimitedString< n >(REF(obj)))

Definition at line 350 of file serialize.h.

◆ READWRITE

#define READWRITE (   obj)    (::SerReadWrite(s, (obj), ser_action))

Definition at line 151 of file serialize.h.

◆ READWRITEMANY

#define READWRITEMANY (   ...)    (::SerReadWriteMany(s, ser_action, __VA_ARGS__))

Definition at line 152 of file serialize.h.

◆ VARINT

#define VARINT (   obj)    REF(WrapVarInt(REF(obj)))

Definition at line 348 of file serialize.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
SER_NETWORK 
SER_DISK 
SER_GETHASH 

Definition at line 143 of file serialize.h.

Function Documentation

◆ GetSerializeSize() [1/2]

template<typename S , typename T >
size_t GetSerializeSize ( const S &  s,
const T &  t 
)

Definition at line 954 of file serialize.h.

◆ GetSerializeSize() [2/2]

template<typename T >
size_t GetSerializeSize ( const T &  t,
int  nType,
int  nVersion = 0 
)

Definition at line 948 of file serialize.h.

Here is the caller graph for this function:

◆ GetSizeOfCompactSize()

unsigned int GetSizeOfCompactSize ( uint64_t  nSize)
inline

Compact Size size < 253 – 1 byte size <= USHRT_MAX – 3 bytes (253 + 2 bytes) size <= UINT_MAX – 5 bytes (254 + 4 bytes) size > UINT_MAX – 9 bytes (255 + 8 bytes)

Definition at line 209 of file serialize.h.

Here is the caller graph for this function:

◆ GetSizeOfVarInt()

template<typename I >
unsigned int GetSizeOfVarInt ( n)
inline

Variable-length integers: bytes are a MSB base-128 encoding of the number.

The high bit in each byte signifies whether another digit follows. To make sure the encoding is one-to-one, one is subtracted from all but the last digit. Thus, the byte sequence a[] with length len, where all but the last byte has bit 128 set, encodes the number:

(a[len-1] & 0x7F) + sum(i=1..len-1, 128^i*((a[len-i-1] & 0x7F)+1))

Properties:

  • Very small (0-127: 1 byte, 128-16511: 2 bytes, 16512-2113663: 3 bytes)
  • Every integer has exactly one encoding
  • Encoding does not depend on size of original integer type
  • No redundancy: every (infinite) byte sequence corresponds to a list of encoded integers.

0: [0x00] 256: [0x81 0x00] 1: [0x01] 16383: [0xFE 0x7F] 127: [0x7F] 16384: [0xFF 0x00] 128: [0x80 0x00] 16511: [0xFF 0x7F] 255: [0x80 0x7F] 65535: [0x82 0xFE 0x7F] 2^32: [0x8E 0xFE 0xFE 0xFF 0x00]

Definition at line 301 of file serialize.h.

◆ NCONST_PTR()

template<typename T >
T* NCONST_PTR ( const T *  val)
inline

Used to acquire a non-const pointer "this" to generate bodies of const serialization operations from a template.

Definition at line 57 of file serialize.h.

◆ ReadCompactSize()

template<typename Stream >
uint64_t ReadCompactSize ( Stream &  is)

Definition at line 245 of file serialize.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ReadVarInt()

template<typename Stream , typename I >
I ReadVarInt ( Stream &  is)

Definition at line 334 of file serialize.h.

Here is the call graph for this function:

◆ REF()

template<typename T >
T& REF ( const T &  val)
inline

Used to bypass the rule against non-const reference to temporary where it makes sense with wrappers such as CFlatData or CTxDB.

Definition at line 47 of file serialize.h.

Here is the caller graph for this function:

◆ ser_double_to_uint64()

uint64_t ser_double_to_uint64 ( double  x)
inline

Definition at line 109 of file serialize.h.

Here is the caller graph for this function:

◆ ser_float_to_uint32()

uint32_t ser_float_to_uint32 ( float  x)
inline

Definition at line 115 of file serialize.h.

Here is the caller graph for this function:

◆ ser_readdata16()

template<typename Stream >
uint16_t ser_readdata16 ( Stream &  s)
inline

Definition at line 91 of file serialize.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ser_readdata32()

template<typename Stream >
uint32_t ser_readdata32 ( Stream &  s)
inline

Definition at line 97 of file serialize.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ser_readdata64()

template<typename Stream >
uint64_t ser_readdata64 ( Stream &  s)
inline

Definition at line 103 of file serialize.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ser_readdata8()

template<typename Stream >
uint8_t ser_readdata8 ( Stream &  s)
inline

Definition at line 85 of file serialize.h.

Here is the caller graph for this function:

◆ ser_uint32_to_float()

float ser_uint32_to_float ( uint32_t  y)
inline

Definition at line 127 of file serialize.h.

Here is the caller graph for this function:

◆ ser_uint64_to_double()

double ser_uint64_to_double ( uint64_t  y)
inline

Definition at line 121 of file serialize.h.

Here is the caller graph for this function:

◆ ser_writedata16()

template<typename Stream >
void ser_writedata16 ( Stream &  s,
uint16_t  obj 
)
inline

Definition at line 70 of file serialize.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ser_writedata32()

template<typename Stream >
void ser_writedata32 ( Stream &  s,
uint32_t  obj 
)
inline

Definition at line 75 of file serialize.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ser_writedata64()

template<typename Stream >
void ser_writedata64 ( Stream &  s,
uint64_t  obj 
)
inline

Definition at line 80 of file serialize.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ser_writedata8()

template<typename Stream >
void ser_writedata8 ( Stream &  s,
uint8_t  obj 
)
inline

Definition at line 66 of file serialize.h.

Here is the caller graph for this function:

◆ Serialize() [1/21]

template<typename Stream , unsigned int N, typename T >
void Serialize ( Stream &  os,
const prevector< N, T > &  v 
)
inline

Definition at line 586 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [2/21]

template<typename Stream , typename C >
void Serialize ( Stream &  os,
const std::basic_string< C > &  str 
)

Forward declarations.

string

Definition at line 548 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [3/21]

template<typename Stream , typename K , typename T , typename Pred , typename A >
void Serialize ( Stream &  os,
const std::map< K, T, Pred, A > &  m 
)

map

Definition at line 725 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [4/21]

template<typename Stream , typename K , typename T >
void Serialize ( Stream &  os,
const std::pair< K, T > &  item 
)

pair

Definition at line 706 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [5/21]

template<typename Stream , typename K , typename Pred , typename A >
void Serialize ( Stream &  os,
const std::set< K, Pred, A > &  m 
)

set

Definition at line 752 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [6/21]

template<typename Stream , typename T >
void Serialize ( Stream &  os,
const std::shared_ptr< const T > &  p 
)

shared_ptr

Definition at line 796 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [7/21]

template<typename Stream , typename T >
void Serialize ( Stream &  os,
const std::unique_ptr< const T > &  p 
)

unique_ptr

Definition at line 779 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [8/21]

template<typename Stream , typename T , typename A >
void Serialize ( Stream &  os,
const std::vector< T, A > &  v 
)
inline

Definition at line 654 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [9/21]

template<typename Stream , typename T >
void Serialize ( Stream &  os,
const T &  a 
)
inline

If none of the specialized versions above matched, default to calling member function.

Definition at line 529 of file serialize.h.

◆ Serialize() [10/21]

template<typename Stream >
void Serialize ( Stream &  s,
bool  a 
)
inline

Definition at line 194 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [11/21]

template<typename Stream >
void Serialize ( Stream &  s,
char  a 
)
inline

Definition at line 170 of file serialize.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Serialize() [12/21]

template<typename Stream >
void Serialize ( Stream &  s,
double  a 
)
inline

Definition at line 180 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [13/21]

template<typename Stream >
void Serialize ( Stream &  s,
float  a 
)
inline

Definition at line 179 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [14/21]

template<typename Stream >
void Serialize ( Stream &  s,
int16_t  a 
)
inline

Definition at line 173 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [15/21]

template<typename Stream >
void Serialize ( Stream &  s,
int32_t  a 
)
inline

Definition at line 175 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [16/21]

template<typename Stream >
void Serialize ( Stream &  s,
int64_t  a 
)
inline

Definition at line 177 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [17/21]

template<typename Stream >
void Serialize ( Stream &  s,
int8_t  a 
)
inline

Definition at line 171 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [18/21]

template<typename Stream >
void Serialize ( Stream &  s,
uint16_t  a 
)
inline

Definition at line 174 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [19/21]

template<typename Stream >
void Serialize ( Stream &  s,
uint32_t  a 
)
inline

Definition at line 176 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [20/21]

template<typename Stream >
void Serialize ( Stream &  s,
uint64_t  a 
)
inline

Definition at line 178 of file serialize.h.

Here is the call graph for this function:

◆ Serialize() [21/21]

template<typename Stream >
void Serialize ( Stream &  s,
uint8_t  a 
)
inline

Definition at line 172 of file serialize.h.

Here is the call graph for this function:

◆ Serialize_impl() [1/4]

template<typename Stream , unsigned int N, typename T >
void Serialize_impl ( Stream &  os,
const prevector< N, T > &  v,
const unsigned char &   
)

prevector prevectors of unsigned char are a special case and are intended to be serialized as a single opaque blob.

prevector

Definition at line 570 of file serialize.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Serialize_impl() [2/4]

template<typename Stream , unsigned int N, typename T , typename V >
void Serialize_impl ( Stream &  os,
const prevector< N, T > &  v,
const V &   
)

Definition at line 578 of file serialize.h.

Here is the call graph for this function:

◆ Serialize_impl() [3/4]

template<typename Stream , typename T , typename A >
void Serialize_impl ( Stream &  os,
const std::vector< T, A > &  v,
const unsigned char &   
)

vector vectors of unsigned char are a special case and are intended to be serialized as a single opaque blob.

vector

Definition at line 638 of file serialize.h.

Here is the call graph for this function:

◆ Serialize_impl() [4/4]

template<typename Stream , typename T , typename A , typename V >
void Serialize_impl ( Stream &  os,
const std::vector< T, A > &  v,
const V &   
)

Definition at line 646 of file serialize.h.

Here is the call graph for this function:

◆ SerializeMany() [1/3]

template<typename Stream >
void SerializeMany ( Stream &  s)

Definition at line 889 of file serialize.h.

Here is the caller graph for this function:

◆ SerializeMany() [2/3]

template<typename Stream , typename Arg >
void SerializeMany ( Stream &  s,
Arg &&  arg 
)

Definition at line 894 of file serialize.h.

Here is the call graph for this function:

◆ SerializeMany() [3/3]

template<typename Stream , typename Arg , typename... Args>
void SerializeMany ( Stream &  s,
Arg &&  arg,
Args &&...  args 
)

Definition at line 900 of file serialize.h.

Here is the call graph for this function:

◆ SerReadWrite() [1/2]

template<typename Stream , typename T >
void SerReadWrite ( Stream &  s,
const T &  obj,
CSerActionSerialize  ser_action 
)
inline

Definition at line 822 of file serialize.h.

Here is the call graph for this function:

◆ SerReadWrite() [2/2]

template<typename Stream , typename T >
void SerReadWrite ( Stream &  s,
T &  obj,
CSerActionUnserialize  ser_action 
)
inline

Definition at line 828 of file serialize.h.

Here is the call graph for this function:

◆ SerReadWriteMany() [1/2]

template<typename Stream , typename... Args>
void SerReadWriteMany ( Stream &  s,
CSerActionSerialize  ser_action,
Args &&...  args 
)
inline

Definition at line 925 of file serialize.h.

Here is the call graph for this function:

◆ SerReadWriteMany() [2/2]

template<typename Stream , typename... Args>
void SerReadWriteMany ( Stream &  s,
CSerActionUnserialize  ser_action,
Args &...  args 
)
inline

Definition at line 931 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [1/21]

template<typename Stream , unsigned int N, typename T >
void Unserialize ( Stream &  is,
prevector< N, T > &  v 
)
inline

Definition at line 627 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [2/21]

template<typename Stream , typename C >
void Unserialize ( Stream &  is,
std::basic_string< C > &  str 
)

Definition at line 556 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [3/21]

template<typename Stream , typename K , typename T , typename Pred , typename A >
void Unserialize ( Stream &  is,
std::map< K, T, Pred, A > &  m 
)

Definition at line 733 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [4/21]

template<typename Stream , typename K , typename T >
void Unserialize ( Stream &  is,
std::pair< K, T > &  item 
)

Definition at line 713 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [5/21]

template<typename Stream , typename K , typename Pred , typename A >
void Unserialize ( Stream &  is,
std::set< K, Pred, A > &  m 
)

Definition at line 760 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [6/21]

template<typename Stream , typename T , typename A >
void Unserialize ( Stream &  is,
std::vector< T, A > &  v 
)
inline

Definition at line 695 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [7/21]

template<typename Stream , typename T >
void Unserialize ( Stream &  is,
T &  a 
)
inline

Definition at line 535 of file serialize.h.

◆ Unserialize() [8/21]

template<typename Stream , typename T >
void Unserialize ( Stream &  os,
std::shared_ptr< const T > &  p 
)

Definition at line 802 of file serialize.h.

◆ Unserialize() [9/21]

template<typename Stream , typename T >
void Unserialize ( Stream &  os,
std::unique_ptr< const T > &  p 
)

Definition at line 785 of file serialize.h.

◆ Unserialize() [10/21]

template<typename Stream >
void Unserialize ( Stream &  s,
bool &  a 
)
inline

Definition at line 195 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [11/21]

template<typename Stream >
void Unserialize ( Stream &  s,
char &  a 
)
inline

Definition at line 182 of file serialize.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Unserialize() [12/21]

template<typename Stream >
void Unserialize ( Stream &  s,
double &  a 
)
inline

Definition at line 192 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [13/21]

template<typename Stream >
void Unserialize ( Stream &  s,
float &  a 
)
inline

Definition at line 191 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [14/21]

template<typename Stream >
void Unserialize ( Stream &  s,
int16_t &  a 
)
inline

Definition at line 185 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [15/21]

template<typename Stream >
void Unserialize ( Stream &  s,
int32_t &  a 
)
inline

Definition at line 187 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [16/21]

template<typename Stream >
void Unserialize ( Stream &  s,
int64_t &  a 
)
inline

Definition at line 189 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [17/21]

template<typename Stream >
void Unserialize ( Stream &  s,
int8_t &  a 
)
inline

Definition at line 183 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [18/21]

template<typename Stream >
void Unserialize ( Stream &  s,
uint16_t &  a 
)
inline

Definition at line 186 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [19/21]

template<typename Stream >
void Unserialize ( Stream &  s,
uint32_t &  a 
)
inline

Definition at line 188 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [20/21]

template<typename Stream >
void Unserialize ( Stream &  s,
uint64_t &  a 
)
inline

Definition at line 190 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize() [21/21]

template<typename Stream >
void Unserialize ( Stream &  s,
uint8_t &  a 
)
inline

Definition at line 184 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize_impl() [1/4]

template<typename Stream , unsigned int N, typename T >
void Unserialize_impl ( Stream &  is,
prevector< N, T > &  v,
const unsigned char &   
)

Definition at line 593 of file serialize.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Unserialize_impl() [2/4]

template<typename Stream , unsigned int N, typename T , typename V >
void Unserialize_impl ( Stream &  is,
prevector< N, T > &  v,
const V &   
)

Definition at line 609 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize_impl() [3/4]

template<typename Stream , typename T , typename A >
void Unserialize_impl ( Stream &  is,
std::vector< T, A > &  v,
const unsigned char &   
)

Definition at line 661 of file serialize.h.

Here is the call graph for this function:

◆ Unserialize_impl() [4/4]

template<typename Stream , typename T , typename A , typename V >
void Unserialize_impl ( Stream &  is,
std::vector< T, A > &  v,
const V &   
)

Definition at line 677 of file serialize.h.

Here is the call graph for this function:

◆ UnserializeMany() [1/3]

template<typename Stream >
void UnserializeMany ( Stream &  s)
inline

Definition at line 907 of file serialize.h.

Here is the caller graph for this function:

◆ UnserializeMany() [2/3]

template<typename Stream , typename Arg >
void UnserializeMany ( Stream &  s,
Arg &  arg 
)
inline

Definition at line 912 of file serialize.h.

Here is the call graph for this function:

◆ UnserializeMany() [3/3]

template<typename Stream , typename Arg , typename... Args>
void UnserializeMany ( Stream &  s,
Arg &  arg,
Args &...  args 
)
inline

Definition at line 918 of file serialize.h.

Here is the call graph for this function:

◆ WrapVarInt()

template<typename I >
CVarInt<I> WrapVarInt ( I &  n)

Definition at line 459 of file serialize.h.

◆ WriteCompactSize() [1/2]

void WriteCompactSize ( CSizeComputer os,
uint64_t  nSize 
)
inline

Definition at line 942 of file serialize.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ WriteCompactSize() [2/2]

template<typename Stream >
void WriteCompactSize ( Stream &  os,
uint64_t  nSize 
)

Definition at line 220 of file serialize.h.

Here is the call graph for this function:

◆ WriteVarInt() [1/2]

template<typename I >
void WriteVarInt ( CSizeComputer os,
n 
)
inline

Definition at line 937 of file serialize.h.

Here is the call graph for this function:

◆ WriteVarInt() [2/2]

template<typename Stream , typename I >
void WriteVarInt ( Stream &  os,
n 
)

Definition at line 317 of file serialize.h.

Here is the call graph for this function:

Variable Documentation

◆ deserialize

constexpr deserialize_type deserialize {}
constexpr

Definition at line 40 of file serialize.h.