From c9e9b5612382ddcec5ed185125b6d4212d0509d0 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Fri, 13 Aug 2021 08:27:50 -0700 Subject: [PATCH] start standardizing how we manage item arrays I need to start treating them as postings lists (https://en.wikipedia.org/wiki/Inverted_index) --- browse-slack/environment.mu | 16 ++++++++-------- browse-slack/main.mu | 22 +++++++++++----------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/browse-slack/environment.mu b/browse-slack/environment.mu index 95ed63f3..0a638a75 100644 --- a/browse-slack/environment.mu +++ b/browse-slack/environment.mu @@ -19,10 +19,10 @@ type environment { fn initialize-environment _self: (addr environment), _items: (addr item-list) { var self/esi: (addr environment) <- copy _self var items/eax: (addr item-list) <- copy _items - var newest-item-a/eax: (addr int) <- get items, newest - var newest-item/eax: int <- copy *newest-item-a + var items-data-first-free-a/eax: (addr int) <- get items, data-first-free + var final-item/eax: int <- copy *items-data-first-free-a var dest/edi: (addr int) <- get self, item-index - copy-to *dest, newest-item + copy-to *dest, final-item } ### Render @@ -435,10 +435,10 @@ fn next-item _env: (addr environment), _items: (addr item-list) { fn previous-item _env: (addr environment), _items: (addr item-list) { var env/edi: (addr environment) <- copy _env var items/esi: (addr item-list) <- copy _items - var newest-item-index-a/ecx: (addr int) <- get items, newest - var newest-item-index/ecx: int <- copy *newest-item-index-a + var items-data-first-free-a/ecx: (addr int) <- get items, data-first-free + var items-data-first-free/ecx: int <- copy *items-data-first-free-a var dest/eax: (addr int) <- get env, item-index - compare *dest, newest-item-index + compare *dest, items-data-first-free break-if->= increment *dest } @@ -491,12 +491,12 @@ fn page-up _env: (addr environment), _items: (addr item-list) { var items-data-ah/eax: (addr handle array item) <- get items, data var _items-data/eax: (addr array item) <- lookup *items-data-ah var items-data/ebx: (addr array item) <- copy _items-data - var newest-item-index-a/esi: (addr int) <- get items, newest + var items-data-first-free-a/esi: (addr int) <- get items, data-first-free var src/eax: (addr int) <- get env, item-index var new-item-index/ecx: int <- copy *src var y/edx: int <- copy 2 { - compare new-item-index, *newest-item-index-a + compare new-item-index, *items-data-first-free-a break-if-> compare y, 0x28/screen-height-minus-menu break-if->= diff --git a/browse-slack/main.mu b/browse-slack/main.mu index c1ab1c2d..7ce8d36c 100644 --- a/browse-slack/main.mu +++ b/browse-slack/main.mu @@ -1,7 +1,7 @@ type channel { name: (handle array byte) posts: (handle array int) # item indices - newest-post-index: int + posts-first-free: int } type user { @@ -18,12 +18,12 @@ type item { text: (handle array byte) parent: int # item index comments: (handle array int) - newest-comment-index: int + comments-first-free: int } type item-list { data: (handle array item) - newest: int + data-first-free: int } # globals: @@ -135,7 +135,7 @@ fn parse in: (addr stream byte), users: (addr array user), channels: (addr array } loop } - var dest/eax: (addr int) <- get items, newest + var dest/eax: (addr int) <- get items, data-first-free copy-to *dest, item-idx decrement *dest } @@ -307,12 +307,12 @@ fn parse-item record: (addr stream byte), _channels: (addr array channel), _item populate parent-comments-ah, 0x200/num-comments parent-comments <- lookup *parent-comments-ah } - var parent-newest-comment-index-addr/edi: (addr int) <- get parent-item, newest-comment-index - var parent-newest-comment-index/edx: int <- copy *parent-newest-comment-index-addr - var dest/eax: (addr int) <- index parent-comments, parent-newest-comment-index + var parent-comments-first-free-addr/edi: (addr int) <- get parent-item, comments-first-free + var parent-comments-first-free/edx: int <- copy *parent-comments-first-free-addr + var dest/eax: (addr int) <- index parent-comments, parent-comments-first-free var src/ecx: int <- copy item-idx copy-to *dest, src - increment *parent-newest-comment-index-addr + increment *parent-comments-first-free-addr } # channel name skip-chars-matching-whitespace record @@ -333,10 +333,10 @@ fn parse-item record: (addr stream byte), _channels: (addr array channel), _item var channel-offset/eax: (offset channel) <- compute-offset channels, channel-index var channel/eax: (addr channel) <- index channels, channel-offset var channel-posts-ah/ecx: (addr handle array int) <- get channel, posts - var channel-newest-post-index-addr/edx: (addr int) <- get channel, newest-post-index - var channel-newest-post-index/edx: int <- copy *channel-newest-post-index-addr + var channel-posts-first-free-addr/edx: (addr int) <- get channel, posts-first-free + var channel-posts-first-free/ebx: int <- copy *channel-posts-first-free-addr var channel-posts/eax: (addr array int) <- lookup *channel-posts-ah - var dest/eax: (addr int) <- index channel-posts, channel-newest-post-index + var dest/eax: (addr int) <- index channel-posts, channel-posts-first-free } # user index {