Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
RColumnElementBase Class Referenceabstract

A column element encapsulates the translation between basic C++ types and their column representation.

Usually the on-disk element should map bitwise to the in-memory element. Sometimes that's not the case though, for instance on big endian platforms or for bools.

There is a template specialization for every valid pair of C++ type and column representation. These specialized child classes are responsible for overriding Pack() / Unpack() for packing / unpacking elements as appropriate.

Definition at line 51 of file RColumnElementBase.hxx.

Classes

struct  RIdentifier
 Every concrete RColumnElement type is identified by its on-disk type (column type) and the in-memory C++ type, given by a type index. More...

Public Member Functions

 RColumnElementBase (const RColumnElementBase &other)=default
 RColumnElementBase (RColumnElementBase &&other)=default
virtual ~RColumnElementBase ()=default
std::size_t GetBitsOnStorage () const
virtual RIdentifier GetIdentifier () const=0
std::size_t GetPackedSize (std::size_t nElements=1U) const
std::size_t GetSize () const
std::optional< std::pair< double, double > > GetValueRange () const
virtual bool IsMappable () const
 Derived, typed classes tell whether the on-storage layout is bitwise identical to the memory layout.
RColumnElementBaseoperator= (const RColumnElementBase &other)=delete
RColumnElementBaseoperator= (RColumnElementBase &&other)=default
virtual void Pack (void *destination, const void *source, std::size_t count) const
 If the on-storage layout and the in-memory layout differ, packing creates an on-disk page from an in-memory page.
virtual void SetBitsOnStorage (std::size_t bitsOnStorage)
virtual void SetValueRange (double, double)
virtual void Unpack (void *destination, const void *source, std::size_t count) const
 If the on-storage layout and the in-memory layout differ, unpacking creates a memory page from an on-storage page.

Static Public Member Functions

template<>
std::unique_ptr< ROOT::Internal::RColumnElementBaseGenerate (ENTupleColumnType onDiskType)
template<>
std::unique_ptr< RColumnElementBaseGenerate (ROOT::ENTupleColumnType onDiskType)
template<typename CppT = void>
static std::unique_ptr< RColumnElementBaseGenerate (ROOT::ENTupleColumnType type)
 If CppT == void, use the default C++ type for the given column type.
static const char * GetColumnTypeName (ROOT::ENTupleColumnType type)
static std::pair< std::uint16_t, std::uint16_t > GetValidBitRange (ROOT::ENTupleColumnType type)
 Most types have a fixed on-disk bit width.

Protected Member Functions

 RColumnElementBase (std::size_t size, std::size_t bitsOnStorage=0)

Protected Attributes

std::size_t fBitsOnStorage
std::size_t fSize
 Size of the C++ value that corresponds to the on-disk element.
std::optional< std::pair< double, double > > fValueRange = std::nullopt
 This is only meaningful for column elements that support it (e.g. Real32Quant).

Constructor & Destructor Documentation

◆ RColumnElementBase() [1/3]

ROOT::Internal::RColumnElementBase::RColumnElementBase ( std::size_t size,
std::size_t bitsOnStorage = 0 )
inlineexplicitprotected

Definition at line 59 of file RColumnElementBase.hxx.

◆ RColumnElementBase() [2/3]

◆ RColumnElementBase() [3/3]

◆ ~RColumnElementBase()

Member Function Documentation

◆ Generate() [1/3]

Definition at line 69 of file RColumnElement.cxx.

◆ Generate() [2/3]

◆ Generate() [3/3]

template<typename CppT>
std::unique_ptr< RColumnElementBase > ROOT::Internal::RColumnElementBase::Generate ( ROOT::ENTupleColumnType type)
static

If CppT == void, use the default C++ type for the given column type.

Definition at line 142 of file RColumnElementBase.hxx.

◆ GetBitsOnStorage()

Definition at line 125 of file RColumnElementBase.hxx.

◆ GetColumnTypeName()

◆ GetIdentifier()

◆ GetPackedSize()

std::size_t ROOT::Internal::RColumnElementBase::GetPackedSize ( std::size_t nElements = 1U) const
inline

Definition at line 127 of file RColumnElementBase.hxx.

◆ GetSize()

std::size_t ROOT::Internal::RColumnElementBase::GetSize ( ) const
inline

Definition at line 124 of file RColumnElementBase.hxx.

◆ GetValidBitRange()

std::pair< std::uint16_t, std::uint16_t > ROOT::Internal::RColumnElementBase::GetValidBitRange ( ROOT::ENTupleColumnType type)
static

Most types have a fixed on-disk bit width.

Some low-precision column types have a range of possible bit widths. Return the minimum and maximum allowed bit size per type.

Definition at line 28 of file RColumnElement.cxx.

◆ GetValueRange()

std::optional< std::pair< double, double > > ROOT::Internal::RColumnElementBase::GetValueRange ( ) const
inline

Definition at line 126 of file RColumnElementBase.hxx.

◆ IsMappable()

virtual bool ROOT::Internal::RColumnElementBase::IsMappable ( ) const
inlinevirtual

Derived, typed classes tell whether the on-storage layout is bitwise identical to the memory layout.

Definition at line 95 of file RColumnElementBase.hxx.

◆ operator=() [1/2]

RColumnElementBase & ROOT::Internal::RColumnElementBase::operator= ( const RColumnElementBase & other)
delete

◆ operator=() [2/2]

RColumnElementBase & ROOT::Internal::RColumnElementBase::operator= ( RColumnElementBase && other)
default

◆ Pack()

virtual void ROOT::Internal::RColumnElementBase::Pack ( void * destination,
const void * source,
std::size_t count ) const
inlinevirtual

If the on-storage layout and the in-memory layout differ, packing creates an on-disk page from an in-memory page.

Definition at line 113 of file RColumnElementBase.hxx.

◆ SetBitsOnStorage()

virtual void ROOT::Internal::RColumnElementBase::SetBitsOnStorage ( std::size_t bitsOnStorage)
inlinevirtual

Definition at line 101 of file RColumnElementBase.hxx.

◆ SetValueRange()

Definition at line 107 of file RColumnElementBase.hxx.

◆ Unpack()

virtual void ROOT::Internal::RColumnElementBase::Unpack ( void * destination,
const void * source,
std::size_t count ) const
inlinevirtual

If the on-storage layout and the in-memory layout differ, unpacking creates a memory page from an on-storage page.

Definition at line 119 of file RColumnElementBase.hxx.

Member Data Documentation

◆ fBitsOnStorage

Definition at line 55 of file RColumnElementBase.hxx.

◆ fSize

Size of the C++ value that corresponds to the on-disk element.

Definition at line 54 of file RColumnElementBase.hxx.

◆ fValueRange

std::optional<std::pair<double, double> > ROOT::Internal::RColumnElementBase::fValueRange = std::nullopt
protected

This is only meaningful for column elements that support it (e.g. Real32Quant).

Definition at line 57 of file RColumnElementBase.hxx.