11 std::vector<void *> RTrivialDS::GetColumnReadersImpl(std::string_view,
const std::type_info &ti)
14 if (ti !=
typeid(ULong64_t)) {
15 throw std::runtime_error(
"The type specified for the column \"col0\" is not ULong64_t.");
17 std::vector<void *> ret;
18 for (
auto i : ROOT::TSeqU(fNSlots)) {
19 fCounterAddr[i] = &fCounter[i];
20 ret.emplace_back((
void *)(&fCounterAddr[i]));
25 RTrivialDS::RTrivialDS(ULong64_t size,
bool skipEvenEntries) : fSize(size), fSkipEvenEntries(skipEvenEntries)
29 RTrivialDS::~RTrivialDS()
33 const std::vector<std::string> &RTrivialDS::GetColumnNames()
const
38 bool RTrivialDS::HasColumn(std::string_view colName)
const
40 return colName == fColNames[0];
43 std::string RTrivialDS::GetTypeName(std::string_view)
const
48 std::vector<std::pair<ULong64_t, ULong64_t>> RTrivialDS::GetEntryRanges()
50 auto ranges(std::move(fEntryRanges));
54 bool RTrivialDS::SetEntry(
unsigned int slot, ULong64_t entry)
56 if (fSkipEvenEntries && 0 == entry % 2) {
59 fCounter[slot] = entry;
63 void RTrivialDS::SetNSlots(
unsigned int nSlots)
65 R__ASSERT(0U == fNSlots &&
"Setting the number of slots even if the number of slots is different from zero.");
68 fCounter.resize(fNSlots);
69 fCounterAddr.resize(fNSlots);
72 void RTrivialDS::Initialise()
74 const auto chunkSize = fSize / fNSlots;
77 for (
auto i : ROOT::TSeqUL(fNSlots)) {
80 fEntryRanges.emplace_back(start, end);
84 fEntryRanges.back().second += fSize % fNSlots;
87 std::string RTrivialDS::GetLabel()
92 RInterface<RDFDetail::RLoopManager, RTrivialDS> MakeTrivialDataFrame(ULong64_t size,
bool skipEvenEntries)
94 auto lm = std::make_unique<RDFDetail::RLoopManager>(std::make_unique<RTrivialDS>(size, skipEvenEntries),
95 RDFInternal::ColumnNames_t{});
96 return RInterface<RDFDetail::RLoopManager, RTrivialDS>(std::move(lm));