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<std::uint8_t, EColumnType::kByte>>(
nullptr);
36 return std::make_unique<RColumnElement<std::int32_t, EColumnType::kInt32>>(
nullptr);
38 return std::make_unique<RColumnElement<std::int64_t, EColumnType::kInt64>>(
nullptr);
40 return std::make_unique<RColumnElement<bool, EColumnType::kBit>>(
nullptr);
42 return std::make_unique<RColumnElement<ClusterSize_t, EColumnType::kIndex>>(
nullptr);
44 return std::make_unique<RColumnElement<RColumnSwitch, EColumnType::kSwitch>>(
nullptr);
78 void *dst,
void *src, std::size_t count)
const
80 bool *boolArray =
reinterpret_cast<bool *
>(src);
81 char *charArray =
reinterpret_cast<char *
>(dst);
82 std::bitset<8> bitSet;
84 for (; i < count; ++i) {
85 bitSet.set(i % 8, boolArray[i]);
87 char packed = bitSet.to_ulong();
88 charArray[i / 8] = packed;
92 char packed = bitSet.to_ulong();
93 charArray[i / 8] = packed;
98 void *dst,
void *src, std::size_t count)
const
100 bool *boolArray =
reinterpret_cast<bool *
>(dst);
101 char *charArray =
reinterpret_cast<char *
>(src);
102 std::bitset<8> bitSet;
103 for (std::size_t i = 0; i < count; i += 8) {
104 bitSet = charArray[i / 8];
105 for (std::size_t j = i; j < std::min(count, i + 8); ++j) {
106 boolArray[j] = bitSet[j % 8];
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
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-...