A column is a storage-backed array of a simple, fixed-size type, from which pages can be mapped into memory.
Definition at line 40 of file RColumn.hxx.
Public Member Functions | |
RColumn (const RColumn &)=delete | |
~RColumn () | |
void | Append (const void *from) |
void | AppendV (const void *from, std::size_t count) |
void | CommitSuppressed () |
void | ConnectPageSink (DescriptorId_t fieldId, RPageSink &pageSink, NTupleSize_t firstElementIndex=0U) |
Connect the column to a page sink. | |
void | ConnectPageSource (DescriptorId_t fieldId, RPageSource &pageSource) |
Connect the column to a page source. | |
void | Flush () |
std::uint16_t | GetBitsOnStorage () const |
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 (RClusterIndex clusterIndex, RClusterIndex *collectionStart, ClusterSize_t *collectionSize) |
RColumnElementBase * | GetElement () const |
NTupleSize_t | GetFirstElementIndex () const |
NTupleSize_t | GetGlobalIndex (RClusterIndex clusterIndex) |
RPageStorage::ColumnHandle_t | GetHandleSink () const |
RPageStorage::ColumnHandle_t | GetHandleSource () const |
std::uint32_t | GetIndex () const |
NTupleSize_t | GetNElements () const |
DescriptorId_t | GetOnDiskId () const |
RPageSink * | GetPageSink () const |
RPageSource * | GetPageSource () const |
std::uint16_t | GetRepresentationIndex () const |
void | GetSwitchInfo (NTupleSize_t globalIndex, RClusterIndex *varIndex, std::uint32_t *tag) |
Get the currently active cluster id. | |
EColumnType | GetType () const |
std::optional< std::pair< double, double > > | GetValueRange () const |
std::size_t | GetWritePageCapacity () const |
template<typename CppT > | |
CppT * | Map (const NTupleSize_t globalIndex) |
template<typename CppT > | |
CppT * | Map (RClusterIndex clusterIndex) |
void | MapPage (NTupleSize_t globalIndex) |
void | MapPage (RClusterIndex clusterIndex) |
template<typename CppT > | |
CppT * | MapV (const NTupleSize_t globalIndex, NTupleSize_t &nItems) |
template<typename CppT > | |
CppT * | MapV (RClusterIndex clusterIndex, NTupleSize_t &nItems) |
void | MergeTeams (RColumn &other) |
RColumn & | operator= (const RColumn &)=delete |
void | Read (const NTupleSize_t globalIndex, void *to) |
void | Read (RClusterIndex clusterIndex, void *to) |
bool | ReadPageContains (NTupleSize_t globalIndex) const |
bool | ReadPageContains (RClusterIndex clusterIndex) const |
void | ReadV (NTupleSize_t globalIndex, ClusterSize_t::ValueType count, void *to) |
void | ReadV (RClusterIndex clusterIndex, ClusterSize_t::ValueType count, void *to) |
void | SetBitsOnStorage (std::size_t bits) |
void | SetValueRange (double min, double max) |
bool | TryMapPage (NTupleSize_t globalIndex) |
bool | TryMapPage (RClusterIndex clusterIndex) |
Static Public Member Functions | |
template<typename CppT > | |
static std::unique_ptr< RColumn > | Create (EColumnType type, std::uint32_t columnIdx, std::uint16_t representationIdx) |
Private Member Functions | |
RColumn (EColumnType type, std::uint32_t columnIndex, std::uint16_t representationIndex) | |
void | HandleWritePageIfFull () |
Used when trying to append to a full write page. | |
Private Attributes | |
std::unique_ptr< RColumnElementBase > | fElement |
Used to pack and unpack pages on writing/reading. | |
NTupleSize_t | fFirstElementIndex = 0 |
Global index of the first element in this column; usually == 0, unless it is a deferred column. | |
RPageStorage::ColumnHandle_t | fHandleSink |
RPageStorage::ColumnHandle_t | fHandleSource |
std::uint32_t | fIndex |
Columns belonging to the same field are distinguished by their order. | |
NTupleSize_t | fInitialNElements = 1 |
The initial number of elements in a page. | |
std::size_t | fLastGoodTeamIdx = 0 |
Points into fTeam to the column that successfully returned the last page. | |
NTupleSize_t | fNElements = 0 |
The number of elements written resp. available in the column. | |
DescriptorId_t | fOnDiskId = kInvalidDescriptorId |
The column id in the column descriptor, once connected to a sink or source. | |
RPageSink * | fPageSink = nullptr |
RPageSource * | fPageSource = nullptr |
RPageRef | fReadPageRef |
The currently mapped page for reading. | |
std::uint16_t | fRepresentationIndex |
Fields can have multiple column representations, distinguished by representation index. | |
std::vector< RColumn * > | fTeam |
The column team is a set of columns that serve the same column index for different representation IDs. | |
EColumnType | fType |
RPage | fWritePage |
The page into which new elements are being written. | |
#include <ROOT/RColumn.hxx>
|
private |
Definition at line 26 of file RColumn.cxx.
|
delete |
ROOT::Experimental::Internal::RColumn::~RColumn | ( | ) |
Definition at line 32 of file RColumn.cxx.
|
inline |
Definition at line 126 of file RColumn.hxx.
|
inline |
Definition at line 138 of file RColumn.hxx.
void ROOT::Experimental::Internal::RColumn::CommitSuppressed | ( | ) |
Definition at line 80 of file RColumn.cxx.
void ROOT::Experimental::Internal::RColumn::ConnectPageSink | ( | DescriptorId_t | fieldId, |
RPageSink & | pageSink, | ||
NTupleSize_t | firstElementIndex = 0U |
||
) |
Connect the column to a page sink.
firstElementIndex
can be used to specify the first column element index with backing storage for this column. On read back, elements before firstElementIndex
will cause the zero page to be mapped.
Definition at line 40 of file RColumn.cxx.
void ROOT::Experimental::Internal::RColumn::ConnectPageSource | ( | DescriptorId_t | fieldId, |
RPageSource & | pageSource | ||
) |
Connect the column to a page source.
Definition at line 57 of file RColumn.cxx.
|
inlinestatic |
Definition at line 108 of file RColumn.hxx.
void ROOT::Experimental::Internal::RColumn::Flush | ( | ) |
Definition at line 69 of file RColumn.cxx.
|
inline |
Definition at line 339 of file RColumn.hxx.
|
inline |
Definition at line 273 of file RColumn.hxx.
|
inline |
For offset columns only, look at the two adjacent values that define a collection's coordinates.
Definition at line 283 of file RColumn.hxx.
|
inline |
Definition at line 306 of file RColumn.hxx.
|
inline |
Definition at line 337 of file RColumn.hxx.
|
inline |
Definition at line 352 of file RColumn.hxx.
|
inline |
Definition at line 265 of file RColumn.hxx.
|
inline |
Definition at line 356 of file RColumn.hxx.
|
inline |
Definition at line 355 of file RColumn.hxx.
|
inline |
Definition at line 349 of file RColumn.hxx.
|
inline |
Definition at line 336 of file RColumn.hxx.
|
inline |
Definition at line 351 of file RColumn.hxx.
|
inline |
Definition at line 354 of file RColumn.hxx.
|
inline |
Definition at line 353 of file RColumn.hxx.
|
inline |
Definition at line 350 of file RColumn.hxx.
|
inline |
Get the currently active cluster id.
Definition at line 316 of file RColumn.hxx.
|
inline |
Definition at line 338 of file RColumn.hxx.
|
inline |
Definition at line 344 of file RColumn.hxx.
|
inline |
Definition at line 359 of file RColumn.hxx.
|
inlineprivate |
Used when trying to append to a full write page.
If possible, expand the page. Otherwise, flush and reset to the minimal size.
Definition at line 81 of file RColumn.hxx.
|
inline |
Definition at line 227 of file RColumn.hxx.
|
inline |
Definition at line 234 of file RColumn.hxx.
|
inline |
Definition at line 326 of file RColumn.hxx.
|
inline |
Definition at line 327 of file RColumn.hxx.
|
inline |
Definition at line 241 of file RColumn.hxx.
|
inline |
Definition at line 253 of file RColumn.hxx.
void ROOT::Experimental::Internal::RColumn::MergeTeams | ( | RColumn & | other | ) |
Definition at line 115 of file RColumn.cxx.
|
inline |
Definition at line 160 of file RColumn.hxx.
|
inline |
Definition at line 171 of file RColumn.hxx.
|
inline |
Definition at line 331 of file RColumn.hxx.
|
inline |
Definition at line 332 of file RColumn.hxx.
|
inline |
Definition at line 182 of file RColumn.hxx.
|
inline |
Definition at line 204 of file RColumn.hxx.
|
inline |
Definition at line 358 of file RColumn.hxx.
Definition at line 360 of file RColumn.hxx.
bool ROOT::Experimental::Internal::RColumn::TryMapPage | ( | NTupleSize_t | globalIndex | ) |
Definition at line 85 of file RColumn.cxx.
bool ROOT::Experimental::Internal::RColumn::TryMapPage | ( | RClusterIndex | clusterIndex | ) |
Definition at line 100 of file RColumn.cxx.
|
private |
Used to pack and unpack pages on writing/reading.
Definition at line 68 of file RColumn.hxx.
|
private |
Global index of the first element in this column; usually == 0, unless it is a deferred column.
Definition at line 66 of file RColumn.hxx.
|
private |
Definition at line 50 of file RColumn.hxx.
|
private |
Definition at line 51 of file RColumn.hxx.
|
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 45 of file RColumn.hxx.
|
private |
The initial number of elements in a page.
Definition at line 58 of file RColumn.hxx.
|
private |
Points into fTeam to the column that successfully returned the last page.
Definition at line 75 of file RColumn.hxx.
|
private |
The number of elements written resp. available in the column.
Definition at line 60 of file RColumn.hxx.
|
private |
The column id in the column descriptor, once connected to a sink or source.
Definition at line 64 of file RColumn.hxx.
|
private |
Definition at line 48 of file RColumn.hxx.
|
private |
Definition at line 49 of file RColumn.hxx.
|
private |
The currently mapped page for reading.
Definition at line 62 of file RColumn.hxx.
|
private |
Fields can have multiple column representations, distinguished by representation index.
Definition at line 47 of file RColumn.hxx.
|
private |
The column team is a set of columns that serve the same column index for different representation IDs.
Initially, the team has only one member, the very column it belongs to. Through MergeTeams(), two columns can join forces. The team is used to react on suppressed columns: if the current team member has a suppressed column for a MapPage() call, it get the page from the active column in the corresponding cluster.
Definition at line 73 of file RColumn.hxx.
|
private |
Definition at line 42 of file RColumn.hxx.
|
private |
The page into which new elements are being written.
The page will initially be small (RNTupleWriteOptions::fInitialUnzippedPageSize, which corresponds to fInitialElements) and expand as needed and as memory for page buffers is still available (RNTupleWriteOptions::fPageBufferBudget) or the maximum page size is reached (RNTupleWriteOptions::fMaxUnzippedPageSize).
Definition at line 56 of file RColumn.hxx.