struct Delta_Time_Accum {
  f32 *base;
  u16 count;
  u16 max;
  u16 start;
};

struct Inspected_File {
  FILE *stream;
  u8   *mem;
  u64   size;

  String8 name;

  // @Platform: inotify file descriptor
  int inot;
};

struct App_State {
  u8 should_quit;
  
  Window_Data win_data;
  User_Input user_input;
  RNTuple_Data rndata;
  TFile_Data tfile_data;
  Inspected_File inspected_file;

#ifndef RNT_NO_GFX
  Viewer viewer;
#endif

  String8 ntpl_name;
  u64 base_display_addr;

  Delta_Time_Accum delta_time_accum;

  // Cache the last info node selected for faster lookup of offsets
  const Page_Info_Node *last_pinfo;
};

internal
size_t file_size(FILE *f)
{
  fseek(f, 0, SEEK_END);
  size_t res = ftell(f);
  fseek(f, 0, SEEK_SET);
  return res;
}