31namespace Experimental {
84 for (
unsigned i = 0; i < count; ++i) {
115 ReadV(index + nBatch, count - nBatch, &elemTail);
120 template <
typename CppT, EColumnType ColumnT>
123 Read(index, element);
130 return reinterpret_cast<CppT*
>(
136 template <
typename CppT, EColumnType ColumnT>
151 auto idxStart = (index == 0) ? 0 : *Map<ClusterSize_t, EColumnType::kIndex>(index - 1, &elemDummy);
152 auto idxEnd = *Map<ClusterSize_t, EColumnType::kIndex>(index, &elemDummy);
155 if (index == selfOffset) {
159 *collectionSize = idxEnd - idxStart;
160 *collectionStart = pointeeOffset + idxStart;
static RooMathCoreReg dummy
void Deserialize(void *source, std::size_t count)
void * GetRawContent() const
void Serialize(void *destination, std::size_t count) const
unsigned int GetSize() const
Pairs of C++ type and column type, like float and EColumnType::kReal32.
RPageStorage::ColumnHandle_t GetHandleSource() const
RColumn & operator=(const RColumn &)=delete
void SetOffsetColumn(RColumn *offsetColumn)
const RColumnModel & GetModel() const
RPage fHeadPage
Open page into which new elements are being written.
ColumnId_t GetColumnIdSource() const
NTupleSize_t GetNElements()
RColumn * fOffsetColumn
Optional link to a parent offset column that points into this column.
RPageSource * fPageSource
void AppendV(const RColumnElementBase &elemArray, std::size_t count)
RColumn * GetOffsetColumn() const
void Append(const RColumnElementBase &element)
void MapPage(const NTupleSize_t index)
CppT * Map(const NTupleSize_t index, RColumnElementBase *element)
Map may fall back to Read() and therefore requires a valid element.
RColumn(const RColumnModel &model)
void GetCollectionInfo(const NTupleSize_t index, NTupleSize_t *collectionStart, ClusterSize_t *collectionSize)
For offset columns only, do index arithmetic from cluster-local to global indizes.
void Connect(RPageStorage *pageStorage)
void Read(const NTupleSize_t index, RColumnElementBase *element)
void * MapV(const NTupleSize_t index, const NTupleSize_t count)
MapV may fail if there are less than count consecutive elements or if the type pair is not mappable.
RColumn(const RColumn &)=delete
RPage fCurrentPage
The currently mapped page for reading.
void ReadV(const NTupleSize_t index, const NTupleSize_t count, RColumnElementBase *elemArray)
RPageSource * GetPageSource() const
NTupleSize_t fNElements
The number of elements written resp. available in the column.
ColumnId_t fColumnIdSource
The column id is used to find matching pages with content when reading.
RPageStorage::ColumnHandle_t fHandleSink
RPageStorage::ColumnHandle_t fHandleSource
Abstract interface to write data into a tree.
Abstract interface to read data from a tree.
Manages tree meta-data, which is common for sinks and sources.
NTupleSize_t GetPointeeOffset() const
NTupleSize_t GetSelfOffset() const
A page is a fixed size slice of a column that is mapped into memory.
bool Contains(NTupleSize_t index) const
const RClusterInfo & GetClusterInfo() const
NTupleSize_t GetRangeFirst() const
NTupleSize_t GetRangeLast() const
void * TryGrow(std::size_t nElements)
Return a pointer after the last element that has space for nElements new elements.
Holds the static meta-data of a column in a tree.
std::uint64_t NTupleSize_t
Integer type long enough to hold the maximum number of entries in a column.
std::int64_t ColumnId_t
Uniquely identifies a physical column within the scope of the current process, used to tag pages.
constexpr std::size_t kColumnElementSizes[]
Lookup table for the element size in bytes for column types.
Namespace for new ROOT classes and functions.
Wrap the 32bit integer in a struct in order to avoid template specialization clash with std::uint32_t...