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 RFieldBase * | Clone (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 RFieldBase * | GetParent () 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 |
RFieldBase & | operator= (const RFieldBase &)=delete |
RFieldBase & | operator= (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 RFieldBase * | Create (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... | |
RFieldBase * | fParent |
Sub fields point to their mother field. More... | |
RColumn * | fPrincipalColumn |
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>
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.
|
delete |
|
default |
|
virtual |
Definition at line 95 of file RField.cxx.
|
virtual |
Reimplemented in ROOT::Experimental::RFieldRoot.
Definition at line 224 of file RField.cxx.
|
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.
void ROOT::Experimental::Detail::RFieldBase::Attach | ( | std::unique_ptr< Detail::RFieldBase > | child | ) |
Definition at line 199 of file RField.cxx.
ROOT::Experimental::Detail::RFieldBase::RIterator ROOT::Experimental::Detail::RFieldBase::begin | ( | ) |
Definition at line 229 of file RField.cxx.
|
pure virtual |
Creates a value from a memory location with an already constructed object.
Implemented in ROOT::Experimental::RFieldRoot, ROOT::Experimental::RFieldClass, ROOT::Experimental::RFieldArray, ROOT::Experimental::RFieldCollection, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< bool >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, ROOT::Experimental::RField< ROOT::VecOps::RVec< bool > >, and ROOT::Experimental::RFieldVector.
|
pure virtual |
Implemented in ROOT::Experimental::RFieldRoot, ROOT::Experimental::RFieldClass, ROOT::Experimental::RFieldVector, ROOT::Experimental::RFieldArray, ROOT::Experimental::RFieldCollection, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< bool >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, and ROOT::Experimental::RField< ROOT::VecOps::RVec< bool > >.
|
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.
|
static |
Factory method to resurrect a field from the stored on-disk type information.
Definition at line 100 of file RField.cxx.
|
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.
|
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.
|
protectedpure virtual |
Creates the backing columns corresponsing to the field type and name.
Implemented in ROOT::Experimental::RFieldRoot, ROOT::Experimental::RFieldClass, ROOT::Experimental::RFieldVector, ROOT::Experimental::RFieldArray, ROOT::Experimental::RFieldCollection, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< bool >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, and ROOT::Experimental::RField< ROOT::VecOps::RVec< bool > >.
|
protectedvirtual |
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 179 of file RField.cxx.
|
inlineprotectedvirtual |
Reimplemented in ROOT::Experimental::RFieldClass, and ROOT::Experimental::RFieldArray.
Definition at line 147 of file RField.hxx.
ROOT::Experimental::Detail::RFieldBase::RIterator ROOT::Experimental::Detail::RFieldBase::end | ( | ) |
Definition at line 235 of file RField.cxx.
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.
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.
|
pure virtual |
Generates a tree value in a given location of size at least GetValueSize().
Assumes that where has been allocated by malloc().
Implemented in ROOT::Experimental::RFieldRoot, ROOT::Experimental::RField< T, typename >, ROOT::Experimental::RField< ROOT::Experimental::RClusterSize >, ROOT::Experimental::RFieldCollection, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< bool >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, ROOT::Experimental::RField< ROOT::VecOps::RVec< bool > >, ROOT::Experimental::RFieldClass, ROOT::Experimental::RFieldVector, and ROOT::Experimental::RFieldArray.
|
inlinevirtual |
For many types, the alignment requirement is equal to the size; otherwise override.
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 208 of file RField.hxx.
|
inlinevirtual |
Indicates an evolution of the mapping scheme from C++ type to columns.
Definition at line 253 of file RField.hxx.
|
inline |
Definition at line 264 of file RField.hxx.
|
inline |
Definition at line 245 of file RField.hxx.
|
inline |
Definition at line 248 of file RField.hxx.
|
inline |
Definition at line 249 of file RField.hxx.
|
inline |
Definition at line 247 of file RField.hxx.
|
inline |
Definition at line 246 of file RField.hxx.
|
inlinevirtual |
Indicates an evolution of the C++ type itself.
Definition at line 255 of file RField.hxx.
|
pure virtual |
The number of bytes taken by a value of the appropriate type.
Implemented in ROOT::Experimental::RFieldRoot, ROOT::Experimental::RFieldArray, ROOT::Experimental::RFieldCollection, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< bool >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, ROOT::Experimental::RField< ROOT::VecOps::RVec< bool > >, ROOT::Experimental::RFieldClass, and ROOT::Experimental::RFieldVector.
|
inline |
Definition at line 250 of file RField.hxx.
|
delete |
|
default |
|
inline |
Definition at line 230 of file RField.hxx.
|
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.
|
inline |
Definition at line 267 of file RField.hxx.
|
virtual |
Used for the visitor design pattern, see for example RNTupleReader::Print()
Definition at line 214 of file RField.cxx.
|
friend |
Definition at line 75 of file RField.hxx.
|
friend |
Definition at line 76 of file RField.hxx.
|
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.
|
private |
A field on a trivial type that maps as-is to a single column.
Definition at line 87 of file RField.hxx.
|
private |
The field name relative to its parent field.
Definition at line 79 of file RField.hxx.
|
private |
For fixed sized arrays, the array length.
Definition at line 85 of file RField.hxx.
|
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.
|
protected |
Sub fields point to their mother field.
Definition at line 132 of file RField.hxx.
|
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.
|
private |
The role of this field in the data model structure.
Definition at line 83 of file RField.hxx.
|
protected |
Collections and classes own sub fields.
Definition at line 130 of file RField.hxx.
|
private |
The C++ type captured by this field.
Definition at line 81 of file RField.hxx.