Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RColumnElement.hxx File Reference
#include <ROOT/RColumnElementBase.hxx>
#include <ROOT/RNTupleUtil.hxx>
#include <ROOT/RConfig.hxx>
#include <ROOT/RError.hxx>
#include <Byteswap.h>
#include <bitset>
#include <cassert>
#include <limits>
#include <type_traits>
Include dependency graph for RColumnElement.hxx:
This graph shows which files directly or indirectly include this file:

Namespaces

namespace  Quantize
 
namespace  ROOT
 tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tbb::task_arena without forward declaring tbb::interface7
 
namespace  ROOT::Experimental
 
namespace  ROOT::Experimental::Internal
 
namespace  ROOT::Experimental::Internal::BitPacking
 

Macros

#define __RCOLUMNELEMENT_SPEC_BODY(CppT, ColumnT, BaseT, BitsOnStorage)
 
#define DECLARE_RCOLUMNELEMENT_SPEC(CppT, ColumnT, BitsOnStorage, BaseT, ...)
 These macros are used to declare RColumnElement template specializations below.
 
#define DECLARE_RCOLUMNELEMENT_SPEC_SIMPLE(CppT, ColumnT, BitsOnStorage)
 
#define R__LITTLE_ENDIAN   0
 

Typedefs

using ROOT::Experimental::Internal::BitPacking::Word_t = std::uintmax_t
 

Functions

constexpr std::size_t ROOT::Experimental::Internal::BitPacking::MinBufSize (std::size_t count, std::size_t nDstBits)
 Returns the minimum safe size (in bytes) of a buffer that is intended to be used as a destination for PackBits or a source for UnpackBits.
 
void ROOT::Experimental::Internal::BitPacking::PackBits (void *dst, const void *src, std::size_t count, std::size_t sizeofSrc, std::size_t nDstBits)
 Tightly packs count items of size sizeofSrc contained in src into dst using nDstBits per item.
 
void ROOT::Experimental::Internal::BitPacking::UnpackBits (void *dst, const void *src, std::size_t count, std::size_t sizeofDst, std::size_t nSrcBits)
 Undoes the effect of PackBits.
 

Variables

constexpr std::size_t ROOT::Experimental::Internal::BitPacking::kBitsPerWord = sizeof(Word_t) * 8
 

Macro Definition Documentation

◆ __RCOLUMNELEMENT_SPEC_BODY

#define __RCOLUMNELEMENT_SPEC_BODY (   CppT,
  ColumnT,
  BaseT,
  BitsOnStorage 
)
Value:
static constexpr std::size_t kSize = sizeof(CppT); \
static constexpr std::size_t kBitsOnStorage = BitsOnStorage; \
RColumnElement() : BaseT(kSize, kBitsOnStorage) {} \
bool IsMappable() const final \
{ \
return kIsMappable; \
} \
RIdentifier GetIdentifier() const final \
{ \
return RIdentifier{typeid(CppT), ColumnT}; \
}
@ kSize
Definition TStructNode.h:26

Definition at line 1153 of file RColumnElement.hxx.

◆ DECLARE_RCOLUMNELEMENT_SPEC

#define DECLARE_RCOLUMNELEMENT_SPEC (   CppT,
  ColumnT,
  BitsOnStorage,
  BaseT,
  ... 
)
Value:
template <> \
class RColumnElement<CppT, ColumnT> : public BaseT __VA_ARGS__ { \
public: \
__RCOLUMNELEMENT_SPEC_BODY(CppT, ColumnT, BaseT, BitsOnStorage) \
}

These macros are used to declare RColumnElement template specializations below.

Additional arguments can be used to forward template parameters to the base class, e.g.

DECLARE_RCOLUMNELEMENT_SPEC(std::int64_t, EColumnType::kInt32, 32,
RColumnElementCastLE, <std::int64_t, std::int32_t>);
#define DECLARE_RCOLUMNELEMENT_SPEC(CppT, ColumnT, BitsOnStorage, BaseT,...)
These macros are used to declare RColumnElement template specializations below.

Definition at line 1171 of file RColumnElement.hxx.

◆ DECLARE_RCOLUMNELEMENT_SPEC_SIMPLE

#define DECLARE_RCOLUMNELEMENT_SPEC_SIMPLE (   CppT,
  ColumnT,
  BitsOnStorage 
)
Value:
template <> \
class RColumnElement<CppT, ColumnT> : public RColumnElementBase { \
public: \
static constexpr bool kIsMappable = true; \
__RCOLUMNELEMENT_SPEC_BODY(CppT, ColumnT, RColumnElementBase, BitsOnStorage) \
}

Definition at line 1177 of file RColumnElement.hxx.

◆ R__LITTLE_ENDIAN

#define R__LITTLE_ENDIAN   0

Definition at line 26 of file RColumnElement.hxx.