Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RNTupleAttrUtils.hxx
Go to the documentation of this file.
1/// \file ROOT/RNTupleAttrUtils.hxx
2/// \ingroup NTuple
3/// \author Giacomo Parolini <giacomo.parolini@cern.ch>
4/// \date 2026-03-10
5/// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback
6/// is welcome!
7
8#ifndef ROOT7_RNTuple_Attr_Utils
9#define ROOT7_RNTuple_Attr_Utils
10
11#include <cstddef>
12#include <cstdint>
13
15
16/*
17Attribute RNTuples have a fixed Model schema that looks like this:
18
19 +-----------+
20 | MetaModel |
21 +-----+-----+
22 |
23 +--------------+---------------+
24 | | |
25+------+------+ +-----+------+ +------+------+
26| _rangeStart | | _rangeLen | | _userData |
27+-------------+ +------------+ +------+------+
28 |
29 +-----+-----+
30 | UserModel |
31 +-----------+
32
33Where "_userData" is an untyped record field containing all the user-defined Model's fields
34as its children.
35
36The order and name of the meta Model's fields is defined by the schema version.
37*/
38
39inline const std::uint16_t kSchemaVersionMajor = 1;
40inline const std::uint16_t kSchemaVersionMinor = 0;
41
42enum : std::size_t {
46
48};
49inline constexpr const char *kMetaFieldNames[] = {"_rangeStart", "_rangeLen", "_userData"};
50static_assert(kMetaFieldIndex_Count == sizeof(kMetaFieldNames) / sizeof(kMetaFieldNames[0]));
51
52} // namespace ROOT::Experimental::Internal::RNTupleAttributes
53
54#endif
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.