ROOT 6.18/05 Reference Guide |
Definition at line 67 of file RField.hxx.
Classes | |
class | RIterator |
Iterates over the sub fields in depth-first search order. More... | |
Public Member Functions | |
RFieldBase (const RFieldBase &)=delete | |
RFieldBase (RFieldBase &&)=default | |
RFieldBase (std::string_view name, std::string_view type, ENTupleStructure structure, bool isSimple) | |
The constructor creates the underlying column objects and connects them to either a sink or a source. More... | |
virtual | ~RFieldBase () |
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... | |
void | ConnectColumns (Detail::RPageStorage *pageStorage) |
Registeres (or re-registers) the backing columns with the physical storage. 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 RNTupleVersion | GetFieldVersion () const |
Indicates an evolution of the mapping scheme from C++ type to columns. More... | |
std::string | GetName () const |
virtual unsigned int | GetNColumns () const =0 |
Returns the number of columns generated to store data for the field; defaults to 1. More... | |
NTupleSize_t | GetNItems () |
The number of elements in the principal column. For top level fields, the number of entries. More... | |
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 (NTupleSize_t index, RFieldValue *value) |
Populate a single value with data from the tree, which needs to be of the fitting type. More... | |
void | ReadV (NTupleSize_t index, NTupleSize_t count, void *dst) |
Type unsafe bulk read interface; dst must point to a vector of objects of the field type. 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... | |
static std::string | GetCollectionName (const std::string &parentName) |
Get the name for an item sub field that is part of a collection, e.g. the float field of std::vector<float> More... | |
static std::string | GetLeafName (const std::string &fullName) |
Get the tail of the field name up to the last dot. More... | |
Static Public Attributes | |
static constexpr char | kCollectionSeparator = '/' |
Field names convey the level of subfields; sub fields (nested collections) are separated by a dot. 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 | DoRead (NTupleSize_t index, RFieldValue *value) |
virtual void | DoReadV (NTupleSize_t index, NTupleSize_t count, void *dst) |
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 |
All fields have a main column. For collection fields, the main column is the index field. 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 is a unique within a tree and also the basis for the column name(s) 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::RFieldCollection |
#include <ROOT/RField.hxx>
ROOT::Experimental::Detail::RFieldBase::RFieldBase | ( | std::string_view | name, |
std::string_view | type, | ||
ENTupleStructure | structure, | ||
bool | isSimple | ||
) |
The constructor creates the underlying column objects and connects them to either a sink or a source.
Definition at line 37 of file RField.cxx.
|
delete |
|
default |
|
virtual |
Definition at line 43 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 167 of file RField.hxx.
void ROOT::Experimental::Detail::RFieldBase::Attach | ( | std::unique_ptr< Detail::RFieldBase > | child | ) |
Definition at line 124 of file RField.cxx.
ROOT::Experimental::Detail::RFieldBase::RIterator ROOT::Experimental::Detail::RFieldBase::begin | ( | ) |
Definition at line 162 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::RFieldCollection, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, and ROOT::Experimental::RFieldVector.
|
pure virtual |
Implemented in ROOT::Experimental::RFieldRoot, ROOT::Experimental::RFieldClass, ROOT::Experimental::RFieldVector, ROOT::Experimental::RFieldCollection, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, and ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >.
|
inlinevirtual |
Perform housekeeping tasks for global to cluster-local index translation.
Reimplemented in ROOT::Experimental::RFieldVector, ROOT::Experimental::RFieldCollection, and ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >.
Definition at line 203 of file RField.hxx.
void ROOT::Experimental::Detail::RFieldBase::ConnectColumns | ( | Detail::RPageStorage * | pageStorage | ) |
Registeres (or re-registers) the backing columns with the physical storage.
Definition at line 152 of file RField.cxx.
|
static |
Factory method to resurrect a field from the stored on-disk type information.
Definition at line 48 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, and ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >.
Definition at line 118 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, and ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >.
Definition at line 92 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::RFieldCollection, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, and ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >.
|
protectedvirtual |
Reimplemented in ROOT::Experimental::RFieldClass, ROOT::Experimental::RFieldVector, and ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >.
Definition at line 96 of file RField.cxx.
|
protectedvirtual |
Definition at line 103 of file RField.cxx.
ROOT::Experimental::Detail::RFieldBase::RIterator ROOT::Experimental::Detail::RFieldBase::end | ( | ) |
Definition at line 168 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 145 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 111 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::RFieldCollection, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, ROOT::Experimental::RFieldClass, and ROOT::Experimental::RFieldVector.
|
static |
Get the name for an item sub field that is part of a collection, e.g. the float field of std::vector<float>
Definition at line 137 of file RField.cxx.
|
inlinevirtual |
Indicates an evolution of the mapping scheme from C++ type to columns.
Definition at line 214 of file RField.hxx.
|
static |
Get the tail of the field name up to the last dot.
Definition at line 131 of file RField.cxx.
|
inline |
Definition at line 207 of file RField.hxx.
|
pure virtual |
Returns the number of columns generated to store data for the field; defaults to 1.
Implemented in ROOT::Experimental::RFieldRoot, ROOT::Experimental::RFieldClass, ROOT::Experimental::RFieldVector, ROOT::Experimental::RFieldCollection, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, and ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >.
NTupleSize_t ROOT::Experimental::Detail::RFieldBase::GetNItems | ( | ) |
The number of elements in the principal column. For top level fields, the number of entries.
|
inline |
Definition at line 210 of file RField.hxx.
|
inline |
Definition at line 209 of file RField.hxx.
|
inline |
Definition at line 208 of file RField.hxx.
|
inlinevirtual |
Indicates an evolution of the C++ type itself.
Definition at line 216 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::RFieldCollection, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, ROOT::Experimental::RFieldClass, and ROOT::Experimental::RFieldVector.
|
inline |
Definition at line 211 of file RField.hxx.
|
delete |
|
default |
|
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 tree value.
Definition at line 178 of file RField.hxx.
|
inline |
Type unsafe bulk read interface; dst must point to a vector of objects of the field type.
TODO(jblomer): can this be type safe?
Definition at line 188 of file RField.hxx.
|
friend |
Definition at line 68 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 87 of file RField.hxx.
|
private |
A field on a trivial type that maps as-is to a single column.
Definition at line 77 of file RField.hxx.
|
private |
The field name is a unique within a tree and also the basis for the column name(s)
Definition at line 71 of file RField.hxx.
|
protected |
Sub fields point to their mother field.
Definition at line 83 of file RField.hxx.
|
protected |
All fields have a main column. For collection fields, the main column is the index field. Points into fColumns.
Definition at line 85 of file RField.hxx.
|
private |
The role of this field in the data model structure.
Definition at line 75 of file RField.hxx.
|
protected |
Collections and classes own sub fields.
Definition at line 81 of file RField.hxx.
|
private |
The C++ type captured by this field.
Definition at line 73 of file RField.hxx.
|
staticconstexpr |
Field names convey the level of subfields; sub fields (nested collections) are separated by a dot.
Definition at line 100 of file RField.hxx.