From 58ef95409d8b5ae50a5ddf7f9703bc9e3dcb4057 Mon Sep 17 00:00:00 2001 From: silverweed Date: Fri, 12 Jul 2024 15:56:04 +0200 Subject: [PATCH] wip gather page/columns metadata --- src/rntuple.cpp | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/rntuple.cpp b/src/rntuple.cpp index ae3b3ea..a74eab8 100644 --- a/src/rntuple.cpp +++ b/src/rntuple.cpp @@ -10,7 +10,7 @@ String8 rntuple_description(Arena *arena, const RNTuple_Data &ntuple) } internal -void gather_metadata(Arena *arena, RMicroFileReader &reader, const RNTuple_File_Info &info) +ROOT::Experimental::RNTupleDescriptor create_descriptor(Arena *arena, RMicroFileReader &reader, const RNTuple_File_Info &info) { using namespace ROOT::Experimental; using namespace ROOT::Experimental::Internal; @@ -58,6 +58,31 @@ void gather_metadata(Arena *arena, RMicroFileReader &reader, const RNTuple_File_ arena_pop_to(scratch.arena, arena_start); } + + return descriptor; +} + +internal +void gather_metadata(Arena *arena, RMicroFileReader &reader, const RNTuple_File_Info &info) +{ + using namespace ROOT::Experimental; + using namespace ROOT::Experimental::Internal; + + RNTupleDescriptor descriptor = create_descriptor(arena, reader, info); + + // for all clusters ... + DescriptorId_t cluster_id = descriptor.FindClusterId(0, 0); + while (cluster_id != kInvalidDescriptorId) { + const RClusterDescriptor &cluster_desc = descriptor.GetClusterDescriptor(cluster_id); + for (const auto &[col_id, col_range] : cluster_desc.GetColumnRangeIterable()) { + // TODO gather column metadata + // TODO gather page metadata + const auto &page_range = cluster_desc.GetPageRange(col_id); + for (const auto &page_info : page_range.fPageInfos) { + + } + } + } } internal