2024-07-12 09:53:01 +02:00
|
|
|
// using RNTuple = ROOT::Experimental::RNTuple;
|
2024-07-11 14:00:43 +02:00
|
|
|
|
|
|
|
struct Byte_Range {
|
|
|
|
u64 start, len;
|
|
|
|
u64 end() const { return start + len; }
|
|
|
|
};
|
|
|
|
|
2024-07-12 18:29:35 +02:00
|
|
|
struct Page_Info_Node {
|
|
|
|
Page_Info_Node *next;
|
|
|
|
|
|
|
|
Byte_Range range;
|
|
|
|
u64 n_elems;
|
|
|
|
};
|
|
|
|
|
2024-07-15 11:54:45 +02:00
|
|
|
static const Page_Info_Node invalid_pinfo {};
|
2024-07-15 11:29:32 +02:00
|
|
|
|
2024-07-12 18:29:35 +02:00
|
|
|
struct Page_Info_Group {
|
|
|
|
Byte_Range range;
|
|
|
|
Page_Info_Node *first;
|
|
|
|
};
|
|
|
|
|
2024-07-15 11:29:32 +02:00
|
|
|
struct Page_Info_Chunk {
|
|
|
|
Page_Info_Chunk *next;
|
|
|
|
Byte_Range range;
|
|
|
|
u64 first_group;
|
|
|
|
};
|
|
|
|
|
2024-07-12 11:58:55 +02:00
|
|
|
struct RNTuple_Data {
|
2024-07-12 10:25:58 +02:00
|
|
|
struct {
|
|
|
|
u16 epoch, major, minor, patch;
|
|
|
|
} version;
|
|
|
|
|
2024-07-11 16:29:44 +02:00
|
|
|
u64 root_file_header_size;
|
|
|
|
u64 rblob_header_size;
|
|
|
|
Byte_Range rng_anchor;
|
|
|
|
Byte_Range rng_anchor_key;
|
|
|
|
Byte_Range rng_header;
|
|
|
|
Byte_Range rng_footer;
|
2024-07-12 18:29:35 +02:00
|
|
|
|
|
|
|
Page_Info_Node *pages;
|
|
|
|
u64 n_pages;
|
|
|
|
// total number of elements of all pages
|
|
|
|
u64 n_elems;
|
|
|
|
|
|
|
|
Page_Info_Group *page_groups;
|
|
|
|
u64 n_page_groups;
|
2024-07-15 11:29:32 +02:00
|
|
|
|
|
|
|
// grouping of consecutive page groups
|
|
|
|
Page_Info_Chunk *page_chunks;
|
|
|
|
u64 n_page_chunks;
|
2024-07-11 14:00:43 +02:00
|
|
|
};
|