13#ifndef ROOT_RField_SoA
14#define ROOT_RField_SoA
17#error "Please include RField.hxx!"
35namespace Experimental {
63 void operator()(
void *objPtr,
bool dtorOnly)
final;
95 mutable std::unique_ptr<std::vector<std::unique_ptr<ROOT::RFieldBase>>>
fSplitFields;
108 const std::function<
RFieldBase *(
const std::string &)> &fnRecordFieldFinder);
113 std::unique_ptr<RFieldBase>
CloneImpl(std::string_view newName)
const final;
122 std::size_t
AppendImpl(
const void *from)
final;
131 RSoAField(std::string_view fieldName, std::string_view className);
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Abstract base class for classes implementing the visitor design pattern.
void operator()(void *objPtr, bool dtorOnly) final
The SoA field provides I/O for an in-memory SoA layout linked to an on-disk collection of the underly...
void CommitClusterImpl() final
TClass * GetSoAClass() const
std::vector< RRule > fRules
Contains the I/O customization rules for fClass and all nested SoA classes and base classes,...
void ConstructValue(void *where) const final
Constructs value in a given location of size at least GetValueSize(). Called by the base class' Creat...
~RSoAField() override=default
void ReadGlobalImpl(ROOT::NTupleSize_t globalIndex, void *to) final
std::vector< std::size_t > fSoAMemberOffsets
The offset of the RVec members in the SoA type in the same order as fRecordMemberFields.
void AcceptVisitor(ROOT::Detail::RFieldVisitor &visitor) const final
const std::type_info * GetPolymorphicTypeInfo() const
For polymorphic classes (that declare or inherit at least one virtual method), return the expected dy...
size_t GetValueSize() const final
What sizeof(T) for this type returns.
std::vector< std::unique_ptr< RDeleter > > fRecordMemberDeleters
void GraftNestedMemberFields(const RSoAField &nestedSoA, std::size_t offsetInParent, const std::function< RFieldBase *(const std::string &)> &fnRecordFieldFinder)
For a nested SoA struct (either as a member of as a base class), use their fRecordMemberFields in thi...
RSoAField & operator=(RSoAField &&other)=default
void CollectRecordMemberFields()
Called during construction, picks up the (nested) member fields of the underlying record type(s) and ...
std::vector< RValue > SplitValue(const RValue &value) const final
Creates the list of direct child values given an existing value for this field.
size_t GetAlignment() const final
What alignof(T) for this type returns.
std::unique_ptr< std::vector< std::size_t > > fSplitOffsets
std::vector< RFieldBase * > fRecordMemberFields
Direct access to the member fields of the underlying record.
RSoAField(std::string_view fieldName, const RSoAField &source)
Used by CloneImpl.
std::uint32_t GetTypeVersion() const final
Indicates an evolution of the C++ type itself.
std::unique_ptr< RFieldBase > BeforeConnectPageSource(ROOT::Internal::RPageSource &pageSource) final
Called by ConnectPageSource() before connecting; derived classes may override this as appropriate,...
std::unique_ptr< RDeleter > GetDeleter() const final
std::uint32_t GetTypeChecksum() const final
Return the current TClass reported checksum of this class. Only valid if kTraitTypeChecksum is set.
RSoAField(RSoAField &&other)=default
std::unique_ptr< std::vector< std::unique_ptr< ROOT::RFieldBase > > > fSplitFields
For reading and writing, the RVecs of the SoA class do not have a dedicated field.
const RColumnRepresentations & GetColumnRepresentations() const final
Implementations in derived classes should return a static RColumnRepresentations object.
std::size_t AppendImpl(const void *from) final
Operations on values of complex types, e.g.
std::unique_ptr< RFieldBase > CloneImpl(std::string_view newName) const final
Called by Clone(), which additionally copies the on-disk ID.
void GenerateColumns() final
Implementations in derived classes should create the backing columns corresponding to the field type ...
ROOT::Internal::RColumnIndex fNWritten
void ReconcileOnDiskField(const RNTupleDescriptor &desc) final
For non-artificial fields, check compatibility of the in-memory field and the on-disk field.
std::unique_ptr< std::mutex > fLockSplitFields
protects the fSplitFields member.
void ReconstructSplitFields() const
The in-memory representation of a 32bit or 64bit on-disk index column.
Abstract interface to read data from an ntuple.
The list of column representations a field can have.
A functor to release the memory acquired by CreateValue() (memory and constructor).
Points to an object with RNTuple I/O support and keeps a pointer to the corresponding field.
A field translates read and write calls from/to underlying columns to/from tree values.
The on-storage metadata of an RNTuple.
Base class for fields that are subject to I/O customization rules. Used by the class field and the So...
TClass * fClass
Set by derived class to the TClass instance representing the current in-memory layout.
TClass instances represent classes, structs and namespaces in the ROOT type system.
std::uint64_t NTupleSize_t
Integer type long enough to hold the maximum number of entries in a column.
const TSchemaRule * fRule