Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
ROOT::Experimental::Detail::RColumn Class Reference

Definition at line 44 of file RColumn.hxx.

Public Member Functions

 RColumn (const RColumn &)=delete
 
 ~RColumn ()
 
void Append (const RColumnElementBase &element)
 
void AppendV (const RColumnElementBase &elemArray, std::size_t count)
 
void Connect (DescriptorId_t fieldId, RPageStorage *pageStorage)
 
void Flush ()
 
RClusterIndex GetClusterIndex (NTupleSize_t globalIndex)
 
void GetCollectionInfo (const NTupleSize_t globalIndex, RClusterIndex *collectionStart, ClusterSize_t *collectionSize)
 For offset columns only, look at the two adjacent values that define a collection's coordinates.
 
void GetCollectionInfo (const RClusterIndex &clusterIndex, RClusterIndex *collectionStart, ClusterSize_t *collectionSize)
 
ColumnId_t GetColumnIdSource () const
 
RColumnElementBaseGetElement () const
 
NTupleSize_t GetGlobalIndex (const RClusterIndex &clusterIndex)
 
RPageStorage::ColumnHandle_t GetHandleSink () const
 
RPageStorage::ColumnHandle_t GetHandleSource () const
 
std::uint32_t GetIndex () const
 
const RColumnModelGetModel () const
 
NTupleSize_t GetNElements () const
 
RPageSourceGetPageSource () const
 
void GetSwitchInfo (NTupleSize_t globalIndex, RClusterIndex *varIndex, std::uint32_t *tag)
 Get the currently active cluster id.
 
template<typename CppT >
CppT * Map (const NTupleSize_t globalIndex)
 
template<typename CppT >
CppT * Map (const RClusterIndex &clusterIndex)
 
void MapPage (const NTupleSize_t index)
 
void MapPage (const RClusterIndex &clusterIndex)
 
template<typename CppT >
CppT * MapV (const NTupleSize_t globalIndex, NTupleSize_t &nItems)
 
template<typename CppT >
CppT * MapV (const RClusterIndex &clusterIndex, NTupleSize_t &nItems)
 
RColumnoperator= (const RColumn &)=delete
 
void Read (const NTupleSize_t globalIndex, RColumnElementBase *element)
 
void Read (const RClusterIndex &clusterIndex, RColumnElementBase *element)
 
void ReadV (const NTupleSize_t globalIndex, const ClusterSize_t::ValueType count, RColumnElementBase *elemArray)
 
void ReadV (const RClusterIndex &clusterIndex, const ClusterSize_t::ValueType count, RColumnElementBase *elemArray)
 

Static Public Member Functions

template<typename CppT , EColumnType ColumnT>
static RColumnCreate (const RColumnModel &model, std::uint32_t index)
 

Private Member Functions

 RColumn (const RColumnModel &model, std::uint32_t index)
 
void FlushShadowWritePage ()
 When the main write page surpasses the 50% fill level, the (full) shadow write page gets flushed.
 
void SwapWritePagesIfFull ()
 Used in Append() and AppendV() to switch pages when the main page reached the target size The other page has been flushed when the main page reached 50%.
 

Private Attributes

std::uint32_t fApproxNElementsPerPage = 0
 For writing, the targeted number of elements, given by fApproxNElementsPerPage (in the write options) and the element size.
 
ColumnId_t fColumnIdSource = kInvalidColumnId
 The column id is used to find matching pages with content when reading.
 
std::unique_ptr< RColumnElementBasefElement
 Used to pack and unpack pages on writing/reading.
 
RPageStorage::ColumnHandle_t fHandleSink
 
RPageStorage::ColumnHandle_t fHandleSource
 
std::uint32_t fIndex
 Columns belonging to the same field are distinguished by their order.
 
RColumnModel fModel
 
NTupleSize_t fNElements = 0
 The number of elements written resp. available in the column.
 
RPageSinkfPageSink = nullptr
 
RPageSourcefPageSource = nullptr
 
RPage fReadPage
 The currently mapped page for reading.
 
RPage fWritePage [2]
 A set of open pages into which new elements are being written.
 
int fWritePageIdx = 0
 Index of the current write page.
 

#include <ROOT/RColumn.hxx>

Constructor & Destructor Documentation

◆ RColumn() [1/2]

ROOT::Experimental::Detail::RColumn::RColumn ( const RColumnModel model,
std::uint32_t  index 
)
private

Definition at line 24 of file RColumn.cxx.

◆ RColumn() [2/2]

ROOT::Experimental::Detail::RColumn::RColumn ( const RColumn )
delete

◆ ~RColumn()

ROOT::Experimental::Detail::RColumn::~RColumn ( )

Definition at line 29 of file RColumn.cxx.

Member Function Documentation

◆ Append()

void ROOT::Experimental::Detail::RColumn::Append ( const RColumnElementBase element)
inline

Definition at line 116 of file RColumn.hxx.

◆ AppendV()

