on second thought... merging both view rule expansion *header* info generation, and windowed range queries into an expanded block, into the same hook, is really limiting & wrong - so split back to two hooks, one stage is just informing the expansion space, the next provides per-row information within an expanded block with range-based queries

This commit is contained in:
Ryan Fleury
2024-09-25 15:17:39 -07:00
parent a87c032305
commit a1ceb5fa3b
13 changed files with 339 additions and 91 deletions
+16
View File
@@ -569,6 +569,22 @@ ctrl_entity_list_from_handle_list(Arena *arena, CTRL_EntityStore *store, CTRL_Ha
return result;
}
//- rjf: entity array data structure
internal CTRL_EntityArray
ctrl_entity_array_from_list(Arena *arena, CTRL_EntityList *list)
{
CTRL_EntityArray result = {0};
result.count = list->count;
result.v = push_array_no_zero(arena, CTRL_Entity *, result.count);
U64 idx = 0;
for(CTRL_EntityNode *n = list->first; n != 0; n = n->next, idx += 1)
{
result.v[idx] = n->v;
}
return result;
}
//- rjf: cache creation/destruction
internal CTRL_EntityStore *
+10
View File
@@ -160,6 +160,13 @@ struct CTRL_EntityList
U64 count;
};
typedef struct CTRL_EntityArray CTRL_EntityArray;
struct CTRL_EntityArray
{
CTRL_Entity **v;
U64 count;
};
typedef struct CTRL_EntityRec CTRL_EntityRec;
struct CTRL_EntityRec
{
@@ -806,6 +813,9 @@ internal void ctrl_entity_list_push(Arena *arena, CTRL_EntityList *list, CTRL_En
internal CTRL_EntityList ctrl_entity_list_from_handle_list(Arena *arena, CTRL_EntityStore *store, CTRL_HandleList *list);
#define ctrl_entity_list_first(list) ((list)->first ? (list)->first->v : &ctrl_entity_nil)
//- rjf: entity array data structure
internal CTRL_EntityArray ctrl_entity_array_from_list(Arena *arena, CTRL_EntityList *list);
//- rjf: cache creation/destruction
internal CTRL_EntityStore *ctrl_entity_store_alloc(void);
internal void ctrl_entity_store_release(CTRL_EntityStore *store);