// using RNTuple = ROOT::Experimental::RNTuple;

struct Byte_Range {
  u64 start, len;
  u64 end() const { return start + len; }
};

struct Page_Info_Node {
  Page_Info_Node *next;

  Byte_Range range;
  u64 n_elems;
};

struct Page_Info_Group {
  Byte_Range range;
  Page_Info_Node *first;
};

struct RNTuple_Data {
  struct {
    u16 epoch, major, minor, patch;
  } version;
  
  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;

  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;
};