Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
ROOT::RClusterDescriptor::RPageRange Class Referencefinal

Records the partition of data into pages for a particular column in a particular cluster.

Definition at line 432 of file RNTupleDescriptor.hxx.

Public Member Functions

 RPageRange ()=default
 RPageRange (const RPageRange &other)=delete
 RPageRange (RPageRange &&other)=default
RPageRange Clone () const
RPageInfoExtended Find (ROOT::NTupleSize_t idxInCluster) const
 Find the page in the RPageRange that contains the given element. The element must exist.
std::vector< RPageInfo > & GetPageInfos ()
const std::vector< RPageInfo > & GetPageInfos () const
ROOT::DescriptorId_t GetPhysicalColumnId () const
RPageRangeoperator= (const RPageRange &other)=delete
RPageRangeoperator= (RPageRange &&other)=default
bool operator== (const RPageRange &other) const
void SetPhysicalColumnId (ROOT::DescriptorId_t id)

Static Public Attributes

static constexpr std::size_t kLargeRangeThreshold = 10
 Create the fCumulativeNElements only when its needed, i.e. when there are many pages to search through.

Private Member Functions

std::size_t ExtendToFitColumnRange (const RColumnRange &columnRange, const ROOT::Internal::RColumnElementBase &element, std::size_t pageSize)
 Extend this RPageRange to fit the given RColumnRange.

Private Attributes

std::unique_ptr< std::vector< ROOT::NTupleSize_t > > fCumulativeNElements
 Has the same length than fPageInfos and stores the sum of the number of elements of all the pages up to and including a given index.
std::vector< RPageInfofPageInfos
ROOT::DescriptorId_t fPhysicalColumnId = ROOT::kInvalidDescriptorId

Friends

class Internal::RClusterDescriptorBuilder

#include <ROOT/RNTupleDescriptor.hxx>

Constructor & Destructor Documentation

◆ RPageRange() [1/3]

ROOT::RClusterDescriptor::RPageRange::RPageRange ( )
default

◆ RPageRange() [2/3]

ROOT::RClusterDescriptor::RPageRange::RPageRange ( const RPageRange & other)
delete

◆ RPageRange() [3/3]

ROOT::RClusterDescriptor::RPageRange::RPageRange ( RPageRange && other)
default

Member Function Documentation

◆ Clone()

RPageRange ROOT::RClusterDescriptor::RPageRange::Clone ( ) const
inline

Definition at line 465 of file RNTupleDescriptor.hxx.

◆ ExtendToFitColumnRange()

std::size_t ROOT::RClusterDescriptor::RPageRange::ExtendToFitColumnRange ( const RColumnRange & columnRange,
const ROOT::Internal::RColumnElementBase & element,
std::size_t pageSize )
private

Extend this RPageRange to fit the given RColumnRange.

To do so, prepend as many synthetic RPageInfos as needed to cover the range in columnRange. RPageInfos are constructed to contain as many elements of type element given a page size limit of pageSize (in bytes); the locator for the referenced pages is kTypePageZero. This function is used to make up RPageRanges for clusters that contain deferred columns.

Returns
The number of column elements covered by the synthesized RPageInfos

Definition at line 226 of file RNTupleDescriptor.cxx.

◆ Find()

ROOT::RClusterDescriptor::RPageInfoExtended ROOT::RClusterDescriptor::RPageRange::Find ( ROOT::NTupleSize_t idxInCluster) const

Find the page in the RPageRange that contains the given element. The element must exist.

Definition at line 181 of file RNTupleDescriptor.cxx.

◆ GetPageInfos() [1/2]

std::vector< RPageInfo > & ROOT::RClusterDescriptor::RPageRange::GetPageInfos ( )
inline

Definition at line 483 of file RNTupleDescriptor.hxx.

◆ GetPageInfos() [2/2]

const std::vector< RPageInfo > & ROOT::RClusterDescriptor::RPageRange::GetPageInfos ( ) const
inline

Definition at line 482 of file RNTupleDescriptor.hxx.

◆ GetPhysicalColumnId()

ROOT::DescriptorId_t ROOT::RClusterDescriptor::RPageRange::GetPhysicalColumnId ( ) const
inline

Definition at line 479 of file RNTupleDescriptor.hxx.

◆ operator=() [1/2]

RPageRange & ROOT::RClusterDescriptor::RPageRange::operator= ( const RPageRange & other)
delete

◆ operator=() [2/2]

RPageRange & ROOT::RClusterDescriptor::RPageRange::operator= ( RPageRange && other)
default

◆ operator==()

bool ROOT::RClusterDescriptor::RPageRange::operator== ( const RPageRange & other) const
inline

Definition at line 485 of file RNTupleDescriptor.hxx.

◆ SetPhysicalColumnId()

void ROOT::RClusterDescriptor::RPageRange::SetPhysicalColumnId ( ROOT::DescriptorId_t id)
inline

Definition at line 480 of file RNTupleDescriptor.hxx.

◆ Internal::RClusterDescriptorBuilder

Definition at line 433 of file RNTupleDescriptor.hxx.

Member Data Documentation

◆ fCumulativeNElements

std::unique_ptr<std::vector<ROOT::NTupleSize_t> > ROOT::RClusterDescriptor::RPageRange::fCumulativeNElements
private

Has the same length than fPageInfos and stores the sum of the number of elements of all the pages up to and including a given index.

Used for binary search in Find(). This vector is only created if fPageInfos has at least kLargeRangeThreshold elements.

Definition at line 451 of file RNTupleDescriptor.hxx.

◆ fPageInfos

std::vector<RPageInfo> ROOT::RClusterDescriptor::RPageRange::fPageInfos
private

Definition at line 446 of file RNTupleDescriptor.hxx.

◆ fPhysicalColumnId

ROOT::DescriptorId_t ROOT::RClusterDescriptor::RPageRange::fPhysicalColumnId = ROOT::kInvalidDescriptorId
private

Definition at line 453 of file RNTupleDescriptor.hxx.

◆ kLargeRangeThreshold

std::size_t ROOT::RClusterDescriptor::RPageRange::kLargeRangeThreshold = 10
staticconstexpr

Create the fCumulativeNElements only when its needed, i.e. when there are many pages to search through.

Definition at line 457 of file RNTupleDescriptor.hxx.


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