Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
ROOT::ROptionalField Class Reference

Definition at line 229 of file RFieldSTLMisc.hxx.

Classes

class  ROptionalDeleter
 

Public Member Functions

 ROptionalField (ROptionalField &&other)=default
 
 ROptionalField (std::string_view fieldName, std::unique_ptr< RFieldBase > itemField)
 
 ~ROptionalField () override=default
 
std::size_t GetAlignment () const final
 What alignof(T) for this type returns.
 
std::size_t GetValueSize () const final
 What sizeof(T) for this type returns.
 
ROptionalFieldoperator= (ROptionalField &&other)=default
 
std::vector< RValueSplitValue (const RValue &value) const final
 Creates the list of direct child values given an existing value for this field.
 
- Public Member Functions inherited from ROOT::RNullableField
 RNullableField (RNullableField &&other)=default
 
 ~RNullableField () override=default
 
void AcceptVisitor (ROOT::Detail::RFieldVisitor &visitor) const final
 
RNullableFieldoperator= (RNullableField &&other)=default
 
- Public Member Functions inherited from ROOT::RFieldBase
 RFieldBase (const RFieldBase &)=delete
 
 RFieldBase (RFieldBase &&)=default
 
 RFieldBase (std::string_view name, std::string_view type, ROOT::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.
 
virtual ~RFieldBase ()=default
 
RSchemaIterator begin ()
 
RConstSchemaIterator begin () const
 
RValue BindValue (std::shared_ptr< void > objPtr)
 Creates a value from a memory location with an already constructed object.
 
RConstSchemaIterator cbegin () const
 
RConstSchemaIterator cend () const
 
std::unique_ptr< RFieldBaseClone (std::string_view newName) const
 Copies the field and its subfields using a possibly new name and a new, unconnected set of columns.
 
RBulkValues CreateBulk ()
 Creates a new, initially empty bulk.
 
template<>
std::unique_ptr< void, typename RFieldBase::RCreateObjectDeleter< void >::deleter > CreateObject () const
 
template<typename T >
std::unique_ptr< T, typename RCreateObjectDeleter< T >::deleter > CreateObject () const
 Generates an object of the field type and allocates new initialized memory according to the type.
 
template<>
std::unique_ptr< void, typename ROOT::RFieldBase::RCreateObjectDeleter< void >::deleter > CreateObject () const
 
RValue CreateValue ()
 Generates an object of the field's type, wraps it in a shared pointer and returns it as an RValue connected to the field.
 
RSchemaIterator end ()
 
RConstSchemaIterator end () const
 
RColumnRepresentations::Selection_t GetColumnRepresentatives () const
 Returns the fColumnRepresentative pointee or, if unset (always the case for artificial fields), the field's default representative.
 
std::vector< const RFieldBase * > GetConstSubfields () const
 
const std::string & GetDescription () const
 Get the field's description.
 
const std::string & GetFieldName () const
 
virtual std::uint32_t GetFieldVersion () const
 Indicates an evolution of the mapping scheme from C++ type to columns.
 
std::vector< RFieldBase * > GetMutableSubfields ()
 
std::size_t GetNRepetitions () const
 
ROOT::DescriptorId_t GetOnDiskId () const
 
std::uint32_t GetOnDiskTypeChecksum () const
 Return checksum stored in the field descriptor; only valid after a call to ConnectPageSource(), if the field stored a type checksum.
 
std::uint32_t GetOnDiskTypeVersion () const
 Return the C++ type version stored in the field descriptor; only valid after a call to ConnectPageSource()
 
const RFieldBaseGetParent () const
 
std::string GetQualifiedFieldName () const
 Returns the field name and parent field names separated by dots (grandparent.parent.child)
 
EState GetState () const
 
ROOT::ENTupleStructure GetStructure () const
 
std::uint32_t GetTraits () const
 
const std::string & GetTypeAlias () const
 
virtual std::uint32_t GetTypeChecksum () const
 Return the current TClass reported checksum of this class. Only valid if kTraitTypeChecksum is set.
 
const std::string & GetTypeName () const
 
virtual std::uint32_t GetTypeVersion () const
 Indicates an evolution of the C++ type itself.
 
bool HasDefaultColumnRepresentative () const
 Whether or not an explicit column representative was set.
 
bool HasReadCallbacks () const
 
bool IsArtificial () const
 
bool IsSimple () const
 
RFieldBaseoperator= (const RFieldBase &)=delete
 
RFieldBaseoperator= (RFieldBase &&)=default
 
void SetColumnRepresentatives (const RColumnRepresentations::Selection_t &representatives)
 Fixes a column representative.
 
void SetDescription (std::string_view description)
 
void SetOnDiskId (ROOT::DescriptorId_t id)
 

Protected Member Functions

std::size_t AppendImpl (const void *from) final
 Operations on values of complex types, e.g.
 
std::unique_ptr< RFieldBaseCloneImpl (std::string_view newName) const final
 Called by Clone(), which additionally copies the on-disk ID.
 
void ConstructValue (void *where) const final
 Constructs value in a given location of size at least GetValueSize(). Called by the base class' CreateValue().
 
std::unique_ptr< RDeleterGetDeleter () const final
 
void ReadGlobalImpl (ROOT::NTupleSize_t globalIndex, void *to) final
 
void ReadInClusterImpl (ROOT::RNTupleLocalIndex localIndex, void *to) final
 
- Protected Member Functions inherited from ROOT::RNullableField
 RNullableField (std::string_view fieldName, const std::string &typePrefix, std::unique_ptr< RFieldBase > itemField)
 
std::size_t AppendNull ()
 
std::size_t AppendValue (const void *from)
 
void CommitClusterImpl () final
 
void GenerateColumns () final
 Implementations in derived classes should create the backing columns corresponding to the field type for writing.
 
void GenerateColumns (const ROOT::RNTupleDescriptor &) final
 Implementations in derived classes should create the backing columns corresponding to the field type for reading.
 
const RFieldBase::RColumnRepresentationsGetColumnRepresentations () const final
 Implementations in derived classes should return a static RColumnRepresentations object.
 
RNTupleLocalIndex GetItemIndex (NTupleSize_t globalIndex)
 Given the global index of the nullable field, returns the corresponding cluster-local index of the subfield or, if it is null, returns a default constructed RNTupleLocalIndex.
 
RNTupleLocalIndex GetItemIndex (RNTupleLocalIndex localIndex)
 Given the cluster-local index of the nullable field, returns the corresponding cluster-local index of the subfield or, if it is null, returns a default constructed RNTupleLocalIndex.
 
void ReconcileOnDiskField (const RNTupleDescriptor &desc) final
 For non-artificial fields, check compatibility of the in-memory field and the on-disk field.
 
- Protected Member Functions inherited from ROOT::RFieldBase
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.
 
std::size_t Append (const void *from)
 Write the given value into columns.
 
void Attach (std::unique_ptr< RFieldBase > child, std::string_view expectedChildName="")
 Add a new subfield to the list of nested fields.
 
void AutoAdjustColumnTypes (const ROOT::RNTupleWriteOptions &options)
 When connecting a field to a page sink, the field's default column representation is subject to adjustment according to the write options.
 
virtual std::unique_ptr< RFieldBaseBeforeConnectPageSource (ROOT::Internal::RPageSource &)
 Called by ConnectPageSource() before connecting; derived classes may override this as appropriate, e.g.
 
std::uint32_t CompareOnDiskField (const RFieldDescriptor &fieldDesc, std::uint32_t ignoreBits) const
 Returns a combination of kDiff... flags, indicating peroperties that are different between the field at hand and the given on-disk field.
 
void * CreateObjectRawPtr () const
 Factory method for the field's type. The caller owns the returned pointer.
 
const ColumnRepresentation_tEnsureCompatibleColumnTypes (const ROOT::RNTupleDescriptor &desc, std::uint16_t representationIndex) const
 Returns the on-disk column types found in the provided descriptor for fOnDiskId and the given representation index.
 
RResult< void > EnsureMatchingOnDiskCollection (const RNTupleDescriptor &desc) const
 Convenience wrapper for the common case of calling EnsureMatchinOnDiskField() for collections.
 
RResult< void > EnsureMatchingOnDiskField (const RNTupleDescriptor &desc, std::uint32_t ignoreBits=0) const
 Compares the field to the corresponding on-disk field information in the provided descriptor.
 
RResult< void > EnsureMatchingTypePrefix (const RNTupleDescriptor &desc, const std::vector< std::string > &prefixes) const
 Many fields accept a range of type prefixes for schema evolution, e.g.
 
template<typename... ColumnCppTs>
void GenerateColumnsImpl ()
 For writing, use the currently set column representative.
 
template<std::uint32_t ColumnIndexT, typename HeadT , typename... TailTs>
void GenerateColumnsImpl (const ColumnRepresentation_t &representation, std::uint16_t representationIndex)
 Helpers for generating columns.
 
template<typename... ColumnCppTs>
void GenerateColumnsImpl (const ROOT::RNTupleDescriptor &desc)
 For reading, use the on-disk column list.
 
virtual ROOT::RExtraTypeInfoDescriptor GetExtraTypeInfo () const
 
virtual bool HasExtraTypeInfo () const
 
void Read (RNTupleLocalIndex localIndex, void *to)
 Populate a single value with data from the field.
 
void Read (ROOT::NTupleSize_t globalIndex, void *to)
 Populate a single value with data from the field.
 
std::size_t ReadBulk (const RBulkSpec &bulkSpec)
 Returns the number of newly available values, that is the number of bools in bulkSpec.fMaskAvail that flipped from false to true.
 
virtual std::size_t ReadBulkImpl (const RBulkSpec &bulkSpec)
 General implementation of bulk read.
 
void RemoveReadCallback (size_t idx)
 

Private Member Functions

const boolGetEngagementPtr (const void *optionalPtr) const
 Given a pointer to an std::optional<T> in optionalPtr, extract a pointer to the engagement boolean.
 
boolGetEngagementPtr (void *optionalPtr) const
 
std::size_t GetEngagementPtrOffset () const
 
void PrepareRead (void *to, bool hasOnDiskValue)
 

Private Attributes

std::unique_ptr< RDeleterfItemDeleter
 

Additional Inherited Members

- Public Types inherited from ROOT::RFieldBase
enum  {
  kTraitTriviallyConstructible = 0x01 , kTraitTriviallyDestructible = 0x02 , kTraitMappable = 0x04 , kTraitTypeChecksum = 0x08 ,
  kTraitInvalidField = 0x10 , kTraitEmulatedField = 0x20 , kTraitExtensible = 0x40 , kTraitSoACollection = 0x80 ,
  kTraitTrivialType = kTraitTriviallyConstructible | kTraitTriviallyDestructible
}
 
using ColumnRepresentation_t = std::vector<ROOT::ENTupleColumnType>
 
enum class  EState { kUnconnected , kConnectedToSink , kConnectedToSource }
 During its lifetime, a field undergoes the following possible state transitions: More...
 
using RConstSchemaIterator = RSchemaIteratorTemplate<true>
 
using RSchemaIterator = RSchemaIteratorTemplate<false>
 
- Static Public Member Functions inherited from ROOT::RFieldBase
static std::vector< RCheckResultCheck (const std::string &fieldName, const std::string &typeName)
 Checks if the given type is supported by RNTuple.
 
static RResult< std::unique_ptr< RFieldBase > > Create (const std::string &fieldName, const std::string &typeName)
 Factory method to create a field from a certain type given as string.
 
- Static Public Attributes inherited from ROOT::RFieldBase
static constexpr std::uint32_t kInvalidTypeVersion = -1U
 
- Protected Types inherited from ROOT::RFieldBase
enum  {
  kDiffFieldVersion = 0x01 , kDiffTypeVersion = 0x02 , kDiffStructure = 0x04 , kDiffTypeName = 0x08 ,
  kDiffNRepetitions = 0x10
}
 Bits used in CompareOnDisk() More...
 
- Static Protected Member Functions inherited from ROOT::RFieldBase
static std::size_t CallAppendOn (RFieldBase &other, const void *from)
 Allow derived classes to call Append() and Read() on other (sub)fields.
 
static void CallConstructValueOn (const RFieldBase &other, void *where)
 Allow derived classes to call ConstructValue(void *) and GetDeleter() on other (sub)fields.
 
static void * CallCreateObjectRawPtrOn (RFieldBase &other)
 
static void CallReadOn (RFieldBase &other, RNTupleLocalIndex localIndex, void *to)
 
static void CallReadOn (RFieldBase &other, ROOT::NTupleSize_t globalIndex, void *to)
 
static void CallSetArtificialOn (RFieldBase &other)
 Allow parents to mark their childs as artificial fields (used in class and record fields)
 
static RResult< std::unique_ptr< RFieldBase > > Create (const std::string &fieldName, const std::string &typeName, const ROOT::RCreateFieldOptions &options, const ROOT::RNTupleDescriptor *desc, ROOT::DescriptorId_t fieldId)
 Factory method to resurrect a field from the stored on-disk type information.
 
static std::unique_ptr< RDeleterGetDeleterOf (const RFieldBase &other)
 
static ROOT::Internal::RColumnGetPrincipalColumnOf (const RFieldBase &other)
 Fields may need direct access to the principal column of their subfields, e.g. in RRVecField::ReadBulk()
 
- Protected Attributes inherited from ROOT::RNullableField
bool fIsEvolvedFromInnerType = false
 
- Protected Attributes inherited from ROOT::RFieldBase
ROOT::Internal::RColumnfAuxiliaryColumn = nullptr
 Some fields have a second column in its column representation.
 
std::vector< std::unique_ptr< ROOT::Internal::RColumn > > fAvailableColumns
 The columns are connected either to a sink or to a source (not to both); they are owned by the field.
 
std::vector< std::reference_wrapper< const ColumnRepresentation_t > > fColumnRepresentatives
 Pointers into the static vector returned by RColumnRepresentations::GetSerializationTypes() when SetColumnRepresentatives() is called.
 
std::uint32_t fOnDiskTypeChecksum = 0
 TClass checksum cached from the descriptor after a call to ConnectPageSource().
 
std::uint32_t fOnDiskTypeVersion = kInvalidTypeVersion
 C++ type version cached from the descriptor after a call to ConnectPageSource()
 
RFieldBasefParent
 Subfields point to their mother field.
 
ROOT::Internal::RColumnfPrincipalColumn = nullptr
 All fields that have columns have a distinct main column.
 
std::vector< ReadCallback_tfReadCallbacks
 List of functions to be called after reading a value.
 
std::vector< std::unique_ptr< RFieldBase > > fSubfields
 Collections and classes own subfields.
 
std::uint32_t fTraits = 0
 Properties of the type that allow for optimizations of collections of that type.
 
std::string fTypeAlias
 A typedef or using name that was used when creating the field.
 

#include <ROOT/RField/RFieldSTLMisc.hxx>

Inheritance diagram for ROOT::ROptionalField:
[legend]

Constructor & Destructor Documentation

◆ ROptionalField() [1/2]

ROOT::ROptionalField::ROptionalField ( std::string_view fieldName,
std::unique_ptr< RFieldBase > itemField )

Definition at line 1097 of file RField.cxx.

◆ ROptionalField() [2/2]

ROOT::ROptionalField::ROptionalField ( ROptionalField && other)
default

◆ ~ROptionalField()

ROOT::ROptionalField::~ROptionalField ( )
overridedefault

Member Function Documentation

◆ AppendImpl()

std::size_t ROOT::ROptionalField::AppendImpl ( const void * from)
finalprotectedvirtual

Operations on values of complex types, e.g.

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

Reimplemented from ROOT::RFieldBase.

Definition at line 1120 of file RField.cxx.

◆ CloneImpl()

std::unique_ptr< ROOT::RFieldBase > ROOT::ROptionalField::CloneImpl ( std::string_view newName) const
finalprotectedvirtual

Called by Clone(), which additionally copies the on-disk ID.

Implements ROOT::RFieldBase.

Definition at line 1114 of file RField.cxx.

◆ ConstructValue()

void ROOT::ROptionalField::ConstructValue ( void * where) const
finalprotectedvirtual

Constructs value in a given location of size at least GetValueSize(). Called by the base class' CreateValue().

Implements ROOT::RFieldBase.

Definition at line 1173 of file RField.cxx.

◆ GetAlignment()

size_t ROOT::ROptionalField::GetAlignment ( ) const
finalvirtual

What alignof(T) for this type returns.

Implements ROOT::RFieldBase.

Definition at line 1219 of file RField.cxx.

◆ GetDeleter()

std::unique_ptr< ROOT::RFieldBase::RDeleter > ROOT::ROptionalField::GetDeleter ( ) const
finalprotectedvirtual

Reimplemented from ROOT::RFieldBase.

Definition at line 1188 of file RField.cxx.

◆ GetEngagementPtr() [1/2]

const bool * ROOT::ROptionalField::GetEngagementPtr ( const void * optionalPtr) const
private

Given a pointer to an std::optional<T> in optionalPtr, extract a pointer to the engagement boolean.

Assumes that an std::optional<T> is stored as struct { T t; bool engagement; };

Definition at line 1109 of file RField.cxx.

◆ GetEngagementPtr() [2/2]

bool * ROOT::ROptionalField::GetEngagementPtr ( void * optionalPtr) const
private

Definition at line 1104 of file RField.cxx.

◆ GetEngagementPtrOffset()

std::size_t ROOT::ROptionalField::GetEngagementPtrOffset ( ) const
private

◆ GetValueSize()

size_t ROOT::ROptionalField::GetValueSize ( ) const
finalvirtual

What sizeof(T) for this type returns.

Implements ROOT::RFieldBase.

Definition at line 1205 of file RField.cxx.

◆ operator=()

ROptionalField & ROOT::ROptionalField::operator= ( ROptionalField && other)
default

◆ PrepareRead()

void ROOT::ROptionalField::PrepareRead ( void * to,
bool hasOnDiskValue )
private

Definition at line 1129 of file RField.cxx.

◆ ReadGlobalImpl()

void ROOT::ROptionalField::ReadGlobalImpl ( ROOT::NTupleSize_t globalIndex,
void * to )
finalprotectedvirtual

Reimplemented from ROOT::RFieldBase.

Definition at line 1143 of file RField.cxx.

◆ ReadInClusterImpl()

void ROOT::ROptionalField::ReadInClusterImpl ( ROOT::RNTupleLocalIndex localIndex,
void * to )
finalprotectedvirtual

Reimplemented from ROOT::RFieldBase.

Definition at line 1159 of file RField.cxx.

◆ SplitValue()

std::vector< ROOT::RFieldBase::RValue > ROOT::ROptionalField::SplitValue ( const RValue & value) const
finalvirtual

Creates the list of direct child values given an existing value for this field.

E.g. a single value for the correct std::variant or all the elements of a collection. The default implementation assumes no subvalues and returns an empty vector.

Reimplemented from ROOT::RFieldBase.

Definition at line 1195 of file RField.cxx.

Member Data Documentation

◆ fItemDeleter

std::unique_ptr<RDeleter> ROOT::ROptionalField::fItemDeleter
private

Definition at line 241 of file RFieldSTLMisc.hxx.

Libraries for ROOT::ROptionalField:

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