40#include <unordered_map>
53 auto base =
reinterpret_cast<unsigned char *
>(buffer);
55 void **
where = (buffer ==
nullptr) ? &buffer :
reinterpret_cast<void **
>(&pos);
57 pos += RNTupleSerializer::SerializeRecordFramePreamble(*
where);
59 pos += RNTupleSerializer::SerializeUInt32(
fieldDesc.GetFieldVersion(), *
where);
60 pos += RNTupleSerializer::SerializeUInt32(
fieldDesc.GetTypeVersion(), *
where);
62 pos += RNTupleSerializer::SerializeFieldStructure(
fieldDesc.GetStructure(), *
where);
64 std::uint16_t flags = 0;
66 flags |= RNTupleSerializer::kFlagRepetitiveField;
68 flags |= RNTupleSerializer::kFlagProjectedField;
69 if (
fieldDesc.GetTypeChecksum().has_value())
70 flags |= RNTupleSerializer::kFlagHasTypeChecksum;
71 pos += RNTupleSerializer::SerializeUInt16(flags, *
where);
73 pos += RNTupleSerializer::SerializeString(
fieldDesc.GetFieldName(), *
where);
74 pos += RNTupleSerializer::SerializeString(
fieldDesc.GetTypeName(), *
where);
75 pos += RNTupleSerializer::SerializeString(
fieldDesc.GetTypeAlias(), *
where);
76 pos += RNTupleSerializer::SerializeString(
fieldDesc.GetFieldDescription(), *
where);
78 if (flags & RNTupleSerializer::kFlagRepetitiveField) {
79 pos += RNTupleSerializer::SerializeUInt64(
fieldDesc.GetNRepetitions(), *
where);
81 if (flags & RNTupleSerializer::kFlagProjectedField) {
84 if (flags & RNTupleSerializer::kFlagHasTypeChecksum) {
85 pos += RNTupleSerializer::SerializeUInt32(
fieldDesc.GetTypeChecksum().value(), *
where);
88 auto size = pos - base;
89 RNTupleSerializer::SerializeFramePostscript(base,
size);
102 std::span<const ROOT::Experimental::DescriptorId_t>
fieldList,
108 auto base =
reinterpret_cast<unsigned char *
>(buffer);
110 void **
where = (buffer ==
nullptr) ? &buffer :
reinterpret_cast<void **
>(&pos);
119 f.IsProjectedField() ? context.
GetOnDiskFieldId(
f.GetProjectionSourceId()) : kInvalidDescriptorId;
132 auto base =
reinterpret_cast<const unsigned char *
>(buffer);
145 ENTupleStructure structure{ENTupleStructure::kLeaf};
147 if (
fnFrameSizeLeft() < 3 *
sizeof(std::uint32_t) + RNTupleSerializer::SerializeFieldStructure(structure,
nullptr) +
148 sizeof(std::uint16_t)) {
149 return R__FAIL(
"field record frame too short");
154 result = RNTupleSerializer::DeserializeFieldStructure(
bytes, structure);
158 bytes += RNTupleSerializer::DeserializeUInt16(
bytes, flags);
162 std::string typeName;
183 if (flags & RNTupleSerializer::kFlagRepetitiveField) {
185 return R__FAIL(
"field record frame too short");
191 if (flags & RNTupleSerializer::kFlagProjectedField) {
193 return R__FAIL(
"field record frame too short");
199 if (flags & RNTupleSerializer::kFlagHasTypeChecksum) {
201 return R__FAIL(
"field record frame too short");
216 auto base =
reinterpret_cast<unsigned char *
>(buffer);
218 void **
where = (buffer ==
nullptr) ? &buffer :
reinterpret_cast<void **
>(&pos);
220 pos += RNTupleSerializer::SerializeRecordFramePreamble(*
where);
222 pos += RNTupleSerializer::SerializeColumnType(
columnDesc.GetType(), *
where);
223 pos += RNTupleSerializer::SerializeUInt16(
columnDesc.GetBitsOnStorage(), *
where);
225 std::uint16_t flags = 0;
227 flags |= RNTupleSerializer::kFlagDeferredColumn;
229 flags |= RNTupleSerializer::kFlagHasValueRange;
233 pos += RNTupleSerializer::SerializeUInt16(flags, *
where);
234 pos += RNTupleSerializer::SerializeUInt16(
columnDesc.GetRepresentationIndex(), *
where);
235 if (flags & RNTupleSerializer::kFlagDeferredColumn)
237 if (flags & RNTupleSerializer::kFlagHasValueRange) {
238 auto [min, max] = *
columnDesc.GetValueRange();
240 static_assert(
sizeof(min) ==
sizeof(
intMin) &&
sizeof(max) ==
sizeof(
intMax));
243 pos += RNTupleSerializer::SerializeUInt64(
intMin, *
where);
244 pos += RNTupleSerializer::SerializeUInt64(
intMax, *
where);
247 pos += RNTupleSerializer::SerializeFramePostscript(buffer ? base :
nullptr, pos - base);
253 std::span<const ROOT::Experimental::DescriptorId_t>
fieldList,
257 auto base =
reinterpret_cast<unsigned char *
>(buffer);
259 void **
where = (buffer ==
nullptr) ? &buffer :
reinterpret_cast<void **
>(&pos);
263 if (
c.IsAliasColumn())
278 auto base =
reinterpret_cast<const unsigned char *
>(buffer);
295 RNTupleSerializer::SerializeColumnType(
type,
nullptr) +
sizeof(std::uint16_t) + 2 *
sizeof(std::uint32_t)) {
296 return R__FAIL(
"column record frame too short");
304 bytes += RNTupleSerializer::DeserializeUInt16(
bytes, flags);
306 if (flags & RNTupleSerializer::kFlagDeferredColumn) {
308 return R__FAIL(
"column record frame too short");
311 if (flags & RNTupleSerializer::kFlagHasValueRange) {
313 return R__FAIL(
"field record frame too short");
333 auto base =
reinterpret_cast<unsigned char *
>(buffer);
335 void **
where = (buffer ==
nullptr) ? &buffer :
reinterpret_cast<void **
>(&pos);
337 pos += RNTupleSerializer::SerializeRecordFramePreamble(*
where);
339 pos += RNTupleSerializer::SerializeExtraTypeInfoId(desc.GetContentId(), *
where);
340 pos += RNTupleSerializer::SerializeUInt32(desc.GetTypeVersion(), *
where);
341 pos += RNTupleSerializer::SerializeString(desc.GetTypeName(), *
where);
342 pos += RNTupleSerializer::SerializeString(desc.GetContent(), *
where);
344 auto size = pos - base;
345 RNTupleSerializer::SerializeFramePostscript(base,
size);
352 auto base =
reinterpret_cast<unsigned char *
>(buffer);
354 void **
where = (buffer ==
nullptr) ? &buffer :
reinterpret_cast<void **
>(&pos);
368 auto base =
reinterpret_cast<const unsigned char *
>(buffer);
377 EExtraTypeInfoIds
contentId{EExtraTypeInfoIds::kInvalid};
380 return R__FAIL(
"extra type info record frame too short");
388 std::string typeName;
407 RNTupleSerializer::SerializeUInt64(
locator.fBytesOnStorage, buffer);
408 RNTupleSerializer::SerializeUInt64(
locator.GetPosition<std::uint64_t>(), buffer +
sizeof(std::uint64_t));
410 return sizeof(std::uint64_t) +
sizeof(std::uint64_t);
415 auto &
data =
locator.fPosition.emplace<std::uint64_t>();
416 RNTupleSerializer::DeserializeUInt64(buffer,
locator.fBytesOnStorage);
417 RNTupleSerializer::DeserializeUInt64(buffer +
sizeof(std::uint64_t),
data);
424 ?
sizeof(std::uint64_t)
425 :
sizeof(std::uint32_t);
428 RNTupleSerializer::SerializeUInt32(
locator.fBytesOnStorage, buffer);
430 RNTupleSerializer::SerializeUInt64(
locator.fBytesOnStorage, buffer);
447 RNTupleSerializer::DeserializeUInt64(buffer +
sizeof(std::uint32_t),
data.fLocation);
449 RNTupleSerializer::DeserializeUInt64(buffer,
locator.fBytesOnStorage);
450 RNTupleSerializer::DeserializeUInt64(buffer +
sizeof(std::uint64_t),
data.fLocation);
462 auto base =
reinterpret_cast<unsigned char *
>(buffer);
464 void **
where = (buffer ==
nullptr) ? &buffer :
reinterpret_cast<void **
>(&pos);
466 pos += RNTupleSerializer::SerializeRecordFramePreamble(*
where);
471 pos += RNTupleSerializer::SerializeFramePostscript(buffer ? base :
nullptr, pos - base);
477 std::span<const ROOT::Experimental::DescriptorId_t>
fieldList,
481 auto base =
reinterpret_cast<unsigned char *
>(buffer);
483 void **
where = (buffer ==
nullptr) ? &buffer :
reinterpret_cast<void **
>(&pos);
487 if (!
c.IsAliasColumn())
500 auto base =
reinterpret_cast<const unsigned char *
>(buffer);
510 return R__FAIL(
"alias column record frame too short");
523 std::uint64_t &
xxhash3,
void *buffer)
525 if (buffer !=
nullptr) {
539 return R__FAIL(
"XxHash-3 checksum mismatch");
552 if (buffer !=
nullptr) {
553 auto bytes =
reinterpret_cast<unsigned char *
>(buffer);
554 bytes[0] = (val & 0x00FF);
555 bytes[1] = (val & 0xFF00) >> 8;
562 auto bytes =
reinterpret_cast<const unsigned char *
>(buffer);
563 val = std::int16_t(
bytes[0]) + (std::int16_t(
bytes[1]) << 8);
569 return SerializeInt16(val, buffer);
574 return DeserializeInt16(buffer, *
reinterpret_cast<std::int16_t *
>(&val));
579 if (buffer !=
nullptr) {
580 auto bytes =
reinterpret_cast<unsigned char *
>(buffer);
581 bytes[0] = (val & 0x000000FF);
582 bytes[1] = (val & 0x0000FF00) >> 8;
583 bytes[2] = (val & 0x00FF0000) >> 16;
584 bytes[3] = (val & 0xFF000000) >> 24;
591 auto bytes =
reinterpret_cast<const unsigned char *
>(buffer);
592 val = std::int32_t(
bytes[0]) + (std::int32_t(
bytes[1]) << 8) + (std::int32_t(
bytes[2]) << 16) +
593 (std::int32_t(
bytes[3]) << 24);
599 return SerializeInt32(val, buffer);
604 return DeserializeInt32(buffer, *
reinterpret_cast<std::int32_t *
>(&val));
609 if (buffer !=
nullptr) {
610 auto bytes =
reinterpret_cast<unsigned char *
>(buffer);
611 bytes[0] = (val & 0x00000000000000FF);
612 bytes[1] = (val & 0x000000000000FF00) >> 8;
613 bytes[2] = (val & 0x0000000000FF0000) >> 16;
614 bytes[3] = (val & 0x00000000FF000000) >> 24;
615 bytes[4] = (val & 0x000000FF00000000) >> 32;
616 bytes[5] = (val & 0x0000FF0000000000) >> 40;
617 bytes[6] = (val & 0x00FF000000000000) >> 48;
618 bytes[7] = (val & 0xFF00000000000000) >> 56;
625 auto bytes =
reinterpret_cast<const unsigned char *
>(buffer);
626 val = std::int64_t(
bytes[0]) + (std::int64_t(
bytes[1]) << 8) + (std::int64_t(
bytes[2]) << 16) +
627 (std::int64_t(
bytes[3]) << 24) + (std::int64_t(
bytes[4]) << 32) + (std::int64_t(
bytes[5]) << 40) +
628 (std::int64_t(
bytes[6]) << 48) + (std::int64_t(
bytes[7]) << 56);
634 return SerializeInt64(val, buffer);
639 return DeserializeInt64(buffer, *
reinterpret_cast<std::int64_t *
>(&val));
645 auto pos =
reinterpret_cast<unsigned char *
>(buffer);
646 pos += SerializeUInt32(val.length(), pos);
647 memcpy(pos, val.data(), val.length());
649 return sizeof(std::uint32_t) + val.length();
656 if (
bufSize <
sizeof(std::uint32_t))
657 return R__FAIL(
"string buffer too short");
658 bufSize -=
sizeof(std::uint32_t);
660 auto base =
reinterpret_cast<const unsigned char *
>(buffer);
665 return R__FAIL(
"string buffer too short");
669 return sizeof(std::uint32_t) +
length;
709 return SerializeUInt16(0x99, buffer);
774 return SerializeUInt16(0x99, buffer);
827 auto base =
reinterpret_cast<unsigned char *
>(buffer);
829 void **
where = (buffer ==
nullptr) ? &buffer :
reinterpret_cast<void **
>(&pos);
840 if (
size <
sizeof(std::uint64_t))
842 if (
size >=
static_cast<uint64_t
>(1) << 48)
864 const std::uint64_t
minEnvelopeSize =
sizeof(std::uint64_t) +
sizeof(std::uint64_t);
866 return R__FAIL(
"invalid envelope buffer, too short");
868 auto bytes =
reinterpret_cast<const unsigned char *
>(buffer);
876 return R__FAIL(
"envelope type mismatch: expected " + std::to_string(
expectedType) +
", found " +
882 return R__FAIL(
"envelope buffer size too small");
884 return R__FAIL(
"invalid envelope, too short");
904 return SerializeInt64(1, buffer);
910 auto base =
reinterpret_cast<unsigned char *
>(buffer);
912 void **
where = (buffer ==
nullptr) ? &buffer :
reinterpret_cast<void **
>(&pos);
915 pos += SerializeInt64(-1, *
where);
927 DeserializeInt64(frame, marker);
930 SerializeInt64(marker *
static_cast<int64_t
>(
size), frame);
939 std::uint64_t
minSize =
sizeof(std::int64_t);
941 return R__FAIL(
"frame too short");
943 std::int64_t *
ssize =
reinterpret_cast<std::int64_t *
>(&
frameSize);
944 DeserializeInt64(buffer, *
ssize);
946 auto bytes =
reinterpret_cast<const unsigned char *
>(buffer);
954 minSize +=
sizeof(std::uint32_t);
956 return R__FAIL(
"frame too short");
962 return R__FAIL(
"corrupt frame size");
964 return R__FAIL(
"frame too short");
966 return bytes -
reinterpret_cast<const unsigned char *
>(buffer);
982 return SerializeUInt64(0, buffer);
985 auto bytes =
reinterpret_cast<unsigned char *
>(buffer);
987 for (
unsigned i = 0; i < flags.size(); ++i) {
988 if (flags[i] & 0x8000000000000000)
992 if (i == (flags.size() - 1))
993 SerializeUInt64(flags[i],
bytes);
995 bytes += SerializeUInt64(flags[i] | 0x8000000000000000,
bytes);
998 return (flags.size() *
sizeof(std::int64_t));
1003 std::vector<std::uint64_t> &flags)
1005 auto bytes =
reinterpret_cast<const unsigned char *
>(buffer);
1010 if (
bufSize <
sizeof(std::uint64_t))
1011 return R__FAIL(
"feature flag buffer too short");
1013 bufSize -=
sizeof(std::uint64_t);
1014 flags.emplace_back(
f & ~0x8000000000000000);
1015 }
while (
f & 0x8000000000000000);
1017 return (flags.size() *
sizeof(std::uint64_t));
1026 std::uint32_t
size = 0;
1028 (
locator.fBytesOnStorage <= std::numeric_limits<std::int32_t>::max())) {
1029 size += SerializeUInt32(
locator.fBytesOnStorage, buffer);
1030 size += SerializeUInt64(
locator.GetPosition<std::uint64_t>(),
1031 buffer ?
reinterpret_cast<unsigned char *
>(buffer) +
size :
nullptr);
1036 auto payloadp = buffer ?
reinterpret_cast<unsigned char *
>(buffer) +
sizeof(std::int32_t) :
nullptr;
1055 std::int32_t head =
sizeof(std::int32_t) +
size;
1056 head |=
locator.fReserved << 16;
1057 head |=
static_cast<int>(
locatorType & 0x7F) << 24;
1067 if (
bufSize <
sizeof(std::int32_t))
1068 return R__FAIL(
"too short locator");
1070 auto bytes =
reinterpret_cast<const unsigned char *
>(buffer);
1074 bufSize -=
sizeof(std::int32_t);
1077 const int type = head >> 24;
1078 const std::uint32_t
payloadSize = (
static_cast<std::uint32_t
>(head) & 0x0000FFFF) -
sizeof(std::int32_t);
1080 return R__FAIL(
"too short locator");
1082 locator.fReserved =
static_cast<std::uint32_t
>(head >> 16) & 0xFF;
1096 if (
bufSize <
sizeof(std::uint64_t))
1097 return R__FAIL(
"too short locator");
1101 locator.fBytesOnStorage = head;
1104 return bytes -
reinterpret_cast<const unsigned char *
>(buffer);
1111 size += SerializeLocator(
envelopeLink.fLocator, buffer ?
reinterpret_cast<unsigned char *
>(buffer) +
size :
nullptr);
1119 if (
bufSize <
sizeof(std::int64_t))
1120 return R__FAIL(
"too short envelope link");
1122 auto bytes =
reinterpret_cast<const unsigned char *
>(buffer);
1124 bufSize -=
sizeof(std::uint64_t);
1129 return bytes -
reinterpret_cast<const unsigned char *
>(buffer);
1136 if (
clusterSummary.fNEntries >= (
static_cast<std::uint64_t
>(1) << 56)) {
1137 throw RException(
R__FAIL(
"number of entries in cluster exceeds maximum of 2^56"));
1140 auto base =
reinterpret_cast<unsigned char *
>(buffer);
1142 void **
where = (buffer ==
nullptr) ? &buffer :
reinterpret_cast<void **
>(&pos);
1145 pos += SerializeRecordFramePreamble(*
where);
1151 auto size = pos - frame;
1152 pos += SerializeFramePostscript(frame,
size);
1160 auto base =
reinterpret_cast<const unsigned char *
>(buffer);
1170 return R__FAIL(
"too short cluster summary");
1180 return R__FAIL(
"sharded cluster flag set in cluster summary; sharded clusters are currently unsupported.");
1192 auto base =
reinterpret_cast<unsigned char *
>(buffer);
1194 void **
where = (buffer ==
nullptr) ? &buffer :
reinterpret_cast<void **
>(&pos);
1197 pos += SerializeRecordFramePreamble(*
where);
1202 auto size = pos - frame;
1203 pos += SerializeFramePostscript(frame,
size);
1211 auto base =
reinterpret_cast<const unsigned char *
>(buffer);
1221 if (
fnFrameSizeLeft() <
sizeof(std::uint32_t) + 2 *
sizeof(std::uint64_t))
1222 return R__FAIL(
"too short cluster group");
1254 R__ASSERT(GetHeaderExtensionOffset() == -1U);
1265 if (!
c.IsAliasColumn()) {
1266 MapPhysicalColumnId(
c.GetPhysicalId());
1277 MapPhysicalColumnId(
columnDesc.GetPhysicalId());
1282 BeginHeaderExtension();
1291 auto base =
reinterpret_cast<unsigned char *
>(buffer);
1293 void **
where = (buffer ==
nullptr) ? &buffer :
reinterpret_cast<void **
>(&pos);
1297 std::vector<std::reference_wrapper<const RColumnDescriptor>>
extraColumns;
1326 pos += SerializeFramePostscript(buffer ? frame :
nullptr, pos - frame);
1332 if (!
c.get().IsAliasColumn()) {
1336 pos += SerializeFramePostscript(buffer ? frame :
nullptr, pos - frame);
1342 if (
c.get().IsAliasColumn()) {
1346 pos += SerializeFramePostscript(buffer ? frame :
nullptr, pos - frame);
1351 pos += SerializeFramePostscript(buffer ? frame :
nullptr, pos - frame);
1353 return static_cast<std::uint32_t
>(pos - base);
1360 auto base =
reinterpret_cast<const unsigned char *
>(buffer);
1376 for (
unsigned i = 0; i <
nFields; ++i) {
1419 if (
descBuilder.GetDescriptor().GetNLogicalColumns() >
descBuilder.GetDescriptor().GetNPhysicalColumns())
1423 for (
unsigned i = 0; i <
nColumns; ++i) {
1496 return bytes - base;
1505 auto base =
reinterpret_cast<unsigned char *
>(buffer);
1507 void **
where = (buffer ==
nullptr) ? &buffer :
reinterpret_cast<void **
>(&pos);
1509 pos += SerializeEnvelopePreamble(kEnvelopeTypeHeader, *
where);
1517 pos += SerializeSchemaDescription(*
where, desc, context);
1519 std::uint64_t
size = pos - base;
1533 auto base =
reinterpret_cast<unsigned char *
>(buffer);
1535 void **
where = (buffer ==
nullptr) ? &buffer :
reinterpret_cast<void **
>(&pos);
1537 pos += SerializeEnvelopePreamble(kEnvelopeTypePageList, *
where);
1572 pos += SerializeListFramePreamble(0, *
where);
1573 pos += SerializeInt64(kSuppressedColumnMarker, *
where);
1576 pos += SerializeListFramePreamble(
pageRange.fPageInfos.size(), *
where);
1578 for (
const auto &pi :
pageRange.fPageInfos) {
1579 std::int32_t
nElements = pi.fHasChecksum ? -
static_cast<std::int32_t
>(pi.fNElements) : pi.fNElements;
1581 pos += SerializeLocator(pi.fLocator, *
where);
1593 std::uint64_t
size = pos - base;
1594 size += SerializeEnvelopePostscript(base,
size);
1603 auto base =
reinterpret_cast<unsigned char *
>(buffer);
1605 void **
where = (buffer ==
nullptr) ? &buffer :
reinterpret_cast<void **
>(&pos);
1607 pos += SerializeEnvelopePreamble(kEnvelopeTypeFooter, *
where);
1610 pos += SerializeFeatureFlags(std::vector<std::uint64_t>(), *
where);
1615 pos += SerializeRecordFramePreamble(*
where);
1616 pos += SerializeSchemaDescription(*
where, desc, context,
true);
1617 pos += SerializeFramePostscript(buffer ? frame :
nullptr, pos - frame);
1633 pos += SerializeFramePostscript(buffer ? frame :
nullptr, pos - frame);
1635 std::uint32_t
size = pos - base;
1636 size += SerializeEnvelopePostscript(base,
size);
1644 auto base =
reinterpret_cast<const unsigned char *
>(buffer);
1661 for (std::size_t i = 0; i <
featureFlags.size(); ++i) {
1664 unsigned int bit = 0;
1667 return R__FAIL(
"unsupported format feature: " + std::to_string(i * 64 +
bit));
1701 auto base =
reinterpret_cast<const unsigned char *
>(buffer);
1722 if (
fnBufSizeLeft() <
static_cast<int>(
sizeof(std::uint64_t)))
1723 return R__FAIL(
"footer too short");
1726 return R__FAIL(
"XxHash-3 mismatch between header and footer");
1760 .PageListLocator(
clusterGroup.fPageListEnvelopeLink.fLocator)
1761 .PageListLength(
clusterGroup.fPageListEnvelopeLink.fLength)
1777 auto base =
reinterpret_cast<const unsigned char *
>(buffer);
1788 if (
fnBufSizeLeft() <
static_cast<int>(
sizeof(std::uint64_t)))
1789 return R__FAIL(
"page list too short");
1792 return R__FAIL(
"XxHash-3 mismatch between header and page list");
1833 return R__FAIL(
"mismatch between number of clusters and number of cluster summaries");
1835 std::vector<RClusterDescriptor>
clusters;
1836 for (std::uint32_t i = 0; i <
nClusters; ++i) {
1860 for (std::uint32_t k = 0; k <
nPages; ++k) {
1862 return R__FAIL(
"inner frame too short");
1879 return R__FAIL(
"page list frame too short");
1884 return R__FAIL(
"unexpected non-empty page list");
1888 return R__FAIL(
"page list frame too short");
#define R__FORWARD_ERROR(res)
Short-hand to return an RResult<T> in an error state (i.e. after checking)
#define R__FORWARD_RESULT(res)
Short-hand to return an RResult<T> value from a subroutine to the calling stack frame.
#define R__FAIL(msg)
Short-hand to return an RResult<T> in an error state; the RError is implicitly converted into RResult...
#define R__LOG_WARNING(...)
#define R__LOG_DEBUG(DEBUGLEVEL,...)
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h length
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t nitems
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t bytes
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
The available trivial, native content types of a column.
A helper class for piece-wise construction of an RClusterDescriptor.
RClusterDescriptorBuilder & ClusterId(DescriptorId_t clusterId)
RClusterDescriptorBuilder & NEntries(std::uint64_t nEntries)
RClusterDescriptorBuilder & FirstEntryIndex(std::uint64_t firstEntryIndex)
A helper class for piece-wise construction of an RClusterGroupDescriptor.
A helper class for piece-wise construction of an RColumnDescriptor.
A helper class for piece-wise construction of an RFieldDescriptor.
A helper class for piece-wise construction of an RNTupleDescriptor.
The serialization context is used for the piecewise serialization of a descriptor.
DescriptorId_t GetOnDiskColumnId(DescriptorId_t memId) const
const std::vector< DescriptorId_t > & GetOnDiskFieldList() const
Return a vector containing the in-memory field ID for each on-disk counterpart, in order,...
DescriptorId_t GetOnDiskFieldId(DescriptorId_t memId) const
DescriptorId_t GetMemColumnId(DescriptorId_t onDiskId) const
std::uint64_t GetHeaderXxHash3() const
void SetHeaderXxHash3(std::uint64_t xxhash3)
std::size_t GetHeaderExtensionOffset() const
Return the offset of the first element in fOnDisk2MemFieldIDs that is part of the schema extension.
DescriptorId_t GetMemClusterGroupId(DescriptorId_t onDiskId) const
DescriptorId_t GetMemClusterId(DescriptorId_t onDiskId) const
void SetHeaderSize(std::uint64_t size)
void MapSchema(const RNTupleDescriptor &desc, bool forHeaderExtension)
Map in-memory field and column IDs to their on-disk counterparts.
A helper class for serializing and deserialization of the RNTuple binary format.
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< std::uint32_t > DeserializeClusterSummary(const void *buffer, std::uint64_t bufSize, RClusterSummary &clusterSummary)
static std::uint32_t SerializeListFramePreamble(std::uint32_t nitems, void *buffer)
static RResult< std::uint32_t > DeserializeClusterGroup(const void *buffer, std::uint64_t bufSize, RClusterGroup &clusterGroup)
static std::uint32_t SerializeEnvelopePostscript(unsigned char *envelope, std::uint64_t size)
static std::uint32_t SerializeColumnType(ROOT::Experimental::EColumnType type, void *buffer)
static RContext SerializeHeader(void *buffer, const RNTupleDescriptor &desc)
static RResult< std::uint32_t > DeserializeColumnType(const void *buffer, ROOT::Experimental::EColumnType &type)
static std::uint32_t SerializeFeatureFlags(const std::vector< std::uint64_t > &flags, void *buffer)
static RResult< std::uint32_t > DeserializeExtraTypeInfoId(const void *buffer, ROOT::Experimental::EExtraTypeInfoIds &id)
static std::uint32_t DeserializeUInt16(const void *buffer, std::uint16_t &val)
static RResult< void > DeserializeHeader(const void *buffer, std::uint64_t bufSize, RNTupleDescriptorBuilder &descBuilder)
static RResult< void > DeserializeFooter(const void *buffer, std::uint64_t bufSize, RNTupleDescriptorBuilder &descBuilder)
static std::uint32_t SerializeString(const std::string &val, void *buffer)
static std::string SerializeStreamerInfos(const StreamerInfoMap_t &infos)
static RResult< std::uint32_t > DeserializeFrameHeader(const void *buffer, std::uint64_t bufSize, std::uint64_t &frameSize, std::uint32_t &nitems)
static std::uint32_t SerializePageList(void *buffer, const RNTupleDescriptor &desc, std::span< DescriptorId_t > physClusterIDs, const RContext &context)
static std::uint32_t DeserializeUInt32(const void *buffer, std::uint32_t &val)
static std::uint32_t SerializeUInt64(std::uint64_t val, void *buffer)
static std::uint32_t SerializeEnvelopePreamble(std::uint16_t envelopeType, void *buffer)
static std::uint32_t DeserializeInt16(const void *buffer, std::int16_t &val)
static RResult< std::uint32_t > DeserializeFieldStructure(const void *buffer, ROOT::Experimental::ENTupleStructure &structure)
static std::uint32_t SerializeClusterSummary(const RClusterSummary &clusterSummary, void *buffer)
static RResult< StreamerInfoMap_t > DeserializeStreamerInfos(const std::string &extraTypeInfoContent)
static std::uint32_t SerializeFramePostscript(void *frame, std::uint64_t size)
static std::uint32_t SerializeInt16(std::int16_t val, void *buffer)
static RResult< void > DeserializePageList(const void *buffer, std::uint64_t bufSize, DescriptorId_t clusterGroupId, RNTupleDescriptor &desc)
static std::uint32_t SerializeFieldStructure(ROOT::Experimental::ENTupleStructure structure, void *buffer)
While we could just interpret the enums as ints, we make the translation explicit in order to avoid a...
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 RResult< std::uint32_t > DeserializeSchemaDescription(const void *buffer, std::uint64_t bufSize, RNTupleDescriptorBuilder &descBuilder)
std::map< Int_t, TVirtualStreamerInfo * > StreamerInfoMap_t
static std::uint32_t SerializeLocator(const RNTupleLocator &locator, void *buffer)
static std::uint32_t SerializeInt32(std::int32_t val, void *buffer)
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 std::uint32_t DeserializeUInt64(const void *buffer, std::uint64_t &val)
static RResult< std::uint32_t > DeserializeFeatureFlags(const void *buffer, std::uint64_t bufSize, std::vector< std::uint64_t > &flags)
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 std::uint32_t SerializeEnvelopeLink(const REnvelopeLink &envelopeLink, void *buffer)
static RResult< std::uint32_t > DeserializeString(const void *buffer, std::uint64_t bufSize, std::string &val)
static std::uint32_t SerializeRecordFramePreamble(void *buffer)
static std::uint32_t SerializeUInt16(std::uint16_t val, void *buffer)
static std::uint32_t SerializeClusterGroup(const RClusterGroup &clusterGroup, void *buffer)
static RResult< std::uint32_t > DeserializeEnvelopeLink(const void *buffer, std::uint64_t bufSize, REnvelopeLink &envelopeLink)
static std::uint32_t SerializeFooter(void *buffer, const RNTupleDescriptor &desc, const RContext &context)
static std::uint32_t SerializeInt64(std::int64_t val, void *buffer)
static RResult< std::uint32_t > DeserializeEnvelope(const void *buffer, std::uint64_t bufSize, std::uint16_t expectedType)
static std::uint32_t SerializeUInt32(std::uint32_t val, void *buffer)
static RResult< std::uint32_t > DeserializeLocator(const void *buffer, std::uint64_t bufSize, RNTupleLocator &locator)
static std::uint32_t SerializeExtraTypeInfoId(ROOT::Experimental::EExtraTypeInfoIds id, void *buffer)
std::uint32_t GetNClusters() const
Meta-data stored for every column of an ntuple.
Base class for all ROOT issued exceptions.
Meta-data stored for every field of an ntuple.
The on-storage meta-data of an ntuple.
std::size_t GetNLogicalColumns() const
const std::string & GetName() const
std::uint64_t GetOnDiskHeaderXxHash3() const
RColumnDescriptorIterable GetColumnIterable() const
const RClusterDescriptor & GetClusterDescriptor(DescriptorId_t clusterId) const
std::size_t GetNExtraTypeInfos() const
DescriptorId_t GetFieldZeroId() const
Returns the logical parent of all top-level NTuple data fields.
std::size_t GetNFields() const
RResult< void > AddClusterGroupDetails(DescriptorId_t clusterGroupId, std::vector< RClusterDescriptor > &clusterDescs)
Methods to load and drop cluster group details (cluster IDs and page locations)
const RColumnDescriptor & GetColumnDescriptor(DescriptorId_t columnId) const
std::size_t GetNClusterGroups() const
const RFieldDescriptor & GetFieldDescriptor(DescriptorId_t fieldId) const
const RClusterGroupDescriptor & GetClusterGroupDescriptor(DescriptorId_t clusterGroupId) const
std::size_t GetNPhysicalColumns() const
const std::string & GetDescription() const
const RHeaderExtension * GetHeaderExtension() const
Return header extension information; if the descriptor does not have a header extension,...
RFieldDescriptorIterable GetFieldIterable(const RFieldDescriptor &fieldDesc) const
std::vector< std::uint64_t > GetFeatureFlags() const
The class is used as a return type for operations that can fail; wraps a value of type T or an RError...
const_iterator begin() const
const_iterator end() const
The concrete implementation of TBuffer for writing/reading to/from a ROOT file or socket.
TObject * ReadObject(const TClass *cl) override
Read object from I/O buffer.
void WriteObject(const TObject *obj, Bool_t cacheReuse=kTRUE) override
Write object to I/O buffer.
Wrapper around a TObject so it can be stored in a TList.
Describes a persistent version of a class.
constexpr RNTupleLocator::ELocatorType kTestLocatorType
constexpr ENTupleStructure kTestFutureFieldStructure
RLogChannel & NTupleLog()
Log channel for RNTuple diagnostics.
std::uint64_t DescriptorId_t
Distriniguishes elements of the same type within a descriptor, e.g. different fields.
EExtraTypeInfoIds
Used in RExtraTypeInfoDescriptor.
ENTupleStructure
The fields in the ntuple model tree can carry different structural information about the type system.
constexpr DescriptorId_t kInvalidDescriptorId
RNTupleLocator payload that is common for object stores using 64bit location information.
Generic information about the physical location of data.