Logo ROOT  
Reference Guide
ROOT::Experimental::Detail::RFieldBase Class Referenceabstract

Definition at line 74 of file RField.hxx.

Classes

class  RIterator
 Iterates over the sub fields in depth-first search order. More...
 
struct  RLevelInfo
 Describes where the field is located inside the ntuple. More...
 

Public Member Functions

 RFieldBase (const RFieldBase &)=delete
 
 RFieldBase (RFieldBase &&)=default
 
 RFieldBase (std::string_view name, std::string_view type, ENTupleStructure structure, bool isSimple, std::size_t nRepetitions=0)
 The constructor creates the underlying column objects and connects them to either a sink or a source. More...
 
virtual ~RFieldBase ()
 
virtual void AcceptVisitor (RNTupleVisitor &visitor, int level) const
 
void Append (const RFieldValue &value)
 Write the given value into columns. The value object has to be of the same type as the field. More...
 
void Attach (std::unique_ptr< Detail::RFieldBase > child)
 
RIterator begin ()
 
virtual RFieldValue CaptureValue (void *where)=0
 Creates a value from a memory location with an already constructed object. More...
 
virtual RFieldBaseClone (std::string_view newName)=0
 
virtual void CommitCluster ()
 Perform housekeeping tasks for global to cluster-local index translation. More...
 
virtual void DestroyValue (const RFieldValue &value, bool dtorOnly=false)
 Releases the resources acquired during GenerateValue (memory and constructor) This implementation works for simple types but needs to be overwritten for complex ones. More...
 
RIterator end ()
 
void Flush () const
 Ensure that all received items are written from page buffers to the storage. More...
 
RFieldValue GenerateValue ()
 Generates a tree value of the field type and allocates new initialized memory according to the type. More...
 
virtual RFieldValue GenerateValue (void *where)=0
 Generates a tree value in a given location of size at least GetValueSize(). More...
 
virtual size_t GetAlignment () const
 For many types, the alignment requirement is equal to the size; otherwise override. More...
 
virtual RNTupleVersion GetFieldVersion () const
 Indicates an evolution of the mapping scheme from C++ type to columns. More...
 
RLevelInfo GetLevelInfo () const
 
std::string GetName () const
 
std::size_t GetNRepetitions () const
 
const RFieldBaseGetParent () const
 
ENTupleStructure GetStructure () const
 
std::string GetType () const
 
virtual RNTupleVersion GetTypeVersion () const
 Indicates an evolution of the C++ type itself. More...
 
virtual size_t GetValueSize () const =0
 The number of bytes taken by a value of the appropriate type. More...
 
bool IsSimple () const
 
RFieldBaseoperator= (const RFieldBase &)=delete
 
RFieldBaseoperator= (RFieldBase &&)=default
 
void Read (const RClusterIndex &clusterIndex, RFieldValue *value)
 
void Read (NTupleSize_t globalIndex, RFieldValue *value)
 Populate a single value with data from the tree, which needs to be of the fitting type. More...
 
void SetOrder (int o)
 
virtual void TraverseVisitor (RNTupleVisitor &visitor, int level=0) const
 Used for the visitor design pattern, see for example RNTupleReader::Print() More...
 

Static Public Member Functions

static RFieldBaseCreate (const std::string &fieldName, const std::string &typeName)
 Factory method to resurrect a field from the stored on-disk type information. More...
 

Protected Member Functions

virtual void DoAppend (const RFieldValue &value)
 Operations on values of complex types, e.g. More...
 
virtual void DoGenerateColumns ()=0
 Creates the backing columns corresponsing to the field type and name. More...
 
virtual void DoReadGlobal (NTupleSize_t globalIndex, RFieldValue *value)
 
virtual void DoReadInCluster (const RClusterIndex &clusterIndex, RFieldValue *value)
 

Protected Attributes

std::vector< std::unique_ptr< RColumn > > fColumns
 The columns are connected either to a sink or to a source (not to both); they are owned by the field. More...
 
