Template specializations for C++ std::optional and std::unique_ptr.
The field for values that may or may not be present in an entry. Parent class for unique pointer field and optional field. A nullable field cannot be instantiated itself but only its descendants. The RNullableField takes care of the on-disk representation. Child classes are responsible for the in-memory representation. Nullable fields use a (Split)Index[64|32] column to point to the available items.
Definition at line 167 of file RFieldSTLMisc.hxx.
|
| RNullableField (RNullableField &&other)=default |
|
| ~RNullableField () override=default |
|
void | AcceptVisitor (Detail::RFieldVisitor &visitor) const final |
|
RNullableField & | operator= (RNullableField &&other)=default |
|
| 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.
|
|
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< 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.
|
|
RBulk | CreateBulk () |
| The returned bulk is initially empty; RBulk::ReadBulk will construct the array of values.
|
|
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::Experimental::RFieldBase::RCreateObjectDeleter< void >::deleter > | CreateObject () const |
|
RValue | CreateValue () |
| Generates an object of the field type and wraps the created object in a shared pointer and returns it an RValue connected to the field.
|
|
RSchemaIterator | end () |
|
RConstSchemaIterator | end () const |
|
virtual size_t | GetAlignment () const =0 |
| As a rule of thumb, the alignment is equal to the size of the type.
|
|
RColumnRepresentations::Selection_t | GetColumnRepresentatives () const |
| Returns the fColumnRepresentative pointee or, if unset (always the case for artificial fields), the field's default representative.
|
|
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::size_t | GetNRepetitions () const |
|
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 RFieldBase * | GetParent () const |
|
std::string | GetQualifiedFieldName () const |
| Returns the field name and parent field names separated by dots ("grandparent.parent.child")
|
|
EState | GetState () const |
|
ENTupleStructure | GetStructure () const |
|
std::vector< RFieldBase * > | GetSubFields () |
|
std::vector< const RFieldBase * > | GetSubFields () const |
|
int | 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.
|
|
virtual size_t | GetValueSize () const =0 |
| The number of bytes taken by a value of the appropriate type.
|
|
bool | HasDefaultColumnRepresentative () const |
| Whether or not an explicit column representative was set.
|
|
bool | HasReadCallbacks () const |
|
bool | IsArtificial () const |
|
bool | IsSimple () const |
|
RFieldBase & | operator= (const RFieldBase &)=delete |
|
RFieldBase & | operator= (RFieldBase &&)=default |
|
void | SetColumnRepresentatives (const RColumnRepresentations::Selection_t &representatives) |
| Fixes a column representative.
|
|
void | SetDescription (std::string_view description) |
|
void | SetOnDiskId (DescriptorId_t id) |
|
virtual std::vector< RValue > | SplitValue (const RValue &value) const |
| Creates the list of direct child values given a value for this field.
|
|
|
| RNullableField (std::string_view fieldName, std::string_view typeName, 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 corresponsing to the field type for writing.
|
|
void | GenerateColumns (const RNTupleDescriptor &) final |
| Implementations in derived classes should create the backing columns corresponsing to the field type for reading.
|
|
const RFieldBase::RColumnRepresentations & | GetColumnRepresentations () const final |
| Implementations in derived classes should return a static RColumnRepresentations object.
|
|
RClusterIndex | GetItemIndex (NTupleSize_t globalIndex) |
| Given the index of the nullable field, returns the corresponding global index of the subfield or, if it is null, returns kInvalidClusterIndex.
|
|
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.
|
|
virtual std::size_t | AppendImpl (const void *from) |
| Operations on values of complex types, e.g.
|
|
void | Attach (std::unique_ptr< RFieldBase > child) |
| Add a new subfield to the list of nested fields.
|
|
void | AutoAdjustColumnTypes (const 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 void | BeforeConnectPageSource (Internal::RPageSource &) |
| Called by ConnectPageSource() before connecting; derived classes may override this as appropriate.
|
|
virtual std::unique_ptr< RFieldBase > | CloneImpl (std::string_view newName) const =0 |
| Called by Clone(), which additionally copies the on-disk ID.
|
|
virtual void | ConstructValue (void *where) const =0 |
| Constructs value in a given location of size at least GetValueSize(). Called by the base class' CreateValue().
|
|
void * | CreateObjectRawPtr () const |
| Factory method for the field's type. The caller owns the returned pointer.
|
|
const ColumnRepresentation_t & | EnsureCompatibleColumnTypes (const 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.
|
|
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 RNTupleDescriptor &desc) |
| For reading, use the on-disk column list.
|
|
virtual std::unique_ptr< RDeleter > | GetDeleter () const |
|
virtual RExtraTypeInfoDescriptor | GetExtraTypeInfo () const |
|
virtual bool | HasExtraTypeInfo () const |
|
virtual void | OnConnectPageSource () |
| Called by ConnectPageSource() once connected; derived classes may override this as appropriate.
|
|
void | Read (NTupleSize_t globalIndex, void *to) |
| Populate a single value with data from the field.
|
|
void | Read (RClusterIndex clusterIndex, 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.
|
|
virtual void | ReadGlobalImpl (NTupleSize_t globalIndex, void *to) |
|
virtual void | ReadInClusterImpl (RClusterIndex clusterIndex, void *to) |
|
void | RemoveReadCallback (size_t idx) |
|
|
using | ColumnRepresentation_t = std::vector< EColumnType > |
|
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 std::vector< RCheckResult > | Check (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 resurrect a field from the stored on-disk type information.
|
|
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.
|
|
static constexpr int | kTraitTriviallyConstructible = 0x01 |
| No constructor needs to be called, i.e.
|
|
static constexpr int | kTraitTriviallyDestructible = 0x02 |
| The type is cleaned up just by freeing its memory. I.e. the destructor performs a no-op.
|
|
static constexpr int | kTraitTrivialType = kTraitTriviallyConstructible | kTraitTriviallyDestructible |
| Shorthand for types that are both trivially constructible and destructible.
|
|
static constexpr int | kTraitTypeChecksum = 0x08 |
| The TClass checksum is set and valid.
|
|
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, NTupleSize_t globalIndex, void *to) |
|
static void | CallReadOn (RFieldBase &other, RClusterIndex clusterIndex, void *to) |
|
static RResult< std::unique_ptr< RFieldBase > > | Create (const std::string &fieldName, const std::string &canonicalType, const std::string &typeAlias, bool continueOnError=false) |
| Factory method to resurrect a field from the stored on-disk type information.
|
|
static std::unique_ptr< RDeleter > | GetDeleterOf (const RFieldBase &other) |
|
static Internal::RColumn * | GetPrincipalColumnOf (const RFieldBase &other) |
| Fields may need direct access to the principal column of their sub fields, e.g. in RRVecField::ReadBulk.
|
|
Internal::RColumn * | fAuxiliaryColumn = nullptr |
| Some fields have a second column in its column representation.
|
|
std::vector< std::unique_ptr< 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 GetColumnRepresentations().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()
|
|
RFieldBase * | fParent |
| Sub fields point to their mother field.
|
|
Internal::RColumn * | fPrincipalColumn = nullptr |
| All fields that have columns have a distinct main column.
|
|
std::vector< ReadCallback_t > | fReadCallbacks |
| List of functions to be called after reading a value.
|
|
std::vector< std::unique_ptr< RFieldBase > > | fSubFields |
| Collections and classes own sub fields.
|
|
int | 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.
|
|