Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
ROOT::Experimental::Internal::RColumnElementBase Class Reference

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 265 of file RColumnElement.hxx.

Public Member Functions

 RColumnElementBase (const RColumnElementBase &other)=default
 
 RColumnElementBase (RColumnElementBase &&other)=default
 
virtual ~RColumnElementBase ()=default
 
std::size_t GetBitsOnStorage () const
 
std::size_t GetPackedSize (std::size_t nElements=1U) const
 
std::size_t GetSize () 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, 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 Unpack (void *destination, 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<typename CppT = void>
static std::unique_ptr< RColumnElementBaseGenerate (EColumnType type)
 If CppT == void, use the default C++ type for the given column type.
 
template<>
std::unique_ptr< RColumnElementBaseGenerate (EColumnType type)
 
template<>
std::unique_ptr< ROOT::Experimental::Internal::RColumnElementBaseGenerate (EColumnType type)
 
static std::size_t GetBitsOnStorage (EColumnType type)
 
static std::string GetTypeName (EColumnType type)
 

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.
 

#include <ROOT/RColumnElement.hxx>

Inheritance diagram for ROOT::Experimental::Internal::RColumnElementBase:
[legend]

Constructor & Destructor Documentation

◆ RColumnElementBase() [1/3]

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

Definition at line 271 of file RColumnElement.hxx.

◆ RColumnElementBase() [2/3]

ROOT::Experimental::Internal::RColumnElementBase::RColumnElementBase ( const RColumnElementBase other)
default

◆ RColumnElementBase() [3/3]

ROOT::Experimental::Internal::RColumnElementBase::RColumnElementBase ( RColumnElementBase &&  other)
default

◆ ~RColumnElementBase()

virtual ROOT::Experimental::Internal::RColumnElementBase::~RColumnElementBase ( )
virtualdefault

Member Function Documentation

◆ Generate() [1/3]

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

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

Definition at line 757 of file RColumnElement.hxx.

◆ Generate() [2/3]

template<>
std::unique_ptr< RColumnElementBase > ROOT::Experimental::Internal::RColumnElementBase::Generate ( EColumnType  type)
static

◆ Generate() [3/3]

template<>
std::unique_ptr< ROOT::Experimental::Internal::RColumnElementBase > ROOT::Experimental::Internal::RColumnElementBase::Generate ( EColumnType  type)
static

Definition at line 1 of file RColumnElement.cxx.

◆ GetBitsOnStorage() [1/2]

std::size_t ROOT::Experimental::Internal::RColumnElementBase::GetBitsOnStorage ( ) const
inline

Definition at line 309 of file RColumnElement.hxx.

◆ GetBitsOnStorage() [2/2]

std::size_t ROOT::Experimental::Internal::RColumnElementBase::GetBitsOnStorage ( EColumnType  type)
static

Definition at line 67 of file RColumnElement.cxx.

◆ GetPackedSize()

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

Definition at line 310 of file RColumnElement.hxx.

◆ GetSize()

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

Definition at line 308 of file RColumnElement.hxx.

◆ GetTypeName()

std::string ROOT::Experimental::Internal::RColumnElementBase::GetTypeName ( EColumnType  type)
static

Definition at line 103 of file RColumnElement.cxx.

◆ IsMappable()

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ Pack()

◆ Unpack()

Member Data Documentation

◆ fBitsOnStorage

std::size_t ROOT::Experimental::Internal::RColumnElementBase::fBitsOnStorage
protected

Definition at line 269 of file RColumnElement.hxx.

◆ fSize

std::size_t ROOT::Experimental::Internal::RColumnElementBase::fSize
protected

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

Definition at line 268 of file RColumnElement.hxx.

Libraries for ROOT::Experimental::Internal::RColumnElementBase:

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