RFieldBasefParent
 Sub fields point to their mother field. More...
 
RColumnfPrincipalColumn
 Points into fColumns. More...
 
std::vector< std::unique_ptr< RFieldBase > > fSubFields
 Collections and classes own sub fields. More...
 

Private Attributes

bool fIsSimple
 A field on a trivial type that maps as-is to a single column. More...
 
std::string fName
 The field name relative to its parent field. More...
 
std::size_t fNRepetitions
 For fixed sized arrays, the array length. More...
 
int fOrder = 1
 First subfield of parentfield has fOrder 1, the next fOrder 2, etc. Value set by RFieldBase::Attach() More...
 
ENTupleStructure fStructure
 The role of this field in the data model structure. More...
 
std::string fType
 The C++ type captured by this field. More...
 

Friends

class ROOT::Experimental::Detail::RFieldFuse
 
class ROOT::Experimental::RFieldCollection
 

#include <ROOT/RField.hxx>

Inheritance diagram for ROOT::Experimental::Detail::RFieldBase:
[legend]

Constructor & Destructor Documentation

◆ RFieldBase() [1/3]

ROOT::Experimental::Detail::RFieldBase::RFieldBase ( std::string_view  name,
std::string_view  type,
ENTupleStructure  structure,
bool  isSimple,
std::size_t  nRepetitions = 0 
)

The constructor creates the underlying column objects and connects them to either a sink or a source.

Definition at line 88 of file RField.cxx.

◆ RFieldBase() [2/3]

ROOT::Experimental::Detail::RFieldBase::RFieldBase ( const RFieldBase )
delete

◆ RFieldBase() [3/3]

ROOT::Experimental::Detail::RFieldBase::RFieldBase ( RFieldBase &&  )
default

◆ ~RFieldBase()

ROOT::Experimental::Detail::RFieldBase::~RFieldBase ( )
virtual

Definition at line 95 of file RField.cxx.

Member Function Documentation

◆ AcceptVisitor()

void ROOT::Experimental::Detail::RFieldBase::AcceptVisitor ( Detail::RNTupleVisitor visitor,
int  level 
) const
virtual

Reimplemented in ROOT::Experimental::RFieldRoot.

Definition at line 224 of file RField.cxx.

◆ Append()

void ROOT::Experimental::Detail::RFieldBase::Append ( const RFieldValue value)
inline

Write the given value into columns. The value object has to be of the same type as the field.

Definition at line 211 of file RField.hxx.

◆ Attach()

void ROOT::Experimental::Detail::RFieldBase::Attach ( std::unique_ptr< Detail::RFieldBase child)

Definition at line 199 of file RField.cxx.

◆ begin()

ROOT::Experimental::Detail::RFieldBase::RIterator ROOT::Experimental::Detail::RFieldBase::begin ( )

Definition at line 229 of file RField.cxx.

◆ CaptureValue()

◆ Clone()

◆ CommitCluster()

virtual void ROOT::Experimental::Detail::RFieldBase::CommitCluster ( )
inlinevirtual

Perform housekeeping tasks for global to cluster-local index translation.

Reimplemented in ROOT::Experimental::RFieldVector, ROOT::Experimental::RFieldCollection, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, and ROOT::Experimental::RField< ROOT::VecOps::RVec< bool > >.

Definition at line 241 of file RField.hxx.

◆ Create()

ROOT::Experimental::Detail::RFieldBase * ROOT::Experimental::Detail::RFieldBase::Create ( const std::string &  fieldName,
const std::string &  typeName 
)
static

Factory method to resurrect a field from the stored on-disk type information.

Definition at line 100 of file RField.cxx.

◆ DestroyValue()

void ROOT::Experimental::Detail::RFieldBase::DestroyValue ( const RFieldValue value,
bool  dtorOnly = false 
)
virtual

Releases the resources acquired during GenerateValue (memory and constructor) This implementation works for simple types but needs to be overwritten for complex ones.