void ROOT::Experimental::Detail::RColumn::AppendV ( const RColumnElementBase elemArray,
std::size_t  count 
)
inline

Definition at line 129 of file RColumn.hxx.

◆ Connect()

void ROOT::Experimental::Detail::RColumn::Connect ( DescriptorId_t  fieldId,
RPageStorage pageStorage 
)

Definition at line 43 of file RColumn.cxx.

◆ Create()

template<typename CppT , EColumnType ColumnT>
static RColumn * ROOT::Experimental::Detail::RColumn::Create ( const RColumnModel model,
std::uint32_t  index 
)
inlinestatic

Definition at line 103 of file RColumn.hxx.

◆ Flush()

void ROOT::Experimental::Detail::RColumn::Flush ( )

Definition at line 67 of file RColumn.cxx.

◆ FlushShadowWritePage()

void ROOT::Experimental::Detail::RColumn::FlushShadowWritePage ( )
inlineprivate

When the main write page surpasses the 50% fill level, the (full) shadow write page gets flushed.

Definition at line 91 of file RColumn.hxx.

◆ GetClusterIndex()

RClusterIndex ROOT::Experimental::Detail::RColumn::GetClusterIndex ( NTupleSize_t  globalIndex)
inline

Definition at line 255 of file RColumn.hxx.

◆ GetCollectionInfo() [1/2]

void ROOT::Experimental::Detail::RColumn::GetCollectionInfo ( const NTupleSize_t  globalIndex,
RClusterIndex collectionStart,
ClusterSize_t collectionSize 
)
inline

For offset columns only, look at the two adjacent values that define a collection's coordinates.

Definition at line 264 of file RColumn.hxx.

◆ GetCollectionInfo() [2/2]

void ROOT::Experimental::Detail::RColumn::GetCollectionInfo ( const RClusterIndex clusterIndex,
RClusterIndex collectionStart,
ClusterSize_t collectionSize 
)
inline

Definition at line 287 of file RColumn.hxx.

◆ GetColumnIdSource()

ColumnId_t ROOT::Experimental::Detail::RColumn::GetColumnIdSource ( ) const
inline

Definition at line 311 of file RColumn.hxx.

◆ GetElement()

RColumnElementBase * ROOT::Experimental::Detail::RColumn::GetElement ( ) const
inline

Definition at line 308 of file RColumn.hxx.

◆ GetGlobalIndex()

NTupleSize_t ROOT::Experimental::Detail::RColumn::GetGlobalIndex ( const RClusterIndex clusterIndex)
inline

Definition at line 248 of file RColumn.hxx.

◆ GetHandleSink()

RPageStorage::ColumnHandle_t ROOT::Experimental::Detail::RColumn::GetHandleSink ( ) const
inline

Definition at line 314 of file RColumn.hxx.

◆ GetHandleSource()

RPageStorage::ColumnHandle_t ROOT::Experimental::Detail::RColumn::GetHandleSource ( ) const
inline

Definition at line 313 of file RColumn.hxx.

◆ GetIndex()

std::uint32_t ROOT::Experimental::Detail::RColumn::GetIndex ( ) const
inline

Definition at line 310 of file RColumn.hxx.

◆ GetModel()

const RColumnModel & ROOT::Experimental::Detail::RColumn::GetModel ( ) const
inline

Definition at line 309 of file RColumn.hxx.

◆ GetNElements()

NTupleSize_t ROOT::Experimental::Detail::RColumn::GetNElements ( ) const
inline

Definition at line 307 of file RColumn.hxx.

◆ GetPageSource()

RPageSource * ROOT::Experimental::Detail::RColumn::GetPageSource ( ) const
inline

Definition at line 312 of file RColumn.hxx.

◆ GetSwitchInfo()

void ROOT::Experimental::Detail::RColumn::GetSwitchInfo ( NTupleSize_t  globalIndex,
RClusterIndex varIndex,
std::uint32_t *  tag 
)
inline

Get the currently active cluster id.

Definition at line 298 of file RColumn.hxx.

◆ Map() [1/2]

template<typename CppT >
CppT * ROOT::Experimental::Detail::RColumn::Map ( const NTupleSize_t  globalIndex)
inline

Definition at line 213 of file RColumn.hxx.

◆ Map() [2/2]

template<typename CppT >
CppT * ROOT::Experimental::Detail::RColumn::Map ( const RClusterIndex clusterIndex)
inline

Definition at line 219 of file RColumn.hxx.

◆ MapPage() [1/2]

void ROOT::Experimental::Detail::RColumn::MapPage ( const NTupleSize_t  index)

Definition at line 87 of file RColumn.cxx.

◆ MapPage() [2/2]

void ROOT::Experimental::Detail::RColumn::MapPage ( const RClusterIndex clusterIndex)

Definition at line 93 of file RColumn.cxx.

◆ MapV() [1/2]

