aboutsummaryrefslogtreecommitdiffstats
path: root/core/module-list.h
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-10-05 07:53:22 +0100
committereunhhu <[email protected]>2026-10-05 07:53:22 +0100
commit6c641903b089d81fb193c3949ccc677b701bc55b (patch)
tree31aa8442c04bebeccb414838ebccf186ea5eb062 /core/module-list.h
parent2dc0a4df9485c0a4c08859ad81f41d6efab98dd5 (diff)
downloadpure-6c641903b089d81fb193c3949ccc677b701bc55b.tar.gz
pure-6c641903b089d81fb193c3949ccc677b701bc55b.zip
Read a tree's items in compiled code from a run the frame keeps, start a run at the finger's leaf, and move indices only for a list an index refers to (021)
- The frame keeps the run compiled code read a tree's item from last (the list as it was: its version); an item it holds is read from its column, else pure_run_item takes the item's run and steps. - pure_list_run starts at the leaf the finger keeps when it holds the position (a slice found by key just before): no second descent; the run after it is found from the root (PureRun.pathless). - LIST_APPEND and LIST_REMOVE move index states only for a list one refers to. - A search (core only): 89 ms compiled (answers the executor's).
Diffstat (limited to 'core/module-list.h')
-rw-r--r--core/module-list.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/core/module-list.h b/core/module-list.h
index 0addcf0..6251786 100644
--- a/core/module-list.h
+++ b/core/module-list.h
@@ -37,10 +37,13 @@ typedef struct {
size_t start;
unsigned count;
union { const double *numbers; const int64_t *integers; const PureSpan *texts; } column[16];
- /* Where the run is in the list's tree, for the next one. */
+ /* Where the run is in the list's tree, for the next one (path[depth]
+ * its leaf); pathless: its leaf alone is known (the next is found from
+ * the root). */
const void *path[16];
uint8_t taken[16];
unsigned depth;
+ bool pathless;
} PureRun;
/* A list holds up to PURE_LIST_ITEMS items, a run up to PURE_LIST_RUN. */