25 : fModel(model), fPageSink(nullptr), fPageSource(nullptr), fHeadPage(), fNElements(0),
28 fOffsetColumn(nullptr)
34 switch (pageStorage->
GetType()) {
36 fPageSink =
static_cast<RPageSink*
>(pageStorage);
38 fHeadPage = fPageSink->GetPagePool()->ReservePage(
this);
41 fPageSource =
static_cast<RPageSource*
>(pageStorage);
42 fHandleSource = fPageSource->
AddColumn(
this);
43 fNElements = fPageSource->GetNElements(fHandleSource);
44 fColumnIdSource = fPageSource->GetColumnId(fHandleSource);
53 if (fHeadPage.GetSize() == 0)
return;
55 fPageSink->CommitPage(fHandleSink, fHeadPage);
56 fHeadPage.Reset(fNElements);
61 fPageSource->GetPagePool()->ReleasePage(fCurrentPage);
62 fCurrentPage = fPageSource->GetPagePool()->GetPage(
this, index);
void MapPage(const NTupleSize_t index)
RColumn(const RColumnModel &model)
void Connect(RPageStorage *pageStorage)
Abstract interface to write data into a tree.
Abstract interface to read data from a tree.
Manages tree meta-data, which is common for sinks and sources.
virtual EPageStorageType GetType()=0
virtual ColumnHandle_t AddColumn(RColumn *column)=0
Register a new column.
Holds the static meta-data of a column in a tree.
std::uint64_t NTupleSize_t
Integer type long enough to hold the maximum number of entries in a column.
constexpr ColumnId_t kInvalidColumnId