A helper class for serializing and deserialization of the RNTuple binary format.
All serialization and deserialization routines return the number of bytes processed (written or read).
The serialization routines can be called with a nullptr buffer, in which case only the size required to perform a serialization is returned. Deserialization routines must be called with a buffer that is sufficiently large.
Deserialization errors throw exceptions. Only when indicated or when passed as a parameter is the buffer size checked.
Definition at line 61 of file RNTupleSerialize.hxx.
Classes | |
struct | RClusterGroup |
struct | RClusterSummary |
class | RContext |
The serialization context is used for the piecewise serialization of a descriptor. More... | |
struct | REnvelopeLink |
Public Types | |
enum class | EDescriptorDeserializeMode { kRaw , kForWriting , kForReading } |
using | StreamerInfoMap_t = std::map<Int_t, TVirtualStreamerInfo *> |
Static Public Member Functions | |
static RResult< std::uint32_t > | DeserializeClusterGroup (const void *buffer, std::uint64_t bufSize, RClusterGroup &clusterGroup) |
static RResult< std::uint32_t > | DeserializeClusterSummary (const void *buffer, std::uint64_t bufSize, RClusterSummary &clusterSummary) |
static RResult< std::uint32_t > | DeserializeColumnType (const void *buffer, ROOT::ENTupleColumnType &type) |
static RResult< std::uint32_t > | DeserializeEnvelope (const void *buffer, std::uint64_t bufSize, std::uint16_t expectedType) |
static RResult< std::uint32_t > | DeserializeEnvelope (const void *buffer, std::uint64_t bufSize, std::uint16_t expectedType, std::uint64_t &xxhash3) |
static RResult< std::uint32_t > | DeserializeEnvelopeLink (const void *buffer, std::uint64_t bufSize, REnvelopeLink &envelopeLink) |
static RResult< std::uint32_t > | DeserializeExtraTypeInfoId (const void *buffer, ROOT::Experimental::EExtraTypeInfoIds &id) |
static RResult< std::uint32_t > | DeserializeFeatureFlags (const void *buffer, std::uint64_t bufSize, std::vector< std::uint64_t > &flags) |
static RResult< std::uint32_t > | DeserializeFieldStructure (const void *buffer, ROOT::ENTupleStructure &structure) |
static RResult< void > | DeserializeFooter (const void *buffer, std::uint64_t bufSize, RNTupleDescriptorBuilder &descBuilder) |
static RResult< std::uint32_t > | DeserializeFrameHeader (const void *buffer, std::uint64_t bufSize, std::uint64_t &frameSize) |
static RResult< std::uint32_t > | DeserializeFrameHeader (const void *buffer, std::uint64_t bufSize, std::uint64_t &frameSize, std::uint32_t &nitems) |
static RResult< void > | DeserializeHeader (const void *buffer, std::uint64_t bufSize, RNTupleDescriptorBuilder &descBuilder) |
static std::uint32_t | DeserializeInt16 (const void *buffer, std::int16_t &val) |
static std::uint32_t | DeserializeInt32 (const void *buffer, std::int32_t &val) |
static std::uint32_t | DeserializeInt64 (const void *buffer, std::int64_t &val) |
static RResult< std::uint32_t > | DeserializeLocator (const void *buffer, std::uint64_t bufSize, RNTupleLocator &locator) |
static RResult< void > | DeserializePageList (const void *buffer, std::uint64_t bufSize, ROOT::DescriptorId_t clusterGroupId, RNTupleDescriptor &desc, EDescriptorDeserializeMode mode) |
static RResult< std::uint32_t > | DeserializeSchemaDescription (const void *buffer, std::uint64_t bufSize, RNTupleDescriptorBuilder &descBuilder) |
static RResult< StreamerInfoMap_t > | DeserializeStreamerInfos (const std::string &extraTypeInfoContent) |
static RResult< std::uint32_t > | DeserializeString (const void *buffer, std::uint64_t bufSize, std::string &val) |
static std::uint32_t | DeserializeUInt16 (const void *buffer, std::uint16_t &val) |
static std::uint32_t | DeserializeUInt32 (const void *buffer, std::uint32_t &val) |
static std::uint32_t | DeserializeUInt64 (const void *buffer, std::uint64_t &val) |
static std::uint32_t | SerializeClusterGroup (const RClusterGroup &clusterGroup, void *buffer) |
static std::uint32_t | SerializeClusterSummary (const RClusterSummary &clusterSummary, void *buffer) |
static std::uint32_t | SerializeColumnType (ROOT::ENTupleColumnType type, void *buffer) |
static std::uint32_t | SerializeEnvelopeLink (const REnvelopeLink &envelopeLink, void *buffer) |
static std::uint32_t | SerializeEnvelopePostscript (unsigned char *envelope, std::uint64_t size) |
static std::uint32_t | SerializeEnvelopePostscript (unsigned char *envelope, std::uint64_t size, std::uint64_t &xxhash3) |
static std::uint32_t | SerializeEnvelopePreamble (std::uint16_t envelopeType, void *buffer) |
static std::uint32_t | SerializeExtraTypeInfoId (ROOT::Experimental::EExtraTypeInfoIds id, void *buffer) |
static std::uint32_t | SerializeFeatureFlags (const std::vector< std::uint64_t > &flags, void *buffer) |
static std::uint32_t | SerializeFieldStructure (ROOT::ENTupleStructure structure, void *buffer) |
While we could just interpret the enums as ints, we make the translation explicit in order to avoid accidentally changing the on-disk numbers when adjusting the enum classes. | |
static std::uint32_t | SerializeFooter (void *buffer, const RNTupleDescriptor &desc, const RContext &context) |
static std::uint32_t | SerializeFramePostscript (void *frame, std::uint64_t size) |
static RContext | SerializeHeader (void *buffer, const RNTupleDescriptor &desc) |
static std::uint32_t | SerializeInt16 (std::int16_t val, void *buffer) |
static std::uint32_t | SerializeInt32 (std::int32_t val, void *buffer) |
static std::uint32_t | SerializeInt64 (std::int64_t val, void *buffer) |
static std::uint32_t | SerializeListFramePreamble (std::uint32_t nitems, void *buffer) |
static std::uint32_t | SerializeLocator (const RNTupleLocator &locator, void *buffer) |
static std::uint32_t | SerializePageList (void *buffer, const RNTupleDescriptor &desc, std::span< ROOT::DescriptorId_t > physClusterIDs, const RContext &context) |
static std::uint32_t | SerializeRecordFramePreamble (void *buffer) |
static std::uint32_t | SerializeSchemaDescription (void *buffer, const RNTupleDescriptor &desc, const RContext &context, bool forHeaderExtension=false) |
Serialize the schema description in desc into buffer . | |
static std::string | SerializeStreamerInfos (const StreamerInfoMap_t &infos) |
static std::uint32_t | SerializeString (const std::string &val, void *buffer) |
static std::uint32_t | SerializeUInt16 (std::uint16_t val, void *buffer) |
static std::uint32_t | SerializeUInt32 (std::uint32_t val, void *buffer) |
static std::uint32_t | SerializeUInt64 (std::uint64_t val, void *buffer) |
static std::uint32_t | SerializeXxHash3 (const unsigned char *data, std::uint64_t length, std::uint64_t &xxhash3, void *buffer) |
Writes a XxHash-3 64bit checksum of the byte range given by data and length. | |
static RResult< void > | VerifyXxHash3 (const unsigned char *data, std::uint64_t length) |
static RResult< void > | VerifyXxHash3 (const unsigned char *data, std::uint64_t length, std::uint64_t &xxhash3) |
Expects an xxhash3 checksum in the 8 bytes following data + length and verifies it. | |
Static Public Attributes | |
static constexpr std::uint16_t | kEnvelopeTypeFooter = 0x02 |
static constexpr std::uint16_t | kEnvelopeTypeHeader = 0x01 |
static constexpr std::uint16_t | kEnvelopeTypePageList = 0x03 |
static constexpr std::uint16_t | kFlagDeferredColumn = 0x01 |
static constexpr std::uint16_t | kFlagHasTypeChecksum = 0x04 |
static constexpr std::uint16_t | kFlagHasValueRange = 0x02 |
static constexpr std::uint16_t | kFlagProjectedField = 0x02 |
static constexpr std::uint16_t | kFlagRepetitiveField = 0x01 |
static constexpr int64_t | kSuppressedColumnMarker = std::numeric_limits<std::int64_t>::min() |
static constexpr ROOT::DescriptorId_t | kZeroFieldId = std::uint64_t(-2) |
Static Private Member Functions | |
static RResult< std::vector< RClusterDescriptorBuilder > > | DeserializePageListRaw (const void *buffer, std::uint64_t bufSize, ROOT::DescriptorId_t clusterGroupId, const RNTupleDescriptor &desc) |
#include <ROOT/RNTupleSerialize.hxx>
using ROOT::Experimental::Internal::RNTupleSerializer::StreamerInfoMap_t = std::map<Int_t, TVirtualStreamerInfo *> |
Definition at line 84 of file RNTupleSerialize.hxx.
Definition at line 288 of file RNTupleSerialize.hxx.
|
static |
Definition at line 1213 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1162 of file RNTupleSerialize.cxx.
|
static |
Definition at line 721 of file RNTupleSerialize.cxx.
|
static |
Definition at line 898 of file RNTupleSerialize.cxx.
|
static |
Definition at line 865 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1121 of file RNTupleSerialize.cxx.
|
static |
Definition at line 813 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1006 of file RNTupleSerialize.cxx.
|
static |
Definition at line 783 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1713 of file RNTupleSerialize.cxx.
|
static |
Definition at line 974 of file RNTupleSerialize.cxx.
|
static |
Definition at line 940 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1653 of file RNTupleSerialize.cxx.
|
static |
Definition at line 569 of file RNTupleSerialize.cxx.
|
static |
Definition at line 598 of file RNTupleSerialize.cxx.
|
static |
Definition at line 632 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1068 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1918 of file RNTupleSerialize.cxx.
|
staticprivate |
Definition at line 1788 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1368 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1974 of file RNTupleSerialize.cxx.
|
static |
Definition at line 661 of file RNTupleSerialize.cxx.
|
static |
Definition at line 581 of file RNTupleSerialize.cxx.
|
static |
Definition at line 611 of file RNTupleSerialize.cxx.
|
static |
Definition at line 646 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1195 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1138 of file RNTupleSerialize.cxx.
|
static |
Definition at line 681 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1113 of file RNTupleSerialize.cxx.
|
static |
Definition at line 857 of file RNTupleSerialize.cxx.
|
static |
Definition at line 840 of file RNTupleSerialize.cxx.
|
static |
Definition at line 829 of file RNTupleSerialize.cxx.
|
static |
Definition at line 802 of file RNTupleSerialize.cxx.
|
static |
Definition at line 982 of file RNTupleSerialize.cxx.
|
static |
While we could just interpret the enums as ints, we make the translation explicit in order to avoid accidentally changing the on-disk numbers when adjusting the enum classes.
Definition at line 766 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1611 of file RNTupleSerialize.cxx.
|
static |
Definition at line 924 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1512 of file RNTupleSerialize.cxx.
|
static |
Definition at line 559 of file RNTupleSerialize.cxx.
|
static |
Definition at line 586 of file RNTupleSerialize.cxx.
|
static |
Definition at line 616 of file RNTupleSerialize.cxx.
|
static |
Definition at line 912 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1025 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1541 of file RNTupleSerialize.cxx.
|
static |
Definition at line 905 of file RNTupleSerialize.cxx.
|
static |
Serialize the schema description in desc
into buffer
.
If forHeaderExtension
is true, serialize only the fields and columns tagged as part of the header extension (see RNTupleDescriptorBuilder::BeginHeaderExtension
).
Definition at line 1286 of file RNTupleSerialize.cxx.
|
static |
Definition at line 1960 of file RNTupleSerialize.cxx.
|
static |
Definition at line 651 of file RNTupleSerialize.cxx.
|
static |
Definition at line 576 of file RNTupleSerialize.cxx.
|
static |
Definition at line 606 of file RNTupleSerialize.cxx.
|
static |
Definition at line 641 of file RNTupleSerialize.cxx.
|
static |
Writes a XxHash-3 64bit checksum of the byte range given by data and length.
Definition at line 530 of file RNTupleSerialize.cxx.
|
static |
Definition at line 553 of file RNTupleSerialize.cxx.
|
static |
Expects an xxhash3 checksum in the 8 bytes following data + length and verifies it.
Definition at line 541 of file RNTupleSerialize.cxx.
|
staticconstexpr |
Definition at line 68 of file RNTupleSerialize.hxx.
|
staticconstexpr |
Definition at line 67 of file RNTupleSerialize.hxx.
|
staticconstexpr |
Definition at line 69 of file RNTupleSerialize.hxx.
|
staticconstexpr |
Definition at line 75 of file RNTupleSerialize.hxx.
|
staticconstexpr |
Definition at line 73 of file RNTupleSerialize.hxx.
|
staticconstexpr |
Definition at line 76 of file RNTupleSerialize.hxx.
|
staticconstexpr |
Definition at line 72 of file RNTupleSerialize.hxx.
|
staticconstexpr |
Definition at line 71 of file RNTupleSerialize.hxx.
|
staticconstexpr |
Definition at line 80 of file RNTupleSerialize.hxx.
|
staticconstexpr |
Definition at line 78 of file RNTupleSerialize.hxx.