16#ifndef ROOT7_RColumnElementBase
17#define ROOT7_RColumnElementBase
71 template <
typename CppT =
void>
87 virtual void Pack(
void *destination,
const void *source, std::size_t count)
const
89 std::memcpy(destination, source, count);
93 virtual void Unpack(
void *destination,
const void *source, std::size_t count)
const
95 std::memcpy(destination, source, count);
124template <
typename CppT>
127 if constexpr (std::is_same_v<CppT, char>)
129 else if constexpr (std::is_same_v<CppT, bool>)
131 else if constexpr (std::is_same_v<CppT, std::byte>)
133 else if constexpr (std::is_same_v<CppT, std::uint8_t>)
135 else if constexpr (std::is_same_v<CppT, std::uint16_t>)
137 else if constexpr (std::is_same_v<CppT, std::uint32_t>)
139 else if constexpr (std::is_same_v<CppT, std::uint64_t>)
141 else if constexpr (std::is_same_v<CppT, std::int8_t>)
143 else if constexpr (std::is_same_v<CppT, std::int16_t>)
145 else if constexpr (std::is_same_v<CppT, std::int32_t>)
147 else if constexpr (std::is_same_v<CppT, std::int64_t>)
149 else if constexpr (std::is_same_v<CppT, float>)
151 else if constexpr (std::is_same_v<CppT, double>)
153 else if constexpr (std::is_same_v<CppT, ClusterSize_t>)
155 else if constexpr (std::is_same_v<CppT, RColumnSwitch>)
158 static_assert(!
sizeof(CppT),
"Unsupported Cpp type");
162std::unique_ptr<RColumnElementBase> RColumnElementBase::Generate<void>(
EColumnType type);
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
A column element encapsulates the translation between basic C++ types and their column representation...
RColumnElementBase & operator=(const RColumnElementBase &other)=delete
std::size_t fBitsOnStorage
RColumnElementBase(std::size_t size, std::size_t bitsOnStorage=0)
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.
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-...
static std::string GetTypeName(EColumnType type)
std::size_t fSize
Size of the C++ value that corresponds to the on-disk element.
std::size_t GetBitsOnStorage() const
RColumnElementBase(const RColumnElementBase &other)=default
virtual ~RColumnElementBase()=default
RColumnElementBase & operator=(RColumnElementBase &&other)=default
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-...
static std::unique_ptr< RColumnElementBase > Generate(EColumnType type)
If CppT == void, use the default C++ type for the given column type.
std::size_t GetPackedSize(std::size_t nElements=1U) const
static std::pair< std::uint16_t, std::uint16_t > GetValidBitRange(EColumnType type)
Most types have a fixed on-disk bit width.
RColumnElementBase(RColumnElementBase &&other)=default
std::unique_ptr< RColumnElementBase > GenerateColumnElement(EColumnCppType cppType, EColumnType colType)