aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-06-12 16:49:15 +0100
committergingerBill <bill@gingerbill.org>2022-06-12 16:49:15 +0100
commit65b8cfae82f781579c8b32011e05bddae183e8ed (patch)
tree87661fae4037d34943cc19c62f4519e9c49160c0
parent4055c31cf05f53cb380ed0a60c4c97afff3009a3 (diff)
Minor code clean up
-rw-r--r--core/fmt/fmt.odin26
1 files changed, 10 insertions, 16 deletions
diff --git a/core/fmt/fmt.odin b/core/fmt/fmt.odin
index 82b74a847..26dff8c45 100644
--- a/core/fmt/fmt.odin
+++ b/core/fmt/fmt.odin
@@ -1499,22 +1499,13 @@ fmt_array :: proc(fi: ^Info, data: rawptr, n: int, elem_size: int, elem: ^reflec
return
}
if verb == 's' || verb == 'q' {
- REPLACEMENT_CHAR :: '\ufffd'
- MAX_RUNE :: '\U0010ffff'
-
- _surr1 :: 0xd800
- _surr2 :: 0xdc00
- _surr3 :: 0xe000
- _surr_self :: 0x10000
-
- decode_surrogate_pair :: proc(r1, r2: rune) -> rune {
- if _surr1 <= r1 && r1 < _surr2 && _surr2 <= r2 && r2 < _surr3 {
- return (r1-_surr1)<<10 | (r2 - _surr2) + _surr_self
- }
- return REPLACEMENT_CHAR
- }
-
print_utf16 :: proc(fi: ^Info, s: []$T) where size_of(T) == 2, intrinsics.type_is_integer(T) {
+ REPLACEMENT_CHAR :: '\ufffd'
+ _surr1 :: 0xd800
+ _surr2 :: 0xdc00
+ _surr3 :: 0xe000
+ _surr_self :: 0x10000
+
for i := 0; i < len(s); i += 1 {
r := rune(REPLACEMENT_CHAR)
@@ -1523,7 +1514,10 @@ fmt_array :: proc(fi: ^Info, data: rawptr, n: int, elem_size: int, elem: ^reflec
r = rune(c)
case _surr1 <= c && c < _surr2 && i+1 < len(s) &&
_surr2 <= s[i+1] && s[i+1] < _surr3:
- r = decode_surrogate_pair(rune(c), rune(s[i+1]))
+ r1, r2 := rune(c), rune(s[i+1])
+ if _surr1 <= r1 && r1 < _surr2 && _surr2 <= r2 && r2 < _surr3 {
+ r = (r1-_surr1)<<10 | (r2 - _surr2) + _surr_self
+ }
i += 1
}
io.write_rune(fi.writer, r, &fi.n)