26std::unique_ptr<ROOT::Experimental::Detail::RColumnElementBase>
30 return std::make_unique<RColumnElement<float, EColumnType::kReal32>>(
nullptr);
32 return std::make_unique<RColumnElement<double, EColumnType::kReal64>>(
nullptr);
34 return std::make_unique<RColumnElement<char, EColumnType::kChar>>(
nullptr);
36 return std::make_unique<RColumnElement<std::uint8_t, EColumnType::kByte>>(
nullptr);
38 return std::make_unique<RColumnElement<std::int8_t, EColumnType::kInt8>>(
nullptr);
40 return std::make_unique<RColumnElement<std::int16_t, EColumnType::kInt16>>(
nullptr);
42 return std::make_unique<RColumnElement<std::int32_t, EColumnType::kInt32>>(
nullptr);
44 return std::make_unique<RColumnElement<std::int64_t, EColumnType::kInt64>>(
nullptr);
46 return std::make_unique<RColumnElement<bool, EColumnType::kBit>>(
nullptr);
48 return std::make_unique<RColumnElement<ClusterSize_t, EColumnType::kIndex>>(
nullptr);
50 return std::make_unique<RColumnElement<RColumnSwitch, EColumnType::kSwitch>>(
nullptr);
120 std::size_t count)
const
123 auto uint64Array =
reinterpret_cast<std::uint64_t *
>(dst);
124 for (std::size_t i = 0; i < count; ++i) {
126 (
static_cast<std::uint64_t
>(srcArray[i].GetTag()) << 44) | (srcArray[i].GetIndex() & 0x0fffffffffff);
127#if R__LITTLE_ENDIAN == 0
135 std::size_t count)
const
137 auto uint64Array =
reinterpret_cast<std::uint64_t *
>(
src);
139 for (std::size_t i = 0; i < count; ++i) {
140#if R__LITTLE_ENDIAN == 1
141 const auto value = uint64Array[i];
151 void *dst,
void *
src, std::size_t count)
const
153 bool *boolArray =
reinterpret_cast<bool *
>(
src);
154 char *charArray =
reinterpret_cast<char *
>(dst);
155 std::bitset<8> bitSet;
157 for (; i < count; ++i) {
158 bitSet.set(i % 8, boolArray[i]);
160 char packed = bitSet.to_ulong();
161 charArray[i / 8] = packed;
165 char packed = bitSet.to_ulong();
166 charArray[i / 8] = packed;
171 void *dst,
void *
src, std::size_t count)
const
173 bool *boolArray =
reinterpret_cast<bool *
>(dst);
174 char *charArray =
reinterpret_cast<char *
>(
src);
175 std::bitset<8> bitSet;
176 for (std::size_t i = 0; i < count; i += 8) {
177 bitSet = charArray[i / 8];
178 for (std::size_t j = i; j < std::min(count, i + 8); ++j) {
179 boolArray[j] = bitSet[j % 8];
186 void *dst,
void *
src, std::size_t count)
const
188 std::int64_t *int64Array =
reinterpret_cast<std::int64_t *
>(
src);
189 std::int32_t *int32Array =
reinterpret_cast<std::int32_t *
>(dst);
190 for (std::size_t i = 0; i < count; ++i) {
191 int32Array[i] = int64Array[i];
192#if R__LITTLE_ENDIAN == 0
199 void *dst,
void *
src, std::size_t count)
const
201 std::int32_t *int32Array =
reinterpret_cast<std::int32_t *
>(
src);
202 std::int64_t *int64Array =
reinterpret_cast<std::int64_t *
>(dst);
203 for (std::size_t i = 0; i < count; ++i) {
204 int64Array[i] = int32Array[i];
205#if R__LITTLE_ENDIAN == 0
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t src
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
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-...
static std::unique_ptr< RColumnElementBase > Generate(EColumnType type)
virtual std::size_t GetBitsOnStorage() const
static std::string GetTypeName(EColumnType type)
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-...
Pairs of C++ type and column type, like float and EColumnType::kReal32.
Holds the index and the tag of a kSwitch column.
RClusterSize ClusterSize_t
Helper templated class for swapping bytes; specializations for N={2,4,8} are provided below.