Compare commits

..

No commits in common. "fe924743eff51c8f5861aa641d61aee7d6fe50db" and "a0aa6a8d36352e4fa1b6cc16603beb3d6e91d3ce" have entirely different histories.

9 changed files with 424 additions and 659 deletions

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -213,7 +213,7 @@ void viewer_jump_to_cluster(App_State &app, u64 cluster_idx)
} }
internal internal
void imgui_render_string_tree(Arena *arena, String8_Node *root, String8_Node *highlighted, u16 indent = 0) void imgui_render_string_tree(Arena *arena, String8_Node *root, u16 indent = 0)
{ {
String8 indent_str; String8 indent_str;
if (indent) { if (indent) {
@ -225,13 +225,10 @@ void imgui_render_string_tree(Arena *arena, String8_Node *root, String8_Node *hi
} }
for (String8_Node *node = root; node; node = node->next) { for (String8_Node *node = root; node; node = node->next) {
if (node == highlighted) ImGui::Text("%s%s", indent_str.c(), node->str.c());
ImGui::TextColored(ImColor(1.0f, 1.0f, 0.0f), "%s%s", indent_str.c(), node->str.c());
else
ImGui::Text("%s%s", indent_str.c(), node->str.c());
if (node->first_child) if (node->first_child)
imgui_render_string_tree(arena, node->first_child, highlighted, indent + 2); imgui_render_string_tree(arena, node->first_child, indent + 2);
} }
} }
@ -400,7 +397,7 @@ void update_and_render(Arena *arena, App_State &app, f32 delta_time_ms)
ImGui::TextColored(ImColor(0.5f, 0.5f, 0.5f), "(Hint: press Alt for single-field hover information)"); ImGui::TextColored(ImColor(0.5f, 0.5f, 0.5f), "(Hint: press Alt for single-field hover information)");
if (hovered_section.id == Sec_Page) if (hovered_section.id == Sec_Page)
ImGui::TextColored(ImColor(0.5f, 0.5f, 0.5f), "(Hint: Shift-Click to jump to the start of this page)"); ImGui::TextColored(ImColor(0.5f, 0.5f, 0.5f), "(Hint: Shift-Click to jump to the start of this page)");
imgui_render_string_tree(scratch.arena, hover_info.desc->head, hover_info.highlighted_desc); imgui_render_string_tree(scratch.arena, hover_info.desc->head);
app.viewer.hovered_range = hover_info.rng; app.viewer.hovered_range = hover_info.rng;
// Shift-clicking on a page section will update the current page in the legend // Shift-clicking on a page section will update the current page in the legend

View file

@ -140,7 +140,7 @@ internal const String8 section_names[Sec_COUNT] = {
str8("None"), str8("None"),
str8("TFile Header"), str8("TFile Header"),
str8("TFile Object"), str8("TFile Object"),
str8("TFile Streamer Info"), str8("TFile Info"),
str8("TFile FreeList"), str8("TFile FreeList"),
str8("TKey List"), str8("TKey List"),
str8("RNTuple Anchor"), str8("RNTuple Anchor"),

View file

@ -26,9 +26,8 @@
#include <cmath> #include <cmath>
#include <cstring> #include <cstring>
#include <cassert> #include <cassert>
#include <inttypes.h> // PRIu64, ... #include <inttypes.h> // PRIu64
#include <type_traits> // For std::decay_t and std::is_same_v
#include <chrono> #include <chrono>
#ifdef DEBUG #ifdef DEBUG
@ -46,7 +45,7 @@
#endif // RNT_NO_GFX #endif // RNT_NO_GFX
#define V_MAJOR "0" #define V_MAJOR "0"
#define V_MINOR "6" #define V_MINOR "5"
#include "root/root_inc.h" #include "root/root_inc.h"
#include "root/RMicroFileReader.hxx" #include "root/RMicroFileReader.hxx"

View file

@ -1223,8 +1223,11 @@ RMicroFileReader::GetNTupleProper(const char *ntupleName)
// @Incomplete: each section has a differently-sized RBlob, we need to account for that! // @Incomplete: each section has a differently-sized RBlob, we need to account for that!
RTFString blobName { kBlobClassName }; RTFString blobName { kBlobClassName };
RTFKey dummy; RTFKey dummy;
dummy.MakeBigKey(); // FIXME: it seems that sometimes even if IsBigFile() == false we get a big header size!
fileInfo.rblob_key_header_nbytes = dummy.fKeyHeaderSize + blobName.GetSize() + 2 * RTFString{}.GetSize(); if (fileHeader.IsBigFile())
dummy.MakeBigKey();
fileInfo.rblob_key_header_nbytes = dummy.GetHeaderSize() + blobName.GetSize() + 2 * RTFString{}.GetSize();
printf("nbytes: %lu\n", fileInfo.rblob_key_header_nbytes);
} }
// @---- // @----
ReadBuffer(ntuple, objNbytes, offset); ReadBuffer(ntuple, objNbytes, offset);

