Core: Remove AST_Tuple, repurpose VAR_UNPACK (buggy probably)
This commit is contained in:
@@ -30,7 +30,7 @@ QuestionMark16 :: 0x003f
|
||||
String32 :: struct;; str: *U32; len: int
|
||||
String16 :: struct;; str: *U16; len: int
|
||||
|
||||
Utf8ToUtf32 :: (c: *U8, max_advance: int): U32, int
|
||||
Utf8ToUtf32 :: (c: *U8, max_advance: int): Two(U32, int)
|
||||
out_str: U32
|
||||
advance: int
|
||||
if (c[0] & 0b10000000) == 0
|
||||
@@ -60,21 +60,19 @@ Utf8ToUtf32 :: (c: *U8, max_advance: int): U32, int
|
||||
out_str = (c0 & 0b00001111) << 18 | (c1 & 0b00111111) << 12 | (c2 & 0b00111111) << 6 | (c3 & 0b00111111)
|
||||
advance = 4
|
||||
|
||||
return out_str, advance
|
||||
return {out_str, advance}
|
||||
|
||||
Utf32ToUtf16 :: (codepoint: U32): [2]U16, int
|
||||
str: [2]U16
|
||||
len := 0
|
||||
Utf32ToUtf16 :: (codepoint: U32): Two([2]U16, int)
|
||||
result: Two([2]U16, int)
|
||||
if codepoint < 0x10000
|
||||
str[0] = codepoint->U16
|
||||
len = 1
|
||||
result.a[0] = codepoint->U16
|
||||
result.b = 1
|
||||
elif codepoint <= 0x10FFFF
|
||||
code: U32 = (codepoint - 0x10000)
|
||||
str[0] = (0xD800 | (code >> 10))->U16
|
||||
str[1] = (0xDC00 | (code & 0x3FF))->U16
|
||||
len = 2
|
||||
|
||||
return str, len
|
||||
result.a[0] = (0xD800 | (code >> 10))->U16
|
||||
result.a[1] = (0xDC00 | (code & 0x3FF))->U16
|
||||
result.b = 2
|
||||
return result
|
||||
|
||||
StringToString16 :: (arena: *Arena, in: String): String16
|
||||
in_str := &in[0]
|
||||
@@ -82,7 +80,9 @@ StringToString16 :: (arena: *Arena, in: String): String16
|
||||
alloc_size := (Len(in)*2)+1
|
||||
result := String16{str = PushSize(arena, alloc_size->U64)}
|
||||
for i := 0, i < Len(in)
|
||||
s32, s32_len := Utf8ToUtf32(in_str + i, Len(in) - i)
|
||||
a := Utf8ToUtf32(in_str + i, Len(in) - i)
|
||||
s32 := a.a
|
||||
s32_len := a.b
|
||||
if s32_len != 0
|
||||
i += s32_len
|
||||
s16, s16_len := Utf32ToUtf16(s32)
|
||||
|
||||
@@ -25,7 +25,7 @@ AdjustWindowRectEx :: #foreign (lpRect: *RECT, dwStyle: DWORD, bMenu: BOOL, dwEx
|
||||
SetWindowPos :: #foreign (hWnd: HWND, hWndInsertAfter: HWND, X: int, Y: int, cx: int, cy: int, uFlags: UINT): BOOL
|
||||
GetClientRect :: #foreign (hWnd: HWND, lpRect: LPRECT): BOOL
|
||||
|
||||
CW_USEDEFAULT :: -2147483648//0x80000000
|
||||
CW_USEDEFAULT :: 0x80000000-1 // -2147483648
|
||||
|
||||
|
||||
WS_CAPTION :: 0x00C00000
|
||||
|
||||
Reference in New Issue
Block a user