![]() |
Bitcoin ABC 0.32.5
P2P Digital Currency
|
#include <attributes.h>#include <compat/assumptions.h>#include <compat/endian.h>#include <prevector.h>#include <rcu.h>#include <span.h>#include <algorithm>#include <array>#include <concepts>#include <cstdint>#include <cstring>#include <ios>#include <limits>#include <map>#include <memory>#include <set>#include <string>#include <utility>#include <vector>Go to the source code of this file.
Classes | |
| struct | deserialize_type |
| Dummy data type to identify deserializing constructors. More... | |
| struct | CheckVarIntMode< Mode, I > |
| class | Wrapper< Formatter, T > |
| Simple wrapper class to serialize objects using a formatter; used by Using(). More... | |
| struct | VarIntFormatter< Mode > |
| Serialization wrapper class for integers in VarInt format. More... | |
| struct | CustomUintFormatter< Bytes, BigEndian > |
| Serialization wrapper class for custom integers and enums. More... | |
| struct | CompactSizeFormatter< RangeCheck > |
| Formatter for integers in CompactSize format. More... | |
| struct | ChronoFormatter< U, LOSSY > |
| struct | LimitedStringFormatter< Limit > |
| struct | VectorFormatter< Formatter > |
| Formatter to serialize/deserialize vector elements using another formatter. More... | |
| class | DifferenceFormatter |
| Helper for differentially encoded Compact Size integers in lists. More... | |
| struct | DifferentialIndexedItemFormatter |
| Helper for a list of items containing a differentially encoded index as their first member. More... | |
| struct | DefaultFormatter |
| Default formatter. More... | |
| struct | ActionSerialize |
| Support for all macros providing or using the ser_action parameter of the SerializationOps method. More... | |
| struct | ActionUnserialize |
| class | CSizeComputer |
| GetSerializeSize implementations More... | |
| class | ParamsStream< Params, SubStream > |
| Wrapper that overrides the GetParams() function of a stream (and hides GetVersion/GetType). More... | |
| class | ParamsWrapper< Params, T > |
| Wrapper that serializes objects with the specified parameters. More... | |
Concepts | |
| concept | CharNotInt8 |
| concept | Serializable |
| If none of the specialized versions above matched, default to calling member function. | |
| concept | Unserializable |
Macros | |
| #define | READWRITE(...) (::SerReadWriteMany(s, ser_action, __VA_ARGS__)) |
| #define | SER_READ(obj, code) |
| #define | SER_WRITE(obj, code) ::SerWrite(s, ser_action, obj, [&](Stream &s, const Type &obj) { code; }) |
| #define | FORMATTER_METHODS(cls, obj) |
| Implement the Ser and Unser methods needed for implementing a formatter (see Using below). More... | |
| #define | FORMATTER_METHODS_PARAMS(cls, obj, paramcls, paramobj) |
| Variant of FORMATTER_METHODS that supports a declared parameter type. More... | |
| #define | BASE_SERIALIZE_METHODS(cls) |
| #define | SERIALIZE_METHODS(cls, obj) |
| Implement the Serialize and Unserialize methods by delegating to a single templated static method that takes the to-be-(de)serialized object as a parameter. More... | |
| #define | SERIALIZE_METHODS_PARAMS(cls, obj, paramcls, paramobj) |
| Variant of SERIALIZE_METHODS that supports a declared parameter type. More... | |
| #define | VARINT_MODE(obj, mode) Using<VarIntFormatter<mode>>(obj) |
| #define | VARINT(obj) Using<VarIntFormatter<VarIntMode::DEFAULT>>(obj) |
| #define | COMPACTSIZE(obj) Using<CompactSizeFormatter<true>>(obj) |
| #define | LIMITED_STRING(obj, n) Using<LimitedStringFormatter<n>>(obj) |
Typedefs | |
| template<int Bytes> | |
| using | BigEndianFormatter = CustomUintFormatter< Bytes, true > |
| template<typename U > | |
| using | LossyChronoFormatter = ChronoFormatter< U, true > |
Enumerations | |
| enum | { SER_NETWORK = (1 << 0) , SER_DISK = (1 << 1) , SER_GETHASH = (1 << 2) } |
| enum class | VarIntMode { DEFAULT , NONNEGATIVE_SIGNED } |
| Variable-length integers: bytes are a MSB base-128 encoding of the number. More... | |
Functions | |
| template<typename Stream > | |
| void | ser_writedata8 (Stream &s, uint8_t obj) |
| Lowest-level serialization and conversion. More... | |
| template<typename Stream > | |
| void | ser_writedata16 (Stream &s, uint16_t obj) |
| template<typename Stream > | |
| void | ser_writedata16be (Stream &s, uint16_t obj) |
| template<typename Stream > | |
| void | ser_writedata32 (Stream &s, uint32_t obj) |
| template<typename Stream > | |
| void | ser_writedata32be (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 > | |
| uint16_t | ser_readdata16be (Stream &s) |
| template<typename Stream > | |
| uint32_t | ser_readdata32 (Stream &s) |
| template<typename Stream > | |
| uint32_t | ser_readdata32be (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<class Out , class In > | |
| Out & | AsBase (In &x) |
| Convert any argument to a reference to X, maintaining constness. More... | |
| template<class Out , class In > | |
| const Out & | AsBase (const In &x) |
| template<typename Stream , CharNotInt8 V> | |
| void | Serialize (Stream &, V)=delete |
| template<typename Stream > | |
| void | Serialize (Stream &s, std::byte 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 , size_t N> | |
| void | Serialize (Stream &s, const int8_t(&a)[N]) |
| template<typename Stream , BasicByte B, size_t N> | |
| void | Serialize (Stream &s, const B(&a)[N]) |
| template<typename Stream , size_t N> | |
| void | Serialize (Stream &s, const std::array< int8_t, N > &a) |
| template<typename Stream , size_t N> | |
| void | Serialize (Stream &s, const std::array< uint8_t, N > &a) |
| template<typename Stream , BasicByte B, std::size_t N> | |
| void | Serialize (Stream &s, const std::array< B, N > &a) |
| template<typename Stream , BasicByte B> | |
| void | Serialize (Stream &s, Span< B > span) |
| template<typename Stream , CharNotInt8 V> | |
| void | Unserialize (Stream &, V)=delete |
| template<typename Stream > | |
| void | Unserialize (Stream &s, std::byte &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 , size_t N> | |
| void | Unserialize (Stream &s, int8_t(&a)[N]) |
| template<typename Stream , BasicByte B, size_t N> | |
| void | Unserialize (Stream &s, B(&a)[N]) |
| template<typename Stream > | |
| void | Serialize (Stream &s, bool a) |
| template<typename Stream > | |
| void | Unserialize (Stream &s, bool &a) |
| template<typename Stream , BasicByte B, std::size_t N> | |
| void | Unserialize (Stream &s, std::array< B, N > &a) |
| template<typename Stream , BasicByte B> | |
| void | Unserialize (Stream &s, Span< B > span) |
| uint32_t | 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, bool range_check=true) |
| Decode a CompactSize-encoded variable-length integer. More... | |
| template<VarIntMode Mode, typename I > | |
| unsigned int | GetSizeOfVarInt (I n) |
| template<typename I > | |
| void | WriteVarInt (CSizeComputer &os, I n) |
| template<typename Stream , VarIntMode Mode, typename I > | |
| void | WriteVarInt (Stream &os, I n) |
| template<typename Stream , VarIntMode Mode, typename I > | |
| I | ReadVarInt (Stream &is) |
| template<typename Formatter , typename T > | |
| static Wrapper< Formatter, T & > | Using (T &&t) |
| Cause serialization/deserialization of an object to be done using a specified formatter class. More... | |
| 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 (Stream &os, const prevector< N, T > &v) |
| prevector More... | |
| 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 (Stream &os, const std::vector< T, A > &v) |
| vector More... | |
| 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 RCUPtr< const T > &p) |
| RCUPtr. More... | |
| template<typename Stream , typename T > | |
| void | Unserialize (Stream &os, RCUPtr< const T > &p) |
| template<typename Stream , typename T > requires Serializable<T, Stream> | |
| void | Serialize (Stream &os, const T &a) |
| template<typename Stream , typename T > requires Unserializable<T, Stream> | |
| void | Unserialize (Stream &is, T &&a) |
| template<typename Stream > | |
| void | SerializeMany (Stream &s) |
| template<typename Stream , typename Arg , typename... Args> | |
| void | SerializeMany (Stream &s, const Arg &arg, const Args &...args) |
| template<typename Stream > | |
| void | UnserializeMany (Stream &s) |
| template<typename Stream , typename Arg , typename... Args> | |
| void | UnserializeMany (Stream &s, Arg &&arg, Args &&...args) |
| template<typename Stream , typename... Args> | |
| void | SerReadWriteMany (Stream &s, ActionSerialize ser_action, const Args &...args) |
| template<typename Stream , typename... Args> | |
| void | SerReadWriteMany (Stream &s, ActionUnserialize ser_action, Args &&...args) |
| template<typename Stream , typename Type , typename Fn > | |
| void | SerRead (Stream &s, ActionSerialize ser_action, Type &&, Fn &&) |
| template<typename Stream , typename Type , typename Fn > | |
| void | SerRead (Stream &s, ActionUnserialize ser_action, Type &&obj, Fn &&fn) |
| template<typename Stream , typename Type , typename Fn > | |
| void | SerWrite (Stream &s, ActionSerialize ser_action, Type &&obj, Fn &&fn) |
| template<typename Stream , typename Type , typename Fn > | |
| void | SerWrite (Stream &s, ActionUnserialize ser_action, Type &&, Fn &&) |
| template<typename T > | |
| size_t | GetSerializeSize (const T &t, int nVersion=0) |
| template<typename... T> | |
| size_t | GetSerializeSizeMany (int nVersion, const T &...t) |
| template<typename Params , typename T > | |
| static auto | WithParams (const Params ¶ms, T &&t) |
| Return a wrapper around t that (de)serializes it with specified parameter params. More... | |
Variables | |
| static constexpr uint64_t | MAX_SIZE = 0x02000000 |
| The maximum size of a serialized object in bytes or number of elements (for eg vectors) when the size is encoded as CompactSize. More... | |
| static const unsigned int | MAX_VECTOR_ALLOCATE = 5000000 |
| Maximum amount of memory (in bytes) to allocate at once when deserializing vectors. More... | |
| constexpr deserialize_type | deserialize {} |
| #define BASE_SERIALIZE_METHODS | ( | cls | ) |
Definition at line 269 of file serialize.h.
| #define COMPACTSIZE | ( | obj | ) | Using<CompactSizeFormatter<true>>(obj) |
Definition at line 644 of file serialize.h.
| #define FORMATTER_METHODS | ( | cls, | |
| obj | |||
| ) |
Implement the Ser and Unser methods needed for implementing a formatter (see Using below).
Both Ser and Unser are delegated to a single static method SerializationOps, which is polymorphic in the serialized/deserialized type (allowing it to be const when serializing, and non-const when deserializing).
Example use: struct FooFormatter { FORMATTER_METHODS(Class, obj) { READWRITE(obj.val1, VARINT(obj.val2)); } } would define a class FooFormatter that defines a serialization of Class objects consisting of serializing its val1 member using the default serialization, and its val2 member using VARINT serialization. That FooFormatter can then be used in statements like READWRITE(Using<FooFormatter>(obj.bla)).
Definition at line 215 of file serialize.h.
| #define FORMATTER_METHODS_PARAMS | ( | cls, | |
| obj, | |||
| paramcls, | |||
| paramobj | |||
| ) |
Variant of FORMATTER_METHODS that supports a declared parameter type.
If a formatter has a declared parameter type, it must be invoked directly or indirectly with a parameter of that type. This permits making serialization depend on run-time context in a type-safe way.
Example use: struct BarParameter { bool fancy; ... }; struct Bar { ... }; struct FooFormatter { FORMATTER_METHODS(Bar, obj, BarParameter, param) { if (param.fancy) { READWRITE(VARINT(obj.value)); } else { READWRITE(obj.value); } } }; which would then be invoked as READWRITE(WithParams(BarParameter{...}, Using<FooFormatter>(obj.foo)))
WithParams(parameter, obj) can be invoked anywhere in the call stack; it is passed down recursively into all serialization code, until another WithParams overrides it.
Parameters will be implicitly converted where appropriate. This means that "parent" serialization code can use a parameter that derives from, or is convertible to, a "child" formatter's parameter type.
Compilation will fail in any context where serialization is invoked but no parameter of a type convertible to BarParameter is provided.
Definition at line 258 of file serialize.h.
| #define LIMITED_STRING | ( | obj, | |
| n | |||
| ) | Using<LimitedStringFormatter<n>>(obj) |
Definition at line 645 of file serialize.h.
| #define READWRITE | ( | ... | ) | (::SerReadWriteMany(s, ser_action, __VA_ARGS__)) |
Definition at line 189 of file serialize.h.
| #define SER_READ | ( | obj, | |
| code | |||
| ) |
Definition at line 190 of file serialize.h.
| #define SER_WRITE | ( | obj, | |
| code | |||
| ) | ::SerWrite(s, ser_action, obj, [&](Stream &s, const Type &obj) { code; }) |
Definition at line 194 of file serialize.h.
| #define SERIALIZE_METHODS | ( | cls, | |
| obj | |||
| ) |
Implement the Serialize and Unserialize methods by delegating to a single templated static method that takes the to-be-(de)serialized object as a parameter.
This approach has the advantage that the constness of the object becomes a template parameter, and thus allows a single implementation that sees the object as const for serializing and non-const for deserializing, without casts.
Definition at line 289 of file serialize.h.
| #define SERIALIZE_METHODS_PARAMS | ( | cls, | |
| obj, | |||
| paramcls, | |||
| paramobj | |||
| ) |
Variant of SERIALIZE_METHODS that supports a declared parameter type.
See FORMATTER_METHODS_PARAMS for more information on parameters.
Definition at line 298 of file serialize.h.
| #define VARINT | ( | obj | ) | Using<VarIntFormatter<VarIntMode::DEFAULT>>(obj) |
Definition at line 643 of file serialize.h.
| #define VARINT_MODE | ( | obj, | |
| mode | |||
| ) | Using<VarIntFormatter<mode>>(obj) |
Definition at line 642 of file serialize.h.
| using BigEndianFormatter = CustomUintFormatter<Bytes, true> |
Definition at line 708 of file serialize.h.
| using LossyChronoFormatter = ChronoFormatter<U, true> |
Definition at line 747 of file serialize.h.
| anonymous enum |
| Enumerator | |
|---|---|
| SER_NETWORK | |
| SER_DISK | |
| SER_GETHASH | |
Definition at line 153 of file serialize.h.
|
strong |
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:
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] Mode for encoding VarInts.
Currently there is no support for signed encodings. The default mode will not compile with signed values, and the legacy "nonnegative signed" mode will accept signed values, but improperly encode and decode them if they are negative. In the future, the DEFAULT mode could be extended to support negative numbers in a backwards compatible way, and additional modes could be added to support different varint formats (e.g. zigzag encoding).
| Enumerator | |
|---|---|
| DEFAULT | |
| NONNEGATIVE_SIGNED | |
Definition at line 538 of file serialize.h.
| const Out & AsBase | ( | const In & | x | ) |
Definition at line 184 of file serialize.h.
| Out & AsBase | ( | In & | x | ) |
Convert any argument to a reference to X, maintaining constness.
This can be used in serialization code to invoke a base class's serialization routines.
Example use: class Base { ... }; class Child : public Base { int m_data; public: SERIALIZE_METHODS(Child, obj) { READWRITE(AsBase<Base>(obj), obj.m_data); } };
static_cast cannot easily be used here, as the type of Obj will be const Child& during serialization and Child& during deserialization. AsBase will convert to const Base& and Base& appropriately.
Definition at line 180 of file serialize.h.
| size_t GetSerializeSize | ( | const T & | t, |
| int | nVersion = 0 |
||
| ) |
| size_t GetSerializeSizeMany | ( | int | nVersion, |
| const T &... | t | ||
| ) |
Definition at line 1285 of file serialize.h.
|
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 437 of file serialize.h.
|
inline |
Definition at line 551 of file serialize.h.
| uint64_t ReadCompactSize | ( | Stream & | is, |
| bool | range_check = true |
||
| ) |
Decode a CompactSize-encoded variable-length integer.
As these are primarily used to encode the size of vector-like serializations, by default a range check is performed. When used as a generic number encoding, range_check should be set to false.
Definition at line 477 of file serialize.h.
| I ReadVarInt | ( | Stream & | is | ) |
|
inline |
|
inline |
|
inline |
Definition at line 91 of file serialize.h.
|
inline |
|
inline |
Definition at line 101 of file serialize.h.
|
inline |
|
inline |
Definition at line 111 of file serialize.h.
|
inline |
Definition at line 86 of file serialize.h.
|
inline |
|
inline |
|
inline |
Definition at line 62 of file serialize.h.
|
inline |
|
inline |
Definition at line 72 of file serialize.h.
|
inline |
|
inline |
Definition at line 82 of file serialize.h.
|
inline |
Lowest-level serialization and conversion.
Definition at line 58 of file serialize.h.
|
delete |
|
inline |
| void Serialize | ( | Stream & | os, |
| const RCUPtr< const T > & | p | ||
| ) |
| void Serialize | ( | Stream & | os, |
| const std::basic_string< C > & | str | ||
| ) |
Forward declarations.
string
Definition at line 987 of file serialize.h.
| void Serialize | ( | Stream & | os, |
| const std::map< K, T, Pred, A > & | m | ||
| ) |
| void Serialize | ( | Stream & | os, |
| const std::pair< K, T > & | item | ||
| ) |
| void Serialize | ( | Stream & | os, |
| const std::set< K, Pred, A > & | m | ||
| ) |
| void Serialize | ( | Stream & | os, |
| const std::shared_ptr< const T > & | p | ||
| ) |
| void Serialize | ( | Stream & | os, |
| const std::unique_ptr< const T > & | p | ||
| ) |
|
inline |
| void Serialize | ( | Stream & | os, |
| const T & | a | ||
| ) |
Definition at line 954 of file serialize.h.
|
inline |
| void Serialize | ( | Stream & | s, |
| const B(&) | a[N] | ||
| ) |
|
inline |
Definition at line 344 of file serialize.h.
| void Serialize | ( | Stream & | s, |
| const std::array< B, N > & | a | ||
| ) |
|
inline |
Definition at line 352 of file serialize.h.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| void Serialize | ( | Stream & | s, |
| std::byte | a | ||
| ) |
|
inline |
|
inline |
|
inline |
|
inline |
| void SerializeMany | ( | Stream & | s | ) |
| void SerializeMany | ( | Stream & | s, |
| const Arg & | arg, | ||
| const Args &... | args | ||
| ) |
|
inline |
Definition at line 1255 of file serialize.h.
|
inline |
Definition at line 1258 of file serialize.h.
|
inline |
Definition at line 1243 of file serialize.h.
|
inline |
|
inline |
Definition at line 1264 of file serialize.h.
|
inline |
Definition at line 1270 of file serialize.h.
|
delete |
|
inline |
| void Unserialize | ( | Stream & | is, |
| std::basic_string< C > & | str | ||
| ) |
| void Unserialize | ( | Stream & | is, |
| std::map< K, T, Pred, A > & | m | ||
| ) |
| void Unserialize | ( | Stream & | is, |
| std::pair< K, T > & | item | ||
| ) |
| void Unserialize | ( | Stream & | is, |
| std::set< K, Pred, A > & | m | ||
| ) |
|
inline |
| void Unserialize | ( | Stream & | is, |
| T && | a | ||
| ) |
Definition at line 962 of file serialize.h.
| void Unserialize | ( | Stream & | os, |
| RCUPtr< const T > & | p | ||
| ) |
| void Unserialize | ( | Stream & | os, |
| std::shared_ptr< const T > & | p | ||
| ) |
Definition at line 1162 of file serialize.h.
| void Unserialize | ( | Stream & | os, |
| std::unique_ptr< const T > & | p | ||
| ) |
Definition at line 1149 of file serialize.h.
| void Unserialize | ( | Stream & | s, |
| B(&) | a[N] | ||
| ) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| void Unserialize | ( | Stream & | s, |
| std::array< B, N > & | a | ||
| ) |
| void Unserialize | ( | Stream & | s, |
| std::byte & | a | ||
| ) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinestatic |
Cause serialization/deserialization of an object to be done using a specified formatter class.
To use this, you need a class Formatter that has public functions Ser(stream, const object&) for serialization, and Unser(stream, object&) for deserialization. Serialization routines (inside READWRITE, or directly with << and >> operators), can then use Using<Formatter>(object).
This works by constructing a Wrapper<Formatter, T>-wrapped version of object, where T is const during serialization, and non-const during deserialization, which maintains const correctness.
Definition at line 638 of file serialize.h.
|
static |
Return a wrapper around t that (de)serializes it with specified parameter params.
See FORMATTER_METHODS_PARAMS for more information on serialization parameters.
Definition at line 1354 of file serialize.h.
|
inline |
Definition at line 1276 of file serialize.h.
| void WriteCompactSize | ( | Stream & | os, |
| uint64_t | nSize | ||
| ) |
|
inline |
| void WriteVarInt | ( | Stream & | os, |
| I | n | ||
| ) |
|
constexpr |
Definition at line 53 of file serialize.h.
|
staticconstexpr |
The maximum size of a serialized object in bytes or number of elements (for eg vectors) when the size is encoded as CompactSize.
Definition at line 34 of file serialize.h.
|
static |
Maximum amount of memory (in bytes) to allocate at once when deserializing vectors.
Definition at line 40 of file serialize.h.