Reimplemented in ROOT::Experimental::RFieldClass, ROOT::Experimental::RFieldVector, ROOT::Experimental::RFieldArray, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, and ROOT::Experimental::RField< ROOT::VecOps::RVec< bool > >.

Definition at line 193 of file RField.cxx.

◆ DoAppend()

void ROOT::Experimental::Detail::RFieldBase::DoAppend ( const RFieldValue value)
protectedvirtual

Operations on values of complex types, e.g.

ones that involve multiple columns or for which no direct column type exists.

Reimplemented in ROOT::Experimental::RFieldClass, ROOT::Experimental::RFieldVector, ROOT::Experimental::RFieldArray, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, and ROOT::Experimental::RField< ROOT::VecOps::RVec< bool > >.

Definition at line 175 of file RField.cxx.

◆ DoGenerateColumns()

◆ DoReadGlobal()

void ROOT::Experimental::Detail::RFieldBase::DoReadGlobal ( NTupleSize_t  globalIndex,
RFieldValue value 
)
protectedvirtual

◆ DoReadInCluster()

virtual void ROOT::Experimental::Detail::RFieldBase::DoReadInCluster ( const RClusterIndex clusterIndex,
RFieldValue value 
)
inlineprotectedvirtual

Reimplemented in ROOT::Experimental::RFieldClass, and ROOT::Experimental::RFieldArray.

Definition at line 147 of file RField.hxx.

◆ end()

ROOT::Experimental::Detail::RFieldBase::RIterator ROOT::Experimental::Detail::RFieldBase::end ( )

Definition at line 235 of file RField.cxx.

◆ Flush()

void ROOT::Experimental::Detail::RFieldBase::Flush ( ) const

Ensure that all received items are written from page buffers to the storage.

Definition at line 207 of file RField.cxx.

◆ GenerateValue() [1/2]

ROOT::Experimental::Detail::RFieldValue ROOT::Experimental::Detail::RFieldBase::GenerateValue ( )

Generates a tree value of the field type and allocates new initialized memory according to the type.

Definition at line 186 of file RField.cxx.

◆ GenerateValue() [2/2]

◆ GetAlignment()

virtual size_t ROOT::Experimental::Detail::RFieldBase::GetAlignment ( ) const
inlinevirtual

◆ GetFieldVersion()

virtual RNTupleVersion ROOT::Experimental::Detail::RFieldBase::GetFieldVersion ( ) const
inlinevirtual

Indicates an evolution of the mapping scheme from C++ type to columns.

Definition at line 253 of file RField.hxx.

◆ GetLevelInfo()

RLevelInfo ROOT::Experimental::Detail::RFieldBase::GetLevelInfo ( ) const
inline

Definition at line 264 of file RField.hxx.

◆ GetName()

std::string ROOT::Experimental::Detail::RFieldBase::GetName ( ) const
inline

Definition at line 245 of file RField.hxx.

◆ GetNRepetitions()

std::size_t ROOT::Experimental::Detail::RFieldBase::GetNRepetitions ( ) const
inline

Definition at line 248 of file RField.hxx.

◆ GetParent()

const RFieldBase * ROOT::Experimental::Detail::RFieldBase::GetParent ( ) const
inline

Definition at line 249 of file RField.hxx.

◆ GetStructure()

ENTupleStructure ROOT::Experimental::Detail::RFieldBase::GetStructure ( ) const
inline

Definition at line 247 of file RField.hxx.

◆ GetType()

std::string ROOT::Experimental::Detail::RFieldBase::GetType ( ) const
inline

Definition at line 246 of file RField.hxx.

◆ GetTypeVersion()

virtual RNTupleVersion ROOT::Experimental::Detail::RFieldBase::GetTypeVersion ( ) const
inlinevirtual

Indicates an evolution of the C++ type itself.

Definition at line 255 of file RField.hxx.

◆ GetValueSize()

◆ IsSimple()

bool ROOT::Experimental::Detail::RFieldBase::IsSimple ( ) const
inline

