diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-06-06 12:39:03 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-06-06 12:39:03 -0700 |
commit | 8014210316809c9d59adc015ecc181337b42cf19 (patch) | |
tree | cec2c2a98bc5f4277ce8aa63b30774e7bfc7e29b /shell/gap-buffer.mu | |
parent | 3bdf3b1a7f146998078975e2f7c1d5e887f84e9f (diff) | |
download | mu-8014210316809c9d59adc015ecc181337b42cf19.tar.gz |
shell: support negative integer literals
We still don't support _any_ fractional literals, positive or negative.
Diffstat (limited to 'shell/gap-buffer.mu')
-rw-r--r-- | shell/gap-buffer.mu | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/shell/gap-buffer.mu b/shell/gap-buffer.mu index 409089cf..88285a43 100644 --- a/shell/gap-buffer.mu +++ b/shell/gap-buffer.mu @@ -1115,6 +1115,25 @@ fn read-from-gap-buffer _self: (addr gap-buffer) -> _/eax: grapheme { return 0/nul } +fn put-back-from-gap-buffer _self: (addr gap-buffer) { + var self/esi: (addr gap-buffer) <- copy _self + # more in right? + var right/eax: (addr grapheme-stack) <- get self, right + var right-size/eax: int <- grapheme-stack-length right + var right-read-index-a/eax: (addr int) <- get self, right-read-index + compare *right-read-index-a, 0 + { + break-if-<= + decrement *right-read-index-a + return + } + # more in left? + var left/eax: (addr grapheme-stack) <- get self, left + var left-size/eax: int <- grapheme-stack-length left + var left-read-index-a/eax: (addr int) <- get self, left-read-index + decrement *left-read-index-a +} + fn test-read-from-gap-buffer { var gap-storage: gap-buffer var gap/esi: (addr gap-buffer) <- address gap-storage |