Definition at line 81 of file RField.hxx.
Classes | |
class | RColumnRepresentations |
Some fields have multiple possible column representations, e.g. More... | |
class | RSchemaIterator |
Iterates over the sub tree of fields in depth-first search order. More... | |
Public Types | |
using | ColumnRepresentation_t = std::vector< EColumnType > |
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 (RFieldVisitor &visitor) const |
std::size_t | Append (const RFieldValue &value) |
Write the given value into columns. More... | |
void | Attach (std::unique_ptr< Detail::RFieldBase > child) |
Add a new subfield to the list of nested fields. More... | |
RSchemaIterator | begin () |
virtual RFieldValue | CaptureValue (void *where)=0 |
Creates a value from a memory location with an already constructed object. More... | |
std::unique_ptr< RFieldBase > | Clone (std::string_view newName) const |
Copies the field and its sub fields using a possibly new name and a new, unconnected set of columns. More... | |
virtual void | CommitCluster () |
Perform housekeeping tasks for global to cluster-local index translation. More... | |
void | ConnectPageSink (RPageSink &pageSink) |
Fields and their columns live in the void until connected to a physical page storage. More... | |
void | ConnectPageSource (RPageSource &pageSource) |
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... | |
RSchemaIterator | end () |
void | Flush () const |
Ensure that all received items are written from page buffers to the storage. More... | |
RFieldValue | GenerateValue () |
Generates an object 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 =0 |
As a rule of thumb, the alignment is equal to the size of the type. More... | |
const ColumnRepresentation_t & | GetColumnRepresentative () const |
Returns the fColumnRepresentative pointee or, if unset, the field's default representative. More... | |
std::string | GetDescription () const |
Get the field's description. More... | |
virtual std::uint32_t | GetFieldVersion () const |
Indicates an evolution of the mapping scheme from C++ type to columns. More... | |
std::string | GetName () const |
NTupleSize_t | GetNElements () const |
std::size_t | GetNRepetitions () const |
DescriptorId_t | GetOnDiskId () const |
std::uint32_t | GetOnDiskTypeVersion () const |
Return the C++ type version stored in the field descriptor; only valid after a call to ConnectPageSource() More... | |
RFieldBase * | GetParent () const |
std::string | GetQualifiedFieldName () const |
Returns the field name and parent field names separated by dots ("grandparent.parent.child") More... | |
ENTupleStructure | GetStructure () const |
std::vector< RFieldBase * > | GetSubFields () const |
int | GetTraits () const |
std::string | GetType () const |
virtual std::uint32_t | 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 | HasDefaultColumnRepresentative () const |
Whether or not an explicit column representative was set. More... | |
bool | HasReadCallbacks () const |
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 | SetColumnRepresentative (const ColumnRepresentation_t &representative) |
Fixes a column representative. More... | |
void | SetDescription (std::string_view description) |
void | SetOnDiskId (DescriptorId_t id) |
virtual std::vector< RFieldValue > | SplitValue (const RFieldValue &value) const |
Creates the list of direct child values given a value for this field. More... | |
Static Public Member Functions | |
static RResult< std::unique_ptr< 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 RResult< void > | EnsureValidFieldName (std::string_view fieldName) |
Check whether a given string is a valid field name. More... | |
Static Public Attributes | |
static constexpr std::uint32_t | kInvalidTypeVersion = -1U |
static constexpr int | kTraitMappable = 0x04 |
A field of a fundamental type that can be directly mapped via RField<T>::Map() , i.e. More... | |
static constexpr int | kTraitTriviallyConstructible = 0x01 |
No constructor needs to be called, i.e. More... | |
static constexpr int | kTraitTriviallyDestructible = 0x02 |
The type is cleaned up just by freeing its memory. I.e. DestroyValue() is a no-op. More... | |
static constexpr int | kTraitTrivialType = kTraitTriviallyConstructible | kTraitTriviallyDestructible |
Shorthand for types that are both trivially constructible and destructible. More... | |
Protected Member Functions | |
size_t | AddReadCallback (ReadCallback_t func) |
Set a user-defined function to be called after reading a value, giving a chance to inspect and/or modify the value object. More... | |
virtual std::size_t | AppendImpl (const RFieldValue &value) |
Operations on values of complex types, e.g. More... | |
virtual std::unique_ptr< RFieldBase > | CloneImpl (std::string_view newName) const =0 |
Called by Clone(), which additionally copies the on-disk ID. More... | |
const ColumnRepresentation_t & | EnsureCompatibleColumnTypes (const RNTupleDescriptor &desc) const |
Returns the on-disk column types found in the provided descriptor for fOnDiskId. More... | |
virtual void | GenerateColumnsImpl ()=0 |
Creates the backing columns corresponsing to the field type for writing. More... | |
virtual void | GenerateColumnsImpl (const RNTupleDescriptor &desc)=0 |
Creates the backing columns corresponsing to the field type for reading. More... | |
virtual const RColumnRepresentations & | GetColumnRepresentations () const |
Implementations in derived classes should return a static RColumnRepresentations object. More... | |
virtual void | OnConnectPageSource () |
Called by ConnectPageSource() only once connected; derived classes may override this as appropriate. More... | |
virtual void | ReadGlobalImpl (NTupleSize_t globalIndex, RFieldValue *value) |
virtual void | ReadInClusterImpl (const RClusterIndex &clusterIndex, RFieldValue *value) |
void | RemoveReadCallback (size_t idx) |
Protected Attributes | |
const ColumnRepresentation_t * | fColumnRepresentative = nullptr |
Points into the static vector GetColumnRepresentations().GetSerializationTypes() when SetColumnRepresentative is called. More... | |
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... | |
std::uint32_t | fOnDiskTypeVersion = kInvalidTypeVersion |
C++ type version cached from the descriptor after a call to ConnectPageSource() More... | |
RFieldBase * | fParent |
Sub fields point to their mother field. More... | |
RColumn * | fPrincipalColumn |
Points into fColumns. More... | |
std::vector< ReadCallback_t > | fReadCallbacks |
List of functions to be called after reading a value. More... | |
std::vector< std::unique_ptr< RFieldBase > > | fSubFields |
Collections and classes own sub fields. More... | |
int | fTraits = 0 |
Properties of the type that allow for optimizations of collections of that type. More... | |
Private Types | |
using | ReadCallback_t = std::function< void(RFieldValue &)> |
Private Member Functions | |
void | InvokeReadCallbacks (RFieldValue &value) |
Private Attributes | |
std::string | fDescription |
Free text set by the user. More... | |
bool | fIsSimple |
A field qualifies as simple if it is both mappable and has no post-read callback. 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... | |
DescriptorId_t | fOnDiskId = kInvalidDescriptorId |
When the columns are connected to a page source or page sink, the field represents a field id in the corresponding RNTuple descriptor. 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 | |
struct | ROOT::Experimental::Internal::RFieldCallbackInjector |
class | ROOT::Experimental::RCollectionField |
#include <ROOT/RField.hxx>
using ROOT::Experimental::Detail::RFieldBase::ColumnRepresentation_t = std::vector<EColumnType> |
Definition at line 99 of file RField.hxx.
|
private |
Definition at line 84 of file 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.
If isSimple
is true
, the trait kTraitMappable
is automatically set on construction. However, the field might be demoted to non-simple if a post-read callback is set.
Definition at line 209 of file RField.cxx.
|
delete |
|
default |
|
virtual |
Definition at line 216 of file RField.cxx.
|
virtual |
Reimplemented in ROOT::Experimental::RFieldZero, ROOT::Experimental::RCollectionClassField, ROOT::Experimental::RRecordField, ROOT::Experimental::RVectorField, ROOT::Experimental::RRVecField, ROOT::Experimental::RArrayField, ROOT::Experimental::RBitsetField, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< RNTupleCardinality >, ROOT::Experimental::RField< bool >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, ROOT::Experimental::RField< char >, and ROOT::Experimental::RClassField.
Definition at line 544 of file RField.cxx.
|
protected |
Set a user-defined function to be called after reading a value, giving a chance to inspect and/or modify the value object.
Returns an index that can be used to remove the callback.
Definition at line 472 of file RField.cxx.
|
inline |
Write the given value into columns.
The value object has to be of the same type as the field. Returns the number of uncompressed bytes written.
Definition at line 282 of file RField.hxx.
|
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::RClassField, ROOT::Experimental::RCollectionClassField, ROOT::Experimental::RRecordField, ROOT::Experimental::RVectorField, ROOT::Experimental::RArrayField, ROOT::Experimental::RBitsetField, ROOT::Experimental::RVariantField, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, and ROOT::Experimental::RRVecField.
Definition at line 371 of file RField.cxx.
void ROOT::Experimental::Detail::RFieldBase::Attach | ( | std::unique_ptr< Detail::RFieldBase > | child | ) |
Add a new subfield to the list of nested fields.
Definition at line 403 of file RField.cxx.
ROOT::Experimental::Detail::RFieldBase::RSchemaIterator ROOT::Experimental::Detail::RFieldBase::begin | ( | ) |
Definition at line 550 of file RField.cxx.
|
pure virtual |
Creates a value from a memory location with an already constructed object.
Implemented in ROOT::Experimental::RFieldZero, ROOT::Experimental::Internal::RRDFCardinalityField, ROOT::Experimental::RClassField, ROOT::Experimental::RRecordField, ROOT::Experimental::RArrayField, ROOT::Experimental::RBitsetField, ROOT::Experimental::RVariantField, ROOT::Experimental::RCollectionField, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< bool >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, ROOT::Experimental::RField< char >, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, ROOT::Experimental::RCollectionClassField, ROOT::Experimental::RVectorField, ROOT::Experimental::RRVecField, and ROOT::Experimental::RField< RNTupleCardinality >.
std::unique_ptr< ROOT::Experimental::Detail::RFieldBase > ROOT::Experimental::Detail::RFieldBase::Clone | ( | std::string_view | newName | ) | const |
Copies the field and its sub fields using a possibly new name and a new, unconnected set of columns.
Definition at line 361 of file RField.cxx.
|
protectedpure virtual |
Called by Clone(), which additionally copies the on-disk ID.
Implemented in ROOT::Experimental::RClassField, ROOT::Experimental::RCollectionClassField, ROOT::Experimental::RVectorField, ROOT::Experimental::RArrayField, ROOT::Experimental::RBitsetField, ROOT::Experimental::RVariantField, ROOT::Experimental::RCollectionField, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< RNTupleCardinality >, ROOT::Experimental::RField< bool >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, ROOT::Experimental::RField< char >, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, ROOT::Experimental::RFieldZero, ROOT::Experimental::RRecordField, ROOT::Experimental::RRVecField, ROOT::Experimental::RPairField, ROOT::Experimental::RTupleField, and ROOT::Experimental::Internal::RRDFCardinalityField.
|
inlinevirtual |
Perform housekeeping tasks for global to cluster-local index translation.
Reimplemented in ROOT::Experimental::RCollectionClassField, ROOT::Experimental::RVectorField, ROOT::Experimental::RRVecField, ROOT::Experimental::RVariantField, and ROOT::Experimental::RCollectionField.
Definition at line 321 of file RField.hxx.
void ROOT::Experimental::Detail::RFieldBase::ConnectPageSink | ( | RPageSink & | pageSink | ) |
Fields and their columns live in the void until connected to a physical page storage.
Only once connected, data can be read or written. In order to find the field in the page storage, the field's on-disk ID has to be set.
Definition at line 485 of file RField.cxx.
void ROOT::Experimental::Detail::RFieldBase::ConnectPageSource | ( | RPageSource & | pageSource | ) |
Definition at line 514 of file RField.cxx.
|
static |
Factory method to resurrect a field from the stored on-disk type information.
Definition at line 232 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::RClassField, ROOT::Experimental::RCollectionClassField, ROOT::Experimental::RVectorField, ROOT::Experimental::RArrayField, ROOT::Experimental::RVariantField, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, ROOT::Experimental::RRecordField, ROOT::Experimental::RRVecField, ROOT::Experimental::RPairField, and ROOT::Experimental::RTupleField.
Definition at line 391 of file RField.cxx.
ROOT::Experimental::Detail::RFieldBase::RSchemaIterator ROOT::Experimental::Detail::RFieldBase::end | ( | ) |
Definition at line 557 of file RField.cxx.
|
protected |
Returns the on-disk column types found in the provided descriptor for fOnDiskId.
Throws an exception if the types don't match any of the deserialization types from GetColumnRepresentations().
Definition at line 448 of file RField.cxx.
|
static |
Check whether a given string is a valid field name.
Definition at line 343 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 421 of file RField.cxx.
|
protectedpure virtual |
Creates the backing columns corresponsing to the field type for writing.
Implemented in ROOT::Experimental::Internal::RRDFCardinalityField, ROOT::Experimental::RFieldZero, ROOT::Experimental::RClassField, ROOT::Experimental::RCollectionClassField, ROOT::Experimental::RRecordField, ROOT::Experimental::RVectorField, ROOT::Experimental::RRVecField, ROOT::Experimental::RArrayField, ROOT::Experimental::RBitsetField, ROOT::Experimental::RVariantField, ROOT::Experimental::RCollectionField, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< RNTupleCardinality >, ROOT::Experimental::RField< bool >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, and ROOT::Experimental::RField< char >.
|
protectedpure virtual |
Creates the backing columns corresponsing to the field type for reading.
The method should to check, using the page source and fOnDiskId, if the column types match and throw if they don't.
Implemented in ROOT::Experimental::RFieldZero, ROOT::Experimental::RClassField, ROOT::Experimental::RRecordField, ROOT::Experimental::RArrayField, ROOT::Experimental::RField< RNTupleCardinality >, ROOT::Experimental::Internal::RRDFCardinalityField, ROOT::Experimental::RCollectionClassField, ROOT::Experimental::RVectorField, ROOT::Experimental::RRVecField, ROOT::Experimental::RBitsetField, ROOT::Experimental::RVariantField, ROOT::Experimental::RCollectionField, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< bool >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, and ROOT::Experimental::RField< char >.
ROOT::Experimental::Detail::RFieldValue ROOT::Experimental::Detail::RFieldBase::GenerateValue | ( | ) |
Generates an object of the field type and allocates new initialized memory according to the type.
Definition at line 384 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::RFieldZero, ROOT::Experimental::Internal::RRDFCardinalityField, ROOT::Experimental::RBitsetField, ROOT::Experimental::RField< T, typename >, ROOT::Experimental::RCollectionField, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< RNTupleCardinality >, ROOT::Experimental::RField< bool >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, ROOT::Experimental::RField< char >, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, ROOT::Experimental::RClassField, ROOT::Experimental::RCollectionClassField, ROOT::Experimental::RRecordField, ROOT::Experimental::RVectorField, ROOT::Experimental::RRVecField, ROOT::Experimental::RArrayField, ROOT::Experimental::RVariantField, ROOT::Experimental::RPairField, and ROOT::Experimental::RTupleField.
|
pure virtual |
As a rule of thumb, the alignment is equal to the size of the type.
There are, however, various exceptions to this rule depending on OS and CPU architecture. So enforce the alignment to be explicitly spelled out.
Implemented in ROOT::Experimental::Internal::RRDFCardinalityField, ROOT::Experimental::RFieldZero, ROOT::Experimental::RClassField, ROOT::Experimental::RCollectionClassField, ROOT::Experimental::RRecordField, ROOT::Experimental::RVectorField, ROOT::Experimental::RArrayField, ROOT::Experimental::RBitsetField, ROOT::Experimental::RVariantField, ROOT::Experimental::RCollectionField, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< RNTupleCardinality >, ROOT::Experimental::RField< bool >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, ROOT::Experimental::RField< char >, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, and ROOT::Experimental::RRVecField.
|
protectedvirtual |
Implementations in derived classes should return a static RColumnRepresentations object.
The default implementation does not attach any columns to the field.
Reimplemented in ROOT::Experimental::Internal::RRDFCardinalityField, ROOT::Experimental::RCollectionClassField, ROOT::Experimental::RVectorField, ROOT::Experimental::RRVecField, ROOT::Experimental::RBitsetField, ROOT::Experimental::RVariantField, ROOT::Experimental::RCollectionField, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< RNTupleCardinality >, ROOT::Experimental::RField< bool >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, and ROOT::Experimental::RField< char >.
Definition at line 354 of file RField.cxx.
const ROOT::Experimental::Detail::RFieldBase::ColumnRepresentation_t & ROOT::Experimental::Detail::RFieldBase::GetColumnRepresentative | ( | ) | const |
Returns the fColumnRepresentative pointee or, if unset, the field's default representative.
Definition at line 429 of file RField.cxx.
|
inline |
Get the field's description.
Definition at line 337 of file RField.hxx.
|
inlinevirtual |
Indicates an evolution of the mapping scheme from C++ type to columns.
Definition at line 358 of file RField.hxx.
|
inline |
Definition at line 326 of file RField.hxx.
|
inline |
Definition at line 332 of file RField.hxx.
|
inline |
Definition at line 331 of file RField.hxx.
|
inline |
Definition at line 340 of file RField.hxx.
|
inline |
Return the C++ type version stored in the field descriptor; only valid after a call to ConnectPageSource()
Definition at line 362 of file RField.hxx.
|
inline |
Definition at line 333 of file RField.hxx.
std::string ROOT::Experimental::Detail::RFieldBase::GetQualifiedFieldName | ( | ) | const |
Returns the field name and parent field names separated by dots ("grandparent.parent.child")
Definition at line 220 of file RField.cxx.
|
inline |
Definition at line 330 of file RField.hxx.
std::vector< ROOT::Experimental::Detail::RFieldBase * > ROOT::Experimental::Detail::RFieldBase::GetSubFields | ( | ) | const |
Definition at line 411 of file RField.cxx.
|
inline |
Definition at line 277 of file RField.hxx.
|
inline |
Definition at line 329 of file RField.hxx.
|
inlinevirtual |
Indicates an evolution of the C++ type itself.
Reimplemented in ROOT::Experimental::RClassField.
Definition at line 360 of file RField.hxx.
|
pure virtual |
The number of bytes taken by a value of the appropriate type.
Implemented in ROOT::Experimental::Internal::RRDFCardinalityField, ROOT::Experimental::RFieldZero, ROOT::Experimental::RRecordField, ROOT::Experimental::RArrayField, ROOT::Experimental::RBitsetField, ROOT::Experimental::RVariantField, ROOT::Experimental::RCollectionField, ROOT::Experimental::RField< ClusterSize_t >, ROOT::Experimental::RField< RNTupleCardinality >, ROOT::Experimental::RField< bool >, ROOT::Experimental::RField< float >, ROOT::Experimental::RField< double >, ROOT::Experimental::RField< char >, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, ROOT::Experimental::RClassField, ROOT::Experimental::RCollectionClassField, ROOT::Experimental::RVectorField, and ROOT::Experimental::RRVecField.
|
inline |
Whether or not an explicit column representative was set.
Definition at line 350 of file RField.hxx.
|
inline |
Definition at line 278 of file RField.hxx.
|
inlineprivate |
Definition at line 143 of file RField.hxx.
|
inline |
Definition at line 335 of file RField.hxx.
|
inlineprotectedvirtual |
Called by ConnectPageSource()
only once connected; derived classes may override this as appropriate.
Reimplemented in ROOT::Experimental::RClassField.
Definition at line 202 of file RField.hxx.
|
delete |
|
default |
|
inline |
Definition at line 306 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. The fast path is conditioned by the field qualifying as simple, i.e. maps as-is to a single column and has no read callback.
Definition at line 294 of file RField.hxx.
|
protectedvirtual |
Reimplemented in ROOT::Experimental::RClassField, ROOT::Experimental::RCollectionClassField, ROOT::Experimental::RRecordField, ROOT::Experimental::RVectorField, ROOT::Experimental::RArrayField, ROOT::Experimental::RBitsetField, ROOT::Experimental::RVariantField, ROOT::Experimental::RField< RNTupleCardinality >, ROOT::Experimental::RField< ROOT::VecOps::RVec< ItemT > >, ROOT::Experimental::RRVecField, and ROOT::Experimental::Internal::RRDFCardinalityField.
Definition at line 377 of file RField.cxx.
|
inlineprotectedvirtual |
Reimplemented in ROOT::Experimental::RClassField, ROOT::Experimental::RRecordField, ROOT::Experimental::RArrayField, ROOT::Experimental::RField< RNTupleCardinality >, and ROOT::Experimental::Internal::RRDFCardinalityField.
Definition at line 187 of file RField.hxx.
|
protected |
Definition at line 479 of file RField.cxx.
void ROOT::Experimental::Detail::RFieldBase::SetColumnRepresentative | ( | const ColumnRepresentation_t & | representative | ) |
Fixes a column representative.
This can only be done before connecting the field to a page sink. Otherwise, or if the provided representation is not in the list of GetColumnRepresentations, an exception is thrown
Definition at line 436 of file RField.cxx.
|
inline |
Definition at line 338 of file RField.hxx.
|
inline |
Definition at line 341 of file RField.hxx.
|
virtual |
Creates the list of direct child values given a value for this field.
E.g. a single value for the correct variant or all the elements of a collection. The default implementation assumes no sub values and returns an empty vector.
Reimplemented in ROOT::Experimental::RClassField, ROOT::Experimental::RCollectionClassField, ROOT::Experimental::RRecordField, ROOT::Experimental::RVectorField, ROOT::Experimental::RRVecField, and ROOT::Experimental::RArrayField.
Definition at line 398 of file RField.cxx.
|
friend |
Definition at line 83 of file RField.hxx.
|
friend |
Definition at line 82 of file RField.hxx.
|
protected |
Points into the static vector GetColumnRepresentations().GetSerializationTypes() when SetColumnRepresentative is called.
Otherwise GetColumnRepresentative returns the default representation.
Definition at line 168 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 159 of file RField.hxx.
|
private |
Free text set by the user.
Definition at line 141 of file RField.hxx.
|
private |
A field qualifies as simple if it is both mappable and has no post-read callback.
Definition at line 135 of file RField.hxx.
|
private |
The field name relative to its parent field.
Definition at line 127 of file RField.hxx.
|
private |
For fixed sized arrays, the array length.
Definition at line 133 of file RField.hxx.
|
private |
When the columns are connected to a page source or page sink, the field represents a field id in the corresponding RNTuple descriptor.
This on-disk ID is set in RPageSink::Create() for writing and by RFieldDescriptor::CreateField() when recreating a field / model from the stored descriptor.
Definition at line 139 of file RField.hxx.
|
protected |
C++ type version cached from the descriptor after a call to ConnectPageSource()
Definition at line 165 of file RField.hxx.
|
protected |
Sub fields point to their mother field.
Definition at line 153 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 157 of file RField.hxx.
|
protected |
List of functions to be called after reading a value.
Definition at line 163 of file RField.hxx.
|
private |
The role of this field in the data model structure.
Definition at line 131 of file RField.hxx.
|
protected |
Collections and classes own sub fields.
Definition at line 151 of file RField.hxx.
|
protected |
Properties of the type that allow for optimizations of collections of that type.
Definition at line 161 of file RField.hxx.
|
private |
The C++ type captured by this field.
Definition at line 129 of file RField.hxx.
|
staticconstexpr |
Definition at line 87 of file RField.hxx.
|
staticconstexpr |
A field of a fundamental type that can be directly mapped via RField<T>::Map()
, i.e.
maps as-is to a single column
Definition at line 95 of file RField.hxx.
|
staticconstexpr |
No constructor needs to be called, i.e.
any bit pattern in the allocated memory represents a valid type A trivially constructible field has a no-op GenerateValue() implementation
Definition at line 90 of file RField.hxx.
|
staticconstexpr |
The type is cleaned up just by freeing its memory. I.e. DestroyValue() is a no-op.
Definition at line 92 of file RField.hxx.
|
staticconstexpr |
Shorthand for types that are both trivially constructible and destructible.
Definition at line 97 of file RField.hxx.