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) {
|
fn initialize-environment _self: (addr environment), _items: (addr item-list) {
|
||||||
var self/esi: (addr environment) <- copy _self
|
var self/esi: (addr environment) <- copy _self
|
||||||
var items/eax: (addr item-list) <- copy _items
|
var items/eax: (addr item-list) <- copy _items
|
||||||
var newest-item-a/eax: (addr int) <- get items, newest
|
var items-data-first-free-a/eax: (addr int) <- get items, data-first-free
|
||||||
var newest-item/eax: int <- copy *newest-item-a
|
var final-item/eax: int <- copy *items-data-first-free-a
|
||||||
var dest/edi: (addr int) <- get self, item-index
|
var dest/edi: (addr int) <- get self, item-index
|
||||||
copy-to *dest, newest-item
|
copy-to *dest, final-item
|
||||||
}
|
}
|
||||||
|
|
||||||
### Render
|
### 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) {
|
fn previous-item _env: (addr environment), _items: (addr item-list) {
|
||||||
var env/edi: (addr environment) <- copy _env
|
var env/edi: (addr environment) <- copy _env
|
||||||
var items/esi: (addr item-list) <- copy _items
|
var items/esi: (addr item-list) <- copy _items
|
||||||
var newest-item-index-a/ecx: (addr int) <- get items, newest
|
var items-data-first-free-a/ecx: (addr int) <- get items, data-first-free
|
||||||
var newest-item-index/ecx: int <- copy *newest-item-index-a
|
var items-data-first-free/ecx: int <- copy *items-data-first-free-a
|
||||||
var dest/eax: (addr int) <- get env, item-index
|
var dest/eax: (addr int) <- get env, item-index
|
||||||
compare *dest, newest-item-index
|
compare *dest, items-data-first-free
|
||||||
break-if->=
|
break-if->=
|
||||||
increment *dest
|
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-ah/eax: (addr handle array item) <- get items, data
|
||||||
var _items-data/eax: (addr array item) <- lookup *items-data-ah
|
var _items-data/eax: (addr array item) <- lookup *items-data-ah
|
||||||
var items-data/ebx: (addr array item) <- copy _items-data
|
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 src/eax: (addr int) <- get env, item-index
|
||||||
var new-item-index/ecx: int <- copy *src
|
var new-item-index/ecx: int <- copy *src
|
||||||
var y/edx: int <- copy 2
|
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->
|
break-if->
|
||||||
compare y, 0x28/screen-height-minus-menu
|
compare y, 0x28/screen-height-minus-menu
|
||||||
break-if->=
|
break-if->=
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
type channel {
|
type channel {
|
||||||
name: (handle array byte)
|
name: (handle array byte)
|
||||||
posts: (handle array int) # item indices
|
posts: (handle array int) # item indices
|
||||||
newest-post-index: int
|
posts-first-free: int
|
||||||
}
|
}
|
||||||
|
|
||||||
type user {
|
type user {
|
||||||
|
@ -18,12 +18,12 @@ type item {
|
||||||
text: (handle array byte)
|
text: (handle array byte)
|
||||||
parent: int # item index
|
parent: int # item index
|
||||||
comments: (handle array int)
|
comments: (handle array int)
|
||||||
newest-comment-index: int
|
comments-first-free: int
|
||||||
}
|
}
|
||||||
|
|
||||||
type item-list {
|
type item-list {
|
||||||
data: (handle array item)
|
data: (handle array item)
|
||||||
newest: int
|
data-first-free: int
|
||||||
}
|
}
|
||||||
|
|
||||||
# globals:
|
# globals:
|
||||||
|
@ -135,7 +135,7 @@ fn parse in: (addr stream byte), users: (addr array user), channels: (addr array
|
||||||
}
|
}
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
var dest/eax: (addr int) <- get items, newest
|
var dest/eax: (addr int) <- get items, data-first-free
|
||||||
copy-to *dest, item-idx
|
copy-to *dest, item-idx
|
||||||
decrement *dest
|
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
|
populate parent-comments-ah, 0x200/num-comments
|
||||||
parent-comments <- lookup *parent-comments-ah
|
parent-comments <- lookup *parent-comments-ah
|
||||||
}
|
}
|
||||||
var parent-newest-comment-index-addr/edi: (addr int) <- get parent-item, newest-comment-index
|
var parent-comments-first-free-addr/edi: (addr int) <- get parent-item, comments-first-free
|
||||||
var parent-newest-comment-index/edx: int <- copy *parent-newest-comment-index-addr
|
var parent-comments-first-free/edx: int <- copy *parent-comments-first-free-addr
|
||||||
var dest/eax: (addr int) <- index parent-comments, parent-newest-comment-index
|
var dest/eax: (addr int) <- index parent-comments, parent-comments-first-free
|
||||||
var src/ecx: int <- copy item-idx
|
var src/ecx: int <- copy item-idx
|
||||||
copy-to *dest, src
|
copy-to *dest, src
|
||||||
increment *parent-newest-comment-index-addr
|
increment *parent-comments-first-free-addr
|
||||||
}
|
}
|
||||||
# channel name
|
# channel name
|
||||||
skip-chars-matching-whitespace record
|
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-offset/eax: (offset channel) <- compute-offset channels, channel-index
|
||||||
var channel/eax: (addr channel) <- index channels, channel-offset
|
var channel/eax: (addr channel) <- index channels, channel-offset
|
||||||
var channel-posts-ah/ecx: (addr handle array int) <- get channel, posts
|
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-posts-first-free-addr/edx: (addr int) <- get channel, posts-first-free
|
||||||
var channel-newest-post-index/edx: int <- copy *channel-newest-post-index-addr
|
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 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
|
# user index
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue