23 void ROOT::Experimental::Detail::RPagePool::RegisterPage(
const RPage &page,
const RPageDeleter &deleter)
25 fPages.emplace_back(page);
26 fReferences.emplace_back(1);
27 fDeleters.emplace_back(deleter);
30 void ROOT::Experimental::Detail::RPagePool::ReturnPage(
const RPage& page)
32 if (page.IsNull())
return;
34 unsigned int N = fPages.size();
35 for (
unsigned i = 0; i < N; ++i) {
36 if (fPages[i] != page)
continue;
38 if (--fReferences[i] == 0) {
39 fDeleters[i](fPages[i]);
40 fPages[i] = fPages[N-1];
41 fReferences[i] = fReferences[N-1];
42 fDeleters[i] = fDeleters[N-1];
44 fReferences.resize(N-1);
45 fDeleters.resize(N-1);
52 ROOT::Experimental::Detail::RPage ROOT::Experimental::Detail::RPagePool::GetPage(
53 ColumnId_t columnId, NTupleSize_t globalIndex)
55 unsigned int N = fPages.size();
56 for (
unsigned int i = 0; i < N; ++i) {
57 if (fReferences[i] == 0)
continue;
58 if (fPages[i].GetColumnId() != columnId)
continue;
59 if (!fPages[i].Contains(globalIndex))
continue;
66 ROOT::Experimental::Detail::RPage ROOT::Experimental::Detail::RPagePool::GetPage(
67 ColumnId_t columnId,
const RClusterIndex &clusterIndex)
69 unsigned int N = fPages.size();
70 for (
unsigned int i = 0; i < N; ++i) {
71 if (fReferences[i] == 0)
continue;
72 if (fPages[i].GetColumnId() != columnId)
continue;
73 if (!fPages[i].Contains(clusterIndex))
continue;