From 53d69dd1c5707a1cddd5c2ca6827b9a517659eeb Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Tue, 9 Nov 2021 09:29:56 -0800 Subject: keep 'grapheme-stack' We want to at least document intent there. --- 513grapheme-stack.mu | 230 +++++++++++++++++++++++++-------------------------- 1 file changed, 115 insertions(+), 115 deletions(-) (limited to '513grapheme-stack.mu') diff --git a/513grapheme-stack.mu b/513grapheme-stack.mu index 3aa0fd4e..5792e08c 100644 --- a/513grapheme-stack.mu +++ b/513grapheme-stack.mu @@ -1,26 +1,26 @@ # code-point-utf8 stacks are the smallest unit of editable text -type code-point-utf8-stack { +type grapheme-stack { data: (handle array code-point-utf8) top: int } -fn initialize-code-point-utf8-stack _self: (addr code-point-utf8-stack), n: int { - var self/esi: (addr code-point-utf8-stack) <- copy _self +fn initialize-grapheme-stack _self: (addr grapheme-stack), n: int { + var self/esi: (addr grapheme-stack) <- copy _self var d/edi: (addr handle array code-point-utf8) <- get self, data populate d, n var top/eax: (addr int) <- get self, top copy-to *top, 0 } -fn clear-code-point-utf8-stack _self: (addr code-point-utf8-stack) { - var self/esi: (addr code-point-utf8-stack) <- copy _self +fn clear-grapheme-stack _self: (addr grapheme-stack) { + var self/esi: (addr grapheme-stack) <- copy _self var top/eax: (addr int) <- get self, top copy-to *top, 0 } -fn code-point-utf8-stack-empty? _self: (addr code-point-utf8-stack) -> _/eax: boolean { - var self/esi: (addr code-point-utf8-stack) <- copy _self +fn grapheme-stack-empty? _self: (addr grapheme-stack) -> _/eax: boolean { + var self/esi: (addr grapheme-stack) <- copy _self var top/eax: (addr int) <- get self, top compare *top, 0 { @@ -30,14 +30,14 @@ fn code-point-utf8-stack-empty? _self: (addr code-point-utf8-stack) -> _/eax: bo return 0/false } -fn code-point-utf8-stack-length _self: (addr code-point-utf8-stack) -> _/eax: int { - var self/esi: (addr code-point-utf8-stack) <- copy _self +fn grapheme-stack-length _self: (addr grapheme-stack) -> _/eax: int { + var self/esi: (addr grapheme-stack) <- copy _self var top/eax: (addr int) <- get self, top return *top } -fn push-code-point-utf8-stack _self: (addr code-point-utf8-stack), _val: code-point-utf8 { - var self/esi: (addr code-point-utf8-stack) <- copy _self +fn push-grapheme-stack _self: (addr grapheme-stack), _val: code-point-utf8 { + var self/esi: (addr grapheme-stack) <- copy _self var top-addr/ecx: (addr int) <- get self, top var data-ah/edx: (addr handle array code-point-utf8) <- get self, data var data/eax: (addr array code-point-utf8) <- lookup *data-ah @@ -48,8 +48,8 @@ fn push-code-point-utf8-stack _self: (addr code-point-utf8-stack), _val: code-po add-to *top-addr, 1 } -fn pop-code-point-utf8-stack _self: (addr code-point-utf8-stack) -> _/eax: code-point-utf8 { - var self/esi: (addr code-point-utf8-stack) <- copy _self +fn pop-grapheme-stack _self: (addr grapheme-stack) -> _/eax: code-point-utf8 { + var self/esi: (addr grapheme-stack) <- copy _self var top-addr/ecx: (addr int) <- get self, top { compare *top-addr, 0 @@ -64,8 +64,8 @@ fn pop-code-point-utf8-stack _self: (addr code-point-utf8-stack) -> _/eax: code- return *result-addr } -fn copy-code-point-utf8-stack _src: (addr code-point-utf8-stack), dest: (addr code-point-utf8-stack) { - var src/esi: (addr code-point-utf8-stack) <- copy _src +fn copy-grapheme-stack _src: (addr grapheme-stack), dest: (addr grapheme-stack) { + var src/esi: (addr grapheme-stack) <- copy _src var data-ah/edi: (addr handle array code-point-utf8) <- get src, data var _data/eax: (addr array code-point-utf8) <- lookup *data-ah var data/edi: (addr array code-point-utf8) <- copy _data @@ -75,7 +75,7 @@ fn copy-code-point-utf8-stack _src: (addr code-point-utf8-stack), dest: (addr co compare i, *top-addr break-if->= var g/edx: (addr code-point-utf8) <- index data, i - push-code-point-utf8-stack dest, *g + push-grapheme-stack dest, *g i <- increment loop } @@ -84,8 +84,8 @@ fn copy-code-point-utf8-stack _src: (addr code-point-utf8-stack), dest: (addr co # dump stack to screen from bottom to top # hardcoded colors: # matching paren -fn render-stack-from-bottom-wrapping-right-then-down screen: (addr screen), _self: (addr code-point-utf8-stack), xmin: int, ymin: int, xmax: int, ymax: int, _x: int, _y: int, highlight-matching-open-paren?: boolean, open-paren-depth: int, color: int, background-color: int -> _/eax: int, _/ecx: int { - var self/esi: (addr code-point-utf8-stack) <- copy _self +fn render-stack-from-bottom-wrapping-right-then-down screen: (addr screen), _self: (addr grapheme-stack), xmin: int, ymin: int, xmax: int, ymax: int, _x: int, _y: int, highlight-matching-open-paren?: boolean, open-paren-depth: int, color: int, background-color: int -> _/eax: int, _/ecx: int { + var self/esi: (addr grapheme-stack) <- copy _self var matching-open-paren-index/edx: int <- get-matching-open-paren-index self, highlight-matching-open-paren?, open-paren-depth var data-ah/edi: (addr handle array code-point-utf8) <- get self, data var _data/eax: (addr array code-point-utf8) <- lookup *data-ah @@ -123,7 +123,7 @@ fn render-stack-from-bottom-wrapping-right-then-down screen: (addr screen), _sel } # helper for small words -fn render-stack-from-bottom screen: (addr screen), self: (addr code-point-utf8-stack), x: int, y: int, highlight-matching-open-paren?: boolean, open-paren-depth: int -> _/eax: int { +fn render-stack-from-bottom screen: (addr screen), self: (addr grapheme-stack), x: int, y: int, highlight-matching-open-paren?: boolean, open-paren-depth: int -> _/eax: int { var _width/eax: int <- copy 0 var _height/ecx: int <- copy 0 _width, _height <- screen-size screen @@ -140,8 +140,8 @@ fn render-stack-from-bottom screen: (addr screen), self: (addr code-point-utf8-s # hard-coded colors: # matching paren # cursor -fn render-stack-from-top-wrapping-right-then-down screen: (addr screen), _self: (addr code-point-utf8-stack), xmin: int, ymin: int, xmax: int, ymax: int, _x: int, _y: int, render-cursor?: boolean, color: int, background-color: int -> _/eax: int, _/ecx: int { - var self/esi: (addr code-point-utf8-stack) <- copy _self +fn render-stack-from-top-wrapping-right-then-down screen: (addr screen), _self: (addr grapheme-stack), xmin: int, ymin: int, xmax: int, ymax: int, _x: int, _y: int, render-cursor?: boolean, color: int, background-color: int -> _/eax: int, _/ecx: int { + var self/esi: (addr grapheme-stack) <- copy _self var matching-close-paren-index/edx: int <- get-matching-close-paren-index self, render-cursor? var data-ah/eax: (addr handle array code-point-utf8) <- get self, data var _data/eax: (addr array code-point-utf8) <- lookup *data-ah @@ -196,7 +196,7 @@ fn render-stack-from-top-wrapping-right-then-down screen: (addr screen), _self: } # helper for small words -fn render-stack-from-top screen: (addr screen), self: (addr code-point-utf8-stack), x: int, y: int, render-cursor?: boolean -> _/eax: int { +fn render-stack-from-top screen: (addr screen), self: (addr grapheme-stack), x: int, y: int, render-cursor?: boolean -> _/eax: int { var _width/eax: int <- copy 0 var _height/ecx: int <- copy 0 _width, _height <- screen-size screen @@ -208,190 +208,190 @@ fn render-stack-from-top screen: (addr screen), self: (addr code-point-utf8-stac return x2 # y2? yolo } -fn test-render-code-point-utf8-stack { +fn test-render-grapheme-stack { # setup: gs = "abc" - var gs-storage: code-point-utf8-stack - var gs/edi: (addr code-point-utf8-stack) <- address gs-storage - initialize-code-point-utf8-stack gs, 5 + var gs-storage: grapheme-stack + var gs/edi: (addr grapheme-stack) <- address gs-storage + initialize-grapheme-stack gs, 5 var g/eax: code-point-utf8 <- copy 0x61/a - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x62/b - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x63/c - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g # setup: screen var screen-storage: screen var screen/esi: (addr screen) <- address screen-storage initialize-screen screen, 5, 4, 0/no-pixel-graphics # var x/eax: int <- render-stack-from-bottom screen, gs, 0/x, 0/y, 0/no-highlight-matching-open-paren, 0/open-paren-depth - check-screen-row screen, 0/y, "abc ", "F - test-render-code-point-utf8-stack from bottom" - check-ints-equal x, 3, "F - test-render-code-point-utf8-stack from bottom: result" - check-background-color-in-screen-row screen, 3/bg=reverse, 0/y, " ", "F - test-render-code-point-utf8-stack from bottom: bg" + check-screen-row screen, 0/y, "abc ", "F - test-render-grapheme-stack from bottom" + check-ints-equal x, 3, "F - test-render-grapheme-stack from bottom: result" + check-background-color-in-screen-row screen, 3/bg=reverse, 0/y, " ", "F - test-render-grapheme-stack from bottom: bg" # var x/eax: int <- render-stack-from-top screen, gs, 0/x, 1/y, 0/cursor=false - check-screen-row screen, 1/y, "cba ", "F - test-render-code-point-utf8-stack from top without cursor" - check-ints-equal x, 3, "F - test-render-code-point-utf8-stack from top without cursor: result" - check-background-color-in-screen-row screen, 3/bg=reverse, 1/y, " ", "F - test-render-code-point-utf8-stack from top without cursor: bg" + check-screen-row screen, 1/y, "cba ", "F - test-render-grapheme-stack from top without cursor" + check-ints-equal x, 3, "F - test-render-grapheme-stack from top without cursor: result" + check-background-color-in-screen-row screen, 3/bg=reverse, 1/y, " ", "F - test-render-grapheme-stack from top without cursor: bg" # var x/eax: int <- render-stack-from-top screen, gs, 0/x, 2/y, 1/cursor=true - check-screen-row screen, 2/y, "cba ", "F - test-render-code-point-utf8-stack from top with cursor" - check-ints-equal x, 3, "F - test-render-code-point-utf8-stack from top with cursor: result" - check-background-color-in-screen-row screen, 3/bg=reverse, 2/y, "| ", "F - test-render-code-point-utf8-stack from top with cursor: bg" + check-screen-row screen, 2/y, "cba ", "F - test-render-grapheme-stack from top with cursor" + check-ints-equal x, 3, "F - test-render-grapheme-stack from top with cursor: result" + check-background-color-in-screen-row screen, 3/bg=reverse, 2/y, "| ", "F - test-render-grapheme-stack from top with cursor: bg" } -fn test-render-code-point-utf8-stack-while-highlighting-matching-close-paren { +fn test-render-grapheme-stack-while-highlighting-matching-close-paren { # setup: gs = "(b)" - var gs-storage: code-point-utf8-stack - var gs/edi: (addr code-point-utf8-stack) <- address gs-storage - initialize-code-point-utf8-stack gs, 5 + var gs-storage: grapheme-stack + var gs/edi: (addr grapheme-stack) <- address gs-storage + initialize-grapheme-stack gs, 5 var g/eax: code-point-utf8 <- copy 0x29/close-paren - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x62/b - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x28/open-paren - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g # setup: screen var screen-storage: screen var screen/esi: (addr screen) <- address screen-storage initialize-screen screen, 5, 4, 0/no-pixel-graphics # var x/eax: int <- render-stack-from-top screen, gs, 0/x, 2/y, 1/cursor=true - check-screen-row screen, 2/y, "(b) ", "F - test-render-code-point-utf8-stack-while-highlighting-matching-close-paren" - check-background-color-in-screen-row screen, 3/bg=reverse, 2/y, "| ", "F - test-render-code-point-utf8-stack-while-highlighting-matching-close-paren: cursor" - check-screen-row-in-color screen, 0xf/fg=white, 2/y, " ) ", "F - test-render-code-point-utf8-stack-while-highlighting-matching-close-paren: matching paren" + check-screen-row screen, 2/y, "(b) ", "F - test-render-grapheme-stack-while-highlighting-matching-close-paren" + check-background-color-in-screen-row screen, 3/bg=reverse, 2/y, "| ", "F - test-render-grapheme-stack-while-highlighting-matching-close-paren: cursor" + check-screen-row-in-color screen, 0xf/fg=white, 2/y, " ) ", "F - test-render-grapheme-stack-while-highlighting-matching-close-paren: matching paren" } -fn test-render-code-point-utf8-stack-while-highlighting-matching-close-paren-2 { +fn test-render-grapheme-stack-while-highlighting-matching-close-paren-2 { # setup: gs = "(a (b)) c" - var gs-storage: code-point-utf8-stack - var gs/edi: (addr code-point-utf8-stack) <- address gs-storage - initialize-code-point-utf8-stack gs, 0x10 + var gs-storage: grapheme-stack + var gs/edi: (addr grapheme-stack) <- address gs-storage + initialize-grapheme-stack gs, 0x10 var g/eax: code-point-utf8 <- copy 0x63/c - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x20/space - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x29/close-paren - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x29/close-paren - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x62/b - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x28/open-paren - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x20/space - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x61/a - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x28/open-paren - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g # setup: screen var screen-storage: screen var screen/esi: (addr screen) <- address screen-storage initialize-screen screen, 5, 4, 0/no-pixel-graphics # var x/eax: int <- render-stack-from-top screen, gs, 0/x, 2/y, 1/cursor=true - check-screen-row screen, 2/y, "(a (b)) c ", "F - test-render-code-point-utf8-stack-while-highlighting-matching-close-paren-2" - check-background-color-in-screen-row screen, 3/bg=reverse, 2/y, "| ", "F - test-render-code-point-utf8-stack-while-highlighting-matching-close-paren-2: cursor" - check-screen-row-in-color screen, 0xf/fg=white, 2/y, " ) ", "F - test-render-code-point-utf8-stack-while-highlighting-matching-close-paren-2: matching paren" + check-screen-row screen, 2/y, "(a (b)) c ", "F - test-render-grapheme-stack-while-highlighting-matching-close-paren-2" + check-background-color-in-screen-row screen, 3/bg=reverse, 2/y, "| ", "F - test-render-grapheme-stack-while-highlighting-matching-close-paren-2: cursor" + check-screen-row-in-color screen, 0xf/fg=white, 2/y, " ) ", "F - test-render-grapheme-stack-while-highlighting-matching-close-paren-2: matching paren" } -fn test-render-code-point-utf8-stack-while-highlighting-matching-open-paren-with-close-paren-at-end { +fn test-render-grapheme-stack-while-highlighting-matching-open-paren-with-close-paren-at-end { # setup: gs = "(b)" - var gs-storage: code-point-utf8-stack - var gs/edi: (addr code-point-utf8-stack) <- address gs-storage - initialize-code-point-utf8-stack gs, 5 + var gs-storage: grapheme-stack + var gs/edi: (addr grapheme-stack) <- address gs-storage + initialize-grapheme-stack gs, 5 var g/eax: code-point-utf8 <- copy 0x28/open-paren - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x62/b - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x29/close-paren - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g # setup: screen var screen-storage: screen var screen/esi: (addr screen) <- address screen-storage initialize-screen screen, 5, 4, 0/no-pixel-graphics # var x/eax: int <- render-stack-from-bottom screen, gs, 0/x, 2/y, 1/highlight-matching-open-paren, 1/open-paren-depth - check-screen-row screen, 2/y, "(b) ", "F - test-render-code-point-utf8-stack-while-highlighting-matching-open-paren-with-close-paren-at-end" - check-screen-row-in-color screen, 0xf/fg=white, 2/y, "( ", "F - test-render-code-point-utf8-stack-while-highlighting-matching-open-paren-with-close-paren-at-end: matching paren" + check-screen-row screen, 2/y, "(b) ", "F - test-render-grapheme-stack-while-highlighting-matching-open-paren-with-close-paren-at-end" + check-screen-row-in-color screen, 0xf/fg=white, 2/y, "( ", "F - test-render-grapheme-stack-while-highlighting-matching-open-paren-with-close-paren-at-end: matching paren" } -fn test-render-code-point-utf8-stack-while-highlighting-matching-open-paren-with-close-paren-at-end-2 { +fn test-render-grapheme-stack-while-highlighting-matching-open-paren-with-close-paren-at-end-2 { # setup: gs = "a((b))" - var gs-storage: code-point-utf8-stack - var gs/edi: (addr code-point-utf8-stack) <- address gs-storage - initialize-code-point-utf8-stack gs, 0x10 + var gs-storage: grapheme-stack + var gs/edi: (addr grapheme-stack) <- address gs-storage + initialize-grapheme-stack gs, 0x10 var g/eax: code-point-utf8 <- copy 0x61/a - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x28/open-paren - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x28/open-paren - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x62/b - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x29/close-paren - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x29/close-paren - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g # setup: screen var screen-storage: screen var screen/esi: (addr screen) <- address screen-storage initialize-screen screen, 5, 4, 0/no-pixel-graphics # var x/eax: int <- render-stack-from-bottom screen, gs, 0/x, 2/y, 1/highlight-matching-open-paren, 1/open-paren-depth - check-screen-row screen, 2/y, "a((b)) ", "F - test-render-code-point-utf8-stack-while-highlighting-matching-open-paren-with-close-paren-at-end-2" - check-screen-row-in-color screen, 0xf/fg=white, 2/y, " ( ", "F - test-render-code-point-utf8-stack-while-highlighting-matching-open-paren-with-close-paren-at-end-2: matching paren" + check-screen-row screen, 2/y, "a((b)) ", "F - test-render-grapheme-stack-while-highlighting-matching-open-paren-with-close-paren-at-end-2" + check-screen-row-in-color screen, 0xf/fg=white, 2/y, " ( ", "F - test-render-grapheme-stack-while-highlighting-matching-open-paren-with-close-paren-at-end-2: matching paren" } -fn test-render-code-point-utf8-stack-while-highlighting-matching-open-paren { +fn test-render-grapheme-stack-while-highlighting-matching-open-paren { # setup: gs = "(b" - var gs-storage: code-point-utf8-stack - var gs/edi: (addr code-point-utf8-stack) <- address gs-storage - initialize-code-point-utf8-stack gs, 5 + var gs-storage: grapheme-stack + var gs/edi: (addr grapheme-stack) <- address gs-storage + initialize-grapheme-stack gs, 5 var g/eax: code-point-utf8 <- copy 0x28/open-paren - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x62/b - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g # setup: screen var screen-storage: screen var screen/esi: (addr screen) <- address screen-storage initialize-screen screen, 5, 4, 0/no-pixel-graphics # var x/eax: int <- render-stack-from-bottom screen, gs, 0/x, 2/y, 1/highlight-matching-open-paren, 0/open-paren-depth - check-screen-row screen, 2/y, "(b ", "F - test-render-code-point-utf8-stack-while-highlighting-matching-open-paren" - check-screen-row-in-color screen, 0xf/fg=white, 2/y, "( ", "F - test-render-code-point-utf8-stack-while-highlighting-matching-open-paren: matching paren" + check-screen-row screen, 2/y, "(b ", "F - test-render-grapheme-stack-while-highlighting-matching-open-paren" + check-screen-row-in-color screen, 0xf/fg=white, 2/y, "( ", "F - test-render-grapheme-stack-while-highlighting-matching-open-paren: matching paren" } -fn test-render-code-point-utf8-stack-while-highlighting-matching-open-paren-2 { +fn test-render-grapheme-stack-while-highlighting-matching-open-paren-2 { # setup: gs = "a((b)" - var gs-storage: code-point-utf8-stack - var gs/edi: (addr code-point-utf8-stack) <- address gs-storage - initialize-code-point-utf8-stack gs, 0x10 + var gs-storage: grapheme-stack + var gs/edi: (addr grapheme-stack) <- address gs-storage + initialize-grapheme-stack gs, 0x10 var g/eax: code-point-utf8 <- copy 0x61/a - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x28/open-paren - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x28/open-paren - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x62/b - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g g <- copy 0x29/close-paren - push-code-point-utf8-stack gs, g + push-grapheme-stack gs, g # setup: screen var screen-storage: screen var screen/esi: (addr screen) <- address screen-storage initialize-screen screen, 5, 4, 0/no-pixel-graphics # var x/eax: int <- render-stack-from-bottom screen, gs, 0/x, 2/y, 1/highlight-matching-open-paren, 0/open-paren-depth - check-screen-row screen, 2/y, "a((b) ", "F - test-render-code-point-utf8-stack-while-highlighting-matching-open-paren-2" - check-screen-row-in-color screen, 0xf/fg=white, 2/y, " ( ", "F - test-render-code-point-utf8-stack-while-highlighting-matching-open-paren-2: matching paren" + check-screen-row screen, 2/y, "a((b) ", "F - test-render-grapheme-stack-while-highlighting-matching-open-paren-2" + check-screen-row-in-color screen, 0xf/fg=white, 2/y, " ( ", "F - test-render-grapheme-stack-while-highlighting-matching-open-paren-2: matching paren" } # return the index of the matching close-paren of the code-point-utf8 at cursor (top of stack) # or top index if there's no matching close-paren -fn get-matching-close-paren-index _self: (addr code-point-utf8-stack), render-cursor?: boolean -> _/edx: int { - var self/esi: (addr code-point-utf8-stack) <- copy _self +fn get-matching-close-paren-index _self: (addr grapheme-stack), render-cursor?: boolean -> _/edx: int { + var self/esi: (addr grapheme-stack) <- copy _self var top-addr/edx: (addr int) <- get self, top # if not rendering cursor, return compare render-cursor?, 0/false @@ -446,8 +446,8 @@ fn get-matching-close-paren-index _self: (addr code-point-utf8-stack), render-cu # return the index of the first open-paren at the given depth # or top index if there's no matching close-paren -fn get-matching-open-paren-index _self: (addr code-point-utf8-stack), control: boolean, depth: int -> _/edx: int { - var self/esi: (addr code-point-utf8-stack) <- copy _self +fn get-matching-open-paren-index _self: (addr grapheme-stack), control: boolean, depth: int -> _/edx: int { + var self/esi: (addr grapheme-stack) <- copy _self var top-addr/edx: (addr int) <- get self, top # if not rendering cursor, return compare control, 0/false @@ -494,8 +494,8 @@ fn get-matching-open-paren-index _self: (addr code-point-utf8-stack), control: b # compare from bottom # beware: modifies 'stream', which must be disposed of after a false result -fn prefix-match? _self: (addr code-point-utf8-stack), s: (addr stream byte) -> _/eax: boolean { - var self/esi: (addr code-point-utf8-stack) <- copy _self +fn prefix-match? _self: (addr grapheme-stack), s: (addr stream byte) -> _/eax: boolean { + var self/esi: (addr grapheme-stack) <- copy _self var data-ah/edi: (addr handle array code-point-utf8) <- get self, data var _data/eax: (addr array code-point-utf8) <- lookup *data-ah var data/edi: (addr array code-point-utf8) <- copy _data @@ -522,8 +522,8 @@ fn prefix-match? _self: (addr code-point-utf8-stack), s: (addr stream byte) -> _ # compare from bottom # beware: modifies 'stream', which must be disposed of after a false result -fn suffix-match? _self: (addr code-point-utf8-stack), s: (addr stream byte) -> _/eax: boolean { - var self/esi: (addr code-point-utf8-stack) <- copy _self +fn suffix-match? _self: (addr grapheme-stack), s: (addr stream byte) -> _/eax: boolean { + var self/esi: (addr grapheme-stack) <- copy _self var data-ah/edi: (addr handle array code-point-utf8) <- get self, data var _data/eax: (addr array code-point-utf8) <- lookup *data-ah var data/edi: (addr array code-point-utf8) <- copy _data @@ -549,15 +549,15 @@ fn suffix-match? _self: (addr code-point-utf8-stack), s: (addr stream byte) -> _ return 1 # true } -fn code-point-utf8-stack-is-decimal-integer? _self: (addr code-point-utf8-stack) -> _/eax: boolean { - var self/esi: (addr code-point-utf8-stack) <- copy _self +fn grapheme-stack-is-decimal-integer? _self: (addr grapheme-stack) -> _/eax: boolean { + var self/esi: (addr grapheme-stack) <- copy _self var data-ah/eax: (addr handle array code-point-utf8) <- get self, data var _data/eax: (addr array code-point-utf8) <- lookup *data-ah var data/edx: (addr array code-point-utf8) <- copy _data var top-addr/ecx: (addr int) <- get self, top var i/ebx: int <- copy 0 var result/eax: boolean <- copy 1/true - $code-point-utf8-stack-is-integer?:loop: { + $grapheme-stack-is-integer?:loop: { compare i, *top-addr break-if->= var g/edx: (addr code-point-utf8) <- index data, i -- cgit 1.4.1-2-gfad0