start standardizing how we manage item arrays
I need to start treating them as postings lists (https://en.wikipedia.org/wiki/Inverted_index)
This commit is contained in:
parent
e2dd5420b2
commit
c9e9b56123
|
@ -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->=
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue