11#ifndef ROOT_RLAZYDSIMPL 
   12#define ROOT_RLAZYDSIMPL 
   40template <
typename... ColumnTypes>
 
   44   std::tuple<RResultPtr<std::vector<ColumnTypes>>...> 
fColumns;
 
   58      auto colNameStr = std::string(colName);
 
   63         std::string err = 
"The specified column name, \"" + colNameStr + 
"\" is not known to the data source.";
 
   64         throw std::runtime_error(err);
 
   67      const auto colIdName = it->second;
 
   68      if (colIdName != idName) {
 
   69         std::string err = 
"Column " + colNameStr + 
" has type " + colIdName +
 
   70                           " while the id specified is associated to type " + idName;
 
   71         throw std::runtime_error(err);
 
   76      const auto namesIt = std::find(colBegin, colEnd, colName);
 
   77      const auto index = std::distance(colBegin, namesIt);
 
   87   template <std::size_t... S>
 
   90      std::initializer_list<int> expander{
 
   95   template <std::size_t... S>
 
  101      const std::vector<size_t> colLengths{std::get<S>(
fColumns)->size()...};
 
  102      const auto expectedLen = colLengths[0];
 
  104      for (
auto i : 
TSeqI(1, colLengths.size())) {
 
  105         if (expectedLen != colLengths[i]) {
 
  107                   "\" have different lengths: " + std::to_string(expectedLen) + 
" and " +
 
  108                   std::to_string(colLengths[i]);
 
  112         throw std::runtime_error(err);
 
  117   std::string 
AsString() final { 
return "lazy data source"; };
 
  121      : 
fColumns(std::tuple<
RResultPtr<std::vector<ColumnTypes>>...>(colsNameVals.second...)),
 
  131         for (
auto &&ptrHolder : ptrHolderv) {
 
  147      const auto key = std::string(colName);
 
  153      const auto key = std::string(colName);
 
  160      SetEntryHelper(slot, entry, std::index_sequence_for<ColumnTypes...>());
 
  173            ptrHolderv.emplace_back(ptrHolder);
 
  186      const auto nEntriesInRange = nEntries / 
fNSlots; 
 
  192         end = init + nEntriesInRange;
 
unsigned long long ULong64_t
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
 
Class to wrap a pointer and delete the memory associated to it correctly.
 
RDataSource defines an API that RDataFrame can use to read arbitrary data formats.
 
std::vector< void * > Record_t
 
A RDataSource implementation which is built on top of result proxies.
 
const std::vector< std::string > fColNames
 
std::vector< PointerHolderPtrs_t > fPointerHolders
 
void SetNSlots(unsigned int nSlots) final
Inform RDataSource of the number of processing slots (i.e.
 
std::string GetLabel() final
Return a string representation of the datasource type.
 
std::vector< ROOT::Internal::TDS::TPointerHolder * > PointerHolderPtrs_t
 
const std::vector< std::string > & GetColumnNames() const final
Returns a reference to the collection of the dataset's column names.
 
std::string GetTypeName(std::string_view colName) const final
Type of a column as a string, e.g.
 
void SetEntryHelper(unsigned int slot, ULong64_t entry, std::index_sequence< S... >)
 
const PointerHolderPtrs_t fPointerHoldersModels
 
const std::map< std::string, std::string > fColTypesMap
 
bool HasColumn(std::string_view colName) const final
Checks if the dataset has a certain column.
 
std::string AsString() final
 
void Initialize() final
Convenience method called before starting an event-loop.
 
std::vector< std::pair< ULong64_t, ULong64_t > > GetEntryRanges() final
Return ranges of entries to distribute to tasks.
 
size_t GetEntriesNumber()
 
RLazyDS(std::pair< std::string, RResultPtr< std::vector< ColumnTypes > > >... colsNameVals)
 
Record_t GetColumnReadersImpl(std::string_view colName, const std::type_info &id) final
type-erased vector of pointers to pointers to column values - one per slot
 
bool SetEntry(unsigned int slot, ULong64_t entry) final
Advance the "cursors" returned by GetColumnReaders to the selected entry for a particular slot.
 
std::tuple< RResultPtr< std::vector< ColumnTypes > >... > fColumns
 
void ColLenghtChecker(std::index_sequence< S... >)
 
std::vector< std::pair< ULong64_t, ULong64_t > > fEntryRanges
 
Smart pointer for the return type of actions.
 
std::string TypeID2TypeName(const std::type_info &id)
Returns the name of a type starting from its type_info An empty string is returned in case of failure...
 
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.
 
TSeq< unsigned int > TSeqU