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);
119 void *dst,
void *src, std::size_t count)
const
121 bool *boolArray =
reinterpret_cast<bool *
>(src);
122 char *charArray =
reinterpret_cast<char *
>(dst);
123 std::bitset<8> bitSet;
125 for (; i < count; ++i) {
126 bitSet.set(i % 8, boolArray[i]);
128 char packed = bitSet.to_ulong();
129 charArray[i / 8] = packed;
133 char packed = bitSet.to_ulong();
134 charArray[i / 8] = packed;
139 void *dst,
void *src, std::size_t count)
const
141 bool *boolArray =
reinterpret_cast<bool *
>(dst);
142 char *charArray =
reinterpret_cast<char *
>(src);
143 std::bitset<8> bitSet;
144 for (std::size_t i = 0; i < count; i += 8) {
145 bitSet = charArray[i / 8];
146 for (std::size_t j = i; j < std::min(count, i + 8); ++j) {
147 boolArray[j] = bitSet[j % 8];
154 void *dst,
void *src, std::size_t count)
const
156 std::int64_t *int64Array =
reinterpret_cast<std::int64_t *
>(src);
157 std::int32_t *int32Array =
reinterpret_cast<std::int32_t *
>(dst);
158 for (std::size_t i = 0; i < count; ++i) {
159 int32Array[i] = int64Array[i];
164 void *dst,
void *src, std::size_t count)
const
166 std::int32_t *int32Array =
reinterpret_cast<std::int32_t *
>(src);
167 std::int64_t *int64Array =
reinterpret_cast<std::int64_t *
>(dst);
168 for (std::size_t i = 0; i < count; ++i) {
169 int64Array[i] = int32Array[i];
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-...