16#ifndef ROOT7_RNTupleDescriptor
17#define ROOT7_RNTupleDescriptor
25#include <unordered_map>
28namespace Experimental {
30class RNTupleDescriptorBuilder;
RNTupleVersion GetVersion() const
NTupleSize_t fFirstEntryIndex
DescriptorId_t fClusterId
NTupleSize_t GetFirstEntryIndex() const
ClusterSize_t GetNEntries() const
std::unordered_map< DescriptorId_t, RColumnInfo > fColumnInfos
DescriptorId_t GetId() const
RColumnInfo GetColumnInfo(DescriptorId_t columnId) const
std::vector< DescriptorId_t > GetLinkIds()
RNTupleVersion GetVersion() const
RColumnModel GetModel() const
DescriptorId_t GetId() const
DescriptorId_t fFieldId
Every column belongs to one and only one field.
DescriptorId_t GetFieldId() const
std::vector< DescriptorId_t > fLinkIds
For index and offset columns of collections, pointers and variants, the pointee field(s)
DescriptorId_t fOffsetId
Pointer to the parent column with offsets.
DescriptorId_t GetOffsetId() const
Holds the static meta-data of a column in a tree.
std::vector< DescriptorId_t > fLinkIds
For pointers and optional/variant fields, the pointee field(s)
DescriptorId_t GetParentId() const
RNTupleVersion GetTypeVersion() const
RNTupleVersion fFieldVersion
RNTupleVersion GetFieldVersion() const
std::string GetFieldName() const
std::vector< DescriptorId_t > GetLinkIds() const
std::string fFieldName
The leaf name, not including parent fields.
DescriptorId_t GetId() const
std::string GetTypeName() const
DescriptorId_t fParentId
Establishes sub field trees, such as classes and collections.
RNTupleVersion fTypeVersion
ENTupleStructure fStructure
The structural information carried by this field in the data model tree.
ENTupleStructure GetStructure() const
std::string fTypeName
The C++ type that was used when writing the field.
Used by RPageStorage implementations in order to construct the RNTupleDescriptor from the various hea...
void AddCluster(DescriptorId_t clusterId, RNTupleVersion version, NTupleSize_t firstEntryIndex, ClusterSize_t nEntries)
void AddColumnLink(DescriptorId_t columnId, DescriptorId_t linkId)
void AddFieldLink(DescriptorId_t fieldId, DescriptorId_t linkId)
void AddColumn(DescriptorId_t columnId, DescriptorId_t fieldId, const RNTupleVersion &version, const RColumnModel &model)
const RNTupleDescriptor & GetDescriptor() const
void AddField(DescriptorId_t fieldId, const RNTupleVersion &fieldVersion, const RNTupleVersion &typeVersion, std::string_view fieldName, std::string_view typeName, ENTupleStructure structure)
void AddClusterColumnInfo(DescriptorId_t clusterId, const RClusterDescriptor::RColumnInfo &columnInfo)
void SetFieldParent(DescriptorId_t fieldId, DescriptorId_t parentId)
void SetColumnOffset(DescriptorId_t columnId, DescriptorId_t offsetId)
RNTupleDescriptor fDescriptor
void SetNTuple(std::string_view name, const RNTupleVersion &version)
Represents the on-disk (on storage) information about an ntuple.
std::unordered_map< DescriptorId_t, RClusterDescriptor > fClusterDescriptors
std::string GetName() const
std::unordered_map< DescriptorId_t, RColumnDescriptor > fColumnDescriptors
const RClusterDescriptor & GetClusterDescriptor(DescriptorId_t clusterId) const
std::unordered_map< DescriptorId_t, RFieldDescriptor > fFieldDescriptors
const RColumnDescriptor & GetColumnDescriptor(DescriptorId_t columnId) const
const RFieldDescriptor & GetFieldDescriptor(DescriptorId_t fieldId) const
For forward and backward compatibility, attach version information to the consitituents of the file f...
basic_string_view< char > string_view
std::uint64_t NTupleSize_t
Integer type long enough to hold the maximum number of entries in a column.
ENTupleStructure
The fields in the ntuple model tree can carry different structural information about the type system.
std::uint64_t DescriptorId_t
Distriniguishes elements of the same type within a descriptor, e.g. different fields.
constexpr NTupleSize_t kInvalidNTupleIndex
constexpr ClusterSize_t kInvalidClusterIndex(std::uint32_t(-1))
constexpr DescriptorId_t kInvalidDescriptorId
Namespace for new ROOT classes and functions.
NTupleSize_t fFirstElementIndex
Wrap the 32bit integer in a struct in order to avoid template specialization clash with std::uint32_t...