template<typename CppT >
CppT * ROOT::Experimental::Detail::RColumn::MapV ( const NTupleSize_t  globalIndex,
NTupleSize_t nItems 
)
inline

Definition at line 225 of file RColumn.hxx.

◆ MapV() [2/2]

template<typename CppT >
CppT * ROOT::Experimental::Detail::RColumn::MapV ( const RClusterIndex clusterIndex,
NTupleSize_t nItems 
)
inline

Definition at line 237 of file RColumn.hxx.

◆ operator=()

RColumn & ROOT::Experimental::Detail::RColumn::operator= ( const RColumn )
delete

◆ Read() [1/2]

void ROOT::Experimental::Detail::RColumn::Read ( const NTupleSize_t  globalIndex,
RColumnElementBase element 
)
inline

Definition at line 157 of file RColumn.hxx.

◆ Read() [2/2]

void ROOT::Experimental::Detail::RColumn::Read ( const RClusterIndex clusterIndex,
RColumnElementBase element 
)
inline

Definition at line 167 of file RColumn.hxx.

◆ ReadV() [1/2]

void ROOT::Experimental::Detail::RColumn::ReadV ( const NTupleSize_t  globalIndex,
const ClusterSize_t::ValueType  count,
RColumnElementBase elemArray 
)
inline

Definition at line 176 of file RColumn.hxx.

◆ ReadV() [2/2]

void ROOT::Experimental::Detail::RColumn::ReadV ( const RClusterIndex clusterIndex,
const ClusterSize_t::ValueType  count,
RColumnElementBase elemArray 
)
inline

Definition at line 194 of file RColumn.hxx.

◆ SwapWritePagesIfFull()

void ROOT::Experimental::Detail::RColumn::SwapWritePagesIfFull ( )
inlineprivate

Used in Append() and AppendV() to switch pages when the main page reached the target size The other page has been flushed when the main page reached 50%.

Definition at line 81 of file RColumn.hxx.

Member Data Documentation

◆ fApproxNElementsPerPage

std::uint32_t ROOT::Experimental::Detail::RColumn::fApproxNElementsPerPage = 0
private

For writing, the targeted number of elements, given by fApproxNElementsPerPage (in the write options) and the element size.

We ensure this value to be >= 2 in Connect() so that we have meaningful "page full" and "page half full" events when writing the page.

Definition at line 67 of file RColumn.hxx.

◆ fColumnIdSource

ColumnId_t ROOT::Experimental::Detail::RColumn::fColumnIdSource = kInvalidColumnId
private

The column id is used to find matching pages with content when reading.

Definition at line 73 of file RColumn.hxx.

◆ fElement

std::unique_ptr<RColumnElementBase> ROOT::Experimental::Detail::RColumn::fElement
private

Used to pack and unpack pages on writing/reading.

Definition at line 75 of file RColumn.hxx.

◆ fHandleSink

RPageStorage::ColumnHandle_t ROOT::Experimental::Detail::RColumn::fHandleSink
private

Definition at line 54 of file RColumn.hxx.

◆ fHandleSource

RPageStorage::ColumnHandle_t ROOT::Experimental::Detail::RColumn::fHandleSource
private

Definition at line 55 of file RColumn.hxx.

◆ fIndex

std::uint32_t ROOT::Experimental::Detail::RColumn::fIndex
private

Columns belonging to the same field are distinguished by their order.

E.g. for an std::string field, there is the offset column with index 0 and the character value column with index 1.

Definition at line 51 of file RColumn.hxx.

◆ fModel

RColumnModel ROOT::Experimental::Detail::RColumn::fModel
private

Definition at line 46 of file RColumn.hxx.

◆ fNElements

NTupleSize_t ROOT::Experimental::Detail::RColumn::fNElements = 0
private

The number of elements written resp. available in the column.

Definition at line 69 of file RColumn.hxx.

◆ fPageSink

RPageSink* ROOT::Experimental::Detail::RColumn::fPageSink = nullptr
private

Definition at line 52 of file RColumn.hxx.

◆ fPageSource

RPageSource* ROOT::Experimental::Detail::RColumn::fPageSource = nullptr
private

Definition at line 53 of file RColumn.hxx.

◆ fReadPage

RPage ROOT::Experimental::Detail::RColumn::fReadPage
private

The currently mapped page for reading.

Definition at line 71 of file RColumn.hxx.

◆ fWritePage

RPage ROOT::Experimental::Detail::RColumn::fWritePage[2]
private

A set of open pages into which new elements are being written.

The pages are used in rotation. They are 50% bigger than the target size given by the write options. The current page is filled until the target size, but it is only committed once the other write page is filled at least 50%. If a flush occurs earlier, a slightly oversized, single page will be committed.

Definition at line 61 of file RColumn.hxx.

◆ fWritePageIdx

int ROOT::Experimental::Detail::RColumn::fWritePageIdx = 0
private

Index of the current write page.

Definition at line 63 of file RColumn.hxx.

Libraries for ROOT::Experimental::Detail::RColumn:

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