#pragma once // qa_state.h — estado compartido entre tabs + panel QA + perf/test suites. // // Centraliza: // - QaToggles: feature flags activables por checkbox. // - QaCounters: counters live emulando data_table::internal::* (TBD modulo v2.2.0). // - TabState: backing storage por tab + data_table::State persistente. // // Una sola instancia global por proceso. Acceso via accessors definidos en // qa_state.cpp para evitar duplicate symbol entre TUs. #include "data_table/data_table.h" #include "core/data_table_types.h" #include #include namespace qa { // --------------------------------------------------------------------------- // Toggles globales. Apps reales mutan ColumnSpec en runtime con el mismo patron. // --------------------------------------------------------------------------- struct QaToggles { bool show_chrome = true; bool enable_buttons = true; bool enable_color_scale = true; bool enable_categorical = true; bool enable_badges = true; bool enable_duration = true; bool enable_dots = true; bool enable_icon = false; bool enable_tooltip = true; bool enable_row_dblclick = true; bool enable_row_rightclick = false; }; // --------------------------------------------------------------------------- // Counters live. Cada vez que un TabEvent pasa por consume_events() se incrementan. // --------------------------------------------------------------------------- struct QaCounters { int button_clicks = 0; int row_double_click = 0; int row_right_click = 0; int frames_rendered = 0; // Perf long long last_perf_rows = 0; double last_perf_seed_ms = 0.0; double last_perf_render_ms_p50 = 0.0; double last_perf_render_ms_p95 = 0.0; int last_perf_frames = 0; // Test suite int last_test_total = 0; int last_test_passed = 0; int last_test_failed = 0; }; // --------------------------------------------------------------------------- // TabState — backing storage + data_table::State por tab. // --------------------------------------------------------------------------- struct TabState { std::vector back; std::vector ptrs; data_table::State dt; std::vector last_events; }; // Refill ptrs[] desde back[]. Llamar tras cada cambio. void rebuild_ptrs(TabState& s); // Consume events emitidos por render(): incrementa counters globales. void consume_events(const std::vector& events); // --------------------------------------------------------------------------- // Singletons (definidos en qa_state.cpp). // --------------------------------------------------------------------------- QaToggles& toggles(); QaCounters& counters(); } // namespace qa