11#ifndef ROOT_RDATASOURCE
12#define ROOT_RDATASOURCE
65 const auto typedPtr =
static_cast<T *
>(
fPointer);
112 virtual std::string
AsString() {
return "generic data source"; };
131 virtual bool HasColumn(std::string_view colName)
const = 0;
137 virtual std::string
GetTypeName(std::string_view colName)
const = 0;
147 template <
typename T>
151 std::vector<T **> typedVec(typeErasedVec.size());
152 std::transform(typeErasedVec.begin(), typeErasedVec.end(), typedVec.begin(),
153 [](
void *p) { return static_cast<T **>(p); });
162 virtual std::unique_ptr<ROOT::Detail::RDF::RColumnReaderBase>
223 virtual std::string
GetLabel() {
return "Custom Datasource"; }
238 return ds->AsString();
unsigned long long ULong64_t
typedef void((*Func_t)())
Mother class of TTypedPointerHolder.
virtual ~TPointerHolder()
virtual TPointerHolder * GetDeepCopy()=0
TPointerHolder(void *ptr)
Class to wrap a pointer and delete the memory associated to it correctly.
virtual TPointerHolder * GetDeepCopy()
TTypedPointerHolder(T *ptr)
RDataSource defines an API that RDataFrame can use to read arbitrary data formats.
virtual bool HasColumn(std::string_view colName) const =0
Checks if the dataset has a certain column.
virtual void Finalise()
Convenience method called after concluding an event-loop.
virtual void InitSlot(unsigned int, ULong64_t)
Convenience method called at the start of the data processing associated to a slot.
virtual ~RDataSource()=default
virtual std::string AsString()
virtual bool SetEntry(unsigned int slot, ULong64_t entry)=0
Advance the "cursors" returned by GetColumnReaders to the selected entry for a particular slot.
virtual void FinaliseSlot(unsigned int)
Convenience method called at the end of the data processing associated to a slot.
std::vector< void * > Record_t
virtual std::string GetLabel()
Return a string representation of the datasource type.
virtual void SetNSlots(unsigned int nSlots)=0
Inform RDataSource of the number of processing slots (i.e.
virtual void Initialise()
Convenience method called before starting an event-loop.
virtual const std::vector< std::string > & GetColumnNames() const =0
Returns a reference to the collection of the dataset's column names.
virtual std::vector< std::pair< ULong64_t, ULong64_t > > GetEntryRanges()=0
Return ranges of entries to distribute to tasks.
virtual Record_t GetColumnReadersImpl(std::string_view name, const std::type_info &)=0
type-erased vector of pointers to pointers to column values - one per slot
virtual std::string GetTypeName(std::string_view colName) const =0
Type of a column as a string, e.g.
std::vector< T ** > GetColumnReaders(std::string_view columnName)
Called at most once per column by RDF.
virtual std::unique_ptr< ROOT::Detail::RDF::RColumnReaderBase > GetColumnReaders(unsigned int, std::string_view, const std::type_info &)
If the other GetColumnReaders overload returns an empty vector, this overload will be called instead.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...