11 #ifndef ROOT_RCUSTOMCOLUMNBASE
12 #define ROOT_RCUSTOMCOLUMNBASE
28 namespace RDFInternal = ROOT::Internal::RDF;
31 class RCustomColumnBase {
33 RLoopManager *fLoopManager;
35 const std::string fName;
36 unsigned int fNChildren{0};
37 unsigned int fNStopsReceived{0};
38 const unsigned int fNSlots;
39 const bool fIsDataSourceColumn;
40 std::vector<Long64_t> fLastCheckedEntry;
43 const unsigned int fID = GetNextID();
44 RDFInternal::RBookedCustomColumns fCustomColumns;
45 std::deque<bool> fIsInitialized;
47 static unsigned int GetNextID();
50 RCustomColumnBase(RLoopManager *lm, std::string_view name,
const unsigned int nSlots,
const bool isDSColumn,
51 const RDFInternal::RBookedCustomColumns &customColumns);
53 RCustomColumnBase &operator=(
const RCustomColumnBase &) =
delete;
54 virtual ~RCustomColumnBase();
55 virtual void InitSlot(TTreeReader *r,
unsigned int slot) = 0;
56 virtual void *GetValuePtr(
unsigned int slot) = 0;
57 virtual const std::type_info &GetTypeId()
const = 0;
58 RLoopManager *GetLoopManagerUnchecked()
const;
59 std::string GetName()
const;
60 virtual void Update(
unsigned int slot, Long64_t entry) = 0;
61 virtual void ClearValueReaders(
unsigned int slot) = 0;
62 bool IsDataSourceColumn()
const {
return fIsDataSourceColumn; }
63 virtual void InitNode();
65 unsigned int GetID()
const {
return fID; }
72 #endif // ROOT_RCUSTOMCOLUMNBASE