Definition at line 250 of file RField.hxx.

◆ operator=() [1/2]

RFieldBase & ROOT::Experimental::Detail::RFieldBase::operator= ( const RFieldBase )
delete

◆ operator=() [2/2]

RFieldBase & ROOT::Experimental::Detail::RFieldBase::operator= ( RFieldBase &&  )
default

◆ Read() [1/2]

void ROOT::Experimental::Detail::RFieldBase::Read ( const RClusterIndex clusterIndex,
RFieldValue value 
)
inline

Definition at line 230 of file RField.hxx.

◆ Read() [2/2]

void ROOT::Experimental::Detail::RFieldBase::Read ( NTupleSize_t  globalIndex,
RFieldValue value 
)
inline

Populate a single value with data from the tree, which needs to be of the fitting type.

Reading copies data into the memory wrapped by the ntuple value.

Definition at line 222 of file RField.hxx.

◆ SetOrder()

void ROOT::Experimental::Detail::RFieldBase::SetOrder ( int  o)
inline

Definition at line 267 of file RField.hxx.

◆ TraverseVisitor()

void ROOT::Experimental::Detail::RFieldBase::TraverseVisitor ( RNTupleVisitor visitor,
int  level = 0 
) const
virtual

Used for the visitor design pattern, see for example RNTupleReader::Print()

Definition at line 214 of file RField.cxx.

Friends And Related Function Documentation

◆ ROOT::Experimental::Detail::RFieldFuse

Definition at line 75 of file RField.hxx.

◆ ROOT::Experimental::RFieldCollection

Definition at line 76 of file RField.hxx.

Member Data Documentation

◆ fColumns

std::vector<std::unique_ptr<RColumn> > ROOT::Experimental::Detail::RFieldBase::fColumns
protected

The columns are connected either to a sink or to a source (not to both); they are owned by the field.

Definition at line 138 of file RField.hxx.

◆ fIsSimple

bool ROOT::Experimental::Detail::RFieldBase::fIsSimple
private

A field on a trivial type that maps as-is to a single column.

Definition at line 87 of file RField.hxx.

◆ fName

std::string ROOT::Experimental::Detail::RFieldBase::fName
private

The field name relative to its parent field.

Definition at line 79 of file RField.hxx.

◆ fNRepetitions

std::size_t ROOT::Experimental::Detail::RFieldBase::fNRepetitions
private

For fixed sized arrays, the array length.

Definition at line 85 of file RField.hxx.

◆ fOrder

int ROOT::Experimental::Detail::RFieldBase::fOrder = 1
private

First subfield of parentfield has fOrder 1, the next fOrder 2, etc. Value set by RFieldBase::Attach()

Definition at line 127 of file RField.hxx.

◆ fParent

RFieldBase* ROOT::Experimental::Detail::RFieldBase::fParent
protected

Sub fields point to their mother field.

Definition at line 132 of file RField.hxx.

◆ fPrincipalColumn

RColumn* ROOT::Experimental::Detail::RFieldBase::fPrincipalColumn
protected

Points into fColumns.

All fields that have columns have a distinct main column. For simple fields (float, int, ...), the principal column corresponds to the field type. For collection fields expect std::array, the main column is the offset field. Class fields have no column of their own.

Definition at line 136 of file RField.hxx.

◆ fStructure

ENTupleStructure ROOT::Experimental::Detail::RFieldBase::fStructure
private

The role of this field in the data model structure.

Definition at line 83 of file RField.hxx.

◆ fSubFields

std::vector<std::unique_ptr<RFieldBase> > ROOT::Experimental::Detail::RFieldBase::fSubFields
protected

Collections and classes own sub fields.

Definition at line 130 of file RField.hxx.

◆ fType

std::string ROOT::Experimental::Detail::RFieldBase::fType
private

The C++ type captured by this field.

Definition at line 81 of file RField.hxx.

Libraries for ROOT::Experimental::Detail::RFieldBase:
[legend]

The documentation for this class was generated from the following files: