The generic field for std::tuple<Ts...>
types.
Definition at line 1394 of file RField.hxx.
|
| RTupleField (RTupleField &&other)=default |
|
| RTupleField (std::string_view fieldName, std::vector< std::unique_ptr< Detail::RFieldBase > > &itemFields) |
|
| ~RTupleField () override=default |
|
RTupleField & | operator= (RTupleField &&other)=default |
|
| RRecordField (RRecordField &&other)=default |
|
| RRecordField (std::string_view fieldName, std::vector< std::unique_ptr< Detail::RFieldBase > > &&itemFields) |
| Construct a RRecordField based on a vector of child fields.
|
|
| RRecordField (std::string_view fieldName, std::vector< std::unique_ptr< Detail::RFieldBase > > &itemFields) |
|
| ~RRecordField () override=default |
|
void | AcceptVisitor (Detail::RFieldVisitor &visitor) const final |
|
size_t | GetAlignment () const final |
| As a rule of thumb, the alignment is equal to the size of the type.
|
|
size_t | GetValueSize () const final |
| The number of bytes taken by a value of the appropriate type.
|
|
RRecordField & | operator= (RRecordField &&other)=default |
|
std::vector< RValue > | SplitValue (const RValue &value) const final |
| Creates the list of direct child values given a value for this field.
|
|
| 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 () |
|
RSchemaIterator | begin () |
|
RValue | BindValue (void *where) |
| 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.
|
|
void | CommitCluster () |
| Flushes data from active columns to disk and calls CommitClusterImpl.
|
|
void | ConnectPageSink (RPageSink &pageSink, NTupleSize_t firstEntry=0) |
| Fields and their columns live in the void until connected to a physical page storage.
|
|
void | ConnectPageSource (RPageSource &pageSource) |
|
RSchemaIterator | end () |
|
RBulk | GenerateBulk () |
| The returned bulk is initially empty; RBulk::ReadBulk will construct the array of values.
|
|
RValue | GenerateValue () |
| Generates an object of the field type and allocates new initialized memory according to the type.
|
|
const ColumnRepresentation_t & | GetColumnRepresentative () const |
| Returns the fColumnRepresentative pointee or, if unset, the field's default representative.
|
|
std::string | GetDescription () const |
| Get the field's description.
|
|
virtual std::uint32_t | GetFieldVersion () const |
| Indicates an evolution of the mapping scheme from C++ type to columns.
|
|
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()
|
|
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 () const |
|
int | GetTraits () const |
|
std::string | GetType () const |
|
std::string | GetTypeAlias () 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 | IsSimple () const |
|
RFieldBase & | operator= (const RFieldBase &)=delete |
|
RFieldBase & | operator= (RFieldBase &&)=default |
|
void | SetColumnRepresentative (const ColumnRepresentation_t &representative) |
| Fixes a column representative.
|
|
void | SetDescription (std::string_view description) |
|
void | SetOnDiskId (DescriptorId_t id) |
|
|
| RTupleField (std::string_view fieldName, std::vector< std::unique_ptr< Detail::RFieldBase > > &&itemFields, const std::vector< std::size_t > &offsets) |
|
std::unique_ptr< Detail::RFieldBase > | CloneImpl (std::string_view newName) const override |
| Called by Clone(), which additionally copies the on-disk ID.
|
|
void | DestroyValue (void *objPtr, bool dtorOnly=false) const override |
| Releases the resources acquired during GenerateValue (memory and constructor) This implementation works for types with a trivial destructor and should be overwritten otherwise.
|
|
void | GenerateValue (void *where) const override |
| Constructs value in a given location of size at least GetValueSize(). Called by the base class' GenerateValue().
|
|
template<std::size_t N> |
| RRecordField (std::string_view fieldName, std::array< std::unique_ptr< Detail::RFieldBase >, N > &&itemFields, const std::array< std::size_t, N > &offsets, std::string_view typeName="") |
|
| RRecordField (std::string_view fieldName, std::vector< std::unique_ptr< Detail::RFieldBase > > &&itemFields, const std::vector< std::size_t > &offsets, std::string_view typeName="") |
|
std::size_t | AppendImpl (const void *from) final |
| Operations on values of complex types, e.g.
|
|
void | GenerateColumnsImpl () final |
| Creates the backing columns corresponsing to the field type for writing.
|
|
void | GenerateColumnsImpl (const RNTupleDescriptor &) final |
| Creates the backing columns corresponsing to the field type for reading.
|
|
std::size_t | GetItemPadding (std::size_t baseOffset, std::size_t itemAlignment) const |
|
void | ReadGlobalImpl (NTupleSize_t globalIndex, void *to) final |
|
void | ReadInClusterImpl (const RClusterIndex &clusterIndex, void *to) final |
|
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< Detail::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 | CommitClusterImpl () |
|
const ColumnRepresentation_t & | EnsureCompatibleColumnTypes (const RNTupleDescriptor &desc) const |
| Returns the on-disk column types found in the provided descriptor for fOnDiskId.
|
|
virtual const RColumnRepresentations & | GetColumnRepresentations () const |
| Implementations in derived classes should return a static RColumnRepresentations object.
|
|
virtual void | OnConnectPageSource () |
| Called by ConnectPageSource() only once connected; derived classes may override this as appropriate.
|
|
void | Read (const RClusterIndex &clusterIndex, void *to) |
|
void | Read (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) |
|
|
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 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 RResult< void > | EnsureValidFieldName (std::string_view fieldName) |
| Check whether a given string is a valid field name.
|
|
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. DestroyValue() is a no-op.
|
|
static constexpr int | kTraitTrivialType = kTraitTriviallyConstructible | kTraitTriviallyDestructible |
| Shorthand for types that are both trivially constructible and destructible.
|
|
static std::size_t | CallAppendOn (RFieldBase &other, const void *from) |
| Allow derived classes to call Append and Read on other (sub) fields.
|
|
static void | CallDestroyValueOn (const RFieldBase &other, void *objPtr, bool dtorOnly=false) |
|
static void | CallGenerateValueOn (const RFieldBase &other, void *where) |
| Allow derived classes to call GenerateValue(void *) and DestroyValue on other (sub) fields.
|
|
static void | CallReadOn (RFieldBase &other, const RClusterIndex &clusterIndex, void *to) |
|
static void | CallReadOn (RFieldBase &other, NTupleSize_t globalIndex, void *to) |
|
static RResult< std::unique_ptr< RFieldBase > > | Create (const std::string &fieldName, const std::string &canonicalType, const std::string &typeAlias) |
| Factory method to resurrect a field from the stored on-disk type information.
|
|
static RColumn * | GetPrincipalColumnOf (const RFieldBase &other) |
| Fields may need direct access to the principal column of their sub fields, e.g. in RRVecField::ReadBulk.
|
|
std::size_t | fMaxAlignment = 1 |
|
std::vector< std::size_t > | fOffsets |
|
std::size_t | fSize = 0 |
|
const ColumnRepresentation_t * | fColumnRepresentative = nullptr |
| Points into the static vector GetColumnRepresentations().GetSerializationTypes() when SetColumnRepresentative is called.
|
|
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.
|
|
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.
|
|
RColumn * | fPrincipalColumn |
| Points into fColumns.
|
|
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.
|
|