View file

@ -39,52 +39,37 @@ String8 to_pretty_size(Arena *arena, u64 bytes)
} }
internal internal
String8_Node *push_str8_node_v(Arena *arena, String8_Node *prev, const char *fmt, va_list args) String8_Node *push_str8_node(Arena *arena, String8_Node *prev, const char *fmt, ...)
{ {
va_list args2;
va_copy(args2, args);
String8_Node *snode = arena_push<String8_Node>(arena); String8_Node *snode = arena_push<String8_Node>(arena);
snode->str = push_str8fv(arena, fmt, args2); va_list args;
va_start(args, fmt);
snode->str = push_str8fv(arena, fmt, args);
va_end(args);
if (prev) { if (prev) {
prev->next = snode; prev->next = snode;
snode->head = prev->head; snode->head = prev->head;
snode->parent = prev->parent;
} else { } else {
snode->head = snode; snode->head = snode;
} }
snode->prev = prev; snode->prev = prev;
va_end(args2);
return snode; return snode;
} }
internal internal
String8_Node *push_str8_node(Arena *arena, String8_Node *prev, const char *fmt, ...) String8_Node *push_str8_node_child(Arena *arena, String8_Node *parent, const char *fmt, ...)
{ {
va_list args; assert(parent);
va_start(args, fmt);
String8_Node *snode = push_str8_node_v(arena, prev, fmt, args);
va_end(args);
return snode;
}
internal
String8_Node *push_str8_node_child_v(Arena *arena, String8_Node *parent, const char *fmt, va_list args)
{
va_list args2;
va_copy(args2, args);
if (!parent) {
// If there is no parent, just behave the same as push_str8_node.
String8_Node *snode = push_str8_node_v(arena, nullptr, fmt, args2);
va_end(args2);
return snode;
}
String8_Node *snode = arena_push<String8_Node>(arena); String8_Node *snode = arena_push<String8_Node>(arena);
snode->str = push_str8fv(arena, fmt, args2);
va_list args;
va_start(args, fmt);
snode->str = push_str8fv(arena, fmt, args);
va_end(args);
snode->prev = parent->last_child; snode->prev = parent->last_child;
if (parent->first_child) { if (parent->first_child) {
@ -94,19 +79,7 @@ String8_Node *push_str8_node_child_v(Arena *arena, String8_Node *parent, const c
parent->last_child = parent->first_child = snode; parent->last_child = parent->first_child = snode;
} }
snode->head = parent->head; snode->head = parent->head;
snode->parent = parent;
va_end(args2);
return snode;
}
internal
String8_Node *push_str8_node_child(Arena *arena, String8_Node *parent, const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
String8_Node *snode = push_str8_node_child_v(arena, parent, fmt, args);
va_end(args);
return snode; return snode;
} }

View file

@ -14,6 +14,5 @@ struct String8 {
struct String8_Node { struct String8_Node {
String8_Node *next, *prev, *head; String8_Node *next, *prev, *head;
String8_Node *first_child, *last_child; String8_Node *first_child, *last_child;
String8_Node *parent;
String8 str; String8 str;
}; };