diff options
| author | eunhhu <[email protected]> | 2026-10-05 07:53:22 +0100 |
|---|---|---|
| committer | eunhhu <[email protected]> | 2026-10-05 07:53:22 +0100 |
| commit | 6c641903b089d81fb193c3949ccc677b701bc55b (patch) | |
| tree | 31aa8442c04bebeccb414838ebccf186ea5eb062 /core/module-list.h | |
| parent | 2dc0a4df9485c0a4c08859ad81f41d6efab98dd5 (diff) | |
| download | pure-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.h | 5 |
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. */ |
