From cf390bf8b9f0652679a4ddc2ad66674e3793e3e7 Mon Sep 17 00:00:00 2001 From: Daniel Gavin Date: Wed, 24 Nov 2021 21:20:46 +0100 Subject: [PATCH 001/190] Recover from closing brace not found in field list --- core/odin/parser/parser.odin | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/odin/parser/parser.odin b/core/odin/parser/parser.odin index 7660005e0..b4efc1460 100644 --- a/core/odin/parser/parser.odin +++ b/core/odin/parser/parser.odin @@ -416,7 +416,16 @@ expect_closing_brace_of_field_list :: proc(p: ^Parser) -> tokenizer.Token { str := tokenizer.token_to_string(token) error(p, end_of_line_pos(p, p.prev_tok), "expected a comma, got %s", str) } - return expect_token(p, .Close_Brace) + expect_brace := expect_token(p, .Close_Brace) + + if expect_brace.kind != .Close_Brace { + for p.curr_tok.kind != .Close_Brace && p.curr_tok.kind != .EOF { + advance_token(p) + } + return p.curr_tok + } + + return expect_brace } From a4ba91a55435febb0b5daeadcff2450f52680044 Mon Sep 17 00:00:00 2001 From: Daniel Gavin Date: Thu, 25 Nov 2021 18:47:58 +0100 Subject: [PATCH 002/190] Check for non inserted semicolon in *expect_closing_brace_of_field_list* --- core/odin/parser/parser.odin | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/odin/parser/parser.odin b/core/odin/parser/parser.odin index b4efc1460..1d27b4a79 100644 --- a/core/odin/parser/parser.odin +++ b/core/odin/parser/parser.odin @@ -419,7 +419,7 @@ expect_closing_brace_of_field_list :: proc(p: ^Parser) -> tokenizer.Token { expect_brace := expect_token(p, .Close_Brace) if expect_brace.kind != .Close_Brace { - for p.curr_tok.kind != .Close_Brace && p.curr_tok.kind != .EOF { + for p.curr_tok.kind != .Close_Brace && p.curr_tok.kind != .EOF && !is_non_inserted_semicolon(p.curr_tok) { advance_token(p) } return p.curr_tok @@ -428,6 +428,9 @@ expect_closing_brace_of_field_list :: proc(p: ^Parser) -> tokenizer.Token { return expect_brace } +is_non_inserted_semicolon :: proc(tok: tokenizer.Token) -> bool { + return tok.kind == .Semicolon && tok.text != "\n" +} is_blank_ident :: proc{ is_blank_ident_string, From d57ec4a11d217c906a1ed18161b0dc6beba02089 Mon Sep 17 00:00:00 2001 From: Daniel Gavin Date: Sun, 16 Jan 2022 13:20:12 +0100 Subject: [PATCH 003/190] Fix return stmt when it's one lined(check for close brace). --- core/odin/parser/parser.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/odin/parser/parser.odin b/core/odin/parser/parser.odin index e8c2c848d..0366e70d2 100644 --- a/core/odin/parser/parser.odin +++ b/core/odin/parser/parser.odin @@ -1312,7 +1312,7 @@ parse_stmt :: proc(p: ^Parser) -> ^ast.Stmt { } results: [dynamic]^ast.Expr - for p.curr_tok.kind != .Semicolon { + for p.curr_tok.kind != .Semicolon && p.curr_tok.kind != .Close_Brace { result := parse_expr(p, false) append(&results, result) if p.curr_tok.kind != .Comma || From 3d7d3471924574beee08fc304a6daf6a8707d723 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 20 Jan 2022 19:56:05 +0000 Subject: [PATCH 004/190] Convert `ODIN_OS` and `ODIN_ARCH` to use enums rather than use strings --- core/c/c.odin | 8 ++-- core/c/libc/complex.odin | 4 +- core/c/libc/ctype.odin | 4 +- core/c/libc/errno.odin | 10 ++--- core/c/libc/math.odin | 4 +- core/c/libc/setjmp.odin | 6 +-- core/c/libc/signal.odin | 10 ++--- core/c/libc/stdio.odin | 10 ++--- core/c/libc/stdlib.odin | 10 ++--- core/c/libc/string.odin | 4 +- core/c/libc/threads.odin | 6 +-- core/c/libc/time.odin | 8 ++-- core/c/libc/uchar.odin | 4 +- core/c/libc/wchar.odin | 4 +- core/c/libc/wctype.odin | 10 ++--- core/crypto/_fiat/field_poly1305/field.odin | 2 +- core/crypto/chacha20/chacha20.odin | 2 +- core/crypto/rand_generic.odin | 2 +- core/image/png/example.odin | 2 +- core/image/png/helpers.odin | 2 +- core/os/file_windows.odin | 2 +- core/os/os.odin | 2 +- core/os/os2/user.odin | 16 ++++---- core/os/os_darwin.odin | 2 +- core/os/os_linux.odin | 26 ++++++------- core/os/stream.odin | 6 +-- core/path/filepath/match.odin | 10 ++--- core/path/filepath/path.odin | 4 +- core/path/filepath/path_unix.odin | 4 +- core/runtime/core.odin | 2 +- core/runtime/default_allocators_nil.odin | 2 +- core/runtime/default_temporary_allocator.odin | 2 +- core/runtime/entry_windows.odin | 2 +- core/runtime/error_checks.odin | 4 +- core/runtime/internal.odin | 2 +- core/runtime/procs.odin | 4 +- core/sync/sync2/primitives.odin | 2 +- core/sync/sync2/primitives_internal.odin | 2 +- core/sys/unix/syscalls_linux.odin | 8 ++-- core/time/time_unix.odin | 2 +- src/checker.cpp | 37 +++++++++++++++++-- vendor/ENet/enet.odin | 4 +- vendor/OpenGL/helpers.odin | 2 +- vendor/botan/bindings/botan.odin | 6 +-- vendor/glfw/bindings/bindings.odin | 6 +-- vendor/glfw/native.odin | 6 +-- vendor/miniaudio/common.odin | 6 +-- vendor/miniaudio/data_conversion.odin | 4 +- vendor/miniaudio/decoding.odin | 4 +- vendor/miniaudio/device_io_procs.odin | 4 +- vendor/miniaudio/device_io_types.odin | 32 ++++++++-------- vendor/miniaudio/encoding.odin | 4 +- vendor/miniaudio/filtering.odin | 4 +- vendor/miniaudio/generation.odin | 4 +- vendor/miniaudio/logging.odin | 4 +- vendor/miniaudio/utilities.odin | 4 +- vendor/miniaudio/vfs.odin | 4 +- vendor/portmidi/portmidi.odin | 2 +- vendor/portmidi/util.odin | 2 +- vendor/raylib/raylib.odin | 6 +-- vendor/raylib/rlgl.odin | 6 +-- vendor/sdl2/image/sdl_image.odin | 8 ++-- vendor/sdl2/mixer/sdl_mixer.odin | 8 ++-- vendor/sdl2/net/sdl_net.odin | 8 ++-- vendor/sdl2/sdl2.odin | 8 ++-- vendor/sdl2/sdl_audio.odin | 8 ++-- vendor/sdl2/sdl_blendmode.odin | 8 ++-- vendor/sdl2/sdl_cpuinfo.odin | 8 ++-- vendor/sdl2/sdl_events.odin | 8 ++-- vendor/sdl2/sdl_gamecontroller.odin | 8 ++-- vendor/sdl2/sdl_gesture_haptic.odin | 8 ++-- vendor/sdl2/sdl_hints.odin | 8 ++-- vendor/sdl2/sdl_joystick.odin | 8 ++-- vendor/sdl2/sdl_keyboard.odin | 8 ++-- vendor/sdl2/sdl_log.odin | 8 ++-- vendor/sdl2/sdl_messagebox.odin | 8 ++-- vendor/sdl2/sdl_metal.odin | 8 ++-- vendor/sdl2/sdl_mouse.odin | 8 ++-- vendor/sdl2/sdl_mutex.odin | 8 ++-- vendor/sdl2/sdl_pixels.odin | 8 ++-- vendor/sdl2/sdl_rect.odin | 8 ++-- vendor/sdl2/sdl_render.odin | 8 ++-- vendor/sdl2/sdl_rwops.odin | 8 ++-- vendor/sdl2/sdl_stdinc.odin | 8 ++-- vendor/sdl2/sdl_surface.odin | 8 ++-- vendor/sdl2/sdl_system.odin | 8 ++-- vendor/sdl2/sdl_syswm.odin | 8 ++-- vendor/sdl2/sdl_thread.odin | 8 ++-- vendor/sdl2/sdl_timer.odin | 8 ++-- vendor/sdl2/sdl_touch.odin | 8 ++-- vendor/sdl2/sdl_video.odin | 8 ++-- vendor/sdl2/sdl_vulkan.odin | 8 ++-- vendor/sdl2/ttf/sdl_ttf.odin | 8 ++-- vendor/stb/image/stb_image.odin | 4 +- vendor/stb/image/stb_image_resize.odin | 4 +- vendor/stb/image/stb_image_write.odin | 4 +- vendor/stb/rect_pack/stb_rect_pack.odin | 4 +- vendor/stb/truetype/stb_truetype.odin | 4 +- vendor/stb/vorbis/stb_vorbis.odin | 4 +- .../vulkan/_gen/create_vulkan_odin_wrapper.py | 2 +- vendor/vulkan/structs.odin | 2 +- 101 files changed, 341 insertions(+), 310 deletions(-) diff --git a/core/c/c.odin b/core/c/c.odin index d0b8e377f..05732476f 100644 --- a/core/c/c.odin +++ b/core/c/c.odin @@ -7,20 +7,20 @@ char :: builtin.u8 // assuming -funsigned-char schar :: builtin.i8 short :: builtin.i16 int :: builtin.i32 -long :: builtin.i32 when (ODIN_OS == "windows" || size_of(builtin.rawptr) == 4) else builtin.i64 +long :: builtin.i32 when (ODIN_OS == .Windows || size_of(builtin.rawptr) == 4) else builtin.i64 longlong :: builtin.i64 uchar :: builtin.u8 ushort :: builtin.u16 uint :: builtin.u32 -ulong :: builtin.u32 when (ODIN_OS == "windows" || size_of(builtin.rawptr) == 4) else builtin.u64 +ulong :: builtin.u32 when (ODIN_OS == .Windows || size_of(builtin.rawptr) == 4) else builtin.u64 ulonglong :: builtin.u64 bool :: builtin.bool size_t :: builtin.uint ssize_t :: builtin.int -wchar_t :: builtin.u16 when (ODIN_OS == "windows") else builtin.u32 +wchar_t :: builtin.u16 when (ODIN_OS == .Windows) else builtin.u32 float :: builtin.f32 double :: builtin.f64 @@ -48,7 +48,7 @@ int_least64_t :: builtin.i64 uint_least64_t :: builtin.u64 // Same on Windows, Linux, and FreeBSD -when ODIN_ARCH == "i386" || ODIN_ARCH == "amd64" { +when ODIN_ARCH == .i386 || ODIN_ARCH == .amd64 { int_fast8_t :: builtin.i8 uint_fast8_t :: builtin.u8 int_fast16_t :: builtin.i32 diff --git a/core/c/libc/complex.odin b/core/c/libc/complex.odin index 62b28f0cd..22c422cce 100644 --- a/core/c/libc/complex.odin +++ b/core/c/libc/complex.odin @@ -2,9 +2,9 @@ package libc // 7.3 Complex arithmetic -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import libc "system:libucrt.lib" -} else when ODIN_OS == "darwin" { +} else when ODIN_OS == .Darwin { foreign import libc "system:System.framework" } else { foreign import libc "system:c" diff --git a/core/c/libc/ctype.odin b/core/c/libc/ctype.odin index 05d9dcd37..185385a5e 100644 --- a/core/c/libc/ctype.odin +++ b/core/c/libc/ctype.odin @@ -1,8 +1,8 @@ package libc -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import libc "system:libucrt.lib" -} else when ODIN_OS == "darwin" { +} else when ODIN_OS == .Darwin { foreign import libc "system:System.framework" } else { foreign import libc "system:c" diff --git a/core/c/libc/errno.odin b/core/c/libc/errno.odin index 8ebe2f734..ecde6af59 100644 --- a/core/c/libc/errno.odin +++ b/core/c/libc/errno.odin @@ -2,9 +2,9 @@ package libc // 7.5 Errors -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import libc "system:libucrt.lib" -} else when ODIN_OS == "darwin" { +} else when ODIN_OS == .Darwin { foreign import libc "system:System.framework" } else { foreign import libc "system:c" @@ -14,7 +14,7 @@ when ODIN_OS == "windows" { // EDOM, // EILSEQ // ERANGE -when ODIN_OS == "linux" || ODIN_OS == "freebsd" { +when ODIN_OS == .Linux || ODIN_OS == .FreeBSD { @(private="file") @(default_calling_convention="c") foreign libc { @@ -27,7 +27,7 @@ when ODIN_OS == "linux" || ODIN_OS == "freebsd" { ERANGE :: 34 } -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { @(private="file") @(default_calling_convention="c") foreign libc { @@ -40,7 +40,7 @@ when ODIN_OS == "windows" { ERANGE :: 34 } -when ODIN_OS == "darwin" { +when ODIN_OS == .Darwin { @(private="file") @(default_calling_convention="c") foreign libc { diff --git a/core/c/libc/math.odin b/core/c/libc/math.odin index ee702b82e..97f77236f 100644 --- a/core/c/libc/math.odin +++ b/core/c/libc/math.odin @@ -4,9 +4,9 @@ package libc import "core:intrinsics" -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import libc "system:libucrt.lib" -} else when ODIN_OS == "darwin" { +} else when ODIN_OS == .Darwin { foreign import libc "system:System.framework" } else { foreign import libc "system:c" diff --git a/core/c/libc/setjmp.odin b/core/c/libc/setjmp.odin index dcd4a9c64..c2cd1d047 100644 --- a/core/c/libc/setjmp.odin +++ b/core/c/libc/setjmp.odin @@ -2,14 +2,14 @@ package libc // 7.13 Nonlocal jumps -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import libc "system:libucrt.lib" -} else when ODIN_OS == "darwin" { +} else when ODIN_OS == .Darwin { foreign import libc "system:System.framework" } else { foreign import libc "system:c" } -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { @(default_calling_convention="c") foreign libc { // 7.13.1 Save calling environment diff --git a/core/c/libc/signal.odin b/core/c/libc/signal.odin index e1044dc02..186b74d8c 100644 --- a/core/c/libc/signal.odin +++ b/core/c/libc/signal.odin @@ -2,9 +2,9 @@ package libc // 7.14 Signal handling -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import libc "system:libucrt.lib" -} else when ODIN_OS == "darwin" { +} else when ODIN_OS == .Darwin { foreign import libc "system:System.framework" } else { foreign import libc "system:c" @@ -21,7 +21,7 @@ foreign libc { raise :: proc(sig: int) -> int --- } -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { SIG_ERR :: rawptr(~uintptr(0)) SIG_DFL :: rawptr(uintptr(0)) SIG_IGN :: rawptr(uintptr(1)) @@ -34,7 +34,7 @@ when ODIN_OS == "windows" { SIGTERM :: 15 } -when ODIN_OS == "linux" || ODIN_OS == "freebsd" { +when ODIN_OS == .Linux || ODIN_OS == .FreeBSD { SIG_ERR :: rawptr(~uintptr(0)) SIG_DFL :: rawptr(uintptr(0)) SIG_IGN :: rawptr(uintptr(1)) @@ -47,7 +47,7 @@ when ODIN_OS == "linux" || ODIN_OS == "freebsd" { SIGTERM :: 15 } -when ODIN_OS == "darwin" { +when ODIN_OS == .Darwin { SIG_ERR :: rawptr(~uintptr(0)) SIG_DFL :: rawptr(uintptr(0)) SIG_IGN :: rawptr(uintptr(1)) diff --git a/core/c/libc/stdio.odin b/core/c/libc/stdio.odin index 4a39c22e9..33be34625 100644 --- a/core/c/libc/stdio.odin +++ b/core/c/libc/stdio.odin @@ -1,8 +1,8 @@ package libc -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import libc "system:libucrt.lib" -} else when ODIN_OS == "darwin" { +} else when ODIN_OS == .Darwin { foreign import libc "system:System.framework" } else { foreign import libc "system:c" @@ -13,7 +13,7 @@ when ODIN_OS == "windows" { FILE :: struct {} // MSVCRT compatible. -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { _IOFBF :: 0x0000 _IONBF :: 0x0004 _IOLBF :: 0x0040 @@ -48,7 +48,7 @@ when ODIN_OS == "windows" { } // GLIBC and MUSL compatible. -when ODIN_OS == "linux" { +when ODIN_OS == .Linux { fpos_t :: struct #raw_union { _: [16]char, _: longlong, _: double, } _IOFBF :: 0 @@ -78,7 +78,7 @@ when ODIN_OS == "linux" { } } -when ODIN_OS == "darwin" { +when ODIN_OS == .Darwin { fpos_t :: distinct i64 _IOFBF :: 0 diff --git a/core/c/libc/stdlib.odin b/core/c/libc/stdlib.odin index b368c0cee..a278db0ef 100644 --- a/core/c/libc/stdlib.odin +++ b/core/c/libc/stdlib.odin @@ -2,15 +2,15 @@ package libc // 7.22 General utilities -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import libc "system:libucrt.lib" -} else when ODIN_OS == "darwin" { +} else when ODIN_OS == .Darwin { foreign import libc "system:System.framework" } else { foreign import libc "system:c" } -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { RAND_MAX :: 0x7fff @(private="file") @@ -24,7 +24,7 @@ when ODIN_OS == "windows" { } } -when ODIN_OS == "linux" { +when ODIN_OS == .Linux { RAND_MAX :: 0x7fffffff // GLIBC and MUSL only @@ -40,7 +40,7 @@ when ODIN_OS == "linux" { } -when ODIN_OS == "darwin" { +when ODIN_OS == .Darwin { RAND_MAX :: 0x7fffffff // GLIBC and MUSL only diff --git a/core/c/libc/string.odin b/core/c/libc/string.odin index c91124dcb..8f83ee1b9 100644 --- a/core/c/libc/string.odin +++ b/core/c/libc/string.odin @@ -4,9 +4,9 @@ import "core:runtime" // 7.24 String handling -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import libc "system:libucrt.lib" -} else when ODIN_OS == "darwin" { +} else when ODIN_OS == .Darwin { foreign import libc "system:System.framework" } else { foreign import libc "system:c" diff --git a/core/c/libc/threads.odin b/core/c/libc/threads.odin index ad305b517..a7a45150d 100644 --- a/core/c/libc/threads.odin +++ b/core/c/libc/threads.odin @@ -5,7 +5,7 @@ package libc thrd_start_t :: proc "c" (rawptr) -> int tss_dtor_t :: proc "c" (rawptr) -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import libc { "system:libucrt.lib", "system:msvcprt.lib" @@ -74,7 +74,7 @@ when ODIN_OS == "windows" { } // GLIBC and MUSL compatible constants and types. -when ODIN_OS == "linux" { +when ODIN_OS == .Linux { foreign import libc { "system:c", "system:pthread" @@ -138,6 +138,6 @@ when ODIN_OS == "linux" { } -when ODIN_OS == "darwin" { +when ODIN_OS == .Darwin { // TODO: find out what this is meant to be! } diff --git a/core/c/libc/time.odin b/core/c/libc/time.odin index 96e80e216..b3539a227 100644 --- a/core/c/libc/time.odin +++ b/core/c/libc/time.odin @@ -2,9 +2,9 @@ package libc // 7.27 Date and time -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import libc "system:libucrt.lib" -} else when ODIN_OS == "darwin" { +} else when ODIN_OS == .Darwin { foreign import libc "system:System.framework" } else { foreign import libc "system:c" @@ -12,7 +12,7 @@ when ODIN_OS == "windows" { // We enforce 64-bit time_t and timespec as there is no reason to use 32-bit as // we approach the 2038 problem. Windows has defaulted to this since VC8 (2005). -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign libc { // 7.27.2 Time manipulation functions clock :: proc() -> clock_t --- @@ -45,7 +45,7 @@ when ODIN_OS == "windows" { } } -when ODIN_OS == "linux" || ODIN_OS == "freebsd" || ODIN_OS == "darwin" { +when ODIN_OS == .Linux || ODIN_OS == .FreeBSD || ODIN_OS == .Darwin { @(default_calling_convention="c") foreign libc { // 7.27.2 Time manipulation functions diff --git a/core/c/libc/uchar.odin b/core/c/libc/uchar.odin index e49c29e51..a10969ceb 100644 --- a/core/c/libc/uchar.odin +++ b/core/c/libc/uchar.odin @@ -2,9 +2,9 @@ package libc // 7.28 Unicode utilities -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import libc "system:libucrt.lib" -} else when ODIN_OS == "darwin" { +} else when ODIN_OS == .Darwin { foreign import libc "system:System.framework" } else { foreign import libc "system:c" diff --git a/core/c/libc/wchar.odin b/core/c/libc/wchar.odin index fc206e494..f2aa8410e 100644 --- a/core/c/libc/wchar.odin +++ b/core/c/libc/wchar.odin @@ -2,9 +2,9 @@ package libc // 7.29 Extended multibyte and wide character utilities -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import libc "system:libucrt.lib" -} else when ODIN_OS == "darwin" { +} else when ODIN_OS == .Darwin { foreign import libc "system:System.framework" } else { foreign import libc "system:c" diff --git a/core/c/libc/wctype.odin b/core/c/libc/wctype.odin index 47f17e0b4..942726ba6 100644 --- a/core/c/libc/wctype.odin +++ b/core/c/libc/wctype.odin @@ -2,25 +2,25 @@ package libc // 7.30 Wide character classification and mapping utilities -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import libc "system:libucrt.lib" -} else when ODIN_OS == "darwin" { +} else when ODIN_OS == .Darwin { foreign import libc "system:System.framework" } else { foreign import libc "system:c" } -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { wctrans_t :: distinct wchar_t wctype_t :: distinct ushort } -when ODIN_OS == "linux" { +when ODIN_OS == .Linux { wctrans_t :: distinct intptr_t wctype_t :: distinct ulong } -when ODIN_OS == "darwin" { +when ODIN_OS == .Darwin { wctrans_t :: distinct int wctype_t :: distinct u32 } diff --git a/core/crypto/_fiat/field_poly1305/field.odin b/core/crypto/_fiat/field_poly1305/field.odin index 4ed8acbff..ca458e079 100644 --- a/core/crypto/_fiat/field_poly1305/field.odin +++ b/core/crypto/_fiat/field_poly1305/field.odin @@ -22,7 +22,7 @@ fe_from_bytes :: #force_inline proc (out1: ^Tight_Field_Element, arg1: []byte, a assert(len(arg1) == 16) - when ODIN_ARCH == "i386" || ODIN_ARCH == "amd64" { + when ODIN_ARCH == .i386 || ODIN_ARCH == .amd64 { // While it may be unwise to do deserialization here on our // own when fiat-crypto provides equivalent functionality, // doing it this way provides a little under 3x performance diff --git a/core/crypto/chacha20/chacha20.odin b/core/crypto/chacha20/chacha20.odin index e32dacb2c..229949c22 100644 --- a/core/crypto/chacha20/chacha20.odin +++ b/core/crypto/chacha20/chacha20.odin @@ -346,7 +346,7 @@ _do_blocks :: proc (ctx: ^Context, dst, src: []byte, nr_blocks: int) { // Until dedicated assembly can be written leverage the fact that // the callers of this routine ensure that src/dst are valid. - when ODIN_ARCH == "i386" || ODIN_ARCH == "amd64" { + when ODIN_ARCH == .i386 || ODIN_ARCH == .amd64 { // util.PUT_U32_LE/util.U32_LE are not required on little-endian // systems that also happen to not be strict about aligned // memory access. diff --git a/core/crypto/rand_generic.odin b/core/crypto/rand_generic.odin index 98890b5b1..be6987ee2 100644 --- a/core/crypto/rand_generic.odin +++ b/core/crypto/rand_generic.odin @@ -1,6 +1,6 @@ package crypto -when ODIN_OS != "linux" { +when ODIN_OS != .Linux { _rand_bytes :: proc (dst: []byte) { unimplemented("crypto: rand_bytes not supported on this OS") } diff --git a/core/image/png/example.odin b/core/image/png/example.odin index f4eb5128e..17436c260 100644 --- a/core/image/png/example.odin +++ b/core/image/png/example.odin @@ -207,7 +207,7 @@ write_image_as_ppm :: proc(filename: string, image: ^image.Image) -> (success: b } mode: int = 0 - when ODIN_OS == "linux" || ODIN_OS == "darwin" { + when ODIN_OS == .Linux || ODIN_OS == .Darwin { // NOTE(justasd): 644 (owner read, write; group read; others read) mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH } diff --git a/core/image/png/helpers.odin b/core/image/png/helpers.odin index ecc0183bc..6ec674544 100644 --- a/core/image/png/helpers.odin +++ b/core/image/png/helpers.odin @@ -443,7 +443,7 @@ when false { } mode: int = 0 - when ODIN_OS == "linux" || ODIN_OS == "darwin" { + when ODIN_OS == .Linux || ODIN_OS == .Darwin { // NOTE(justasd): 644 (owner read, write; group read; others read) mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH } diff --git a/core/os/file_windows.odin b/core/os/file_windows.odin index 419f8bbc2..8a0f2ed64 100644 --- a/core/os/file_windows.odin +++ b/core/os/file_windows.odin @@ -399,7 +399,7 @@ is_abs :: proc(path: string) -> bool { if len(path) > 0 && path[0] == '/' { return true } - when ODIN_OS == "windows" { + when ODIN_OS == .Windows { if len(path) > 2 { switch path[0] { case 'A'..='Z', 'a'..='z': diff --git a/core/os/os.odin b/core/os/os.odin index 83158be80..19a8099ef 100644 --- a/core/os/os.odin +++ b/core/os/os.odin @@ -139,7 +139,7 @@ write_entire_file :: proc(name: string, data: []byte, truncate := true) -> (succ } mode: int = 0 - when OS == "linux" || OS == "darwin" { + when OS == .Linux || OS == .Darwin { // NOTE(justasd): 644 (owner read, write; group read; others read) mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH } diff --git a/core/os/os2/user.odin b/core/os/os2/user.odin index 6dd99c621..976e61bb1 100644 --- a/core/os/os2/user.odin +++ b/core/os/os2/user.odin @@ -3,13 +3,13 @@ package os2 import "core:strings" user_cache_dir :: proc(allocator := context.allocator) -> (dir: string, is_defined: bool) { - switch ODIN_OS { - case "windows": + #partial switch ODIN_OS { + case .Windows: dir = get_env("LocalAppData") if dir != "" { dir = strings.clone(dir, allocator) } - case "darwin": + case .Darwin: dir = get_env("HOME") if dir != "" { dir = strings.concatenate({dir, "/Library/Caches"}, allocator) @@ -29,13 +29,13 @@ user_cache_dir :: proc(allocator := context.allocator) -> (dir: string, is_defin } user_config_dir :: proc(allocator := context.allocator) -> (dir: string, is_defined: bool) { - switch ODIN_OS { - case "windows": + #partial switch ODIN_OS { + case .Windows: dir = get_env("AppData") if dir != "" { dir = strings.clone(dir, allocator) } - case "darwin": + case .Darwin: dir = get_env("HOME") if dir != "" { dir = strings.concatenate({dir, "/Library/Application Support"}, allocator) @@ -56,8 +56,8 @@ user_config_dir :: proc(allocator := context.allocator) -> (dir: string, is_defi user_home_dir :: proc() -> (dir: string, is_defined: bool) { env := "HOME" - switch ODIN_OS { - case "windows": + #partial switch ODIN_OS { + case .Windows: env = "USERPROFILE" } if v := get_env(env); v != "" { diff --git a/core/os/os_darwin.odin b/core/os/os_darwin.odin index b32453a5d..4828c5167 100644 --- a/core/os/os_darwin.odin +++ b/core/os/os_darwin.odin @@ -335,7 +335,7 @@ open :: proc(path: string, flags: int = O_RDWR, mode: int = 0) -> (Handle, Errno return INVALID_HANDLE, 1 } -when ODIN_OS == "darwin" && ODIN_ARCH == "arm64" { +when ODIN_OS == .Darwin && ODIN_ARCH == .arm64 { if mode != 0 { err := fchmod(handle, cast(u16)mode) if err != 0 { diff --git a/core/os/os_linux.odin b/core/os/os_linux.odin index 1c796f1b8..3eb76249c 100644 --- a/core/os/os_linux.odin +++ b/core/os/os_linux.odin @@ -271,7 +271,7 @@ AT_REMOVEDIR :: uintptr(0x200) AT_SYMLINK_NOFOLLOW :: uintptr(0x100) _unix_open :: proc(path: cstring, flags: int, mode: int = 0o000) -> Handle { - when ODIN_ARCH != "arm64" { + when ODIN_ARCH != .arm64 { res := int(intrinsics.syscall(unix.SYS_open, uintptr(rawptr(path)), uintptr(flags), uintptr(mode))) } else { // NOTE: arm64 does not have open res := int(intrinsics.syscall(unix.SYS_openat, uintptr(AT_FDCWD), uintptr(rawptr(path), uintptr(flags), uintptr(mode)))) @@ -292,7 +292,7 @@ _unix_write :: proc(fd: Handle, buf: rawptr, size: uint) -> int { } _unix_seek :: proc(fd: Handle, offset: i64, whence: int) -> i64 { - when ODIN_ARCH == "amd64" || ODIN_ARCH == "arm64" { + when ODIN_ARCH == .amd64 || ODIN_ARCH == .arm64 { return i64(intrinsics.syscall(unix.SYS_lseek, uintptr(fd), uintptr(offset), uintptr(whence))) } else { low := uintptr(offset & 0xFFFFFFFF) @@ -304,9 +304,9 @@ _unix_seek :: proc(fd: Handle, offset: i64, whence: int) -> i64 { } _unix_stat :: proc(path: cstring, stat: ^OS_Stat) -> int { - when ODIN_ARCH == "amd64" { + when ODIN_ARCH == .amd64 { return int(intrinsics.syscall(unix.SYS_stat, uintptr(rawptr(path)), uintptr(stat))) - } else when ODIN_ARCH != "arm64" { + } else when ODIN_ARCH != .arm64 { return int(intrinsics.syscall(unix.SYS_stat64, uintptr(rawptr(path)), uintptr(stat))) } else { // NOTE: arm64 does not have stat return int(intrinsics.syscall(unix.SYS_fstatat, uintptr(AT_FDCWD), uintptr(rawptr(path)), uintptr(stat), 0)) @@ -314,7 +314,7 @@ _unix_stat :: proc(path: cstring, stat: ^OS_Stat) -> int { } _unix_fstat :: proc(fd: Handle, stat: ^OS_Stat) -> int { - when ODIN_ARCH == "amd64" || ODIN_ARCH == "arm64" { + when ODIN_ARCH == .amd64 || ODIN_ARCH == .arm64 { return int(intrinsics.syscall(unix.SYS_fstat, uintptr(fd), uintptr(stat))) } else { return int(intrinsics.syscall(unix.SYS_fstat64, uintptr(fd), uintptr(stat))) @@ -322,9 +322,9 @@ _unix_fstat :: proc(fd: Handle, stat: ^OS_Stat) -> int { } _unix_lstat :: proc(path: cstring, stat: ^OS_Stat) -> int { - when ODIN_ARCH == "amd64" { + when ODIN_ARCH == .amd64 { return int(intrinsics.syscall(unix.SYS_lstat, uintptr(rawptr(path)), uintptr(stat))) - } else when ODIN_ARCH != "arm64" { + } else when ODIN_ARCH != .arm64 { return int(intrinsics.syscall(unix.SYS_lstat64, uintptr(rawptr(path)), uintptr(stat))) } else { // NOTE: arm64 does not have any lstat return int(intrinsics.syscall(unix.SYS_fstatat, uintptr(AT_FDCWD), uintptr(rawptr(path)), uintptr(stat), AT_SYMLINK_NOFOLLOW)) @@ -332,7 +332,7 @@ _unix_lstat :: proc(path: cstring, stat: ^OS_Stat) -> int { } _unix_readlink :: proc(path: cstring, buf: rawptr, bufsiz: uint) -> int { - when ODIN_ARCH != "arm64" { + when ODIN_ARCH != .arm64 { return int(intrinsics.syscall(unix.SYS_readlink, uintptr(rawptr(path)), uintptr(buf), uintptr(bufsiz))) } else { // NOTE: arm64 does not have readlink return int(intrinsics.syscall(unix.SYS_readlinkat, uintptr(AT_FDCWD), uintptr(rawptr(path)), uintptr(buf), uintptr(bufsiz))) @@ -340,7 +340,7 @@ _unix_readlink :: proc(path: cstring, buf: rawptr, bufsiz: uint) -> int { } _unix_access :: proc(path: cstring, mask: int) -> int { - when ODIN_ARCH != "arm64" { + when ODIN_ARCH != .arm64 { return int(intrinsics.syscall(unix.SYS_access, uintptr(rawptr(path)), uintptr(mask))) } else { // NOTE: arm64 does not have access return int(intrinsics.syscall(unix.SYS_faccessat, uintptr(AT_FDCWD), uintptr(rawptr(path)), uintptr(mask))) @@ -356,7 +356,7 @@ _unix_chdir :: proc(path: cstring) -> int { } _unix_rename :: proc(old, new: cstring) -> int { - when ODIN_ARCH != "arm64" { + when ODIN_ARCH != .arm64 { return int(intrinsics.syscall(unix.SYS_rename, uintptr(rawptr(old)), uintptr(rawptr(new)))) } else { // NOTE: arm64 does not have rename return int(intrinsics.syscall(unix.SYS_renameat, uintptr(AT_FDCWD), uintptr(rawptr(old)), uintptr(rawptr(new)))) @@ -364,7 +364,7 @@ _unix_rename :: proc(old, new: cstring) -> int { } _unix_unlink :: proc(path: cstring) -> int { - when ODIN_ARCH != "arm64" { + when ODIN_ARCH != .arm64 { return int(intrinsics.syscall(unix.SYS_unlink, uintptr(rawptr(path)))) } else { // NOTE: arm64 does not have unlink return int(intrinsics.syscall(unix.SYS_unlinkat, uintptr(AT_FDCWD), uintptr(rawptr(path), 0))) @@ -372,7 +372,7 @@ _unix_unlink :: proc(path: cstring) -> int { } _unix_rmdir :: proc(path: cstring) -> int { - when ODIN_ARCH != "arm64" { + when ODIN_ARCH != .arm64 { return int(intrinsics.syscall(unix.SYS_rmdir, uintptr(rawptr(path)))) } else { // NOTE: arm64 does not have rmdir return int(intrinsics.syscall(unix.SYS_unlinkat, uintptr(AT_FDCWD), uintptr(rawptr(path)), AT_REMOVEDIR)) @@ -380,7 +380,7 @@ _unix_rmdir :: proc(path: cstring) -> int { } _unix_mkdir :: proc(path: cstring, mode: u32) -> int { - when ODIN_ARCH != "arm64" { + when ODIN_ARCH != .arm64 { return int(intrinsics.syscall(unix.SYS_mkdir, uintptr(rawptr(path)), uintptr(mode))) } else { // NOTE: arm64 does not have mkdir return int(intrinsics.syscall(unix.SYS_mkdirat, uintptr(AT_FDCWD), uintptr(rawptr(path)), uintptr(mode))) diff --git a/core/os/stream.odin b/core/os/stream.odin index 5cf5c8405..2c6e1d47f 100644 --- a/core/os/stream.odin +++ b/core/os/stream.odin @@ -19,7 +19,7 @@ _file_stream_vtable := &io.Stream_VTable{ return }, impl_read_at = proc(s: io.Stream, p: []byte, offset: i64) -> (n: int, err: io.Error) { - when ODIN_OS == "windows" || ODIN_OS == "wasi" { + when ODIN_OS == .Windows || ODIN_OS == .WASI { fd := Handle(uintptr(s.stream_data)) os_err: Errno n, os_err = read_at(fd, p, offset) @@ -33,7 +33,7 @@ _file_stream_vtable := &io.Stream_VTable{ return }, impl_write_at = proc(s: io.Stream, p: []byte, offset: i64) -> (n: int, err: io.Error) { - when ODIN_OS == "windows" || ODIN_OS == "wasi" { + when ODIN_OS == .Windows || ODIN_OS == .WASI { fd := Handle(uintptr(s.stream_data)) os_err: Errno n, os_err = write_at(fd, p, offset) @@ -53,7 +53,7 @@ _file_stream_vtable := &io.Stream_VTable{ return sz }, impl_flush = proc(s: io.Stream) -> io.Error { - when ODIN_OS == "windows" { + when ODIN_OS == .Windows { fd := Handle(uintptr(s.stream_data)) flush(fd) } else { diff --git a/core/path/filepath/match.odin b/core/path/filepath/match.odin index cba44953d..c045f3ece 100644 --- a/core/path/filepath/match.odin +++ b/core/path/filepath/match.odin @@ -89,7 +89,7 @@ scan_chunk :: proc(pattern: string) -> (star: bool, chunk, rest: string) { scan_loop: for i = 0; i < len(pattern); i += 1 { switch pattern[i] { case '\\': - when ODIN_OS != "windows" { + when ODIN_OS != .Windows { if i+1 < len(pattern) { i += 1 } @@ -161,7 +161,7 @@ match_chunk :: proc(chunk, s: string) -> (rest: string, ok: bool, err: Match_Err chunk = chunk[1:] case '\\': - when ODIN_OS != "windows" { + when ODIN_OS != .Windows { chunk = chunk[1:] if len(chunk) == 0 { err = .Syntax_Error @@ -188,7 +188,7 @@ get_escape :: proc(chunk: string) -> (r: rune, next_chunk: string, err: Match_Er return } chunk := chunk - if chunk[0] == '\\' && ODIN_OS != "windows" { + if chunk[0] == '\\' && ODIN_OS != .Windows { chunk = chunk[1:] if len(chunk) == 0 { err = .Syntax_Error @@ -231,7 +231,7 @@ glob :: proc(pattern: string, allocator := context.allocator) -> (matches: []str dir, file := split(pattern) volume_len := 0 - when ODIN_OS == "windows" { + when ODIN_OS == .Windows { volume_len, dir = clean_glob_path_windows(dir, temp_buf[:]) } else { dir = clean_glob_path(dir) @@ -308,7 +308,7 @@ _glob :: proc(dir, pattern: string, matches: ^[dynamic]string) -> (m: [dynamic]s @(private) has_meta :: proc(path: string) -> bool { - when ODIN_OS == "windows" { + when ODIN_OS == .Windows { CHARS :: `*?[` } else { CHARS :: `*?[\` diff --git a/core/path/filepath/path.odin b/core/path/filepath/path.odin index 39cd80a47..d6e36f649 100644 --- a/core/path/filepath/path.odin +++ b/core/path/filepath/path.odin @@ -8,7 +8,7 @@ import "core:strings" is_separator :: proc(c: byte) -> bool { switch c { case '/': return true - case '\\': return ODIN_OS == "windows" + case '\\': return ODIN_OS == .Windows } return false } @@ -32,7 +32,7 @@ volume_name :: proc(path: string) -> string { } volume_name_len :: proc(path: string) -> int { - if ODIN_OS == "windows" { + if ODIN_OS == .Windows { if len(path) < 2 { return 0 } diff --git a/core/path/filepath/path_unix.odin b/core/path/filepath/path_unix.odin index 1db528a2f..3e49c4710 100644 --- a/core/path/filepath/path_unix.odin +++ b/core/path/filepath/path_unix.odin @@ -1,7 +1,7 @@ //+build linux, darwin, freebsd package filepath -when ODIN_OS == "darwin" { +when ODIN_OS == .Darwin { foreign import libc "System.framework" } else { foreign import libc "system:c" @@ -54,7 +54,7 @@ foreign libc { @(link_name="free") _unix_free :: proc(ptr: rawptr) --- } -when ODIN_OS == "darwin" { +when ODIN_OS == .Darwin { @(private) foreign libc { @(link_name="__error") __error :: proc() -> ^i32 --- diff --git a/core/runtime/core.odin b/core/runtime/core.odin index 424650828..cd76b0bb5 100644 --- a/core/runtime/core.odin +++ b/core/runtime/core.odin @@ -539,7 +539,7 @@ __init_context :: proc "contextless" (c: ^Context) { } default_assertion_failure_proc :: proc(prefix, message: string, loc: Source_Code_Location) -> ! { - when ODIN_OS == "freestanding" { + when ODIN_OS == .Freestanding { // Do nothing } else { print_caller_location(loc) diff --git a/core/runtime/default_allocators_nil.odin b/core/runtime/default_allocators_nil.odin index ccb4a3381..04dea0e19 100644 --- a/core/runtime/default_allocators_nil.odin +++ b/core/runtime/default_allocators_nil.odin @@ -32,7 +32,7 @@ nil_allocator :: proc() -> Allocator { -when ODIN_OS == "freestanding" { +when ODIN_OS == .Freestanding { default_allocator_proc :: nil_allocator_proc default_allocator :: nil_allocator } \ No newline at end of file diff --git a/core/runtime/default_temporary_allocator.odin b/core/runtime/default_temporary_allocator.odin index 01143e222..4337e555b 100644 --- a/core/runtime/default_temporary_allocator.odin +++ b/core/runtime/default_temporary_allocator.odin @@ -3,7 +3,7 @@ package runtime DEFAULT_TEMP_ALLOCATOR_BACKING_SIZE: int : #config(DEFAULT_TEMP_ALLOCATOR_BACKING_SIZE, 1<<22) -when ODIN_OS == "freestanding" || ODIN_OS == "js" || ODIN_DEFAULT_TO_NIL_ALLOCATOR { +when ODIN_OS == .Freestanding || ODIN_OS == .JS || ODIN_DEFAULT_TO_NIL_ALLOCATOR { Default_Temp_Allocator :: struct {} default_temp_allocator_init :: proc(s: ^Default_Temp_Allocator, size: int, backup_allocator := context.allocator) {} diff --git a/core/runtime/entry_windows.odin b/core/runtime/entry_windows.odin index 35a6bb421..2f323cb41 100644 --- a/core/runtime/entry_windows.odin +++ b/core/runtime/entry_windows.odin @@ -22,7 +22,7 @@ when ODIN_BUILD_MODE == .Dynamic { return true } } else when !ODIN_TEST && !ODIN_NO_ENTRY_POINT { - when ODIN_ARCH == "i386" || ODIN_NO_CRT { + when ODIN_ARCH == .i386 || ODIN_NO_CRT { @(link_name="mainCRTStartup", linkage="strong", require) mainCRTStartup :: proc "stdcall" () -> i32 { context = default_context() diff --git a/core/runtime/error_checks.odin b/core/runtime/error_checks.odin index 7f1aeb2d7..ed75cbea6 100644 --- a/core/runtime/error_checks.odin +++ b/core/runtime/error_checks.odin @@ -1,7 +1,7 @@ package runtime bounds_trap :: proc "contextless" () -> ! { - when ODIN_OS == "windows" { + when ODIN_OS == .Windows { windows_trap_array_bounds() } else { trap() @@ -9,7 +9,7 @@ bounds_trap :: proc "contextless" () -> ! { } type_assertion_trap :: proc "contextless" () -> ! { - when ODIN_OS == "windows" { + when ODIN_OS == .Windows { windows_trap_type_assertion() } else { trap() diff --git a/core/runtime/internal.odin b/core/runtime/internal.odin index 7b283a132..0d0e196c4 100644 --- a/core/runtime/internal.odin +++ b/core/runtime/internal.odin @@ -3,7 +3,7 @@ package runtime import "core:intrinsics" @(private="file") -IS_WASM :: ODIN_ARCH == "wasm32" || ODIN_ARCH == "wasm64" +IS_WASM :: ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64 @(private) RUNTIME_LINKAGE :: "strong" when ( diff --git a/core/runtime/procs.odin b/core/runtime/procs.odin index 961f6376f..5a1d11fe0 100644 --- a/core/runtime/procs.odin +++ b/core/runtime/procs.odin @@ -1,6 +1,6 @@ package runtime -when ODIN_NO_CRT && ODIN_OS == "windows" { +when ODIN_NO_CRT && ODIN_OS == .Windows { foreign import lib "system:NtDll.lib" @(private="file") @@ -25,7 +25,7 @@ when ODIN_NO_CRT && ODIN_OS == "windows" { RtlMoveMemory(dst, src, len) return dst } -} else when ODIN_NO_CRT || (ODIN_ARCH == "wasm32" || ODIN_ARCH == "wasm64") { +} else when ODIN_NO_CRT || (ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64) { @(link_name="memset", linkage="strong", require) memset :: proc "c" (ptr: rawptr, val: i32, len: int) -> rawptr { if ptr != nil && len != 0 { diff --git a/core/sync/sync2/primitives.odin b/core/sync/sync2/primitives.odin index 6d056d439..046ecbc35 100644 --- a/core/sync/sync2/primitives.odin +++ b/core/sync/sync2/primitives.odin @@ -11,7 +11,7 @@ current_thread_id :: proc "contextless" () -> int { // // A Mutex must not be copied after first use Mutex :: struct { - impl: _Mutex, + impl: _Mutex `This is a tag`, } // mutex_lock locks m diff --git a/core/sync/sync2/primitives_internal.odin b/core/sync/sync2/primitives_internal.odin index ae7e2599c..eb692c6ae 100644 --- a/core/sync/sync2/primitives_internal.odin +++ b/core/sync/sync2/primitives_internal.odin @@ -93,7 +93,7 @@ when #config(ODIN_SYNC_RECURSIVE_MUTEX_USE_FUTEX, true) { } -when ODIN_OS != "windows" { +when ODIN_OS != .Windows { RW_Mutex_State :: distinct uint RW_Mutex_State_Half_Width :: size_of(RW_Mutex_State)*8/2 RW_Mutex_State_Is_Writing :: RW_Mutex_State(1) diff --git a/core/sys/unix/syscalls_linux.odin b/core/sys/unix/syscalls_linux.odin index 3dc3d2c74..0082c7261 100644 --- a/core/sys/unix/syscalls_linux.odin +++ b/core/sys/unix/syscalls_linux.odin @@ -15,7 +15,7 @@ import "core:intrinsics" // 386: arch/x86/entry/syscalls/sycall_32.tbl // arm: arch/arm/tools/syscall.tbl -when ODIN_ARCH == "amd64" { +when ODIN_ARCH == .amd64 { SYS_read : uintptr : 0 SYS_write : uintptr : 1 SYS_open : uintptr : 2 @@ -374,7 +374,7 @@ when ODIN_ARCH == "amd64" { SYS_landlock_add_rule : uintptr : 445 SYS_landlock_restrict_self : uintptr : 446 SYS_memfd_secret : uintptr : 447 -} else when ODIN_ARCH == "arm64" { +} else when ODIN_ARCH == .arm64 { SYS_io_setup : uintptr : 0 SYS_io_destroy : uintptr : 1 SYS_io_submit : uintptr : 2 @@ -675,7 +675,7 @@ when ODIN_ARCH == "amd64" { SYS_landlock_create_ruleset : uintptr : 444 SYS_landlock_add_rule : uintptr : 445 SYS_landlock_restrict_self : uintptr : 446 -} else when ODIN_ARCH == "i386" { +} else when ODIN_ARCH == .i386 { SYS_restart_syscall : uintptr : 0 SYS_exit : uintptr : 1 SYS_fork : uintptr : 2 @@ -1112,7 +1112,7 @@ when ODIN_ARCH == "amd64" { SYS_landlock_add_rule : uintptr : 445 SYS_landlock_restrict_self : uintptr : 446 SYS_memfd_secret : uintptr : 447 -} else when ODIN_ARCH == "arm" { +} else when false /*ODIN_ARCH == .arm*/ { // TODO SYS_restart_syscall : uintptr : 0 SYS_exit : uintptr : 1 SYS_fork : uintptr : 2 diff --git a/core/time/time_unix.odin b/core/time/time_unix.odin index 0d765b72d..9c5c5cc35 100644 --- a/core/time/time_unix.odin +++ b/core/time/time_unix.odin @@ -3,7 +3,7 @@ package time IS_SUPPORTED :: true // NOTE: Times on Darwin are UTC. -when ODIN_OS == "darwin" { +when ODIN_OS == .Darwin { foreign import libc "System.framework" } else { foreign import libc "system:c" diff --git a/src/checker.cpp b/src/checker.cpp index 63a697072..055d0d356 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -856,11 +856,42 @@ void init_universal(void) { add_global_bool_constant("false", false); // TODO(bill): Set through flags in the compiler - add_global_string_constant("ODIN_OS", bc->ODIN_OS); - add_global_string_constant("ODIN_ARCH", bc->ODIN_ARCH); add_global_string_constant("ODIN_VENDOR", bc->ODIN_VENDOR); add_global_string_constant("ODIN_VERSION", bc->ODIN_VERSION); add_global_string_constant("ODIN_ROOT", bc->ODIN_ROOT); + + { + GlobalEnumValue values[TargetOs_COUNT] = { + {"Unknown", TargetOs_Invalid}, + {"Windows", TargetOs_windows}, + {"Darwin", TargetOs_darwin}, + {"Linux", TargetOs_linux}, + {"Essence", TargetOs_essence}, + {"FreeBSD", TargetOs_freebsd}, + {"WASI", TargetOs_wasi}, + {"JS", TargetOs_js}, + {"Freestanding", TargetOs_freestanding}, + }; + + auto fields = add_global_enum_type(str_lit("Odin_OS_Type"), values, gb_count_of(values)); + add_global_enum_constant(fields, "ODIN_OS", bc->metrics.os); + add_global_string_constant("ODIN_OS_STRING", target_os_names[bc->metrics.os]); + } + + { + GlobalEnumValue values[TargetArch_COUNT] = { + {"Unknown", TargetArch_Invalid}, + {"amd64", TargetArch_amd64}, + {"i386", TargetArch_i386}, + {"arm64", TargetArch_arm64}, + {"wasm32", TargetArch_wasm32}, + {"wasm64", TargetArch_wasm64}, + }; + + auto fields = add_global_enum_type(str_lit("Odin_Arch_Type"), values, gb_count_of(values)); + add_global_enum_constant(fields, "ODIN_ARCH", bc->metrics.arch); + add_global_string_constant("ODIN_ARCH_STRING", target_arch_names[bc->metrics.arch]); + } { GlobalEnumValue values[BuildMode_COUNT] = { @@ -875,7 +906,6 @@ void init_universal(void) { add_global_enum_constant(fields, "ODIN_BUILD_MODE", bc->build_mode); } - add_global_string_constant("ODIN_ENDIAN_STRING", target_endian_names[target_endians[bc->metrics.arch]]); { GlobalEnumValue values[TargetEndian_COUNT] = { {"Unknown", TargetEndian_Invalid}, @@ -886,6 +916,7 @@ void init_universal(void) { auto fields = add_global_enum_type(str_lit("Odin_Endian_Type"), values, gb_count_of(values)); add_global_enum_constant(fields, "ODIN_ENDIAN", target_endians[bc->metrics.arch]); + add_global_string_constant("ODIN_ENDIAN_STRING", target_endian_names[target_endians[bc->metrics.arch]]); } diff --git a/vendor/ENet/enet.odin b/vendor/ENet/enet.odin index 8d068fbfc..37e65b497 100644 --- a/vendor/ENet/enet.odin +++ b/vendor/ENet/enet.odin @@ -1,7 +1,7 @@ package ENet -when ODIN_OS == "windows" { - when ODIN_ARCH == "amd64" { +when ODIN_OS == .Windows { + when ODIN_ARCH == .amd64 { foreign import ENet { "lib/enet64.lib", "system:Ws2_32.lib", diff --git a/vendor/OpenGL/helpers.odin b/vendor/OpenGL/helpers.odin index 0a9cffefa..661de318c 100644 --- a/vendor/OpenGL/helpers.odin +++ b/vendor/OpenGL/helpers.odin @@ -188,7 +188,7 @@ load_shaders_source :: proc(vs_source, fs_source: string, binary_retrievable := load_shaders :: proc{load_shaders_file} -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { update_shader_if_changed :: proc( vertex_name, fragment_name: string, program: u32, diff --git a/vendor/botan/bindings/botan.odin b/vendor/botan/bindings/botan.odin index d1d88cda0..fdddc99a9 100644 --- a/vendor/botan/bindings/botan.odin +++ b/vendor/botan/bindings/botan.odin @@ -136,11 +136,11 @@ totp_t :: ^totp_struct fpe_struct :: struct{} fpe_t :: ^fpe_struct -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import botan_lib "botan.lib" -} else when ODIN_OS == "linux" { +} else when ODIN_OS == .Linux { foreign import botan_lib "system:botan-2" -} else when ODIN_OS == "darwin" { +} else when ODIN_OS == .Darwin { foreign import botan_lib "system:botan-2" } diff --git a/vendor/glfw/bindings/bindings.odin b/vendor/glfw/bindings/bindings.odin index 84905f603..f4e39015e 100644 --- a/vendor/glfw/bindings/bindings.odin +++ b/vendor/glfw/bindings/bindings.odin @@ -3,9 +3,9 @@ package glfw_bindings import "core:c" import vk "vendor:vulkan" -when ODIN_OS == "linux" { foreign import glfw "system:glfw" } // TODO: Add the billion-or-so static libs to link to in linux -when ODIN_OS == "darwin" { foreign import glfw "system:glfw" } -when ODIN_OS == "windows" { +when ODIN_OS == .Linux { foreign import glfw "system:glfw" } // TODO: Add the billion-or-so static libs to link to in linux +when ODIN_OS == .Darwin { foreign import glfw "system:glfw" } +when ODIN_OS == .Windows { foreign import glfw { "../lib/glfw3_mt.lib", "system:user32.lib", diff --git a/vendor/glfw/native.odin b/vendor/glfw/native.odin index 871c42af9..902b30656 100644 --- a/vendor/glfw/native.odin +++ b/vendor/glfw/native.odin @@ -1,6 +1,6 @@ package glfw -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { import win32 "core:sys/windows" foreign import glfw { "lib/glfw3.lib", "system:user32.lib", "system:gdi32.lib", "system:shell32.lib" } @@ -12,7 +12,7 @@ when ODIN_OS == "windows" { GetWin32Window :: proc(window: WindowHandle) -> win32.HWND --- GetWGLContext :: proc(window: WindowHandle) -> rawptr --- } -} else when ODIN_OS == "linux" { +} else when ODIN_OS == .Linux { // TODO: Native Linux // Display* glfwGetX11Display(void); // RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor); @@ -24,7 +24,7 @@ when ODIN_OS == "windows" { // struct wl_display* glfwGetWaylandDisplay(void); // struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor); // struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window); -} else when ODIN_OS == "darwin" { +} else when ODIN_OS == .Darwin { // TODO: Native Darwin // CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor); // id glfwGetCocoaWindow(GLFWwindow* window); diff --git a/vendor/miniaudio/common.odin b/vendor/miniaudio/common.odin index 62e32e8b1..75b66101f 100644 --- a/vendor/miniaudio/common.odin +++ b/vendor/miniaudio/common.odin @@ -2,8 +2,8 @@ package miniaudio import "core:c" -when ODIN_OS == "windows" { foreign import lib "lib/miniaudio.lib" } -when ODIN_OS == "linux" { foreign import lib "lib/miniaudio.a" } +when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" } +when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" } handle :: distinct rawptr @@ -270,7 +270,7 @@ thread_priority :: enum c.int { /* Spinlocks are 32-bit for compatibility reasons. */ spinlock :: distinct u32 -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { thread :: distinct rawptr mutex :: distinct rawptr event :: distinct rawptr diff --git a/vendor/miniaudio/data_conversion.odin b/vendor/miniaudio/data_conversion.odin index 1a5c9d265..8a53cc19e 100644 --- a/vendor/miniaudio/data_conversion.odin +++ b/vendor/miniaudio/data_conversion.odin @@ -2,8 +2,8 @@ package miniaudio import "core:c" -when ODIN_OS == "windows" { foreign import lib "lib/miniaudio.lib" } -when ODIN_OS == "linux" { foreign import lib "lib/miniaudio.a" } +when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" } +when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" } /************************************************************************************************************************************************************ diff --git a/vendor/miniaudio/decoding.odin b/vendor/miniaudio/decoding.odin index cdddd06fe..52b315f10 100644 --- a/vendor/miniaudio/decoding.odin +++ b/vendor/miniaudio/decoding.odin @@ -2,8 +2,8 @@ package miniaudio import "core:c" -when ODIN_OS == "windows" { foreign import lib "lib/miniaudio.lib" } -when ODIN_OS == "linux" { foreign import lib "lib/miniaudio.a" } +when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" } +when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" } diff --git a/vendor/miniaudio/device_io_procs.odin b/vendor/miniaudio/device_io_procs.odin index c9cfb7c04..8d6609186 100644 --- a/vendor/miniaudio/device_io_procs.odin +++ b/vendor/miniaudio/device_io_procs.odin @@ -1,7 +1,7 @@ package miniaudio -when ODIN_OS == "windows" { foreign import lib "lib/miniaudio.lib" } -when ODIN_OS == "linux" { foreign import lib "lib/miniaudio.a" } +when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" } +when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" } import "core:c" diff --git a/vendor/miniaudio/device_io_types.odin b/vendor/miniaudio/device_io_types.odin index 8f43b8640..7778e85cf 100644 --- a/vendor/miniaudio/device_io_types.odin +++ b/vendor/miniaudio/device_io_types.odin @@ -2,21 +2,21 @@ package miniaudio import "core:c" -SUPPORT_WASAPI :: ODIN_OS == "windows" -SUPPORT_DSOUND :: ODIN_OS == "windows" -SUPPORT_WINMM :: ODIN_OS == "windows" -SUPPORT_COREAUDIO :: ODIN_OS == "darwin" -SUPPORT_SNDIO :: ODIN_OS == "openbsd" -SUPPORT_AUDIO4 :: ODIN_OS == "openbsd" || ODIN_OS == "netbsd" -SUPPORT_OSS :: ODIN_OS == "freebsd" -SUPPORT_PULSEAUDIO :: ODIN_OS == "linux" -SUPPORT_ALSA :: ODIN_OS == "linux" -SUPPORT_JACK :: ODIN_OS == "windows" -SUPPORT_AAUDIO :: ODIN_OS == "android" -SUPPORT_OPENSL :: ODIN_OS == "android" -SUPPORT_WEBAUDIO :: ODIN_OS == "emscripten" +SUPPORT_WASAPI :: ODIN_OS == .Windows +SUPPORT_DSOUND :: ODIN_OS == .Windows +SUPPORT_WINMM :: ODIN_OS == .Windows +SUPPORT_COREAUDIO :: ODIN_OS == .Darwin +SUPPORT_SNDIO :: false // ODIN_OS == .OpenBSD +SUPPORT_AUDIO4 :: false // ODIN_OS == .OpenBSD || ODIN_OS == .NetBSD +SUPPORT_OSS :: ODIN_OS == .FreeBSD +SUPPORT_PULSEAUDIO :: ODIN_OS == .Linux +SUPPORT_ALSA :: ODIN_OS == .Linux +SUPPORT_JACK :: ODIN_OS == .Windows +SUPPORT_AAUDIO :: false // ODIN_OS == .Android +SUPPORT_OPENSL :: false // ODIN_OS == .Android +SUPPORT_WEBAUDIO :: false // ODIN_OS == .Emscripten SUPPORT_CUSTOM :: true -SUPPORT_NULL :: ODIN_OS != "emscripten" +SUPPORT_NULL :: true // ODIN_OS != .Emscripten STATE_UNINITIALIZED :: 0 STATE_STOPPED :: 1 /* The device's default state after initialization. */ @@ -895,7 +895,7 @@ context_type :: struct { RegOpenKeyExA: proc "system" (), RegCloseKey: proc "system" (), RegQueryValueExA: proc "system" (), - } when ODIN_OS == "windows" else struct {}), + } when ODIN_OS == .Windows else struct {}), posix: (struct { pthreadSO: handle, @@ -914,7 +914,7 @@ context_type :: struct { pthread_attr_setschedpolicy: proc "system" (), pthread_attr_getschedparam: proc "system" (), pthread_attr_setschedparam: proc "system" (), - } when ODIN_OS != "windows" else struct {}), + } when ODIN_OS != .Windows else struct {}), _unused: c.int, }, diff --git a/vendor/miniaudio/encoding.odin b/vendor/miniaudio/encoding.odin index 866c19010..83f9d5252 100644 --- a/vendor/miniaudio/encoding.odin +++ b/vendor/miniaudio/encoding.odin @@ -2,8 +2,8 @@ package miniaudio import "core:c" -when ODIN_OS == "windows" { foreign import lib "lib/miniaudio.lib" } -when ODIN_OS == "linux" { foreign import lib "lib/miniaudio.a" } +when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" } +when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" } /************************************************************************************************************************************************************ diff --git a/vendor/miniaudio/filtering.odin b/vendor/miniaudio/filtering.odin index fec21f33d..4956da173 100644 --- a/vendor/miniaudio/filtering.odin +++ b/vendor/miniaudio/filtering.odin @@ -1,7 +1,7 @@ package miniaudio -when ODIN_OS == "windows" { foreign import lib "lib/miniaudio.lib" } -when ODIN_OS == "linux" { foreign import lib "lib/miniaudio.a" } +when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" } +when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" } /************************************************************************************************************************************************************** diff --git a/vendor/miniaudio/generation.odin b/vendor/miniaudio/generation.odin index c2009967c..c241f00b1 100644 --- a/vendor/miniaudio/generation.odin +++ b/vendor/miniaudio/generation.odin @@ -2,8 +2,8 @@ package miniaudio import "core:c" -when ODIN_OS == "windows" { foreign import lib "lib/miniaudio.lib" } -when ODIN_OS == "linux" { foreign import lib "lib/miniaudio.a" } +when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" } +when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" } waveform_type :: enum c.int { sine, diff --git a/vendor/miniaudio/logging.odin b/vendor/miniaudio/logging.odin index 54792bff9..35aa54bc9 100644 --- a/vendor/miniaudio/logging.odin +++ b/vendor/miniaudio/logging.odin @@ -2,8 +2,8 @@ package miniaudio import c "core:c/libc" -when ODIN_OS == "windows" { foreign import lib "lib/miniaudio.lib" } -when ODIN_OS == "linux" { foreign import lib "lib/miniaudio.a" } +when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" } +when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" } MAX_LOG_CALLBACKS :: 4 diff --git a/vendor/miniaudio/utilities.odin b/vendor/miniaudio/utilities.odin index 1a94550e4..19307a77d 100644 --- a/vendor/miniaudio/utilities.odin +++ b/vendor/miniaudio/utilities.odin @@ -1,7 +1,7 @@ package miniaudio -when ODIN_OS == "windows" { foreign import lib "lib/miniaudio.lib" } -when ODIN_OS == "linux" { foreign import lib "lib/miniaudio.a" } +when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" } +when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" } @(default_calling_convention="c", link_prefix="ma_") foreign lib { diff --git a/vendor/miniaudio/vfs.odin b/vendor/miniaudio/vfs.odin index fa18afb6b..547fbd265 100644 --- a/vendor/miniaudio/vfs.odin +++ b/vendor/miniaudio/vfs.odin @@ -2,8 +2,8 @@ package miniaudio import "core:c" -when ODIN_OS == "windows" { foreign import lib "lib/miniaudio.lib" } -when ODIN_OS == "linux" { foreign import lib "lib/miniaudio.a" } +when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" } +when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" } /************************************************************************************************************************************************************ diff --git a/vendor/portmidi/portmidi.odin b/vendor/portmidi/portmidi.odin index 08f78150c..40fd18b8b 100644 --- a/vendor/portmidi/portmidi.odin +++ b/vendor/portmidi/portmidi.odin @@ -3,7 +3,7 @@ package portmidi import "core:c" import "core:strings" -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import lib { "portmidi_s.lib", "system:Winmm.lib", diff --git a/vendor/portmidi/util.odin b/vendor/portmidi/util.odin index d02142bd0..ca2e1f4ca 100644 --- a/vendor/portmidi/util.odin +++ b/vendor/portmidi/util.odin @@ -7,7 +7,7 @@ package portmidi import "core:c" -when ODIN_OS == "windows" { foreign import lib "portmidi_s.lib" } +when ODIN_OS == .Windows { foreign import lib "portmidi_s.lib" } Queue :: distinct rawptr diff --git a/vendor/raylib/raylib.odin b/vendor/raylib/raylib.odin index fb4d7dd92..0c8248683 100644 --- a/vendor/raylib/raylib.odin +++ b/vendor/raylib/raylib.odin @@ -91,7 +91,7 @@ MAX_TEXT_BUFFER_LENGTH :: #config(RAYLIB_MAX_TEXT_BUFFER_LENGTH, 1024) #assert(size_of(rune) == size_of(c.int)) -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import lib { "raylib.lib", "system:Winmm.lib", @@ -100,14 +100,14 @@ when ODIN_OS == "windows" { "system:Shell32.lib", } } -when ODIN_OS == "linux" { +when ODIN_OS == .Linux { foreign import lib { "linux/libraylib.a", "system:dl", "system:pthread", } } -when ODIN_OS == "darwin" { foreign import lib "macos/libraylib.a" } +when ODIN_OS == .Darwin { foreign import lib "macos/libraylib.a" } VERSION :: "4.0" diff --git a/vendor/raylib/rlgl.odin b/vendor/raylib/rlgl.odin index 8f91486c1..936a34765 100644 --- a/vendor/raylib/rlgl.odin +++ b/vendor/raylib/rlgl.odin @@ -2,7 +2,7 @@ package raylib import "core:c" -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import lib { "raylib.lib", "system:Winmm.lib", @@ -11,8 +11,8 @@ when ODIN_OS == "windows" { "system:Shell32.lib", } } -when ODIN_OS == "linux" { foreign import lib "linux/libraylib.a" } -when ODIN_OS == "darwin" { foreign import lib "macos/libraylib.a" } +when ODIN_OS == .Linux { foreign import lib "linux/libraylib.a" } +when ODIN_OS == .Darwin { foreign import lib "macos/libraylib.a" } GRAPHICS_API_OPENGL_11 :: false GRAPHICS_API_OPENGL_21 :: true diff --git a/vendor/sdl2/image/sdl_image.odin b/vendor/sdl2/image/sdl_image.odin index 1dbe048ed..30a7db6a8 100644 --- a/vendor/sdl2/image/sdl_image.odin +++ b/vendor/sdl2/image/sdl_image.odin @@ -3,10 +3,10 @@ package sdl2_image import "core:c" import SDL ".." -when ODIN_OS == "windows" { foreign import lib "SDL2_image.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2_image" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2_image" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2_image" } +when ODIN_OS == .Windows { foreign import lib "SDL2_image.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2_image" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2_image" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2_image" } bool :: SDL.bool diff --git a/vendor/sdl2/mixer/sdl_mixer.odin b/vendor/sdl2/mixer/sdl_mixer.odin index 90334d91a..7fa3f216f 100644 --- a/vendor/sdl2/mixer/sdl_mixer.odin +++ b/vendor/sdl2/mixer/sdl_mixer.odin @@ -3,10 +3,10 @@ package sdl2_mixer import "core:c" import SDL ".." -when ODIN_OS == "windows" { foreign import lib "SDL2_mixer.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2_mixer" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2_mixer" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2_mixer" } +when ODIN_OS == .Windows { foreign import lib "SDL2_mixer.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2_mixer" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2_mixer" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2_mixer" } MAJOR_VERSION :: 2 diff --git a/vendor/sdl2/net/sdl_net.odin b/vendor/sdl2/net/sdl_net.odin index 49671764a..b3e2c2e62 100644 --- a/vendor/sdl2/net/sdl_net.odin +++ b/vendor/sdl2/net/sdl_net.odin @@ -3,10 +3,10 @@ package sdl2_net import "core:c" import SDL ".." -when ODIN_OS == "windows" { foreign import lib "SDL2_net.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2_net" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2_net" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2_net" } +when ODIN_OS == .Windows { foreign import lib "SDL2_net.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2_net" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2_net" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2_net" } bool :: SDL.bool diff --git a/vendor/sdl2/sdl2.odin b/vendor/sdl2/sdl2.odin index 4781483f7..e36c002dd 100644 --- a/vendor/sdl2/sdl2.odin +++ b/vendor/sdl2/sdl2.odin @@ -25,10 +25,10 @@ package sdl2 import "core:c" import "core:intrinsics" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } version :: struct { major: u8, /**< major version */ diff --git a/vendor/sdl2/sdl_audio.odin b/vendor/sdl2/sdl_audio.odin index 2c5b7fedb..a03031165 100644 --- a/vendor/sdl2/sdl_audio.odin +++ b/vendor/sdl2/sdl_audio.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } /** * \brief Audio format flags. diff --git a/vendor/sdl2/sdl_blendmode.odin b/vendor/sdl2/sdl_blendmode.odin index 3fb7c2e83..525cf0f38 100644 --- a/vendor/sdl2/sdl_blendmode.odin +++ b/vendor/sdl2/sdl_blendmode.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } /** * \brief The blend mode used in SDL_RenderCopy() and drawing operations. diff --git a/vendor/sdl2/sdl_cpuinfo.odin b/vendor/sdl2/sdl_cpuinfo.odin index 5fe5cf16c..7d2e681fe 100644 --- a/vendor/sdl2/sdl_cpuinfo.odin +++ b/vendor/sdl2/sdl_cpuinfo.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } /* This is a guess for the cacheline size used for padding. * Most x86 processors have a 64 byte cache line. diff --git a/vendor/sdl2/sdl_events.odin b/vendor/sdl2/sdl_events.odin index 535269656..3f58b51c3 100644 --- a/vendor/sdl2/sdl_events.odin +++ b/vendor/sdl2/sdl_events.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } RELEASED :: 0 PRESSED :: 1 diff --git a/vendor/sdl2/sdl_gamecontroller.odin b/vendor/sdl2/sdl_gamecontroller.odin index 747cd1af6..9fef6b1ab 100644 --- a/vendor/sdl2/sdl_gamecontroller.odin +++ b/vendor/sdl2/sdl_gamecontroller.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } GameController :: struct {} diff --git a/vendor/sdl2/sdl_gesture_haptic.odin b/vendor/sdl2/sdl_gesture_haptic.odin index 0d257a525..1c8616e99 100644 --- a/vendor/sdl2/sdl_gesture_haptic.odin +++ b/vendor/sdl2/sdl_gesture_haptic.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } // Gesture diff --git a/vendor/sdl2/sdl_hints.odin b/vendor/sdl2/sdl_hints.odin index b5793bb02..a84e5a090 100644 --- a/vendor/sdl2/sdl_hints.odin +++ b/vendor/sdl2/sdl_hints.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } HINT_ACCELEROMETER_AS_JOYSTICK :: "SDL_ACCELEROMETER_AS_JOYSTICK" HINT_ALLOW_ALT_TAB_WHILE_GRABBED :: "SDL_ALLOW_ALT_TAB_WHILE_GRABBED" diff --git a/vendor/sdl2/sdl_joystick.odin b/vendor/sdl2/sdl_joystick.odin index d2bb624b7..1178eae24 100644 --- a/vendor/sdl2/sdl_joystick.odin +++ b/vendor/sdl2/sdl_joystick.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } Joystick :: struct {} diff --git a/vendor/sdl2/sdl_keyboard.odin b/vendor/sdl2/sdl_keyboard.odin index 86112863a..a68c644ab 100644 --- a/vendor/sdl2/sdl_keyboard.odin +++ b/vendor/sdl2/sdl_keyboard.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } Keysym :: struct { scancode: Scancode, /**< SDL physical key code - see ::SDL_Scancode for details */ diff --git a/vendor/sdl2/sdl_log.odin b/vendor/sdl2/sdl_log.odin index b9f8a8d7d..d42d82b77 100644 --- a/vendor/sdl2/sdl_log.odin +++ b/vendor/sdl2/sdl_log.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } MAX_LOG_MESSAGE :: 4096 diff --git a/vendor/sdl2/sdl_messagebox.odin b/vendor/sdl2/sdl_messagebox.odin index d8a07c1e2..c66cc4911 100644 --- a/vendor/sdl2/sdl_messagebox.odin +++ b/vendor/sdl2/sdl_messagebox.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } MessageBoxFlag :: enum u32 { _ = 0, diff --git a/vendor/sdl2/sdl_metal.odin b/vendor/sdl2/sdl_metal.odin index 87a0313ef..953c6d45f 100644 --- a/vendor/sdl2/sdl_metal.odin +++ b/vendor/sdl2/sdl_metal.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } MetalView :: distinct rawptr diff --git a/vendor/sdl2/sdl_mouse.odin b/vendor/sdl2/sdl_mouse.odin index d667addc8..5ca8d9b5e 100644 --- a/vendor/sdl2/sdl_mouse.odin +++ b/vendor/sdl2/sdl_mouse.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } Cursor :: struct {} diff --git a/vendor/sdl2/sdl_mutex.odin b/vendor/sdl2/sdl_mutex.odin index 80d62f7c8..6b9c96319 100644 --- a/vendor/sdl2/sdl_mutex.odin +++ b/vendor/sdl2/sdl_mutex.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } MUTEX_TIMEDOUT :: 1 MUTEX_MAXWAIT :: ~u32(0) diff --git a/vendor/sdl2/sdl_pixels.odin b/vendor/sdl2/sdl_pixels.odin index 22f6db440..3cd2da5f4 100644 --- a/vendor/sdl2/sdl_pixels.odin +++ b/vendor/sdl2/sdl_pixels.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } ALPHA_OPAQUE :: 255 ALPHA_TRANSPARENT :: 0 diff --git a/vendor/sdl2/sdl_rect.odin b/vendor/sdl2/sdl_rect.odin index 929897c26..b0d6242be 100644 --- a/vendor/sdl2/sdl_rect.odin +++ b/vendor/sdl2/sdl_rect.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } Point :: struct { x: c.int, diff --git a/vendor/sdl2/sdl_render.odin b/vendor/sdl2/sdl_render.odin index c92fd3eda..435c40570 100644 --- a/vendor/sdl2/sdl_render.odin +++ b/vendor/sdl2/sdl_render.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } RendererFlag :: enum u32 { SOFTWARE = 0, /**< The renderer is a software fallback */ diff --git a/vendor/sdl2/sdl_rwops.odin b/vendor/sdl2/sdl_rwops.odin index 590815c90..3bee66290 100644 --- a/vendor/sdl2/sdl_rwops.odin +++ b/vendor/sdl2/sdl_rwops.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } /* RWops Types */ RWOPS_UNKNOWN :: 0 /**< Unknown stream type */ diff --git a/vendor/sdl2/sdl_stdinc.odin b/vendor/sdl2/sdl_stdinc.odin index bf098a591..9bd5df4da 100644 --- a/vendor/sdl2/sdl_stdinc.odin +++ b/vendor/sdl2/sdl_stdinc.odin @@ -5,10 +5,10 @@ import "core:intrinsics" import "core:runtime" _, _ :: intrinsics, runtime -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } bool :: distinct b32 #assert(size_of(bool) == size_of(c.int)) diff --git a/vendor/sdl2/sdl_surface.odin b/vendor/sdl2/sdl_surface.odin index c0b20be63..e5a5da7ef 100644 --- a/vendor/sdl2/sdl_surface.odin +++ b/vendor/sdl2/sdl_surface.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } SWSURFACE :: 0 /**< Just here for compatibility */ PREALLOC :: 0x00000001 /**< Surface uses preallocated memory */ diff --git a/vendor/sdl2/sdl_system.odin b/vendor/sdl2/sdl_system.odin index 31f1b590b..89ae4c707 100644 --- a/vendor/sdl2/sdl_system.odin +++ b/vendor/sdl2/sdl_system.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } // General @(default_calling_convention="c", link_prefix="SDL_") diff --git a/vendor/sdl2/sdl_syswm.odin b/vendor/sdl2/sdl_syswm.odin index e374e72b7..37da1d298 100644 --- a/vendor/sdl2/sdl_syswm.odin +++ b/vendor/sdl2/sdl_syswm.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } SYSWM_TYPE :: enum c.int { UNKNOWN, diff --git a/vendor/sdl2/sdl_thread.odin b/vendor/sdl2/sdl_thread.odin index cbaf3ac00..98354438b 100644 --- a/vendor/sdl2/sdl_thread.odin +++ b/vendor/sdl2/sdl_thread.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } Thread :: struct {} diff --git a/vendor/sdl2/sdl_timer.odin b/vendor/sdl2/sdl_timer.odin index 5b26c7346..357fdd437 100644 --- a/vendor/sdl2/sdl_timer.odin +++ b/vendor/sdl2/sdl_timer.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } TimerCallback :: proc "c" (interval: u32, param: rawptr) -> u32 TimerID :: distinct c.int diff --git a/vendor/sdl2/sdl_touch.odin b/vendor/sdl2/sdl_touch.odin index c393b74ef..d90939cb9 100644 --- a/vendor/sdl2/sdl_touch.odin +++ b/vendor/sdl2/sdl_touch.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } TouchID :: distinct i64 FingerID :: distinct i64 diff --git a/vendor/sdl2/sdl_video.odin b/vendor/sdl2/sdl_video.odin index 97a134739..01aaee1e7 100644 --- a/vendor/sdl2/sdl_video.odin +++ b/vendor/sdl2/sdl_video.odin @@ -2,10 +2,10 @@ package sdl2 import "core:c" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } DisplayMode :: struct { format: u32, /**< pixel format */ diff --git a/vendor/sdl2/sdl_vulkan.odin b/vendor/sdl2/sdl_vulkan.odin index 97a41bacf..66b054524 100644 --- a/vendor/sdl2/sdl_vulkan.odin +++ b/vendor/sdl2/sdl_vulkan.odin @@ -3,10 +3,10 @@ package sdl2 import "core:c" import vk "vendor:vulkan" -when ODIN_OS == "windows" { foreign import lib "SDL2.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2" } +when ODIN_OS == .Windows { foreign import lib "SDL2.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" } VkInstance :: vk.Instance VkSurfaceKHR :: vk.SurfaceKHR diff --git a/vendor/sdl2/ttf/sdl_ttf.odin b/vendor/sdl2/ttf/sdl_ttf.odin index 6b41f07c2..20db09729 100644 --- a/vendor/sdl2/ttf/sdl_ttf.odin +++ b/vendor/sdl2/ttf/sdl_ttf.odin @@ -3,10 +3,10 @@ package sdl2_ttf import "core:c" import SDL ".." -when ODIN_OS == "windows" { foreign import lib "SDL2_ttf.lib" } -when ODIN_OS == "linux" { foreign import lib "system:SDL2_ttf" } -when ODIN_OS == "darwin" { foreign import lib "system:SDL2_ttf" } -when ODIN_OS == "freebsd" { foreign import lib "system:SDL2_ttf" } +when ODIN_OS == .Windows { foreign import lib "SDL2_ttf.lib" } +when ODIN_OS == .Linux { foreign import lib "system:SDL2_ttf" } +when ODIN_OS == .Darwin { foreign import lib "system:SDL2_ttf" } +when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2_ttf" } bool :: SDL.bool diff --git a/vendor/stb/image/stb_image.odin b/vendor/stb/image/stb_image.odin index 9e72760ab..8a3582792 100644 --- a/vendor/stb/image/stb_image.odin +++ b/vendor/stb/image/stb_image.odin @@ -4,8 +4,8 @@ import c "core:c/libc" #assert(size_of(c.int) == size_of(b32)) -when ODIN_OS == "windows" { foreign import stbi "../lib/stb_image.lib" } -when ODIN_OS == "linux" { foreign import stbi "../lib/stb_image.a" } +when ODIN_OS == .Windows { foreign import stbi "../lib/stb_image.lib" } +when ODIN_OS == .Linux { foreign import stbi "../lib/stb_image.a" } #assert(size_of(b32) == size_of(c.int)) diff --git a/vendor/stb/image/stb_image_resize.odin b/vendor/stb/image/stb_image_resize.odin index bee29a15e..65bf3e4a9 100644 --- a/vendor/stb/image/stb_image_resize.odin +++ b/vendor/stb/image/stb_image_resize.odin @@ -2,8 +2,8 @@ package stb_image import c "core:c/libc" -when ODIN_OS == "windows" { foreign import lib "../lib/stb_image_resize.lib" } -when ODIN_OS == "linux" { foreign import lib "../lib/stb_image_resize.a" } +when ODIN_OS == .Windows { foreign import lib "../lib/stb_image_resize.lib" } +when ODIN_OS == .Linux { foreign import lib "../lib/stb_image_resize.a" } ////////////////////////////////////////////////////////////////////////////// // diff --git a/vendor/stb/image/stb_image_write.odin b/vendor/stb/image/stb_image_write.odin index 1f0cfce85..67f4299fa 100644 --- a/vendor/stb/image/stb_image_write.odin +++ b/vendor/stb/image/stb_image_write.odin @@ -2,8 +2,8 @@ package stb_image import c "core:c/libc" -when ODIN_OS == "windows" { foreign import stbiw "../lib/stb_image_write.lib" } -when ODIN_OS == "linux" { foreign import stbiw "../lib/stb_image_write.a" } +when ODIN_OS == .Windows { foreign import stbiw "../lib/stb_image_write.lib" } +when ODIN_OS == .Linux { foreign import stbiw "../lib/stb_image_write.a" } write_func :: proc "c" (ctx: rawptr, data: rawptr, size: c.int) diff --git a/vendor/stb/rect_pack/stb_rect_pack.odin b/vendor/stb/rect_pack/stb_rect_pack.odin index 4142a73ec..f84f1cedc 100644 --- a/vendor/stb/rect_pack/stb_rect_pack.odin +++ b/vendor/stb/rect_pack/stb_rect_pack.odin @@ -4,8 +4,8 @@ import c "core:c/libc" #assert(size_of(b32) == size_of(c.int)) -when ODIN_OS == "windows" { foreign import lib "../lib/stb_rect_pack.lib" } -when ODIN_OS == "linux" { foreign import lib "../lib/stb_rect_pack.a" } +when ODIN_OS == .Windows { foreign import lib "../lib/stb_rect_pack.lib" } +when ODIN_OS == .Linux { foreign import lib "../lib/stb_rect_pack.a" } Coord :: distinct c.int _MAXVAL :: max(Coord) diff --git a/vendor/stb/truetype/stb_truetype.odin b/vendor/stb/truetype/stb_truetype.odin index 3abb187c2..cf4af15e9 100644 --- a/vendor/stb/truetype/stb_truetype.odin +++ b/vendor/stb/truetype/stb_truetype.odin @@ -3,8 +3,8 @@ package stb_truetype import c "core:c" import stbrp "vendor:stb/rect_pack" -when ODIN_OS == "windows" { foreign import stbtt "../lib/stb_truetype.lib" } -when ODIN_OS == "linux" { foreign import stbtt "../lib/stb_truetype.a" } +when ODIN_OS == .Windows { foreign import stbtt "../lib/stb_truetype.lib" } +when ODIN_OS == .Linux { foreign import stbtt "../lib/stb_truetype.a" } /////////////////////////////////////////////////////////////////////////////// diff --git a/vendor/stb/vorbis/stb_vorbis.odin b/vendor/stb/vorbis/stb_vorbis.odin index 7ec248df5..f35b58e04 100644 --- a/vendor/stb/vorbis/stb_vorbis.odin +++ b/vendor/stb/vorbis/stb_vorbis.odin @@ -3,8 +3,8 @@ package stb_vorbis import c "core:c/libc" -when ODIN_OS == "windows" { foreign import lib "../lib/stb_vorbis.lib" } -when ODIN_OS == "linux" { foreign import lib "../lib/stb_vorbis.a" } +when ODIN_OS == .Windows { foreign import lib "../lib/stb_vorbis.lib" } +when ODIN_OS == .Linux { foreign import lib "../lib/stb_vorbis.a" } diff --git a/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py b/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py index 1525f4e15..e7fb234c8 100644 --- a/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py +++ b/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py @@ -591,7 +591,7 @@ MAX_GLOBAL_PRIORITY_SIZE_EXT :: 16 f.write(""" import "core:c" -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { \timport win32 "core:sys/windows" \tHINSTANCE :: win32.HINSTANCE diff --git a/vendor/vulkan/structs.odin b/vendor/vulkan/structs.odin index 4d90a53fa..3c655a4fa 100644 --- a/vendor/vulkan/structs.odin +++ b/vendor/vulkan/structs.odin @@ -5,7 +5,7 @@ package vulkan import "core:c" -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { import win32 "core:sys/windows" HINSTANCE :: win32.HINSTANCE From 77b91352aeb72d9b22a05e3094607a8a5ab4e091 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 20 Jan 2022 19:58:35 +0000 Subject: [PATCH 005/190] Add `Odin_OS_Type` and `Odin_Arch_Type` to `core:runtime` --- core/runtime/core.odin | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/core/runtime/core.odin b/core/runtime/core.odin index cd76b0bb5..6c2ab1405 100644 --- a/core/runtime/core.odin +++ b/core/runtime/core.odin @@ -386,6 +386,35 @@ Raw_Cstring :: struct { } +/* + // Defined internally by the compiler + Odin_OS_Type :: enum int { + Unknown, + Windows, + Darwin, + Linux, + Essence, + FreeBSD, + WASI, + JS, + Freestanding, + } +*/ +Odin_OS_Type :: type_of(ODIN_OS) + +/* + // Defined internally by the compiler + Odin_Arch_Type :: enum int { + Unknown, + amd64, + i386, + arm64, + wasm32, + wasm64, + } +*/ +Odin_Arch_Type :: type_of(ODIN_ARCH) + /* // Defined internally by the compiler Odin_Build_Mode_Type :: enum int { From f2f20def37a1cbe57ceddf6d9ee33c1015432fca Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 20 Jan 2022 20:02:41 +0000 Subject: [PATCH 006/190] Update demo.odin --- examples/demo/demo.odin | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/examples/demo/demo.odin b/examples/demo/demo.odin index 3e34e3d49..13dcf9466 100644 --- a/examples/demo/demo.odin +++ b/examples/demo/demo.odin @@ -244,10 +244,10 @@ control_flow :: proc() { // A switch statement is another way to write a sequence of if-else statements. // In Odin, the default case is denoted as a case without any expression. - switch arch := ODIN_ARCH; arch { - case "386": + #partial switch arch := ODIN_ARCH; arch { + case .i386: fmt.println("32-bit") - case "amd64": + case .amd64: fmt.println("64-bit") case: // default fmt.println("Unsupported architecture") @@ -363,12 +363,12 @@ control_flow :: proc() { */ // Example - when ODIN_ARCH == "386" { + when ODIN_ARCH == .i386 { fmt.println("32 bit") - } else when ODIN_ARCH == "amd64" { + } else when ODIN_ARCH == .amd64 { fmt.println("64 bit") } else { - fmt.println("Unsupported architecture") + fmt.println("Unknown architecture") } // The when statement is very useful for writing platform specific code. // This is akin to the #if construct in C’s preprocessor however, in Odin, @@ -1100,7 +1100,7 @@ prefix_table := [?]string{ } threading_example :: proc() { - if ODIN_OS == "darwin" { + if ODIN_OS == .Darwin { // TODO: Fix threads on darwin/macOS return } @@ -1606,13 +1606,13 @@ where_clauses :: proc() { } -when ODIN_OS == "windows" { +when ODIN_OS == .Windows { foreign import kernel32 "system:kernel32.lib" } foreign_system :: proc() { fmt.println("\n#foreign system") - when ODIN_OS == "windows" { + when ODIN_OS == .Windows { // It is sometimes necessarily to interface with foreign code, // such as a C library. In Odin, this is achieved through the // foreign system. You can “import” a library into the code From 6223f48c3fc096b543a51aa1c993a6f1127f2a0f Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 20 Jan 2022 20:08:24 +0000 Subject: [PATCH 007/190] Update tests --- tests/core/crypto/test_core_crypto_modern.odin | 2 +- tests/core/image/test_core_image.odin | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/core/crypto/test_core_crypto_modern.odin b/tests/core/crypto/test_core_crypto_modern.odin index 71adad137..6d1ae0047 100644 --- a/tests/core/crypto/test_core_crypto_modern.odin +++ b/tests/core/crypto/test_core_crypto_modern.odin @@ -308,7 +308,7 @@ test_x25519 :: proc(t: ^testing.T) { test_rand_bytes :: proc(t: ^testing.T) { log(t, "Testing rand_bytes") - if ODIN_OS != "linux" { + if ODIN_OS != .Linux { log(t, "rand_bytes not supported - skipping") return } diff --git a/tests/core/image/test_core_image.odin b/tests/core/image/test_core_image.odin index 23a7c2561..124166245 100644 --- a/tests/core/image/test_core_image.odin +++ b/tests/core/image/test_core_image.odin @@ -1785,7 +1785,7 @@ write_image_as_ppm :: proc(filename: string, image: ^image.Image) -> (success: b } mode: int = 0 - when ODIN_OS == "linux" || ODIN_OS == "darwin" { + when ODIN_OS == .Linux || ODIN_OS == .Darwin { // NOTE(justasd): 644 (owner read, write; group read; others read) mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH } From 540c5400a0c7b2e3cc40bba4e00f4b13c18f9d7c Mon Sep 17 00:00:00 2001 From: Platin21 Date: Sun, 23 Jan 2022 23:13:32 +0100 Subject: [PATCH 008/190] Adds several system calls and the beginning of odin wrappers for them This also adds all systemcall numbers from the xnu kernel / and additional helpers for some of the calls to make it easier to call them from odin --- core/sys/darwin/xnu_system_call_helpers.odin | 180 ++++++ core/sys/darwin/xnu_system_call_numbers.odin | 558 ++++++++++++++++++ core/sys/darwin/xnu_system_call_wrappers.odin | 419 +++++++++++++ 3 files changed, 1157 insertions(+) create mode 100644 core/sys/darwin/xnu_system_call_helpers.odin create mode 100644 core/sys/darwin/xnu_system_call_numbers.odin create mode 100644 core/sys/darwin/xnu_system_call_wrappers.odin diff --git a/core/sys/darwin/xnu_system_call_helpers.odin b/core/sys/darwin/xnu_system_call_helpers.odin new file mode 100644 index 000000000..eabbb73df --- /dev/null +++ b/core/sys/darwin/xnu_system_call_helpers.odin @@ -0,0 +1,180 @@ +package sys + +import "core:strings" +import "core:c" +import "core:os" +import "core:fmt" + +// this package uses the sys prefix for the proc names to indicate that these aren't native syscalls but directly call such +sys_write_string :: proc (fd: c.int, message: string) -> bool { + return syscall_write(fd, strings.ptr_from_string(message), cast(u64)len(message)) +} + +Offset_From :: enum c.int { + SEEK_SET = 0, // the offset is set to offset bytes. + SEEK_CUR = 1, // the offset is set to its current location plus offset bytes. + SEEK_END = 2, // the offset is set to the size of the file plus offset bytes. + SEEK_HOLE = 3, // the offset is set to the start of the next hole greater than or equal to the supplied offset. + SEEK_DATA = 4, // the offset is set to the start of the next non-hole file region greater than or equal to the supplied offset. +} + +Open_Flags_Enum :: enum u8 { + RDONLY, /* open for reading only */ + WRONLY, /* open for writing only */ + RDWR, /* open for reading and writing */ + + NONBLOCK, /* no delay */ + APPEND, /* set append mode */ + CREAT, /* create if nonexistant */ + TRUNC, /* truncate to zero length */ + EXCL, /* error if already exists */ + SHLOCK, /* open with shared file lock */ + EXLOCK, /* open with exclusive file lock */ + DIRECTORY, /* restrict open to only directories */ + NOFOLLOW, /* don't follow symlinks */ + SYMLINK, /* allow open of a symlink */ + EVTONLY, /* descriptor requested for event notifications only */ + CLOEXEC, /* causes the descriptor to be closed if you use any of the exec like functions */ + NOFOLLOW_ANY, /* no symlinks allowed in path */ +} +Open_Flags :: bit_set[Open_Flags_Enum; u16] + +Permission_Enum :: enum u8 { + /* For owner */ + PERMISSION_OWNER_READ, /* R for owner */ + PERMISSION_OWNER_WRITE, /* W for owner */ + PERMISSION_OWNER_EXECUTE, /* X for owner */ + //IRWXU, /* RWX mask for owner */ + + /* For group */ + PERMISSION_GROUP_READ, /* R for group */ + PERMISSION_GROUP_WRITE, /* W for group */ + PERMISSION_GROUP_EXECUTE, /* X for group */ + //IRWXG, /* RWX mask for group */ + + /* For other */ + PERMISSION_OTHER_READ, /* R for other */ + PERMISSION_OTHER_WRITE, /* W for other */ + PERMISSION_OTHER_EXECUTE, /* X for other */ + //IRWXO, /* RWX mask for other */ + + /* Special */ + PERMISSION_SET_USER_ON_EXECUTION, /* set user id on execution */ + PERMISSION_SET_GROUP_ON_EXECUTION, /* set group id on execution */ + + /* ?? */ + PERMISSION_ISVTX, /* save swapped text even after use */ +} +Permission :: bit_set[Permission_Enum; u16] + +PERMISSION_NONE_NONE :: Permission{} +PERMISSION_OWNER_ALL :: Permission{.PERMISSION_OWNER_READ, .PERMISSION_OWNER_WRITE, .PERMISSION_OWNER_EXECUTE} +PERMISSION_GROUP_ALL :: Permission{.PERMISSION_GROUP_READ, .PERMISSION_GROUP_WRITE, .PERMISSION_GROUP_EXECUTE} +PERMISSION_OTHER_ALL :: Permission{.PERMISSION_OTHER_READ, .PERMISSION_OTHER_WRITE, .PERMISSION_OTHER_EXECUTE} +PERMISSION_ALL_ALL :: PERMISSION_OWNER_ALL | PERMISSION_GROUP_ALL | PERMISSION_OTHER_ALL + +_sys_permission_mode :: #force_inline proc (mode: Permission) -> u32 { + cflags: u32 = 0; + + cflags |= PERMISSION_MASK_IRUSR * u32(Permission.PERMISSION_OWNER_READ in mode) + cflags |= PERMISSION_MASK_IWUSR * u32(Permission.PERMISSION_OWNER_WRITE in mode) + cflags |= PERMISSION_MASK_IXUSR * u32(Permission.PERMISSION_OWNER_WRITE in mode) + cflags |= PERMISSION_MASK_IRGRP * u32(Permission.PERMISSION_GROUP_READ in mode) + cflags |= PERMISSION_MASK_IWGRP * u32(Permission.PERMISSION_GROUP_WRITE in mode) + cflags |= PERMISSION_MASK_IXGRP * u32(Permission.PERMISSION_GROUP_WRITE in mode) + cflags |= PERMISSION_MASK_IROTH * u32(Permission.PERMISSION_OTHER_READ in mode) + cflags |= PERMISSION_MASK_IWOTH * u32(Permission.PERMISSION_OTHER_WRITE in mode) + cflags |= PERMISSION_MASK_IXOTH * u32(Permission.PERMISSION_OTHER_WRITE in mode) + + return cflags +} + +sys_open :: proc(path: string, oflag: Open_Flags, mode: Permission) -> (c.int, bool) { + + cmode: u32 = 0; + cflags: u32 = 0; + cpath: cstring = strings.clone_to_cstring(path); + defer delete(cpath) + + cflags = _sys_permission_mode(mode) + + cmode |= OPEN_FLAG_RDONLY * u32(Open_Flags.RDONLY in oflag) + cmode |= OPEN_FLAG_WRONLY * u32(Open_Flags.WRONLY in oflag) + cmode |= OPEN_FLAG_RDWR * u32(Open_Flags.RDWR in oflag) + cmode |= OPEN_FLAG_NONBLOCK * u32(Open_Flags.NONBLOCK in oflag) + cmode |= OPEN_FLAG_CREAT * u32(Open_Flags.CREAT in oflag) + cmode |= OPEN_FLAG_APPEND * u32(Open_Flags.APPEND in oflag) + cmode |= OPEN_FLAG_TRUNC * u32(Open_Flags.TRUNC in oflag) + cmode |= OPEN_FLAG_EXCL * u32(Open_Flags.EXCL in oflag) + cmode |= OPEN_FLAG_SHLOCK * u32(Open_Flags.SHLOCK in oflag) + cmode |= OPEN_FLAG_EXLOCK * u32(Open_Flags.EXLOCK in oflag) + cmode |= OPEN_FLAG_DIRECTORY * u32(Open_Flags.DIRECTORY in oflag) + cmode |= OPEN_FLAG_NOFOLLOW * u32(Open_Flags.NOFOLLOW in oflag) + cmode |= OPEN_FLAG_SYMLINK * u32(Open_Flags.SYMLINK in oflag) + cmode |= OPEN_FLAG_EVTONLY * u32(Open_Flags.EVTONLY in oflag) + cmode |= OPEN_FLAG_CLOEXEC * u32(Open_Flags.CLOEXEC in oflag) + cmode |= OPEN_FLAG_NOFOLLOW_ANY * u32(Open_Flags.NOFOLLOW_ANY in oflag) + + result := syscall_open(cpath, cmode, cflags) + state := result != -1 + + if state && cflags != 0 { + state = (syscall_fchmod(result, cflags) != -1) + } + + return result * cast(c.int)state, state +} + +sys_mkdir :: proc(path: string, mode: Permission) -> bool { + cpath: cstring = strings.clone_to_cstring(path) + defer delete(cpath) + cflags := _sys_permission_mode(mode) + return syscall_mkdir(cpath, cflags) != -1 +} + +sys_mkdir_at :: proc(fd: c.int, path: string, mode: Permission) -> bool { + cpath: cstring = strings.clone_to_cstring(path) + defer delete(cpath) + cflags := _sys_permission_mode(mode) + return syscall_mkdir_at(fd, cpath, cflags) != -1 +} + +sys_rmdir :: proc(path: string, mode: Permission) -> bool { + cpath: cstring = strings.clone_to_cstring(path) + defer delete(cpath) + cflags := _sys_permission_mode(mode) + return syscall_rmdir(cpath, cflags) != -1 +} + +sys_rename :: proc(path: string, new_path: string) -> bool { + cpath: cstring = strings.clone_to_cstring(path) + defer delete(cpath) + cnpath: cstring = strings.clone_to_cstring(new_path) + defer delete(cnpath) + return syscall_rename(cpath, cnpath) != -1 +} + +sys_rename_at :: proc(fd: c.int, path: string, to_fd: c.int, new_path: string) -> bool { + cpath: cstring = strings.clone_to_cstring(path) + defer delete(cpath) + cnpath: cstring = strings.clone_to_cstring(new_path) + defer delete(cnpath) + return syscall_rename_at(fd, cpath, to_fd, cnpath) != -1 +} + +sys_lseek :: proc(fd: c.int, offset: i64, whence: Offset_From) -> i64 { + return syscall_lseek(fd, offset, cast(c.int)whence) +} + +sys_chmod :: proc(path: string, mode: Permission) -> bool { + cpath: cstring = strings.clone_to_cstring(path) + defer delete(cpath) + cmode := _sys_permission_mode(mode); + return syscall_chmod(cpath, cmode) != -1 +} + +sys_lstat :: proc(path: string, status: ^stat) -> bool { + cpath: cstring = strings.clone_to_cstring(path) + defer delete(cpath) + return syscall_lstat(cpath, status) != -1 +} diff --git a/core/sys/darwin/xnu_system_call_numbers.odin b/core/sys/darwin/xnu_system_call_numbers.odin new file mode 100644 index 000000000..4aba8a830 --- /dev/null +++ b/core/sys/darwin/xnu_system_call_numbers.odin @@ -0,0 +1,558 @@ +package sys + +unix_offset_syscall :: proc(number: System_Call_Number) -> uintptr { + return uintptr(number) + uintptr(0x2000000) +} + +System_Call_Number :: enum uintptr { + /* 0 syscall */ + exit = 1, + fork = 2, + read = 3, + write = 4, + open = 5, + close = 6, + wait4 = 7, + /* 8 old creat */ + link = 9, + unlink = 10, + /* 11 old execv */ + chdir = 12, + fchdir = 13, + mknod = 14, + chmod = 15, + chown = 16, + /* 17 old break */ + getfsstat = 18, + /* 19 old lseek */ + getpid = 20, + /* 21 old mount */ + /* 22 old umount */ + setuid = 23, + getuid = 24, + geteuid = 25, + ptrace = 26, + recvmsg = 27, + sendmsg = 28, + recvfrom = 29, + accept = 30, + getpeername = 31, + getsockname = 32, + access = 33, + chflags = 34, + fchflags = 35, + sync = 36, + kill = 37, + /* 38 old stat */ + getppid = 39, + /* 40 old lstat */ + dup = 41, + pipe = 42, + getegid = 43, + /* 44 old profil */ + /* 45 old ktrace */ + sigaction = 46, + getgid = 47, + sigprocmask = 48, + getlogin = 49, + setlogin = 50, + acct = 51, + sigpending = 52, + sigaltstack = 53, + ioctl = 54, + reboot = 55, + revoke = 56, + symlink = 57, + readlink = 58, + execve = 59, + umask = 60, + chroot = 61, + /* 62 old fstat */ + /* 63 used internally and reserved */ + /* getpagesize = 64, invalid */ + msync = 65, + vfork = 66, + /* 67 old vread */ + /* 68 old vwrite */ + /* 69 old sbrk */ + /* 70 old sstk */ + /* 71 old mmap */ + /* 72 old vadvise */ + munmap = 73, + mprotect = 74, + madvise = 75, + /* 76 old vhangup */ + /* 77 old vlimit */ + mincore = 78, + getgroups = 79, + setgroups = 80, + getpgrp = 81, + setpgid = 82, + setitimer = 83, + /* 84 old wait */ + swapon = 85, + getitimer = 86, + /* 87 old gethostname */ + /* 88 old sethostname */ + getdtablesize = 89, + dup2 = 90, + /* 91 old getdopt */ + fcntl = 92, + select = 93, + /* 94 old setdopt */ + fsync = 95, + setpriority = 96, + socket = 97, + connect = 98, + /* 99 old accept */ + getpriority = 100, + /* 101 old send */ + /* 102 old recv */ + /* 103 old sigreturn */ + bind = 104, + setsockopt = 105, + listen = 106, + /* 107 old vtimes */ + /* 108 old sigvec */ + /* 109 old sigblock */ + /* 110 old sigsetmask */ + sigsuspend = 111, + /* 112 old sigstack */ + /* 113 old recvmsg */ + /* 114 old sendmsg */ + /* 115 old vtrace */ + gettimeofday = 116, + getrusage = 117, + getsockopt = 118, + /* 119 old resuba */ + readv = 120, + writev = 121, + settimeofday = 122, + fchown = 123, + fchmod = 124, + /* 125 old recvfrom */ + setreuid = 126, + setregid = 127, + rename = 128, + /* 129 old truncate */ + /* 130 old ftruncate */ + flock = 131, + mkfifo = 132, + sendto = 133, + shutdown = 134, + socketpair = 135, + mkdir = 136, + rmdir = 137, + utimes = 138, + futimes = 139, + adjtime = 140, + /* 141 old getpeername */ + gethostuuid = 142, + /* 143 old sethostid */ + /* 144 old getrlimit */ + /* 145 old setrlimit */ + /* 146 old killpg */ + setsid = 147, + /* 148 old setquota */ + /* 149 old qquota */ + /* 150 old getsockname */ + getpgid = 151, + setprivexec = 152, + pread = 153, + pwrite = 154, + nfssvc = 155, + /* 156 old getdirentries */ + statfs = 157, + fstatfs = 158, + unmount = 159, + /* 160 old async_daemon */ + getfh = 161, + /* 162 old getdomainname */ + /* 163 old setdomainname */ + /* 164 */ + quotactl = 165, + /* 166 old exportfs */ + mount = 167, + /* 168 old ustat */ + csops = 169, + csops_audittoken = 170, + /* 171 old wait3 */ + /* 172 old rpause */ + waitid = 173, + /* 174 old getdents */ + /* 175 old gc_control */ + /* 176 old add_profil */ + kdebug_typefilter = 177, + kdebug_trace_string = 178, + kdebug_trace64 = 179, + kdebug_trace = 180, + setgid = 181, + setegid = 182, + seteuid = 183, + sigreturn = 184, + /* 185 old chud */ + thread_selfcounts = 186, + fdatasync = 187, + stat = 188, + fstat = 189, + lstat = 190, + pathconf = 191, + fpathconf = 192, + /* 193 old getfsstat */ + getrlimit = 194, + setrlimit = 195, + getdirentries = 196, + mmap = 197, + /* 198 old __syscall */ + lseek = 199, + truncate = 200, + ftruncate = 201, + sysctl = 202, + mlock = 203, + munlock = 204, + undelete = 205, + /* 206 old ATsocket */ + /* 207 old ATgetmsg */ + /* 208 old ATputmsg */ + /* 209 old ATsndreq */ + /* 210 old ATsndrsp */ + /* 211 old ATgetreq */ + /* 212 old ATgetrsp */ + /* 213 Reserved for AppleTalk */ + /* 214 */ + /* 215 */ + open_dprotected_np = 216, + fsgetpath_ext = 217, + /* 218 old lstatv */ + /* 219 old fstatv */ + getattrlist = 220, + setattrlist = 221, + getdirentriesattr = 222, + exchangedata = 223, + /* 224 old checkuseraccess or fsgetpath */ + searchfs = 225, + delete = 226, + copyfile = 227, + fgetattrlist = 228, + fsetattrlist = 229, + poll = 230, + /* 231 old watchevent */ + /* 232 old waitevent */ + /* 233 old modwatch */ + getxattr = 234, + fgetxattr = 235, + setxattr = 236, + fsetxattr = 237, + removexattr = 238, + fremovexattr = 239, + listxattr = 240, + flistxattr = 241, + fsctl = 242, + initgroups = 243, + posix_spawn = 244, + ffsctl = 245, + /* 246 */ + nfsclnt = 247, + fhopen = 248, + /* 249 */ + minherit = 250, + semsys = 251, + msgsys = 252, + shmsys = 253, + semctl = 254, + semget = 255, + semop = 256, + /* 257 old semconfig */ + msgctl = 258, + msgget = 259, + msgsnd = 260, + msgrcv = 261, + shmat = 262, + shmctl = 263, + shmdt = 264, + shmget = 265, + shm_open = 266, + shm_unlink = 267, + sem_open = 268, + sem_close = 269, + sem_unlink = 270, + sem_wait = 271, + sem_trywait = 272, + sem_post = 273, + sysctlbyname = 274, + /* 275 old sem_init */ + /* 276 old sem_destroy */ + open_extended = 277, + umask_extended = 278, + stat_extended = 279, + lstat_extended = 280, + fstat_extended = 281, + chmod_extended = 282, + fchmod_extended = 283, + access_extended = 284, + settid = 285, + gettid = 286, + setsgroups = 287, + getsgroups = 288, + setwgroups = 289, + getwgroups = 290, + mkfifo_extended = 291, + mkdir_extended = 292, + identitysvc = 293, + shared_region_check_np = 294, + /* 295 old shared_region_map_np */ + vm_pressure_monitor = 296, + psynch_rw_longrdlock = 297, + psynch_rw_yieldwrlock = 298, + psynch_rw_downgrade = 299, + psynch_rw_upgrade = 300, + psynch_mutexwait = 301, + psynch_mutexdrop = 302, + psynch_cvbroad = 303, + psynch_cvsignal = 304, + psynch_cvwait = 305, + psynch_rw_rdlock = 306, + psynch_rw_wrlock = 307, + psynch_rw_unlock = 308, + psynch_rw_unlock2 = 309, + getsid = 310, + settid_with_pid = 311, + psynch_cvclrprepost = 312, + aio_fsync = 313, + aio_return = 314, + aio_suspend = 315, + aio_cancel = 316, + aio_error = 317, + aio_read = 318, + aio_write = 319, + lio_listio = 320, + /* 321 old __pthread_cond_wait */ + iopolicysys = 322, + process_policy = 323, + mlockall = 324, + munlockall = 325, + /* 326 */ + issetugid = 327, + __pthread_kill = 328, + __pthread_sigmask = 329, + __sigwait = 330, + __disable_threadsignal = 331, + __pthread_markcancel = 332, + __pthread_canceled = 333, + __semwait_signal = 334, + /* 335 old utrace */ + proc_info = 336, + sendfile = 337, + stat64 = 338, + fstat64 = 339, + lstat64 = 340, + stat64_extended = 341, + lstat64_extended = 342, + fstat64_extended = 343, + getdirentries64 = 344, + statfs64 = 345, + fstatfs64 = 346, + getfsstat64 = 347, + __pthread_chdir = 348, + __pthread_fchdir = 349, + audit = 350, + auditon = 351, + /* 352 */ + getauid = 353, + setauid = 354, + /* 355 old getaudit */ + /* 356 old setaudit */ + getaudit_addr = 357, + setaudit_addr = 358, + auditctl = 359, + bsdthread_create = 360, + bsdthread_terminate = 361, + kqueue = 362, + kevent = 363, + lchown = 364, + /* 365 old stack_snapshot */ + bsdthread_register = 366, + workq_open = 367, + workq_kernreturn = 368, + kevent64 = 369, + __old_semwait_signal = 370, + __old_semwait_signal_nocancel = 371, + thread_selfid = 372, + ledger = 373, + kevent_qos = 374, + kevent_id = 375, + /* 376 */ + /* 377 */ + /* 378 */ + /* 379 */ + __mac_execve = 380, + __mac_syscall = 381, + __mac_get_file = 382, + __mac_set_file = 383, + __mac_get_link = 384, + __mac_set_link = 385, + __mac_get_proc = 386, + __mac_set_proc = 387, + __mac_get_fd = 388, + __mac_set_fd = 389, + __mac_get_pid = 390, + /* 391 */ + /* 392 */ + /* 393 */ + pselect = 394, + pselect_nocancel = 395, + read_nocancel = 396, + write_nocancel = 397, + open_nocancel = 398, + close_nocancel = 399, + wait4_nocancel = 400, + recvmsg_nocancel = 401, + sendmsg_nocancel = 402, + recvfrom_nocancel = 403, + accept_nocancel = 404, + msync_nocancel = 405, + fcntl_nocancel = 406, + select_nocancel = 407, + fsync_nocancel = 408, + connect_nocancel = 409, + sigsuspend_nocancel = 410, + readv_nocancel = 411, + writev_nocancel = 412, + sendto_nocancel = 413, + pread_nocancel = 414, + pwrite_nocancel = 415, + waitid_nocancel = 416, + poll_nocancel = 417, + msgsnd_nocancel = 418, + msgrcv_nocancel = 419, + sem_wait_nocancel = 420, + aio_suspend_nocancel = 421, + __sigwait_nocancel = 422, + __semwait_signal_nocancel = 423, + __mac_mount = 424, + __mac_get_mount = 425, + __mac_getfsstat = 426, + fsgetpath = 427, + audit_session_self = 428, + audit_session_join = 429, + fileport_makeport = 430, + fileport_makefd = 431, + audit_session_port = 432, + pid_suspend = 433, + pid_resume = 434, + pid_hibernate = 435, + pid_shutdown_sockets = 436, + /* 437 old shared_region_slide_np */ + shared_region_map_and_slide_np = 438, + kas_info = 439, + memorystatus_control = 440, + guarded_open_np = 441, + guarded_close_np = 442, + guarded_kqueue_np = 443, + change_fdguard_np = 444, + usrctl = 445, + proc_rlimit_control = 446, + connectx = 447, + disconnectx = 448, + peeloff = 449, + socket_delegate = 450, + telemetry = 451, + proc_uuid_policy = 452, + memorystatus_get_level = 453, + system_override = 454, + vfs_purge = 455, + sfi_ctl = 456, + sfi_pidctl = 457, + coalition = 458, + coalition_info = 459, + necp_match_policy = 460, + getattrlistbulk = 461, + clonefileat = 462, + openat = 463, + openat_nocancel = 464, + renameat = 465, + faccessat = 466, + fchmodat = 467, + fchownat = 468, + fstatat = 469, + fstatat64 = 470, + linkat = 471, + unlinkat = 472, + readlinkat = 473, + symlinkat = 474, + mkdirat = 475, + getattrlistat = 476, + proc_trace_log = 477, + bsdthread_ctl = 478, + openbyid_np = 479, + recvmsg_x = 480, + sendmsg_x = 481, + thread_selfusage = 482, + csrctl = 483, + guarded_open_dprotected_np = 484, + guarded_write_np = 485, + guarded_pwrite_np = 486, + guarded_writev_np = 487, + renameatx_np = 488, + mremap_encrypted = 489, + netagent_trigger = 490, + stack_snapshot_with_config = 491, + microstackshot = 492, + grab_pgo_data = 493, + persona = 494, + /* 495 */ + mach_eventlink_signal = 496, + mach_eventlink_wait_until = 497, + mach_eventlink_signal_wait_until = 498, + work_interval_ctl = 499, + getentropy = 500, + necp_open = 501, + necp_client_action = 502, + nexus_open = 503, // for those who are intressted http://newosxbook.com/bonus/vol1ch16.html + nexus_register = 504, + nexus_deregister = 505, + nexus_create = 506, + nexus_destroy = 507, + nexus_get_opt = 508, + nexus_set_opt = 509, + channel_open = 510, + channel_get_info = 511, + channel_sync = 512, + channel_get_opt = 513, + channel_set_opt = 514, + ulock_wait = 515, + ulock_wake = 516, + fclonefileat = 517, + fs_snapshot = 518, + register_uexc_handler = 519, + terminate_with_payload = 520, + abort_with_payload = 521, + necp_session_open = 522, + necp_session_action = 523, + setattrlistat = 524, + net_qos_guideline = 525, + fmount = 526, + ntp_adjtime = 527, + ntp_gettime = 528, + os_fault_with_payload = 529, + kqueue_workloop_ctl = 530, + mach_bridge_remote_time = 531, + coalition_ledger = 532, + log_data = 533, + memorystatus_available_memory = 534, + objc_bp_assist_cfg_np = 535, + shared_region_map_and_slide_2_np = 536, + pivot_root = 537, + task_inspect_for_pid = 538, + task_read_for_pid = 539, + preadv = 540, + pwritev = 541, + preadv_nocancel = 542, + pwritev_nocancel = 543, + ulock_wait2 = 544, + proc_info_extended_id = 545, + tracker_action = 546, + debug_syscall_reject = 547, + MAXSYSCALL = 548, + /* invalid = 63, */ +} diff --git a/core/sys/darwin/xnu_system_call_wrappers.odin b/core/sys/darwin/xnu_system_call_wrappers.odin new file mode 100644 index 000000000..a584299f8 --- /dev/null +++ b/core/sys/darwin/xnu_system_call_wrappers.odin @@ -0,0 +1,419 @@ +package sys + +import "core:c" +import "core:intrinsics" + +/* flock */ +LOCK_SH :: 1 /* shared lock */ +LOCK_EX :: 2 /* exclusive lock */ +LOCK_NB :: 4 /* don't block when locking */ +LOCK_UN :: 8 /* unlock */ + +/* sys/unistd.h for access */ +F_OK :: c.int(0); /* test for existence of file */ +X_OK :: c.int((1 << 0)); /* test for execute or search permission */ +W_OK :: c.int((1 << 1)); /* test for write permission */ +R_OK :: c.int((1 << 2)); /* test for read permission */ + +/* copyfile flags */ +COPYFILE_ACL :: (1 << 0) +COPYFILE_STAT :: (1 << 1) +COPYFILE_XATTR :: (1 << 2) +COPYFILE_DATA :: (1 << 3) + +COPYFILE_SECURITY :: (COPYFILE_STAT | COPYFILE_ACL) +COPYFILE_METADATA :: (COPYFILE_SECURITY | COPYFILE_XATTR) +COPYFILE_ALL :: (COPYFILE_METADATA | COPYFILE_DATA) + +/* syslimits.h */ +PATH_MAX :: 1024; /* max bytes in pathname */ + +/* param.h */ +MAXPATHLEN :: PATH_MAX; + +/* proc_info.h */ +DARWIN_PROC_PIDPATHINFO_SIZE :: MAXPATHLEN; +DARWIN_PROC_PIDPATHINFO :: 11; + +DARWIN_PROC_ALL_PIDS :: c.int(1); +DARWIN_PROC_PGRP_ONLY :: c.int(2); +DARWIN_PROC_TTY_ONLY :: c.int(3); +DARWIN_PROC_UID_ONLY :: c.int(4); +DARWIN_PROC_RUID_ONLY :: c.int(5); +DARWIN_PROC_PPID_ONLY :: c.int(6); +DARWIN_PROC_KDBG_ONLY :: c.int(7); + +DARWIN_PROC_INFO_CALL_LISTPIDS :: c.int(0x1); +DARWIN_PROC_INFO_CALL_PIDINFO :: c.int(0x2); +DARWIN_PROC_INFO_CALL_PIDFDINFO :: c.int(0x3); +DARWIN_PROC_INFO_CALL_KERNMSGBUF :: c.int(0x4); +DARWIN_PROC_INFO_CALL_SETCONTROL :: c.int(0x5); +DARWIN_PROC_INFO_CALL_PIDFILEPORTINFO :: c.int(0x6); +DARWIN_PROC_INFO_CALL_TERMINATE :: c.int(0x7); +DARWIN_PROC_INFO_CALL_DIRTYCONTROL :: c.int(0x8); +DARWIN_PROC_INFO_CALL_PIDRUSAGE :: c.int(0x9); +DARWIN_PROC_INFO_CALL_PIDORIGINATORINFO :: c.int(0xa); +DARWIN_PROC_INFO_CALL_LISTCOALITIONS :: c.int(0xb); +DARWIN_PROC_INFO_CALL_CANUSEFGHW :: c.int(0xc); +DARWIN_PROC_INFO_CALL_PIDDYNKQUEUEINFO :: c.int(0xd); +DARWIN_PROC_INFO_CALL_UDATA_INFO :: c.int(0xe); + +/* mmap flags */ +MAP_ANONYMOUS :: 0x1000 /* allocated from memory, swap space */ +MAP_FILE :: 0x0000 /* map from file (default) */ +MAP_FIXED :: 0x0010 /* [MF|SHM] interpret addr exactly */ +MAP_HASSEMAPHORE :: 0x0200 /* region may contain semaphores */ +MAP_PRIVATE :: 0x0002 /* [MF|SHM] changes are private */ +MAP_SHARED :: 0x0001 /* [MF|SHM] share changes */ +MAP_NOCACHE :: 0x0400 /* don't cache pages for this mapping */ +MAP_JIT :: 0x0800 /* Allocate a region that will be used for JIT purposes */ +MAP_32BIT :: 0x8000 /* Return virtual addresses <4G only */ + +/* mmap prot flags */ +PROT_NONE :: 0x00 /* [MC2] no permissions */ +PROT_READ :: 0x01 /* [MC2] pages can be read */ +PROT_WRITE :: 0x02 /* [MC2] pages can be written */ +PROT_EXEC :: 0x04 /* [MC2] pages can be executed */ + +/* For owner Mode/Permission Flags for Open etc. */ +PERMISSION_MASK_IRWXU :: 0o000700 /* RWX mask for owner */ +PERMISSION_MASK_IRUSR :: 0o000400 /* R for owner */ +PERMISSION_MASK_IWUSR :: 0o000200 /* W for owner */ +PERMISSION_MASK_IXUSR :: 0o000100 /* X for owner */ + +/* For group Mode/Permission Flags for Open etc. */ +PERMISSION_MASK_IRWXG :: 0o000070 /* RWX mask for group */ +PERMISSION_MASK_IRGRP :: 0o000040 /* R for group */ +PERMISSION_MASK_IWGRP :: 0o000020 /* W for group */ +PERMISSION_MASK_IXGRP :: 0o000010 /* X for group */ + +/* For other Mode/Permission Flags for Open etc. */ +PERMISSION_MASK_IRWXO :: 0o000007 /* RWX mask for other */ +PERMISSION_MASK_IROTH :: 0o000004 /* R for other */ +PERMISSION_MASK_IWOTH :: 0o000002 /* W for other */ +PERMISSION_MASK_IXOTH :: 0o000001 /* X for other */ + +/* Special Mode/Permission Flags for Open etc. */ +PERMISSION_MASK_ISUID :: 0o004000 /* set user id on execution */ +PERMISSION_MASK_ISGID :: 0o002000 /* set group id on execution */ +PERMISSION_MASK_ISVTX :: 0o001000 /* save swapped text even after use */ + +OPEN_FLAG_RDONLY :: 0x0000 /* open for reading only */ +OPEN_FLAG_WRONLY :: 0x0001 /* open for writing only */ +OPEN_FLAG_RDWR :: 0x0002 /* open for reading and writing */ + +/* mask for above rd/wr/rdwr flags */ +MASK_ACCMODE :: 0x0003 + +OPEN_FLAG_NONBLOCK :: 0x00000004 /* no delay */ +OPEN_FLAG_APPEND :: 0x00000008 /* set append mode */ +OPEN_FLAG_CREAT :: 0x00000200 /* create if nonexistant */ +OPEN_FLAG_TRUNC :: 0x00000400 /* truncate to zero length */ +OPEN_FLAG_EXCL :: 0x00000800 /* error if already exists */ +OPEN_FLAG_SHLOCK :: 0x00000010 /* open with shared file lock */ +OPEN_FLAG_EXLOCK :: 0x00000020 /* open with exclusive file lock */ +OPEN_FLAG_DIRECTORY :: 0x00100000 /* restrict open to only directories */ +OPEN_FLAG_NOFOLLOW :: 0x00000100 /* don't follow symlinks */ +OPEN_FLAG_SYMLINK :: 0x00200000 /* allow open of a symlink */ +OPEN_FLAG_EVTONLY :: 0x00008000 /* descriptor requested for event notifications only */ +OPEN_FLAG_CLOEXEC :: 0x01000000 /* causes the descriptor to be closed if you use any of the exec like functions */ +OPEN_FLAG_NOFOLLOW_ANY :: 0x20000000 /* no symlinks allowed in path */ + +/* bsd/sys/param.h */ +DARWIN_MAXCOMLEN :: 16; + +/*--==========================================================================--*/ + +__darwin_ino64_t :: u64 +__darwin_time_t :: u32 +__darwin_dev_t :: i32 +__darwin_mode_t :: u16 +__darwin_off_t :: i64 +__darwin_blkcnt_t :: i64 +__darwin_blksize_t :: i32 +__darwin_pid_t :: i32 +__darwin_suseconds_t :: i32 + +time_t :: __darwin_time_t +dev_t :: __darwin_dev_t +mode_t :: u16 +nlink_t :: u16 +uid_t :: u16 +gid_t :: u16 +off_t :: __darwin_off_t +blkcnt_t :: __darwin_blkcnt_t +blksize_t :: __darwin_blksize_t +pid_t :: __darwin_pid_t + +stat :: __DARWIN_STRUCT_STAT64 +timeval :: _STRUCT_TIMEVAL + +/*--==========================================================================--*/ + +/* sys/stat.h */ +__DARWIN_STRUCT_STAT64 :: struct { + st_dev: dev_t, /* [XSI] ID of device containing file */ + st_mode: mode_t, /* [XSI] Mode of file (see below) */ + st_nlink: nlink_t, /* [XSI] Number of hard links */ + st_ino: __darwin_ino64_t, /* [XSI] File serial number */ + st_uid_t: uid_t, /* [XSI] User ID of the file */ + st_gid_t: gid_t, /* [XSI] Group ID of the file */ + st_rdev: dev_t, /* [XSI] Device ID */ + + // __DARWIN_STRUCT_STAT64_TIMES + st_atime: time_t, /* [XSI] Time of last access */ + st_atimensec: i32, /* nsec of last access */ + st_mtime: time_t, /* [XSI] Last data modification time */ + st_mtimensec: i32, /* last data modification nsec */ + st_ctime: time_t, /* [XSI] Time of last status change */ + st_ctimensec: u32, /* nsec of last status change */ + st_birthtime: time_t, /* File creation time(birth) */ + st_birthtimensec: i32, /* nsec of File creation time */ + // end __DARWIN_STRUCT_STAT64_TIMES + + st_size: off_t, /* [XSI] file size, in bytes */ + st_blocks: blkcnt_t, /* [XSI] blocks allocated for file */ + st_blksize: blksize_t, /* [XSI] optimal blocksize for I/O */ + st_flags: u32, /* user defined flags for file */ + st_gen: u32, /* file generation number */ + st_lspare: i32, /* RESERVED: DO NOT USE! */ + st_qspare: [2]i64, /* RESERVED: DO NOT USE! */ +} + +/* sys/_types/_timeval.h */ +_STRUCT_TIMEVAL :: struct { + tv_sec: __darwin_time_t, /* seconds */ + tv_usec: __darwin_suseconds_t, /* microseconds */ +}; + +/* pwd.h */ +_Password_Entry :: struct { + pw_name: cstring, /* username */ + pw_passwd: cstring, /* user password */ + pw_uid: i32, /* user ID */ + pw_gid: i32, /* group ID */ + pw_change: u64, /* password change time */ + pw_class: cstring, /* user access class */ + pw_gecos: cstring, /* full user name */ + pw_dir: cstring, /* home directory */ + pw_shell: cstring, /* shell program */ + pw_expire: u64, /* account expiration */ + pw_fields: i32, /* filled fields */ +}; + +/* processinfo.h */ +_Proc_Bsdinfo :: struct { + pbi_flags: u32, /* if is 64bit; emulated etc */ + pbi_status: u32, + pbi_xstatus: u32, + pbi_pid: u32, + pbi_ppid: u32, + pbi_uid: u32, + pbi_gid: u32, + pbi_ruid: u32, + pbi_rgid: u32, + pbi_svuid: u32, + pbi_svgid: u32, + res: u32, + pbi_comm: [DARWIN_MAXCOMLEN]u8, + pbi_name: [2 * DARWIN_MAXCOMLEN]u8, /* empty if no name is registered */ + pbi_nfiles: u32, + pbi_pgid: u32, + pbi_pjobc: u32, + e_tdev: u32, /* controlling tty dev */ + e_tpgid: u32, /* tty process group id */ + pbi_nice: i32, + pbi_start_tvsec: u64, + pbi_start_tvusec: u64, +}; + +/*--==========================================================================--*/ + +syscall_fsync :: #force_inline proc(fildes: c.int) -> bool { + return !(cast(bool)intrinsics.syscall(unix_offset_syscall(.fsync), uintptr(fildes))) +} + +syscall_write :: #force_inline proc (fildes: c.int, buf: ^byte, nbyte: u64) -> bool { + return !(cast(bool)intrinsics.syscall(unix_offset_syscall(.write), uintptr(fildes), uintptr(buf), uintptr(nbyte))) +} + +syscall_read :: #force_inline proc(fildes: c.int, buf: ^byte, nbyte: u64) -> i64 { + return cast(i64)intrinsics.syscall(unix_offset_syscall(.read), uintptr(fildes), uintptr(buf), uintptr(nbyte)) +} + +syscall_open :: #force_inline proc(path: cstring, oflag: u32, mode: u32) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.open), transmute(uintptr)path, uintptr(oflag), uintptr(mode)) +} + +syscall_close :: #force_inline proc(fd: c.int) -> bool { + return !(cast(bool)intrinsics.syscall(unix_offset_syscall(.close), uintptr(fd))) +} + +syscall_fchmod :: #force_inline proc(fildes: c.int, mode: u32) -> c.int { + return (cast(c.int)intrinsics.syscall(unix_offset_syscall(.fchmod), uintptr(fildes), uintptr(mode))) +} + +syscall_chmod :: #force_inline proc(path: cstring, mode: u32) -> c.int { + return (cast(c.int)intrinsics.syscall(unix_offset_syscall(.chmod), transmute(uintptr)path, uintptr(mode))) +} + +syscall_mkdir :: #force_inline proc(path: cstring, mode: u32) -> c.int { + return (cast(c.int)intrinsics.syscall(unix_offset_syscall(.mkdir), transmute(uintptr)path, uintptr(mode))) +} + +syscall_mkdir_at :: #force_inline proc(fd: c.int, path: cstring, mode: u32) -> c.int { + return (cast(c.int)intrinsics.syscall(unix_offset_syscall(.mkdir), uintptr(fd), transmute(uintptr)path, uintptr(mode))) +} + +syscall_rmdir :: #force_inline proc(path: cstring, mode: u32) -> c.int { + return (cast(c.int)intrinsics.syscall(unix_offset_syscall(.rmdir), transmute(uintptr)path, uintptr(mode))) +} + +syscall_rename :: #force_inline proc(path_old: cstring, path_new: cstring) -> c.int { + return (cast(c.int)intrinsics.syscall(unix_offset_syscall(.rename), transmute(uintptr)path_old, transmute(uintptr)path_new)) +} + +syscall_rename_at :: #force_inline proc(from_fd: c.int, from: cstring, to_fd: c.int, to: cstring) -> c.int { + return (cast(c.int)intrinsics.syscall(unix_offset_syscall(.renameat), uintptr(from_fd), transmute(uintptr)from, uintptr(to_fd), transmute(uintptr)to)) +} + +syscall_lseek :: #force_inline proc(fd: c.int, offset: i64, whence: c.int) -> i64 { + return cast(i64)intrinsics.syscall(unix_offset_syscall(.lseek), uintptr(fd), uintptr(offset), uintptr(whence)) +} + +syscall_gettid :: #force_inline proc() -> u64 { + return cast(u64)intrinsics.syscall(unix_offset_syscall(.gettid)) +} + +syscall_fstat :: #force_inline proc(fd: c.int, status: ^stat) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.fstat), uintptr(fd), uintptr(status)) +} + +syscall_lstat :: #force_inline proc(path: cstring, status: ^stat) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.lstat), transmute(uintptr)path, uintptr(status)) +} + +syscall_stat :: #force_inline proc(path: cstring, status: ^stat) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.stat), transmute(uintptr)path, uintptr(status)) +} + +syscall_fstatat :: #force_inline proc(fd: c.int, path: cstring, status: ^stat) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.fstatat), uintptr(fd), transmute(uintptr)path, uintptr(status)) +} + +syscall_link :: #force_inline proc(path: cstring, to_link: cstring) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.link), transmute(uintptr)path, transmute(uintptr)to_link) +} + +syscall_linkat :: #force_inline proc(fd: c.int, path: cstring, fd2: c.int, to_link: cstring) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.linkat), uintptr(fd), transmute(uintptr)path, uintptr(fd2), transmute(uintptr)to_link) +} + +syscall_readlink :: #force_inline proc(path: cstring, buf: ^u8, buf_size: u64) -> i64 { + return cast(i64)intrinsics.syscall(unix_offset_syscall(.readlink), transmute(uintptr)path, uintptr(buf), uintptr(buf_size)) +} + +syscall_readlinkat :: #force_inline proc(fd: c.int, path: cstring, buf: ^u8, buf_size: u64) -> i64 { + return cast(i64)intrinsics.syscall(unix_offset_syscall(.readlinkat), uintptr(fd), transmute(uintptr)path, uintptr(buf), uintptr(buf_size)) +} + +syscall_access :: #force_inline proc(path: cstring, mode: c.int) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.access), transmute(uintptr)path, uintptr(mode)) +} + +syscall_faccessat :: #force_inline proc(fd: c.int, path: cstring, mode: c.int, flag: c.int) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.faccessat), uintptr(fd), transmute(uintptr)path, uintptr(mode), uintptr(flag)) +} + +syscall_getdirentries :: #force_inline proc(fd: c.int, buf: ^u8, nbytes: c.int, base_pointer: ^u32) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.getdirentries), uintptr(fd), uintptr(buf), uintptr(nbytes), uintptr(base_pointer)) +} + +syscall_truncate :: #force_inline proc (path: cstring, length: off_t) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.truncate), transmute(uintptr)path, uintptr(length)) +} + +syscall_ftruncate :: #force_inline proc (fd: c.int, length: off_t) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.ftruncate), uintptr(fd), uintptr(length)) +} + +syscall_sysctl :: #force_inline proc (name: ^c.int, namelen: c.uint, oldp: rawptr, oldlenp: ^i64, newp: ^i8, newlen: i64) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.sysctl), uintptr(name), uintptr(namelen), uintptr(oldp), uintptr(oldlenp), uintptr(newp), uintptr(newlen)) +} + +syscall_copyfile :: #force_inline proc(from: cstring, to: cstring, state: rawptr, flags: u32) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.copyfile), transmute(uintptr)from, transmute(uintptr)to, uintptr(state), uintptr(flags)) +} + +// think about this? last arg should be more than one +syscall_fcntl :: #force_inline proc(fd: c.int, cmd: c.int, other: rawptr) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.fsctl), uintptr(fd), uintptr(cmd), uintptr(other)) +} + +syscall_exit :: #force_inline proc(code: c.int) { + intrinsics.syscall(unix_offset_syscall(.exit), uintptr(code)) +} + +syscall_kill :: #force_inline proc(pid: pid_t, sig: c.int) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.kill), uintptr(pid), uintptr(sig)) +} + +syscall_dup :: #force_inline proc(fd: c.int) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.dup), uintptr(fd)) +} + +syscall_execve :: #force_inline proc(path: cstring, argv: [^]cstring, env: [^]cstring) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.execve), transmute(uintptr)path, transmute(uintptr)argv, transmute(uintptr)env) +} + +syscall_munmap :: #force_inline proc(addr: rawptr, len: u64) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.mmap), uintptr(addr), uintptr(len)) +} + +syscall_mmap :: #force_inline proc(addr: ^u8, len: u64, port: c.int, flags: c.int, fd: int, offset: off_t) -> ^u8 { + return cast(^u8)intrinsics.syscall(unix_offset_syscall(.mmap), uintptr(addr), uintptr(len), uintptr(port), uintptr(flags), uintptr(fd), uintptr(offset)) +} + +syscall_flock :: #force_inline proc(fd: c.int, operation: c.int) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.flock), uintptr(fd), uintptr(operation)) +} + +syscall_utimes :: #force_inline proc(path: cstring, times: ^timeval) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.utimes), transmute(uintptr)path, uintptr(times)) +} + +syscall_futimes :: #force_inline proc(fd: c.int, times: ^timeval) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.futimes), uintptr(fd), uintptr(times)) +} + +syscall_adjtime :: #force_inline proc(delta: ^timeval, old_delta: ^timeval) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.adjtime), uintptr(delta), uintptr(old_delta)) +} + +syscall_sysctlbyname :: #force_inline proc(name: cstring, oldp: rawptr, oldlenp: ^i64, newp: rawptr, newlen: i64) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.sysctlbyname), transmute(uintptr)name, uintptr(oldp), uintptr(oldlenp), uintptr(newp), uintptr(newlen)) +} + +syscall_proc_info :: #force_inline proc(num: c.int, pid: u32, flavor: c.int, arg: u64, buffer: rawptr, buffer_size: c.int) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.proc_info), uintptr(num), uintptr(pid), uintptr(flavor), uintptr(arg), uintptr(buffer), uintptr(buffer_size)) +} + +syscall_openat :: #force_inline proc(fd: int, path: cstring, oflag: u32, mode: u32) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.openat), uintptr(fd), transmute(uintptr)path, uintptr(oflag), uintptr(mode)) +} + +syscall_getentropy :: #force_inline proc(buf: ^u8, buflen: u64) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.getentropy), uintptr(buf), uintptr(buflen)) +} + +syscall_pipe :: #force_inline proc(fds: [^]c.int) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.getentropy), uintptr(&fds[0]), uintptr(&fds[1])) +} + +syscall_chdir :: #force_inline proc(path: cstring) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.getentropy), transmute(uintptr)path) +} + +syscall_fchdir :: #force_inline proc(fd: c.int, path: cstring) -> c.int { + return cast(c.int)intrinsics.syscall(unix_offset_syscall(.getentropy), uintptr(fd), transmute(uintptr)path) +} \ No newline at end of file From ab3bae5c0265f653c51eebaafdc17f0e16dccb8f Mon Sep 17 00:00:00 2001 From: Platin21 Date: Sun, 23 Jan 2022 23:14:46 +0100 Subject: [PATCH 009/190] Fixed package name --- core/sys/darwin/xnu_system_call_helpers.odin | 2 +- core/sys/darwin/xnu_system_call_numbers.odin | 2 +- core/sys/darwin/xnu_system_call_wrappers.odin | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/sys/darwin/xnu_system_call_helpers.odin b/core/sys/darwin/xnu_system_call_helpers.odin index eabbb73df..d6bf9fd62 100644 --- a/core/sys/darwin/xnu_system_call_helpers.odin +++ b/core/sys/darwin/xnu_system_call_helpers.odin @@ -1,4 +1,4 @@ -package sys +package darwin import "core:strings" import "core:c" diff --git a/core/sys/darwin/xnu_system_call_numbers.odin b/core/sys/darwin/xnu_system_call_numbers.odin index 4aba8a830..b90373fdc 100644 --- a/core/sys/darwin/xnu_system_call_numbers.odin +++ b/core/sys/darwin/xnu_system_call_numbers.odin @@ -1,4 +1,4 @@ -package sys +package darwin unix_offset_syscall :: proc(number: System_Call_Number) -> uintptr { return uintptr(number) + uintptr(0x2000000) diff --git a/core/sys/darwin/xnu_system_call_wrappers.odin b/core/sys/darwin/xnu_system_call_wrappers.odin index a584299f8..4cf86862f 100644 --- a/core/sys/darwin/xnu_system_call_wrappers.odin +++ b/core/sys/darwin/xnu_system_call_wrappers.odin @@ -1,4 +1,4 @@ -package sys +package darwin import "core:c" import "core:intrinsics" From 1243b1a58c5a15aab7a5272e73bfaa6aa6b79ce7 Mon Sep 17 00:00:00 2001 From: Platin21 Date: Sun, 23 Jan 2022 23:16:57 +0100 Subject: [PATCH 010/190] Fixed cyclic imports which where not needed --- core/sys/darwin/xnu_system_call_helpers.odin | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/sys/darwin/xnu_system_call_helpers.odin b/core/sys/darwin/xnu_system_call_helpers.odin index d6bf9fd62..f9844a73f 100644 --- a/core/sys/darwin/xnu_system_call_helpers.odin +++ b/core/sys/darwin/xnu_system_call_helpers.odin @@ -2,8 +2,6 @@ package darwin import "core:strings" import "core:c" -import "core:os" -import "core:fmt" // this package uses the sys prefix for the proc names to indicate that these aren't native syscalls but directly call such sys_write_string :: proc (fd: c.int, message: string) -> bool { From a3d99765cc1012c2bb3e4f7e953c8126a9c158d2 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Sat, 5 Feb 2022 22:18:22 +0100 Subject: [PATCH 011/190] mem: Add `doc.odin` with `Tracking_Allocator` example. --- core/mem/doc.odin | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 core/mem/doc.odin diff --git a/core/mem/doc.odin b/core/mem/doc.odin new file mode 100644 index 000000000..2a5ee06d3 --- /dev/null +++ b/core/mem/doc.odin @@ -0,0 +1,34 @@ +/* +package mem implements various types of allocators. + + +An example of how to use the `Tracking_Allocator` to track subsequent allocations +in your program and report leaks and bad frees: + +```odin +package foo + +import "core:mem" +import "core:fmt" + +_main :: proc() { + do stuff +} + +main :: proc() { + track: mem.Tracking_Allocator + mem.tracking_allocator_init(&track, context.allocator) + context.allocator = mem.tracking_allocator(&track) + + _main() + + for _, v in track.allocation_map { + fmt.printf("%v leaked %v bytes", v.location, v.size) + } + for bf in track.bad_free_array { + fmt.printf("%v allocation %p was freed badly", bf.location, bf.memory) + } +} +``` +*/ +package mem \ No newline at end of file From 9cbf46e6898a6d60e8e8580aad93773c193ba22f Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 7 Feb 2022 11:00:38 +0000 Subject: [PATCH 012/190] Fix constant multi pointer declarations through integers --- src/llvm_backend_const.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/llvm_backend_const.cpp b/src/llvm_backend_const.cpp index 5862a7add..8f17a1cfb 100644 --- a/src/llvm_backend_const.cpp +++ b/src/llvm_backend_const.cpp @@ -115,8 +115,8 @@ LLVMValueRef llvm_const_cast(LLVMValueRef val, LLVMTypeRef dst) { lbValue lb_const_ptr_cast(lbModule *m, lbValue value, Type *t) { - GB_ASSERT(is_type_pointer(value.type)); - GB_ASSERT(is_type_pointer(t)); + GB_ASSERT(is_type_internally_pointer_like(value.type)); + GB_ASSERT(is_type_internally_pointer_like(t)); GB_ASSERT(lb_is_const(value)); lbValue res = {}; @@ -175,7 +175,7 @@ LLVMValueRef llvm_const_array(LLVMTypeRef elem_type, LLVMValueRef *values, isize } LLVMValueRef llvm_const_slice(lbModule *m, lbValue data, lbValue len) { - GB_ASSERT(is_type_pointer(data.type)); + GB_ASSERT(is_type_pointer(data.type) || is_type_multi_pointer(data.type)); GB_ASSERT(are_types_identical(len.type, t_int)); LLVMValueRef vals[2] = { data.value, @@ -568,7 +568,7 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, bool allow_loc } case ExactValue_Integer: - if (is_type_pointer(type)) { + if (is_type_pointer(type) || is_type_multi_pointer(type)) { LLVMTypeRef t = lb_type(m, original_type); LLVMValueRef i = lb_big_int_to_llvm(m, t_uintptr, &value.value_integer); res.value = LLVMConstIntToPtr(i, t); From 3c2ed3bb69df24ba162e5f2ea8f61ee3f7fd8e2f Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 7 Feb 2022 11:37:13 +0000 Subject: [PATCH 013/190] Correct `//+private file` bug --- src/checker.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/checker.cpp b/src/checker.cpp index b62ef7c4c..7fb4fdb29 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -3477,11 +3477,11 @@ void check_collect_value_decl(CheckerContext *c, Ast *decl) { if (entity_visibility_kind == EntityVisiblity_Public && (c->scope->flags&ScopeFlag_File) && c->scope->file) { - if (c->scope->file->flags & AstFile_IsPrivatePkg) { - entity_visibility_kind = EntityVisiblity_PrivateToPackage; - } else if (c->scope->file->flags & AstFile_IsPrivateFile) { + if (c->scope->file->flags & AstFile_IsPrivateFile) { entity_visibility_kind = EntityVisiblity_PrivateToFile; - } + } else if (c->scope->file->flags & AstFile_IsPrivatePkg) { + entity_visibility_kind = EntityVisiblity_PrivateToPackage; + } } if (entity_visibility_kind != EntityVisiblity_Public && !(c->scope->flags&ScopeFlag_File)) { From 817bc7434dfd0ebfeb1310c22741b9d66af67ac2 Mon Sep 17 00:00:00 2001 From: NoahR02 Date: Tue, 8 Feb 2022 06:16:10 -0500 Subject: [PATCH 014/190] Ports OpenSimplex2 from https://github.com/KdotJPG/OpenSimplex2 to Odin. Adds tests for the noise procedures. --- core/math/noise/internal.odin | 734 ++++++++++++++++++ core/math/noise/opensimplex2.odin | 171 ++++ tests/core/Makefile | 7 +- tests/core/build.bat | 7 +- .../core/math/noise/test_core_math_noise.odin | 153 ++++ 5 files changed, 1069 insertions(+), 3 deletions(-) create mode 100644 core/math/noise/internal.odin create mode 100644 core/math/noise/opensimplex2.odin create mode 100644 tests/core/math/noise/test_core_math_noise.odin diff --git a/core/math/noise/internal.odin b/core/math/noise/internal.odin new file mode 100644 index 000000000..5837f9235 --- /dev/null +++ b/core/math/noise/internal.odin @@ -0,0 +1,734 @@ +/* + OpenSimplex2 noise implementation. + + Ported from https://github.com/KdotJPG/OpenSimplex2. + Copyright 2022 Yuki2 (https://github.com/NoahR02) +*/ +//+private +package math_noise + +/* + Private implementation details follow. +*/ + +PRIME_X :: i64(0x5205402B9270C86F) +PRIME_Y :: i64(0x598CD327003817B5) +PRIME_Z :: i64(0x5BCC226E9FA0BACB) +PRIME_W :: i64(0x56CC5227E58F554B) + +HASH_MULTIPLIER :: i64(0x53A3F72DEEC546F5) +SEED_FLIP_3D :: i64(-0x52D547B2E96ED629) +SEED_OFFSET_4D :: i64(0xE83DC3E0DA7164D) + +ROOT_2_OVER_2 :: f64(0.7071067811865476) +SKEW_2D :: f64(0.366025403784439) +UNSKEW_2D :: f64(-0.21132486540518713) +ROOT_3_OVER_3 :: f64(0.577350269189626) + +FALLBACK_ROTATE_3D :: f64(2.0) / f64(3.0) +ROTATE_3D_ORTHOGONALIZER :: f64(UNSKEW_2D) + +SKEW_4D :: f32(0hbe0d8369) +UNSKEW_4D :: f32(0.309016994374947) +LATTICE_STEP_4D :: f32(0.2) + +N_GRADS_2D_EXPONENT :: 7 +N_GRADS_3D_EXPONENT :: 8 +N_GRADS_4D_EXPONENT :: 9 +N_GRADS_2D :: 1 << N_GRADS_2D_EXPONENT +N_GRADS_3D :: 1 << N_GRADS_3D_EXPONENT +N_GRADS_4D :: 1 << N_GRADS_4D_EXPONENT + +NORMALIZER_2D :: f64(0.01001634121365712) +NORMALIZER_3D :: f64(0.07969837668935331) +NORMALIZER_4D :: f64(0.0220065933241897) +RSQUARED_2D :: f32(0.5) +RSQUARED_3D :: f32(0.6) +RSQUARED_4D :: f32(0.6) + +GRADIENTS_2D := [N_GRADS_2D * 2]f32{ + 0h4218d2da, 0h42b87975, 0h42b87975, 0h4218d2da, 0h42b87975, 0hc218d2da, 0h4218d2da, 0hc2b87975, + 0hc218d2da, 0hc2b87975, 0hc2b87975, 0hc218d2da, 0hc2b87975, 0h4218d2da, 0hc218d2da, 0h42b87975, + 0h4150804d, 0h42c5f72a, 0h42731b78, 0h429e696c, 0h429e696c, 0h42731b78, 0h42c5f72a, 0h4150804d, + 0h42c5f72a, 0hc150804d, 0h429e696c, 0hc2731b78, 0h42731b78, 0hc29e696c, 0h4150804d, 0hc2c5f72a, + 0hc150804d, 0hc2c5f72a, 0hc2731b78, 0hc29e696c, 0hc29e696c, 0hc2731b78, 0hc2c5f72a, 0hc150804d, + 0hc2c5f72a, 0h4150804d, 0hc29e696c, 0h42731b78, 0hc2731b78, 0h429e696c, 0hc150804d, 0h42c5f72a, + 0h4218d2da, 0h42b87975, 0h42b87975, 0h4218d2da, 0h42b87975, 0hc218d2da, 0h4218d2da, 0hc2b87975, + 0hc218d2da, 0hc2b87975, 0hc2b87975, 0hc218d2da, 0hc2b87975, 0h4218d2da, 0hc218d2da, 0h42b87975, + 0h4150804d, 0h42c5f72a, 0h42731b78, 0h429e696c, 0h429e696c, 0h42731b78, 0h42c5f72a, 0h4150804d, + 0h42c5f72a, 0hc150804d, 0h429e696c, 0hc2731b78, 0h42731b78, 0hc29e696c, 0h4150804d, 0hc2c5f72a, + 0hc150804d, 0hc2c5f72a, 0hc2731b78, 0hc29e696c, 0hc29e696c, 0hc2731b78, 0hc2c5f72a, 0hc150804d, + 0hc2c5f72a, 0h4150804d, 0hc29e696c, 0h42731b78, 0hc2731b78, 0h429e696c, 0hc150804d, 0h42c5f72a, + 0h4218d2da, 0h42b87975, 0h42b87975, 0h4218d2da, 0h42b87975, 0hc218d2da, 0h4218d2da, 0hc2b87975, + 0hc218d2da, 0hc2b87975, 0hc2b87975, 0hc218d2da, 0hc2b87975, 0h4218d2da, 0hc218d2da, 0h42b87975, + 0h4150804d, 0h42c5f72a, 0h42731b78, 0h429e696c, 0h429e696c, 0h42731b78, 0h42c5f72a, 0h4150804d, + 0h42c5f72a, 0hc150804d, 0h429e696c, 0hc2731b78, 0h42731b78, 0hc29e696c, 0h4150804d, 0hc2c5f72a, + 0hc150804d, 0hc2c5f72a, 0hc2731b78, 0hc29e696c, 0hc29e696c, 0hc2731b78, 0hc2c5f72a, 0hc150804d, + 0hc2c5f72a, 0h4150804d, 0hc29e696c, 0h42731b78, 0hc2731b78, 0h429e696c, 0hc150804d, 0h42c5f72a, + 0h4218d2da, 0h42b87975, 0h42b87975, 0h4218d2da, 0h42b87975, 0hc218d2da, 0h4218d2da, 0hc2b87975, + 0hc218d2da, 0hc2b87975, 0hc2b87975, 0hc218d2da, 0hc2b87975, 0h4218d2da, 0hc218d2da, 0h42b87975, + 0h4150804d, 0h42c5f72a, 0h42731b78, 0h429e696c, 0h429e696c, 0h42731b78, 0h42c5f72a, 0h4150804d, + 0h42c5f72a, 0hc150804d, 0h429e696c, 0hc2731b78, 0h42731b78, 0hc29e696c, 0h4150804d, 0hc2c5f72a, + 0hc150804d, 0hc2c5f72a, 0hc2731b78, 0hc29e696c, 0hc29e696c, 0hc2731b78, 0hc2c5f72a, 0hc150804d, + 0hc2c5f72a, 0h4150804d, 0hc29e696c, 0h42731b78, 0hc2731b78, 0h429e696c, 0hc150804d, 0h42c5f72a, + 0h4218d2da, 0h42b87975, 0h42b87975, 0h4218d2da, 0h42b87975, 0hc218d2da, 0h4218d2da, 0hc2b87975, + 0hc218d2da, 0hc2b87975, 0hc2b87975, 0hc218d2da, 0hc2b87975, 0h4218d2da, 0hc218d2da, 0h42b87975, + 0h4150804d, 0h42c5f72a, 0h42731b78, 0h429e696c, 0h429e696c, 0h42731b78, 0h42c5f72a, 0h4150804d, + 0h42c5f72a, 0hc150804d, 0h429e696c, 0hc2731b78, 0h42731b78, 0hc29e696c, 0h4150804d, 0hc2c5f72a, + 0hc150804d, 0hc2c5f72a, 0hc2731b78, 0hc29e696c, 0hc29e696c, 0hc2731b78, 0hc2c5f72a, 0hc150804d, + 0hc2c5f72a, 0h4150804d, 0hc29e696c, 0h42731b78, 0hc2731b78, 0h429e696c, 0hc150804d, 0h42c5f72a, + 0h4218d2da, 0h42b87975, 0h42b87975, 0h4218d2da, 0h42b87975, 0hc218d2da, 0h4218d2da, 0hc2b87975, + 0hc218d2da, 0hc2b87975, 0hc2b87975, 0hc218d2da, 0hc2b87975, 0h4218d2da, 0hc218d2da, 0h42b87975, +} + +GRADIENTS_3D := [N_GRADS_3D * 4]f32{ + 0h41df5103, 0h41df5103, 0hc148c1c5, 0h00000000, 0h41df5103, 0h41df5103, 0h4148c1c5, 0h00000000, + 0h421ae5b8, 0h416b5146, 0h00000000, 0h00000000, 0h416b5146, 0h421ae5b8, 0h00000000, 0h00000000, + 0hc1df5103, 0h41df5103, 0hc148c1c5, 0h00000000, 0hc1df5103, 0h41df5103, 0h4148c1c5, 0h00000000, + 0hc16b5146, 0h421ae5b8, 0h00000000, 0h00000000, 0hc21ae5b8, 0h416b5146, 0h00000000, 0h00000000, + 0hc148c1c5, 0hc1df5103, 0hc1df5103, 0h00000000, 0h4148c1c5, 0hc1df5103, 0hc1df5103, 0h00000000, + 0h00000000, 0hc21ae5b8, 0hc16b5146, 0h00000000, 0h00000000, 0hc16b5146, 0hc21ae5b8, 0h00000000, + 0hc148c1c5, 0hc1df5103, 0h41df5103, 0h00000000, 0h4148c1c5, 0hc1df5103, 0h41df5103, 0h00000000, + 0h00000000, 0hc16b5146, 0h421ae5b8, 0h00000000, 0h00000000, 0hc21ae5b8, 0h416b5146, 0h00000000, + 0hc1df5103, 0hc1df5103, 0hc148c1c5, 0h00000000, 0hc1df5103, 0hc1df5103, 0h4148c1c5, 0h00000000, + 0hc21ae5b8, 0hc16b5146, 0h00000000, 0h00000000, 0hc16b5146, 0hc21ae5b8, 0h00000000, 0h00000000, + 0hc1df5103, 0hc148c1c5, 0hc1df5103, 0h00000000, 0hc1df5103, 0h4148c1c5, 0hc1df5103, 0h00000000, + 0hc16b5146, 0h00000000, 0hc21ae5b8, 0h00000000, 0hc21ae5b8, 0h00000000, 0hc16b5146, 0h00000000, + 0hc1df5103, 0hc148c1c5, 0h41df5103, 0h00000000, 0hc1df5103, 0h4148c1c5, 0h41df5103, 0h00000000, + 0hc21ae5b8, 0h00000000, 0h416b5146, 0h00000000, 0hc16b5146, 0h00000000, 0h421ae5b8, 0h00000000, + 0hc148c1c5, 0h41df5103, 0hc1df5103, 0h00000000, 0h4148c1c5, 0h41df5103, 0hc1df5103, 0h00000000, + 0h00000000, 0h416b5146, 0hc21ae5b8, 0h00000000, 0h00000000, 0h421ae5b8, 0hc16b5146, 0h00000000, + 0hc148c1c5, 0h41df5103, 0h41df5103, 0h00000000, 0h4148c1c5, 0h41df5103, 0h41df5103, 0h00000000, + 0h00000000, 0h421ae5b8, 0h416b5146, 0h00000000, 0h00000000, 0h416b5146, 0h421ae5b8, 0h00000000, + 0h41df5103, 0hc1df5103, 0hc148c1c5, 0h00000000, 0h41df5103, 0hc1df5103, 0h4148c1c5, 0h00000000, + 0h416b5146, 0hc21ae5b8, 0h00000000, 0h00000000, 0h421ae5b8, 0hc16b5146, 0h00000000, 0h00000000, + 0h41df5103, 0hc148c1c5, 0hc1df5103, 0h00000000, 0h41df5103, 0h4148c1c5, 0hc1df5103, 0h00000000, + 0h421ae5b8, 0h00000000, 0hc16b5146, 0h00000000, 0h416b5146, 0h00000000, 0hc21ae5b8, 0h00000000, + 0h41df5103, 0hc148c1c5, 0h41df5103, 0h00000000, 0h41df5103, 0h4148c1c5, 0h41df5103, 0h00000000, + 0h416b5146, 0h00000000, 0h421ae5b8, 0h00000000, 0h421ae5b8, 0h00000000, 0h416b5146, 0h00000000, + 0h41df5103, 0h41df5103, 0hc148c1c5, 0h00000000, 0h41df5103, 0h41df5103, 0h4148c1c5, 0h00000000, + 0h421ae5b8, 0h416b5146, 0h00000000, 0h00000000, 0h416b5146, 0h421ae5b8, 0h00000000, 0h00000000, + 0hc1df5103, 0h41df5103, 0hc148c1c5, 0h00000000, 0hc1df5103, 0h41df5103, 0h4148c1c5, 0h00000000, + 0hc16b5146, 0h421ae5b8, 0h00000000, 0h00000000, 0hc21ae5b8, 0h416b5146, 0h00000000, 0h00000000, + 0hc148c1c5, 0hc1df5103, 0hc1df5103, 0h00000000, 0h4148c1c5, 0hc1df5103, 0hc1df5103, 0h00000000, + 0h00000000, 0hc21ae5b8, 0hc16b5146, 0h00000000, 0h00000000, 0hc16b5146, 0hc21ae5b8, 0h00000000, + 0hc148c1c5, 0hc1df5103, 0h41df5103, 0h00000000, 0h4148c1c5, 0hc1df5103, 0h41df5103, 0h00000000, + 0h00000000, 0hc16b5146, 0h421ae5b8, 0h00000000, 0h00000000, 0hc21ae5b8, 0h416b5146, 0h00000000, + 0hc1df5103, 0hc1df5103, 0hc148c1c5, 0h00000000, 0hc1df5103, 0hc1df5103, 0h4148c1c5, 0h00000000, + 0hc21ae5b8, 0hc16b5146, 0h00000000, 0h00000000, 0hc16b5146, 0hc21ae5b8, 0h00000000, 0h00000000, + 0hc1df5103, 0hc148c1c5, 0hc1df5103, 0h00000000, 0hc1df5103, 0h4148c1c5, 0hc1df5103, 0h00000000, + 0hc16b5146, 0h00000000, 0hc21ae5b8, 0h00000000, 0hc21ae5b8, 0h00000000, 0hc16b5146, 0h00000000, + 0hc1df5103, 0hc148c1c5, 0h41df5103, 0h00000000, 0hc1df5103, 0h4148c1c5, 0h41df5103, 0h00000000, + 0hc21ae5b8, 0h00000000, 0h416b5146, 0h00000000, 0hc16b5146, 0h00000000, 0h421ae5b8, 0h00000000, + 0hc148c1c5, 0h41df5103, 0hc1df5103, 0h00000000, 0h4148c1c5, 0h41df5103, 0hc1df5103, 0h00000000, + 0h00000000, 0h416b5146, 0hc21ae5b8, 0h00000000, 0h00000000, 0h421ae5b8, 0hc16b5146, 0h00000000, + 0hc148c1c5, 0h41df5103, 0h41df5103, 0h00000000, 0h4148c1c5, 0h41df5103, 0h41df5103, 0h00000000, + 0h00000000, 0h421ae5b8, 0h416b5146, 0h00000000, 0h00000000, 0h416b5146, 0h421ae5b8, 0h00000000, + 0h41df5103, 0hc1df5103, 0hc148c1c5, 0h00000000, 0h41df5103, 0hc1df5103, 0h4148c1c5, 0h00000000, + 0h416b5146, 0hc21ae5b8, 0h00000000, 0h00000000, 0h421ae5b8, 0hc16b5146, 0h00000000, 0h00000000, + 0h41df5103, 0hc148c1c5, 0hc1df5103, 0h00000000, 0h41df5103, 0h4148c1c5, 0hc1df5103, 0h00000000, + 0h421ae5b8, 0h00000000, 0hc16b5146, 0h00000000, 0h416b5146, 0h00000000, 0hc21ae5b8, 0h00000000, + 0h41df5103, 0hc148c1c5, 0h41df5103, 0h00000000, 0h41df5103, 0h4148c1c5, 0h41df5103, 0h00000000, + 0h416b5146, 0h00000000, 0h421ae5b8, 0h00000000, 0h421ae5b8, 0h00000000, 0h416b5146, 0h00000000, + 0h41df5103, 0h41df5103, 0hc148c1c5, 0h00000000, 0h41df5103, 0h41df5103, 0h4148c1c5, 0h00000000, + 0h421ae5b8, 0h416b5146, 0h00000000, 0h00000000, 0h416b5146, 0h421ae5b8, 0h00000000, 0h00000000, + 0hc1df5103, 0h41df5103, 0hc148c1c5, 0h00000000, 0hc1df5103, 0h41df5103, 0h4148c1c5, 0h00000000, + 0hc16b5146, 0h421ae5b8, 0h00000000, 0h00000000, 0hc21ae5b8, 0h416b5146, 0h00000000, 0h00000000, + 0hc148c1c5, 0hc1df5103, 0hc1df5103, 0h00000000, 0h4148c1c5, 0hc1df5103, 0hc1df5103, 0h00000000, + 0h00000000, 0hc21ae5b8, 0hc16b5146, 0h00000000, 0h00000000, 0hc16b5146, 0hc21ae5b8, 0h00000000, + 0hc148c1c5, 0hc1df5103, 0h41df5103, 0h00000000, 0h4148c1c5, 0hc1df5103, 0h41df5103, 0h00000000, + 0h00000000, 0hc16b5146, 0h421ae5b8, 0h00000000, 0h00000000, 0hc21ae5b8, 0h416b5146, 0h00000000, + 0hc1df5103, 0hc1df5103, 0hc148c1c5, 0h00000000, 0hc1df5103, 0hc1df5103, 0h4148c1c5, 0h00000000, + 0hc21ae5b8, 0hc16b5146, 0h00000000, 0h00000000, 0hc16b5146, 0hc21ae5b8, 0h00000000, 0h00000000, + 0hc1df5103, 0hc148c1c5, 0hc1df5103, 0h00000000, 0hc1df5103, 0h4148c1c5, 0hc1df5103, 0h00000000, + 0hc16b5146, 0h00000000, 0hc21ae5b8, 0h00000000, 0hc21ae5b8, 0h00000000, 0hc16b5146, 0h00000000, + 0hc1df5103, 0hc148c1c5, 0h41df5103, 0h00000000, 0hc1df5103, 0h4148c1c5, 0h41df5103, 0h00000000, + 0hc21ae5b8, 0h00000000, 0h416b5146, 0h00000000, 0hc16b5146, 0h00000000, 0h421ae5b8, 0h00000000, + 0hc148c1c5, 0h41df5103, 0hc1df5103, 0h00000000, 0h4148c1c5, 0h41df5103, 0hc1df5103, 0h00000000, + 0h00000000, 0h416b5146, 0hc21ae5b8, 0h00000000, 0h00000000, 0h421ae5b8, 0hc16b5146, 0h00000000, + 0hc148c1c5, 0h41df5103, 0h41df5103, 0h00000000, 0h4148c1c5, 0h41df5103, 0h41df5103, 0h00000000, + 0h00000000, 0h421ae5b8, 0h416b5146, 0h00000000, 0h00000000, 0h416b5146, 0h421ae5b8, 0h00000000, + 0h41df5103, 0hc1df5103, 0hc148c1c5, 0h00000000, 0h41df5103, 0hc1df5103, 0h4148c1c5, 0h00000000, + 0h416b5146, 0hc21ae5b8, 0h00000000, 0h00000000, 0h421ae5b8, 0hc16b5146, 0h00000000, 0h00000000, + 0h41df5103, 0hc148c1c5, 0hc1df5103, 0h00000000, 0h41df5103, 0h4148c1c5, 0hc1df5103, 0h00000000, + 0h421ae5b8, 0h00000000, 0hc16b5146, 0h00000000, 0h416b5146, 0h00000000, 0hc21ae5b8, 0h00000000, + 0h41df5103, 0hc148c1c5, 0h41df5103, 0h00000000, 0h41df5103, 0h4148c1c5, 0h41df5103, 0h00000000, + 0h416b5146, 0h00000000, 0h421ae5b8, 0h00000000, 0h421ae5b8, 0h00000000, 0h416b5146, 0h00000000, + 0h41df5103, 0h41df5103, 0hc148c1c5, 0h00000000, 0h41df5103, 0h41df5103, 0h4148c1c5, 0h00000000, + 0h421ae5b8, 0h416b5146, 0h00000000, 0h00000000, 0h416b5146, 0h421ae5b8, 0h00000000, 0h00000000, + 0hc1df5103, 0h41df5103, 0hc148c1c5, 0h00000000, 0hc1df5103, 0h41df5103, 0h4148c1c5, 0h00000000, + 0hc16b5146, 0h421ae5b8, 0h00000000, 0h00000000, 0hc21ae5b8, 0h416b5146, 0h00000000, 0h00000000, + 0hc148c1c5, 0hc1df5103, 0hc1df5103, 0h00000000, 0h4148c1c5, 0hc1df5103, 0hc1df5103, 0h00000000, + 0h00000000, 0hc21ae5b8, 0hc16b5146, 0h00000000, 0h00000000, 0hc16b5146, 0hc21ae5b8, 0h00000000, + 0hc148c1c5, 0hc1df5103, 0h41df5103, 0h00000000, 0h4148c1c5, 0hc1df5103, 0h41df5103, 0h00000000, + 0h00000000, 0hc16b5146, 0h421ae5b8, 0h00000000, 0h00000000, 0hc21ae5b8, 0h416b5146, 0h00000000, + 0hc1df5103, 0hc1df5103, 0hc148c1c5, 0h00000000, 0hc1df5103, 0hc1df5103, 0h4148c1c5, 0h00000000, + 0hc21ae5b8, 0hc16b5146, 0h00000000, 0h00000000, 0hc16b5146, 0hc21ae5b8, 0h00000000, 0h00000000, + 0hc1df5103, 0hc148c1c5, 0hc1df5103, 0h00000000, 0hc1df5103, 0h4148c1c5, 0hc1df5103, 0h00000000, + 0hc16b5146, 0h00000000, 0hc21ae5b8, 0h00000000, 0hc21ae5b8, 0h00000000, 0hc16b5146, 0h00000000, + 0hc1df5103, 0hc148c1c5, 0h41df5103, 0h00000000, 0hc1df5103, 0h4148c1c5, 0h41df5103, 0h00000000, + 0hc21ae5b8, 0h00000000, 0h416b5146, 0h00000000, 0hc16b5146, 0h00000000, 0h421ae5b8, 0h00000000, + 0hc148c1c5, 0h41df5103, 0hc1df5103, 0h00000000, 0h4148c1c5, 0h41df5103, 0hc1df5103, 0h00000000, + 0h00000000, 0h416b5146, 0hc21ae5b8, 0h00000000, 0h00000000, 0h421ae5b8, 0hc16b5146, 0h00000000, + 0hc148c1c5, 0h41df5103, 0h41df5103, 0h00000000, 0h4148c1c5, 0h41df5103, 0h41df5103, 0h00000000, + 0h00000000, 0h421ae5b8, 0h416b5146, 0h00000000, 0h00000000, 0h416b5146, 0h421ae5b8, 0h00000000, + 0h41df5103, 0hc1df5103, 0hc148c1c5, 0h00000000, 0h41df5103, 0hc1df5103, 0h4148c1c5, 0h00000000, + 0h416b5146, 0hc21ae5b8, 0h00000000, 0h00000000, 0h421ae5b8, 0hc16b5146, 0h00000000, 0h00000000, + 0h41df5103, 0hc148c1c5, 0hc1df5103, 0h00000000, 0h41df5103, 0h4148c1c5, 0hc1df5103, 0h00000000, + 0h421ae5b8, 0h00000000, 0hc16b5146, 0h00000000, 0h416b5146, 0h00000000, 0hc21ae5b8, 0h00000000, + 0h41df5103, 0hc148c1c5, 0h41df5103, 0h00000000, 0h41df5103, 0h4148c1c5, 0h41df5103, 0h00000000, + 0h416b5146, 0h00000000, 0h421ae5b8, 0h00000000, 0h421ae5b8, 0h00000000, 0h416b5146, 0h00000000, + 0h41df5103, 0h41df5103, 0hc148c1c5, 0h00000000, 0h41df5103, 0h41df5103, 0h4148c1c5, 0h00000000, + 0h421ae5b8, 0h416b5146, 0h00000000, 0h00000000, 0h416b5146, 0h421ae5b8, 0h00000000, 0h00000000, + 0hc1df5103, 0h41df5103, 0hc148c1c5, 0h00000000, 0hc1df5103, 0h41df5103, 0h4148c1c5, 0h00000000, + 0hc16b5146, 0h421ae5b8, 0h00000000, 0h00000000, 0hc21ae5b8, 0h416b5146, 0h00000000, 0h00000000, + 0hc148c1c5, 0hc1df5103, 0hc1df5103, 0h00000000, 0h4148c1c5, 0hc1df5103, 0hc1df5103, 0h00000000, + 0h00000000, 0hc21ae5b8, 0hc16b5146, 0h00000000, 0h00000000, 0hc16b5146, 0hc21ae5b8, 0h00000000, + 0hc148c1c5, 0hc1df5103, 0h41df5103, 0h00000000, 0h4148c1c5, 0hc1df5103, 0h41df5103, 0h00000000, + 0h00000000, 0hc16b5146, 0h421ae5b8, 0h00000000, 0h00000000, 0hc21ae5b8, 0h416b5146, 0h00000000, + 0hc1df5103, 0hc1df5103, 0hc148c1c5, 0h00000000, 0hc1df5103, 0hc1df5103, 0h4148c1c5, 0h00000000, + 0hc21ae5b8, 0hc16b5146, 0h00000000, 0h00000000, 0hc16b5146, 0hc21ae5b8, 0h00000000, 0h00000000, + 0hc1df5103, 0hc148c1c5, 0hc1df5103, 0h00000000, 0hc1df5103, 0h4148c1c5, 0hc1df5103, 0h00000000, + 0hc16b5146, 0h00000000, 0hc21ae5b8, 0h00000000, 0hc21ae5b8, 0h00000000, 0hc16b5146, 0h00000000, + 0hc1df5103, 0hc148c1c5, 0h41df5103, 0h00000000, 0hc1df5103, 0h4148c1c5, 0h41df5103, 0h00000000, + 0hc21ae5b8, 0h00000000, 0h416b5146, 0h00000000, 0hc16b5146, 0h00000000, 0h421ae5b8, 0h00000000, + 0hc148c1c5, 0h41df5103, 0hc1df5103, 0h00000000, 0h4148c1c5, 0h41df5103, 0hc1df5103, 0h00000000, + 0h00000000, 0h416b5146, 0hc21ae5b8, 0h00000000, 0h00000000, 0h421ae5b8, 0hc16b5146, 0h00000000, + 0hc148c1c5, 0h41df5103, 0h41df5103, 0h00000000, 0h4148c1c5, 0h41df5103, 0h41df5103, 0h00000000, + 0h00000000, 0h421ae5b8, 0h416b5146, 0h00000000, 0h00000000, 0h416b5146, 0h421ae5b8, 0h00000000, + 0h41df5103, 0hc1df5103, 0hc148c1c5, 0h00000000, 0h41df5103, 0hc1df5103, 0h4148c1c5, 0h00000000, + 0h416b5146, 0hc21ae5b8, 0h00000000, 0h00000000, 0h421ae5b8, 0hc16b5146, 0h00000000, 0h00000000, + 0h41df5103, 0hc148c1c5, 0hc1df5103, 0h00000000, 0h41df5103, 0h4148c1c5, 0hc1df5103, 0h00000000, + 0h421ae5b8, 0h00000000, 0hc16b5146, 0h00000000, 0h416b5146, 0h00000000, 0hc21ae5b8, 0h00000000, + 0h41df5103, 0hc148c1c5, 0h41df5103, 0h00000000, 0h41df5103, 0h4148c1c5, 0h41df5103, 0h00000000, + 0h416b5146, 0h00000000, 0h421ae5b8, 0h00000000, 0h421ae5b8, 0h00000000, 0h416b5146, 0h00000000, + 0h41df5103, 0h41df5103, 0hc148c1c5, 0h00000000, 0h41df5103, 0h41df5103, 0h4148c1c5, 0h00000000, + 0h421ae5b8, 0h416b5146, 0h00000000, 0h00000000, 0h416b5146, 0h421ae5b8, 0h00000000, 0h00000000, + 0hc1df5103, 0h41df5103, 0hc148c1c5, 0h00000000, 0hc1df5103, 0h41df5103, 0h4148c1c5, 0h00000000, + 0hc16b5146, 0h421ae5b8, 0h00000000, 0h00000000, 0hc21ae5b8, 0h416b5146, 0h00000000, 0h00000000, + 0hc148c1c5, 0hc1df5103, 0hc1df5103, 0h00000000, 0h4148c1c5, 0hc1df5103, 0hc1df5103, 0h00000000, + 0h00000000, 0hc21ae5b8, 0hc16b5146, 0h00000000, 0h00000000, 0hc16b5146, 0hc21ae5b8, 0h00000000, + 0hc148c1c5, 0hc1df5103, 0h41df5103, 0h00000000, 0h4148c1c5, 0hc1df5103, 0h41df5103, 0h00000000, + 0h00000000, 0hc16b5146, 0h421ae5b8, 0h00000000, 0h00000000, 0hc21ae5b8, 0h416b5146, 0h00000000, +} + +GRADIENTS_4D := [N_GRADS_4D * 4]f32{ + 0hc1f50507, 0hc16b8e00, 0hc16b8e00, 0h41d2a716, 0hc208695c, 0hc19194b0, 0h40de6d7d, 0h41b6d966, + 0hc208695c, 0h40de6d7d, 0hc19194b0, 0h41b6d966, 0hc22076c5, 0h406d72bf, 0h406d72bf, 0h41a58418, + 0hc1a58418, 0hc06d72bf, 0hc06d72bf, 0h422076c5, 0hc1b6d966, 0hc0de6d7d, 0h419194b0, 0h4208695c, + 0hc1b6d966, 0h419194b0, 0hc0de6d7d, 0h4208695c, 0hc1d2a716, 0h416b8e00, 0h416b8e00, 0h41f50507, + 0hc1f50507, 0hc16b8e00, 0h41d2a716, 0hc16b8e00, 0hc208695c, 0hc19194b0, 0h41b6d966, 0h40de6d7d, + 0hc208695c, 0h40de6d7d, 0h41b6d966, 0hc19194b0, 0hc22076c5, 0h406d72bf, 0h41a58418, 0h406d72bf, + 0hc1a58418, 0hc06d72bf, 0h422076c5, 0hc06d72bf, 0hc1b6d966, 0hc0de6d7d, 0h4208695c, 0h419194b0, + 0hc1b6d966, 0h419194b0, 0h4208695c, 0hc0de6d7d, 0hc1d2a716, 0h416b8e00, 0h41f50507, 0h416b8e00, + 0hc1f50507, 0h41d2a716, 0hc16b8e00, 0hc16b8e00, 0hc208695c, 0h41b6d966, 0hc19194b0, 0h40de6d7d, + 0hc208695c, 0h41b6d966, 0h40de6d7d, 0hc19194b0, 0hc22076c5, 0h41a58418, 0h406d72bf, 0h406d72bf, + 0hc1a58418, 0h422076c5, 0hc06d72bf, 0hc06d72bf, 0hc1b6d966, 0h4208695c, 0hc0de6d7d, 0h419194b0, + 0hc1b6d966, 0h4208695c, 0h419194b0, 0hc0de6d7d, 0hc1d2a716, 0h41f50507, 0h416b8e00, 0h416b8e00, + 0h41d2a716, 0hc1f50507, 0hc16b8e00, 0hc16b8e00, 0h41b6d966, 0hc208695c, 0hc19194b0, 0h40de6d7d, + 0h41b6d966, 0hc208695c, 0h40de6d7d, 0hc19194b0, 0h41a58418, 0hc22076c5, 0h406d72bf, 0h406d72bf, + 0h422076c5, 0hc1a58418, 0hc06d72bf, 0hc06d72bf, 0h4208695c, 0hc1b6d966, 0hc0de6d7d, 0h419194b0, + 0h4208695c, 0hc1b6d966, 0h419194b0, 0hc0de6d7d, 0h41f50507, 0hc1d2a716, 0h416b8e00, 0h416b8e00, + 0hc208ee18, 0hc18a0670, 0hc18a0670, 0hc18a0670, 0hc20e2b7a, 0hc19d18ee, 0hc19d18ee, 0h40b05c85, + 0hc20e2b7a, 0hc19d18ee, 0h40b05c85, 0hc19d18ee, 0hc20e2b7a, 0h40b05c85, 0hc19d18ee, 0hc19d18ee, + 0hc21c1252, 0hc1b8e69d, 0h40024b8d, 0h40024b8d, 0hc21c1252, 0h40024b8d, 0hc1b8e69d, 0h40024b8d, + 0hc21c1252, 0h40024b8d, 0h40024b8d, 0hc1b8e69d, 0hc235739c, 0hbfc4b564, 0hbfc4b564, 0hbfc4b564, + 0hc18a0670, 0hc208ee18, 0hc18a0670, 0hc18a0670, 0hc19d18ee, 0hc20e2b7a, 0hc19d18ee, 0h40b05c85, + 0hc19d18ee, 0hc20e2b7a, 0h40b05c85, 0hc19d18ee, 0h40b05c85, 0hc20e2b7a, 0hc19d18ee, 0hc19d18ee, + 0hc1b8e69d, 0hc21c1252, 0h40024b8d, 0h40024b8d, 0h40024b8d, 0hc21c1252, 0hc1b8e69d, 0h40024b8d, + 0h40024b8d, 0hc21c1252, 0h40024b8d, 0hc1b8e69d, 0hbfc4b564, 0hc235739c, 0hbfc4b564, 0hbfc4b564, + 0hc18a0670, 0hc18a0670, 0hc208ee18, 0hc18a0670, 0hc19d18ee, 0hc19d18ee, 0hc20e2b7a, 0h40b05c85, + 0hc19d18ee, 0h40b05c85, 0hc20e2b7a, 0hc19d18ee, 0h40b05c85, 0hc19d18ee, 0hc20e2b7a, 0hc19d18ee, + 0hc1b8e69d, 0h40024b8d, 0hc21c1252, 0h40024b8d, 0h40024b8d, 0hc1b8e69d, 0hc21c1252, 0h40024b8d, + 0h40024b8d, 0h40024b8d, 0hc21c1252, 0hc1b8e69d, 0hbfc4b564, 0hbfc4b564, 0hc235739c, 0hbfc4b564, + 0hc18a0670, 0hc18a0670, 0hc18a0670, 0hc208ee18, 0hc19d18ee, 0hc19d18ee, 0h40b05c85, 0hc20e2b7a, + 0hc19d18ee, 0h40b05c85, 0hc19d18ee, 0hc20e2b7a, 0h40b05c85, 0hc19d18ee, 0hc19d18ee, 0hc20e2b7a, + 0hc1b8e69d, 0h40024b8d, 0h40024b8d, 0hc21c1252, 0h40024b8d, 0hc1b8e69d, 0h40024b8d, 0hc21c1252, + 0h40024b8d, 0h40024b8d, 0hc1b8e69d, 0hc21c1252, 0hbfc4b564, 0hbfc4b564, 0hbfc4b564, 0hc235739c, + 0hc16b8e00, 0hc1f50507, 0hc16b8e00, 0h41d2a716, 0hc19194b0, 0hc208695c, 0h40de6d7d, 0h41b6d966, + 0h40de6d7d, 0hc208695c, 0hc19194b0, 0h41b6d966, 0h406d72bf, 0hc22076c5, 0h406d72bf, 0h41a58418, + 0hc06d72bf, 0hc1a58418, 0hc06d72bf, 0h422076c5, 0hc0de6d7d, 0hc1b6d966, 0h419194b0, 0h4208695c, + 0h419194b0, 0hc1b6d966, 0hc0de6d7d, 0h4208695c, 0h416b8e00, 0hc1d2a716, 0h416b8e00, 0h41f50507, + 0hc16b8e00, 0hc16b8e00, 0hc1f50507, 0h41d2a716, 0hc19194b0, 0h40de6d7d, 0hc208695c, 0h41b6d966, + 0h40de6d7d, 0hc19194b0, 0hc208695c, 0h41b6d966, 0h406d72bf, 0h406d72bf, 0hc22076c5, 0h41a58418, + 0hc06d72bf, 0hc06d72bf, 0hc1a58418, 0h422076c5, 0hc0de6d7d, 0h419194b0, 0hc1b6d966, 0h4208695c, + 0h419194b0, 0hc0de6d7d, 0hc1b6d966, 0h4208695c, 0h416b8e00, 0h416b8e00, 0hc1d2a716, 0h41f50507, + 0hc16b8e00, 0hc1f50507, 0h41d2a716, 0hc16b8e00, 0hc19194b0, 0hc208695c, 0h41b6d966, 0h40de6d7d, + 0h40de6d7d, 0hc208695c, 0h41b6d966, 0hc19194b0, 0h406d72bf, 0hc22076c5, 0h41a58418, 0h406d72bf, + 0hc06d72bf, 0hc1a58418, 0h422076c5, 0hc06d72bf, 0hc0de6d7d, 0hc1b6d966, 0h4208695c, 0h419194b0, + 0h419194b0, 0hc1b6d966, 0h4208695c, 0hc0de6d7d, 0h416b8e00, 0hc1d2a716, 0h41f50507, 0h416b8e00, + 0hc16b8e00, 0hc16b8e00, 0h41d2a716, 0hc1f50507, 0hc19194b0, 0h40de6d7d, 0h41b6d966, 0hc208695c, + 0h40de6d7d, 0hc19194b0, 0h41b6d966, 0hc208695c, 0h406d72bf, 0h406d72bf, 0h41a58418, 0hc22076c5, + 0hc06d72bf, 0hc06d72bf, 0h422076c5, 0hc1a58418, 0hc0de6d7d, 0h419194b0, 0h4208695c, 0hc1b6d966, + 0h419194b0, 0hc0de6d7d, 0h4208695c, 0hc1b6d966, 0h416b8e00, 0h416b8e00, 0h41f50507, 0hc1d2a716, + 0hc16b8e00, 0h41d2a716, 0hc1f50507, 0hc16b8e00, 0hc19194b0, 0h41b6d966, 0hc208695c, 0h40de6d7d, + 0h40de6d7d, 0h41b6d966, 0hc208695c, 0hc19194b0, 0h406d72bf, 0h41a58418, 0hc22076c5, 0h406d72bf, + 0hc06d72bf, 0h422076c5, 0hc1a58418, 0hc06d72bf, 0hc0de6d7d, 0h4208695c, 0hc1b6d966, 0h419194b0, + 0h419194b0, 0h4208695c, 0hc1b6d966, 0hc0de6d7d, 0h416b8e00, 0h41f50507, 0hc1d2a716, 0h416b8e00, + 0hc16b8e00, 0h41d2a716, 0hc16b8e00, 0hc1f50507, 0hc19194b0, 0h41b6d966, 0h40de6d7d, 0hc208695c, + 0h40de6d7d, 0h41b6d966, 0hc19194b0, 0hc208695c, 0h406d72bf, 0h41a58418, 0h406d72bf, 0hc22076c5, + 0hc06d72bf, 0h422076c5, 0hc06d72bf, 0hc1a58418, 0hc0de6d7d, 0h4208695c, 0h419194b0, 0hc1b6d966, + 0h419194b0, 0h4208695c, 0hc0de6d7d, 0hc1b6d966, 0h416b8e00, 0h41f50507, 0h416b8e00, 0hc1d2a716, + 0h41d2a716, 0hc16b8e00, 0hc1f50507, 0hc16b8e00, 0h41b6d966, 0hc19194b0, 0hc208695c, 0h40de6d7d, + 0h41b6d966, 0h40de6d7d, 0hc208695c, 0hc19194b0, 0h41a58418, 0h406d72bf, 0hc22076c5, 0h406d72bf, + 0h422076c5, 0hc06d72bf, 0hc1a58418, 0hc06d72bf, 0h4208695c, 0hc0de6d7d, 0hc1b6d966, 0h419194b0, + 0h4208695c, 0h419194b0, 0hc1b6d966, 0hc0de6d7d, 0h41f50507, 0h416b8e00, 0hc1d2a716, 0h416b8e00, + 0h41d2a716, 0hc16b8e00, 0hc16b8e00, 0hc1f50507, 0h41b6d966, 0hc19194b0, 0h40de6d7d, 0hc208695c, + 0h41b6d966, 0h40de6d7d, 0hc19194b0, 0hc208695c, 0h41a58418, 0h406d72bf, 0h406d72bf, 0hc22076c5, + 0h422076c5, 0hc06d72bf, 0hc06d72bf, 0hc1a58418, 0h4208695c, 0hc0de6d7d, 0h419194b0, 0hc1b6d966, + 0h4208695c, 0h419194b0, 0hc0de6d7d, 0hc1b6d966, 0h41f50507, 0h416b8e00, 0h416b8e00, 0hc1d2a716, + 0h3fc4b564, 0h3fc4b564, 0h3fc4b564, 0h4235739c, 0hc0024b8d, 0hc0024b8d, 0h41b8e69d, 0h421c1252, + 0hc0024b8d, 0h41b8e69d, 0hc0024b8d, 0h421c1252, 0hc0b05c85, 0h419d18ee, 0h419d18ee, 0h420e2b7a, + 0h41b8e69d, 0hc0024b8d, 0hc0024b8d, 0h421c1252, 0h419d18ee, 0hc0b05c85, 0h419d18ee, 0h420e2b7a, + 0h419d18ee, 0h419d18ee, 0hc0b05c85, 0h420e2b7a, 0h418a0670, 0h418a0670, 0h418a0670, 0h4208ee18, + 0h3fc4b564, 0h3fc4b564, 0h4235739c, 0h3fc4b564, 0hc0024b8d, 0h40024b8d, 0h421c1252, 0h41b8e69d, + 0hc0024b8d, 0h41b8e69d, 0h421c1252, 0hc0024b8d, 0hc0b05c85, 0h419d18ee, 0h420e2b7a, 0h419d18ee, + 0h41b8e69d, 0hc0024b8d, 0h421c1252, 0hc0024b8d, 0h419d18ee, 0hc0b05c85, 0h420e2b7a, 0h419d18ee, + 0h419d18ee, 0h419d18ee, 0h420e2b7a, 0hc0b05c85, 0h418a0670, 0h418a0670, 0h4208ee18, 0h418a0670, + 0h3fc4b564, 0h4235739c, 0h3fc4b564, 0h3fc4b564, 0hc0024b8d, 0h421c1252, 0hc0024b8d, 0h41b8e69d, + 0hc0024b8d, 0h421c1252, 0h41b8e69d, 0hc0024b8d, 0hc0b05c85, 0h420e2b7a, 0h419d18ee, 0h419d18ee, + 0h41b8e69d, 0h421c1252, 0hc0024b8d, 0hc0024b8d, 0h419d18ee, 0h420e2b7a, 0hc0b05c85, 0h419d18ee, + 0h419d18ee, 0h420e2b7a, 0h419d18ee, 0hc0b05c85, 0h418a0670, 0h4208ee18, 0h418a0670, 0h418a0670, + 0h4235739c, 0h3fc4b564, 0h3fc4b564, 0h3fc4b564, 0h421c1252, 0hc0024b8d, 0hc0024b8d, 0h41b8e69d, + 0h421c1252, 0hc0024b8d, 0h41b8e69d, 0hc0024b8d, 0h420e2b7a, 0hc0b05c85, 0h419d18ee, 0h419d18ee, + 0h421c1252, 0h41b8e69d, 0hc0024b8d, 0hc0024b8d, 0h420e2b7a, 0h419d18ee, 0hc0b05c85, 0h419d18ee, + 0h420e2b7a, 0h419d18ee, 0h419d18ee, 0hc0b05c85, 0h4208ee18, 0h418a0670, 0h418a0670, 0h418a0670, + 0hc1f50507, 0hc16b8e00, 0hc16b8e00, 0h41d2a716, 0hc208695c, 0hc19194b0, 0h40de6d7d, 0h41b6d966, + 0hc208695c, 0h40de6d7d, 0hc19194b0, 0h41b6d966, 0hc22076c5, 0h406d72bf, 0h406d72bf, 0h41a58418, + 0hc1a58418, 0hc06d72bf, 0hc06d72bf, 0h422076c5, 0hc1b6d966, 0hc0de6d7d, 0h419194b0, 0h4208695c, + 0hc1b6d966, 0h419194b0, 0hc0de6d7d, 0h4208695c, 0hc1d2a716, 0h416b8e00, 0h416b8e00, 0h41f50507, + 0hc1f50507, 0hc16b8e00, 0h41d2a716, 0hc16b8e00, 0hc208695c, 0hc19194b0, 0h41b6d966, 0h40de6d7d, + 0hc208695c, 0h40de6d7d, 0h41b6d966, 0hc19194b0, 0hc22076c5, 0h406d72bf, 0h41a58418, 0h406d72bf, + 0hc1a58418, 0hc06d72bf, 0h422076c5, 0hc06d72bf, 0hc1b6d966, 0hc0de6d7d, 0h4208695c, 0h419194b0, + 0hc1b6d966, 0h419194b0, 0h4208695c, 0hc0de6d7d, 0hc1d2a716, 0h416b8e00, 0h41f50507, 0h416b8e00, + 0hc1f50507, 0h41d2a716, 0hc16b8e00, 0hc16b8e00, 0hc208695c, 0h41b6d966, 0hc19194b0, 0h40de6d7d, + 0hc208695c, 0h41b6d966, 0h40de6d7d, 0hc19194b0, 0hc22076c5, 0h41a58418, 0h406d72bf, 0h406d72bf, + 0hc1a58418, 0h422076c5, 0hc06d72bf, 0hc06d72bf, 0hc1b6d966, 0h4208695c, 0hc0de6d7d, 0h419194b0, + 0hc1b6d966, 0h4208695c, 0h419194b0, 0hc0de6d7d, 0hc1d2a716, 0h41f50507, 0h416b8e00, 0h416b8e00, + 0h41d2a716, 0hc1f50507, 0hc16b8e00, 0hc16b8e00, 0h41b6d966, 0hc208695c, 0hc19194b0, 0h40de6d7d, + 0h41b6d966, 0hc208695c, 0h40de6d7d, 0hc19194b0, 0h41a58418, 0hc22076c5, 0h406d72bf, 0h406d72bf, + 0h422076c5, 0hc1a58418, 0hc06d72bf, 0hc06d72bf, 0h4208695c, 0hc1b6d966, 0hc0de6d7d, 0h419194b0, + 0h4208695c, 0hc1b6d966, 0h419194b0, 0hc0de6d7d, 0h41f50507, 0hc1d2a716, 0h416b8e00, 0h416b8e00, + 0hc208ee18, 0hc18a0670, 0hc18a0670, 0hc18a0670, 0hc20e2b7a, 0hc19d18ee, 0hc19d18ee, 0h40b05c85, + 0hc20e2b7a, 0hc19d18ee, 0h40b05c85, 0hc19d18ee, 0hc20e2b7a, 0h40b05c85, 0hc19d18ee, 0hc19d18ee, + 0hc21c1252, 0hc1b8e69d, 0h40024b8d, 0h40024b8d, 0hc21c1252, 0h40024b8d, 0hc1b8e69d, 0h40024b8d, + 0hc21c1252, 0h40024b8d, 0h40024b8d, 0hc1b8e69d, 0hc235739c, 0hbfc4b564, 0hbfc4b564, 0hbfc4b564, + 0hc18a0670, 0hc208ee18, 0hc18a0670, 0hc18a0670, 0hc19d18ee, 0hc20e2b7a, 0hc19d18ee, 0h40b05c85, + 0hc19d18ee, 0hc20e2b7a, 0h40b05c85, 0hc19d18ee, 0h40b05c85, 0hc20e2b7a, 0hc19d18ee, 0hc19d18ee, + 0hc1b8e69d, 0hc21c1252, 0h40024b8d, 0h40024b8d, 0h40024b8d, 0hc21c1252, 0hc1b8e69d, 0h40024b8d, + 0h40024b8d, 0hc21c1252, 0h40024b8d, 0hc1b8e69d, 0hbfc4b564, 0hc235739c, 0hbfc4b564, 0hbfc4b564, + 0hc18a0670, 0hc18a0670, 0hc208ee18, 0hc18a0670, 0hc19d18ee, 0hc19d18ee, 0hc20e2b7a, 0h40b05c85, + 0hc19d18ee, 0h40b05c85, 0hc20e2b7a, 0hc19d18ee, 0h40b05c85, 0hc19d18ee, 0hc20e2b7a, 0hc19d18ee, + 0hc1b8e69d, 0h40024b8d, 0hc21c1252, 0h40024b8d, 0h40024b8d, 0hc1b8e69d, 0hc21c1252, 0h40024b8d, + 0h40024b8d, 0h40024b8d, 0hc21c1252, 0hc1b8e69d, 0hbfc4b564, 0hbfc4b564, 0hc235739c, 0hbfc4b564, + 0hc18a0670, 0hc18a0670, 0hc18a0670, 0hc208ee18, 0hc19d18ee, 0hc19d18ee, 0h40b05c85, 0hc20e2b7a, + 0hc19d18ee, 0h40b05c85, 0hc19d18ee, 0hc20e2b7a, 0h40b05c85, 0hc19d18ee, 0hc19d18ee, 0hc20e2b7a, + 0hc1b8e69d, 0h40024b8d, 0h40024b8d, 0hc21c1252, 0h40024b8d, 0hc1b8e69d, 0h40024b8d, 0hc21c1252, + 0h40024b8d, 0h40024b8d, 0hc1b8e69d, 0hc21c1252, 0hbfc4b564, 0hbfc4b564, 0hbfc4b564, 0hc235739c, + 0hc16b8e00, 0hc1f50507, 0hc16b8e00, 0h41d2a716, 0hc19194b0, 0hc208695c, 0h40de6d7d, 0h41b6d966, + 0h40de6d7d, 0hc208695c, 0hc19194b0, 0h41b6d966, 0h406d72bf, 0hc22076c5, 0h406d72bf, 0h41a58418, + 0hc06d72bf, 0hc1a58418, 0hc06d72bf, 0h422076c5, 0hc0de6d7d, 0hc1b6d966, 0h419194b0, 0h4208695c, + 0h419194b0, 0hc1b6d966, 0hc0de6d7d, 0h4208695c, 0h416b8e00, 0hc1d2a716, 0h416b8e00, 0h41f50507, + 0hc16b8e00, 0hc16b8e00, 0hc1f50507, 0h41d2a716, 0hc19194b0, 0h40de6d7d, 0hc208695c, 0h41b6d966, + 0h40de6d7d, 0hc19194b0, 0hc208695c, 0h41b6d966, 0h406d72bf, 0h406d72bf, 0hc22076c5, 0h41a58418, + 0hc06d72bf, 0hc06d72bf, 0hc1a58418, 0h422076c5, 0hc0de6d7d, 0h419194b0, 0hc1b6d966, 0h4208695c, + 0h419194b0, 0hc0de6d7d, 0hc1b6d966, 0h4208695c, 0h416b8e00, 0h416b8e00, 0hc1d2a716, 0h41f50507, + 0hc16b8e00, 0hc1f50507, 0h41d2a716, 0hc16b8e00, 0hc19194b0, 0hc208695c, 0h41b6d966, 0h40de6d7d, + 0h40de6d7d, 0hc208695c, 0h41b6d966, 0hc19194b0, 0h406d72bf, 0hc22076c5, 0h41a58418, 0h406d72bf, + 0hc06d72bf, 0hc1a58418, 0h422076c5, 0hc06d72bf, 0hc0de6d7d, 0hc1b6d966, 0h4208695c, 0h419194b0, + 0h419194b0, 0hc1b6d966, 0h4208695c, 0hc0de6d7d, 0h416b8e00, 0hc1d2a716, 0h41f50507, 0h416b8e00, + 0hc16b8e00, 0hc16b8e00, 0h41d2a716, 0hc1f50507, 0hc19194b0, 0h40de6d7d, 0h41b6d966, 0hc208695c, + 0h40de6d7d, 0hc19194b0, 0h41b6d966, 0hc208695c, 0h406d72bf, 0h406d72bf, 0h41a58418, 0hc22076c5, + 0hc06d72bf, 0hc06d72bf, 0h422076c5, 0hc1a58418, 0hc0de6d7d, 0h419194b0, 0h4208695c, 0hc1b6d966, + 0h419194b0, 0hc0de6d7d, 0h4208695c, 0hc1b6d966, 0h416b8e00, 0h416b8e00, 0h41f50507, 0hc1d2a716, + 0hc16b8e00, 0h41d2a716, 0hc1f50507, 0hc16b8e00, 0hc19194b0, 0h41b6d966, 0hc208695c, 0h40de6d7d, + 0h40de6d7d, 0h41b6d966, 0hc208695c, 0hc19194b0, 0h406d72bf, 0h41a58418, 0hc22076c5, 0h406d72bf, + 0hc06d72bf, 0h422076c5, 0hc1a58418, 0hc06d72bf, 0hc0de6d7d, 0h4208695c, 0hc1b6d966, 0h419194b0, + 0h419194b0, 0h4208695c, 0hc1b6d966, 0hc0de6d7d, 0h416b8e00, 0h41f50507, 0hc1d2a716, 0h416b8e00, + 0hc16b8e00, 0h41d2a716, 0hc16b8e00, 0hc1f50507, 0hc19194b0, 0h41b6d966, 0h40de6d7d, 0hc208695c, + 0h40de6d7d, 0h41b6d966, 0hc19194b0, 0hc208695c, 0h406d72bf, 0h41a58418, 0h406d72bf, 0hc22076c5, + 0hc06d72bf, 0h422076c5, 0hc06d72bf, 0hc1a58418, 0hc0de6d7d, 0h4208695c, 0h419194b0, 0hc1b6d966, + 0h419194b0, 0h4208695c, 0hc0de6d7d, 0hc1b6d966, 0h416b8e00, 0h41f50507, 0h416b8e00, 0hc1d2a716, + 0h41d2a716, 0hc16b8e00, 0hc1f50507, 0hc16b8e00, 0h41b6d966, 0hc19194b0, 0hc208695c, 0h40de6d7d, + 0h41b6d966, 0h40de6d7d, 0hc208695c, 0hc19194b0, 0h41a58418, 0h406d72bf, 0hc22076c5, 0h406d72bf, + 0h422076c5, 0hc06d72bf, 0hc1a58418, 0hc06d72bf, 0h4208695c, 0hc0de6d7d, 0hc1b6d966, 0h419194b0, + 0h4208695c, 0h419194b0, 0hc1b6d966, 0hc0de6d7d, 0h41f50507, 0h416b8e00, 0hc1d2a716, 0h416b8e00, + 0h41d2a716, 0hc16b8e00, 0hc16b8e00, 0hc1f50507, 0h41b6d966, 0hc19194b0, 0h40de6d7d, 0hc208695c, + 0h41b6d966, 0h40de6d7d, 0hc19194b0, 0hc208695c, 0h41a58418, 0h406d72bf, 0h406d72bf, 0hc22076c5, + 0h422076c5, 0hc06d72bf, 0hc06d72bf, 0hc1a58418, 0h4208695c, 0hc0de6d7d, 0h419194b0, 0hc1b6d966, + 0h4208695c, 0h419194b0, 0hc0de6d7d, 0hc1b6d966, 0h41f50507, 0h416b8e00, 0h416b8e00, 0hc1d2a716, + 0h3fc4b564, 0h3fc4b564, 0h3fc4b564, 0h4235739c, 0hc0024b8d, 0hc0024b8d, 0h41b8e69d, 0h421c1252, + 0hc0024b8d, 0h41b8e69d, 0hc0024b8d, 0h421c1252, 0hc0b05c85, 0h419d18ee, 0h419d18ee, 0h420e2b7a, + 0h41b8e69d, 0hc0024b8d, 0hc0024b8d, 0h421c1252, 0h419d18ee, 0hc0b05c85, 0h419d18ee, 0h420e2b7a, + 0h419d18ee, 0h419d18ee, 0hc0b05c85, 0h420e2b7a, 0h418a0670, 0h418a0670, 0h418a0670, 0h4208ee18, + 0h3fc4b564, 0h3fc4b564, 0h4235739c, 0h3fc4b564, 0hc0024b8d, 0h40024b8d, 0h421c1252, 0h41b8e69d, + 0hc0024b8d, 0h41b8e69d, 0h421c1252, 0hc0024b8d, 0hc0b05c85, 0h419d18ee, 0h420e2b7a, 0h419d18ee, + 0h41b8e69d, 0hc0024b8d, 0h421c1252, 0hc0024b8d, 0h419d18ee, 0hc0b05c85, 0h420e2b7a, 0h419d18ee, + 0h419d18ee, 0h419d18ee, 0h420e2b7a, 0hc0b05c85, 0h418a0670, 0h418a0670, 0h4208ee18, 0h418a0670, + 0h3fc4b564, 0h4235739c, 0h3fc4b564, 0h3fc4b564, 0hc0024b8d, 0h421c1252, 0hc0024b8d, 0h41b8e69d, + 0hc0024b8d, 0h421c1252, 0h41b8e69d, 0hc0024b8d, 0hc0b05c85, 0h420e2b7a, 0h419d18ee, 0h419d18ee, + 0h41b8e69d, 0h421c1252, 0hc0024b8d, 0hc0024b8d, 0h419d18ee, 0h420e2b7a, 0hc0b05c85, 0h419d18ee, + 0h419d18ee, 0h420e2b7a, 0h419d18ee, 0hc0b05c85, 0h418a0670, 0h4208ee18, 0h418a0670, 0h418a0670, + 0h4235739c, 0h3fc4b564, 0h3fc4b564, 0h3fc4b564, 0h421c1252, 0hc0024b8d, 0hc0024b8d, 0h41b8e69d, + 0h421c1252, 0hc0024b8d, 0h41b8e69d, 0hc0024b8d, 0h420e2b7a, 0hc0b05c85, 0h419d18ee, 0h419d18ee, + 0h421c1252, 0h41b8e69d, 0hc0024b8d, 0hc0024b8d, 0h420e2b7a, 0h419d18ee, 0hc0b05c85, 0h419d18ee, + 0h420e2b7a, 0h419d18ee, 0h419d18ee, 0hc0b05c85, 0h4208ee18, 0h418a0670, 0h418a0670, 0h418a0670, + 0hc1f50507, 0hc16b8e00, 0hc16b8e00, 0h41d2a716, 0hc208695c, 0hc19194b0, 0h40de6d7d, 0h41b6d966, + 0hc208695c, 0h40de6d7d, 0hc19194b0, 0h41b6d966, 0hc22076c5, 0h406d72bf, 0h406d72bf, 0h41a58418, + 0hc1a58418, 0hc06d72bf, 0hc06d72bf, 0h422076c5, 0hc1b6d966, 0hc0de6d7d, 0h419194b0, 0h4208695c, + 0hc1b6d966, 0h419194b0, 0hc0de6d7d, 0h4208695c, 0hc1d2a716, 0h416b8e00, 0h416b8e00, 0h41f50507, + 0hc1f50507, 0hc16b8e00, 0h41d2a716, 0hc16b8e00, 0hc208695c, 0hc19194b0, 0h41b6d966, 0h40de6d7d, + 0hc208695c, 0h40de6d7d, 0h41b6d966, 0hc19194b0, 0hc22076c5, 0h406d72bf, 0h41a58418, 0h406d72bf, + 0hc1a58418, 0hc06d72bf, 0h422076c5, 0hc06d72bf, 0hc1b6d966, 0hc0de6d7d, 0h4208695c, 0h419194b0, + 0hc1b6d966, 0h419194b0, 0h4208695c, 0hc0de6d7d, 0hc1d2a716, 0h416b8e00, 0h41f50507, 0h416b8e00, + 0hc1f50507, 0h41d2a716, 0hc16b8e00, 0hc16b8e00, 0hc208695c, 0h41b6d966, 0hc19194b0, 0h40de6d7d, + 0hc208695c, 0h41b6d966, 0h40de6d7d, 0hc19194b0, 0hc22076c5, 0h41a58418, 0h406d72bf, 0h406d72bf, + 0hc1a58418, 0h422076c5, 0hc06d72bf, 0hc06d72bf, 0hc1b6d966, 0h4208695c, 0hc0de6d7d, 0h419194b0, + 0hc1b6d966, 0h4208695c, 0h419194b0, 0hc0de6d7d, 0hc1d2a716, 0h41f50507, 0h416b8e00, 0h416b8e00, + 0h41d2a716, 0hc1f50507, 0hc16b8e00, 0hc16b8e00, 0h41b6d966, 0hc208695c, 0hc19194b0, 0h40de6d7d, + 0h41b6d966, 0hc208695c, 0h40de6d7d, 0hc19194b0, 0h41a58418, 0hc22076c5, 0h406d72bf, 0h406d72bf, + 0h422076c5, 0hc1a58418, 0hc06d72bf, 0hc06d72bf, 0h4208695c, 0hc1b6d966, 0hc0de6d7d, 0h419194b0, + 0h4208695c, 0hc1b6d966, 0h419194b0, 0hc0de6d7d, 0h41f50507, 0hc1d2a716, 0h416b8e00, 0h416b8e00, + 0hc208ee18, 0hc18a0670, 0hc18a0670, 0hc18a0670, 0hc20e2b7a, 0hc19d18ee, 0hc19d18ee, 0h40b05c85, + 0hc20e2b7a, 0hc19d18ee, 0h40b05c85, 0hc19d18ee, 0hc20e2b7a, 0h40b05c85, 0hc19d18ee, 0hc19d18ee, + 0hc21c1252, 0hc1b8e69d, 0h40024b8d, 0h40024b8d, 0hc21c1252, 0h40024b8d, 0hc1b8e69d, 0h40024b8d, + 0hc21c1252, 0h40024b8d, 0h40024b8d, 0hc1b8e69d, 0hc235739c, 0hbfc4b564, 0hbfc4b564, 0hbfc4b564, + 0hc18a0670, 0hc208ee18, 0hc18a0670, 0hc18a0670, 0hc19d18ee, 0hc20e2b7a, 0hc19d18ee, 0h40b05c85, + 0hc19d18ee, 0hc20e2b7a, 0h40b05c85, 0hc19d18ee, 0h40b05c85, 0hc20e2b7a, 0hc19d18ee, 0hc19d18ee, + 0hc1b8e69d, 0hc21c1252, 0h40024b8d, 0h40024b8d, 0h40024b8d, 0hc21c1252, 0hc1b8e69d, 0h40024b8d, + 0h40024b8d, 0hc21c1252, 0h40024b8d, 0hc1b8e69d, 0hbfc4b564, 0hc235739c, 0hbfc4b564, 0hbfc4b564, + 0hc18a0670, 0hc18a0670, 0hc208ee18, 0hc18a0670, 0hc19d18ee, 0hc19d18ee, 0hc20e2b7a, 0h40b05c85, + 0hc19d18ee, 0h40b05c85, 0hc20e2b7a, 0hc19d18ee, 0h40b05c85, 0hc19d18ee, 0hc20e2b7a, 0hc19d18ee, + 0hc1b8e69d, 0h40024b8d, 0hc21c1252, 0h40024b8d, 0h40024b8d, 0hc1b8e69d, 0hc21c1252, 0h40024b8d, + 0h40024b8d, 0h40024b8d, 0hc21c1252, 0hc1b8e69d, 0hbfc4b564, 0hbfc4b564, 0hc235739c, 0hbfc4b564, + 0hc18a0670, 0hc18a0670, 0hc18a0670, 0hc208ee18, 0hc19d18ee, 0hc19d18ee, 0h40b05c85, 0hc20e2b7a, + 0hc19d18ee, 0h40b05c85, 0hc19d18ee, 0hc20e2b7a, 0h40b05c85, 0hc19d18ee, 0hc19d18ee, 0hc20e2b7a, + 0hc1b8e69d, 0h40024b8d, 0h40024b8d, 0hc21c1252, 0h40024b8d, 0hc1b8e69d, 0h40024b8d, 0hc21c1252, + 0h40024b8d, 0h40024b8d, 0hc1b8e69d, 0hc21c1252, 0hbfc4b564, 0hbfc4b564, 0hbfc4b564, 0hc235739c, + 0hc16b8e00, 0hc1f50507, 0hc16b8e00, 0h41d2a716, 0hc19194b0, 0hc208695c, 0h40de6d7d, 0h41b6d966, + 0h40de6d7d, 0hc208695c, 0hc19194b0, 0h41b6d966, 0h406d72bf, 0hc22076c5, 0h406d72bf, 0h41a58418, + 0hc06d72bf, 0hc1a58418, 0hc06d72bf, 0h422076c5, 0hc0de6d7d, 0hc1b6d966, 0h419194b0, 0h4208695c, + 0h419194b0, 0hc1b6d966, 0hc0de6d7d, 0h4208695c, 0h416b8e00, 0hc1d2a716, 0h416b8e00, 0h41f50507, + 0hc16b8e00, 0hc16b8e00, 0hc1f50507, 0h41d2a716, 0hc19194b0, 0h40de6d7d, 0hc208695c, 0h41b6d966, + 0h40de6d7d, 0hc19194b0, 0hc208695c, 0h41b6d966, 0h406d72bf, 0h406d72bf, 0hc22076c5, 0h41a58418, + 0hc06d72bf, 0hc06d72bf, 0hc1a58418, 0h422076c5, 0hc0de6d7d, 0h419194b0, 0hc1b6d966, 0h4208695c, + 0h419194b0, 0hc0de6d7d, 0hc1b6d966, 0h4208695c, 0h416b8e00, 0h416b8e00, 0hc1d2a716, 0h41f50507, + 0hc16b8e00, 0hc1f50507, 0h41d2a716, 0hc16b8e00, 0hc19194b0, 0hc208695c, 0h41b6d966, 0h40de6d7d, + 0h40de6d7d, 0hc208695c, 0h41b6d966, 0hc19194b0, 0h406d72bf, 0hc22076c5, 0h41a58418, 0h406d72bf, + 0hc06d72bf, 0hc1a58418, 0h422076c5, 0hc06d72bf, 0hc0de6d7d, 0hc1b6d966, 0h4208695c, 0h419194b0, + 0h419194b0, 0hc1b6d966, 0h4208695c, 0hc0de6d7d, 0h416b8e00, 0hc1d2a716, 0h41f50507, 0h416b8e00, + 0hc16b8e00, 0hc16b8e00, 0h41d2a716, 0hc1f50507, 0hc19194b0, 0h40de6d7d, 0h41b6d966, 0hc208695c, + 0h40de6d7d, 0hc19194b0, 0h41b6d966, 0hc208695c, 0h406d72bf, 0h406d72bf, 0h41a58418, 0hc22076c5, + 0hc06d72bf, 0hc06d72bf, 0h422076c5, 0hc1a58418, 0hc0de6d7d, 0h419194b0, 0h4208695c, 0hc1b6d966, + 0h419194b0, 0hc0de6d7d, 0h4208695c, 0hc1b6d966, 0h416b8e00, 0h416b8e00, 0h41f50507, 0hc1d2a716, + 0hc16b8e00, 0h41d2a716, 0hc1f50507, 0hc16b8e00, 0hc19194b0, 0h41b6d966, 0hc208695c, 0h40de6d7d, + 0h40de6d7d, 0h41b6d966, 0hc208695c, 0hc19194b0, 0h406d72bf, 0h41a58418, 0hc22076c5, 0h406d72bf, + 0hc06d72bf, 0h422076c5, 0hc1a58418, 0hc06d72bf, 0hc0de6d7d, 0h4208695c, 0hc1b6d966, 0h419194b0, + 0h419194b0, 0h4208695c, 0hc1b6d966, 0hc0de6d7d, 0h416b8e00, 0h41f50507, 0hc1d2a716, 0h416b8e00, + 0hc16b8e00, 0h41d2a716, 0hc16b8e00, 0hc1f50507, 0hc19194b0, 0h41b6d966, 0h40de6d7d, 0hc208695c, + 0h40de6d7d, 0h41b6d966, 0hc19194b0, 0hc208695c, 0h406d72bf, 0h41a58418, 0h406d72bf, 0hc22076c5, + 0hc06d72bf, 0h422076c5, 0hc06d72bf, 0hc1a58418, 0hc0de6d7d, 0h4208695c, 0h419194b0, 0hc1b6d966, + 0h419194b0, 0h4208695c, 0hc0de6d7d, 0hc1b6d966, 0h416b8e00, 0h41f50507, 0h416b8e00, 0hc1d2a716, + 0h41d2a716, 0hc16b8e00, 0hc1f50507, 0hc16b8e00, 0h41b6d966, 0hc19194b0, 0hc208695c, 0h40de6d7d, + 0h41b6d966, 0h40de6d7d, 0hc208695c, 0hc19194b0, 0h41a58418, 0h406d72bf, 0hc22076c5, 0h406d72bf, + 0h422076c5, 0hc06d72bf, 0hc1a58418, 0hc06d72bf, 0h4208695c, 0hc0de6d7d, 0hc1b6d966, 0h419194b0, + 0h4208695c, 0h419194b0, 0hc1b6d966, 0hc0de6d7d, 0h41f50507, 0h416b8e00, 0hc1d2a716, 0h416b8e00, + 0h41d2a716, 0hc16b8e00, 0hc16b8e00, 0hc1f50507, 0h41b6d966, 0hc19194b0, 0h40de6d7d, 0hc208695c, + 0h41b6d966, 0h40de6d7d, 0hc19194b0, 0hc208695c, 0h41a58418, 0h406d72bf, 0h406d72bf, 0hc22076c5, + 0h422076c5, 0hc06d72bf, 0hc06d72bf, 0hc1a58418, 0h4208695c, 0hc0de6d7d, 0h419194b0, 0hc1b6d966, + 0h4208695c, 0h419194b0, 0hc0de6d7d, 0hc1b6d966, 0h41f50507, 0h416b8e00, 0h416b8e00, 0hc1d2a716, + 0h3fc4b564, 0h3fc4b564, 0h3fc4b564, 0h4235739c, 0hc0024b8d, 0hc0024b8d, 0h41b8e69d, 0h421c1252, + 0hc0024b8d, 0h41b8e69d, 0hc0024b8d, 0h421c1252, 0hc0b05c85, 0h419d18ee, 0h419d18ee, 0h420e2b7a, + 0h41b8e69d, 0hc0024b8d, 0hc0024b8d, 0h421c1252, 0h419d18ee, 0hc0b05c85, 0h419d18ee, 0h420e2b7a, + 0h419d18ee, 0h419d18ee, 0hc0b05c85, 0h420e2b7a, 0h418a0670, 0h418a0670, 0h418a0670, 0h4208ee18, + 0h3fc4b564, 0h3fc4b564, 0h4235739c, 0h3fc4b564, 0hc0024b8d, 0h40024b8d, 0h421c1252, 0h41b8e69d, + 0hc0024b8d, 0h41b8e69d, 0h421c1252, 0hc0024b8d, 0hc0b05c85, 0h419d18ee, 0h420e2b7a, 0h419d18ee, + 0h41b8e69d, 0hc0024b8d, 0h421c1252, 0hc0024b8d, 0h419d18ee, 0hc0b05c85, 0h420e2b7a, 0h419d18ee, + 0h419d18ee, 0h419d18ee, 0h420e2b7a, 0hc0b05c85, 0h418a0670, 0h418a0670, 0h4208ee18, 0h418a0670, + 0h3fc4b564, 0h4235739c, 0h3fc4b564, 0h3fc4b564, 0hc0024b8d, 0h421c1252, 0hc0024b8d, 0h41b8e69d, + 0hc0024b8d, 0h421c1252, 0h41b8e69d, 0hc0024b8d, 0hc0b05c85, 0h420e2b7a, 0h419d18ee, 0h419d18ee, + 0h41b8e69d, 0h421c1252, 0hc0024b8d, 0hc0024b8d, 0h419d18ee, 0h420e2b7a, 0hc0b05c85, 0h419d18ee, + 0h419d18ee, 0h420e2b7a, 0h419d18ee, 0hc0b05c85, 0h418a0670, 0h4208ee18, 0h418a0670, 0h418a0670, + 0h4235739c, 0h3fc4b564, 0h3fc4b564, 0h3fc4b564, 0h421c1252, 0hc0024b8d, 0hc0024b8d, 0h41b8e69d, + 0h421c1252, 0hc0024b8d, 0h41b8e69d, 0hc0024b8d, 0h420e2b7a, 0hc0b05c85, 0h419d18ee, 0h419d18ee, + 0h421c1252, 0h41b8e69d, 0hc0024b8d, 0hc0024b8d, 0h420e2b7a, 0h419d18ee, 0hc0b05c85, 0h419d18ee, + 0h420e2b7a, 0h419d18ee, 0h419d18ee, 0hc0b05c85, 0h4208ee18, 0h418a0670, 0h418a0670, 0h418a0670, + 0hc1f50507, 0hc16b8e00, 0hc16b8e00, 0h41d2a716, 0hc208695c, 0hc19194b0, 0h40de6d7d, 0h41b6d966, + 0hc208695c, 0h40de6d7d, 0hc19194b0, 0h41b6d966, 0hc22076c5, 0h406d72bf, 0h406d72bf, 0h41a58418, + 0hc1a58418, 0hc06d72bf, 0hc06d72bf, 0h422076c5, 0hc1b6d966, 0hc0de6d7d, 0h419194b0, 0h4208695c, + 0hc1b6d966, 0h419194b0, 0hc0de6d7d, 0h4208695c, 0hc1d2a716, 0h416b8e00, 0h416b8e00, 0h41f50507, + 0hc1f50507, 0hc16b8e00, 0h41d2a716, 0hc16b8e00, 0hc208695c, 0hc19194b0, 0h41b6d966, 0h40de6d7d, + 0hc208695c, 0h40de6d7d, 0h41b6d966, 0hc19194b0, 0hc22076c5, 0h406d72bf, 0h41a58418, 0h406d72bf, + 0hc1a58418, 0hc06d72bf, 0h422076c5, 0hc06d72bf, 0hc1b6d966, 0hc0de6d7d, 0h4208695c, 0h419194b0, + 0hc1b6d966, 0h419194b0, 0h4208695c, 0hc0de6d7d, 0hc1d2a716, 0h416b8e00, 0h41f50507, 0h416b8e00, + 0hc1f50507, 0h41d2a716, 0hc16b8e00, 0hc16b8e00, 0hc208695c, 0h41b6d966, 0hc19194b0, 0h40de6d7d, + 0hc208695c, 0h41b6d966, 0h40de6d7d, 0hc19194b0, 0hc22076c5, 0h41a58418, 0h406d72bf, 0h406d72bf, + 0hc1a58418, 0h422076c5, 0hc06d72bf, 0hc06d72bf, 0hc1b6d966, 0h4208695c, 0hc0de6d7d, 0h419194b0, + 0hc1b6d966, 0h4208695c, 0h419194b0, 0hc0de6d7d, 0hc1d2a716, 0h41f50507, 0h416b8e00, 0h416b8e00, + 0h41d2a716, 0hc1f50507, 0hc16b8e00, 0hc16b8e00, 0h41b6d966, 0hc208695c, 0hc19194b0, 0h40de6d7d, + 0h41b6d966, 0hc208695c, 0h40de6d7d, 0hc19194b0, 0h41a58418, 0hc22076c5, 0h406d72bf, 0h406d72bf, + 0h422076c5, 0hc1a58418, 0hc06d72bf, 0hc06d72bf, 0h4208695c, 0hc1b6d966, 0hc0de6d7d, 0h419194b0, + 0h4208695c, 0hc1b6d966, 0h419194b0, 0hc0de6d7d, 0h41f50507, 0hc1d2a716, 0h416b8e00, 0h416b8e00, +} + +/* + 2D Simplex noise base. +*/ +_internal_noise_2d_unskewed_base :: proc(seed: i64, coord: Vec2) -> (value: f32) { + // Get base points and offsets. + base := [2]i64{fast_floor(coord.x), fast_floor(coord.y)} + i := [2]f32{f32(coord.x - f64(base.x)), f32(coord.y - f64(base.y))} + + // Prime pre-multiplication for hash. + bp := base * [2]i64{PRIME_X, PRIME_Y} + + // Unskew. + t := f32(i.x + i.y) * f32(UNSKEW_2D) + d0 := i + [2]f32{t, t} + + // First vertex. + a0 := RSQUARED_2D - d0.x * d0.x - d0.y * d0.y + if a0 > 0 { + value = (a0 * a0) * (a0 * a0) * grad(seed, [2]i64{bp.x, bp.y}, d0) + } + + // Second vertex. + a1 := f32(2 * (1 + 2 * UNSKEW_2D) * (1 / UNSKEW_2D + 2)) * t + f32(-2 * (1 + 2 * UNSKEW_2D) * (1 + 2 * UNSKEW_2D)) + a0 + if a1 > 0 { + d1 := d0 - [2]f32{f32(1 + 2 * UNSKEW_2D), f32(1 + 2 * UNSKEW_2D)} + value += (a1 * a1) * (a1 * a1) * grad(seed, [2]i64{bp.x + PRIME_X, bp.y + PRIME_Y}, d1) + } + + // Third vertex. + if d0.y > d0.x { + d2 := d0 - [2]f32{f32(UNSKEW_2D), f32(UNSKEW_2D + 1)} + a2 := RSQUARED_2D - d2.x * d2.x - d2.y * d2.y + if(a2 > 0) { + value += (a2 * a2) * (a2 * a2) * grad(seed, [2]i64{bp.x, bp.y + PRIME_Y}, d2) + } + } else { + d2 := d0 - [2]f32{f32(UNSKEW_2D + 1), f32(UNSKEW_2D)} + a2 := RSQUARED_2D - d2.x * d2.x - d2.y * d2.y + if(a2 > 0) { + value += (a2 * a2) * (a2 * a2) * grad(seed, [2]i64{bp.x + PRIME_X, bp.y}, d2) + } + } + + return +} + + +/* + Generate overlapping cubic lattices for 3D OpenSimplex2 noise. +*/ +_internal_noise_3d_unrotated_base :: proc(seed: i64, coord: Vec3) -> (value: f32) { + seed := seed + // Get base points and offsets. + // xr, yr, zr := coord.x, coord.y, coord.z + + rb := [3]i64{fast_round(coord.x), fast_round(coord.y), fast_round(coord.z)} + ri := [3]f32{f32(coord.x - f64(rb.x)), f32(coord.y - f64(rb.y)), f32(coord.z - f64(rb.z))} + + // -1 if positive, 1 if negative. + i_sign := [3]i64{i64(-1.0 - ri.x) | 1, i64(-1.0 - ri.y) | 1, i64(-1.0 - ri.z) | 1} + f_sign := [3]f32{f32(i_sign.x), f32(i_sign.y), f32(i_sign.z)} + + // Compute absolute values, using the above as a shortcut. This was faster in my tests for some reason. + a0 := f_sign * -ri + + // Prime pre-multiplication for hash. + rbp := rb * [3]i64{PRIME_X, PRIME_Y, PRIME_Z} + + // Loop: Pick an edge on each lattice copy. + a := (RSQUARED_3D - ri.x * ri.x) - (ri.y * ri.y + ri.z * ri.z) + + l := 0 + for { + defer l += 1 + + // Closest point on cube. + if a > 0 { + a2 := a * a; a4 := a2 * a2 + value += a4 * grad(seed, rbp, ri) + } + + // Second-closest point. + if a0.x >= a0.y && a0.x >= a0.z { + b := a + a0.x + a0.x + if b > 1 { + b -= 1 + b2 := b * b; b4 := b2 * b2 + value += b4 * grad(seed, [3]i64{rbp.x - i_sign.x * PRIME_X, rbp.y, rbp.z}, [3]f32{ri.x + f_sign.x, ri.y, ri.z}) + } + } else if a0.y > a0.x && a0.y >= a0.z { + b := a + a0.y + a0.y + if b > 1 { + b -= 1 + b2 := b * b; b4 := b2 * b2 + value += b4 * grad(seed, [3]i64{rbp.x, rbp.y - i_sign.y * PRIME_Y, rbp.z}, [3]f32{ri.x, ri.y + f_sign.y, ri.z}) + } + } else { + b := a + a0.z + a0.z + if b > 1 { + b -= 1 + b2 := b * b; b4 := b2 * b2 + value += b4 * grad(seed, [3]i64{rbp.x, rbp.y, rbp.z - i_sign.z * PRIME_Z}, [3]f32{ri.x, ri.y, ri.z + f_sign.z}) + } + } + + // Break from loop if we're done, skipping updates below. + if l == 1 { + break + } + + // Update absolute value. + a0 = 0.5 - a0 + + // Update relative coordinate. + ri = a0 * f_sign + + // Update falloff. + a += (0.75 - a0.x) - (a0.y + a0.z) + + // Update prime for hash. + rbp += [3]i64{i_sign.x >> 1, i_sign.y >> 1, i_sign.z >> 1} & {PRIME_X, PRIME_Y, PRIME_Z} + + // Update the reverse sign indicators. + i_sign = -i_sign + f_sign = -f_sign + + // And finally update the seed for the other lattice copy. + seed ~= SEED_FLIP_3D + } + + return value +} + +/* + 4D OpenSimplex2 noise base. +*/ +_internal_noise_4d_unskewed_base :: proc(seed: i64, coord: Vec4) -> (value: f32) { + seed := seed + + // Get base points and offsets + base := [4]i64{fast_floor(coord.x), fast_floor(coord.y), fast_floor(coord.z), fast_floor(coord.w)} + si := [4]f32{f32(coord.x - f64(base.x)), f32(coord.y - f64(base.y)), f32(coord.z - f64(base.z)), f32(coord.w - f64(base.w))} + + // Determine which lattice we can be confident has a contributing point its corresponding cell's base simplex. + // We only look at the spaces between the diagonal planes. This proved effective in all of my tests. + si_sum := (si.x + si.y) + (si.z + si.w) + starting_lattice := i64(si_sum * 1.25) + + // Offset for seed based on first lattice copy. + seed += starting_lattice * SEED_OFFSET_4D + + // Offset for lattice point relative positions (skewed) + starting_lattice_offset := f32(starting_lattice) * -LATTICE_STEP_4D + si += starting_lattice_offset + + // Prep for vertex contributions. + ssi := (si_sum + starting_lattice_offset * 4) * UNSKEW_4D + + // Prime pre-multiplication for hash. + svp := base * [4]i64{PRIME_X, PRIME_Y, PRIME_Z, PRIME_W} + + // Five points to add, total, from five copies of the A4 lattice. + for i : i64 = 0; ; i += 1 { + + // Next point is the closest vertex on the 4-simplex whose base vertex is the aforementioned vertex. + score := 1.0 + ssi * (-1.0 / UNSKEW_4D) // Seems slightly faster than 1.0-xsi-ysi-zsi-wsi + if si.x >= si.x && si.x >= si.z && si.x >= si.w && si.x >= score { + svp.x += PRIME_X + si.x -= 1 + ssi -= UNSKEW_4D + } + else if si.y > si.x && si.y >= si.z && si.y >= si.w && si.y >= score { + svp.y += PRIME_Y + si.y -= 1 + ssi -= UNSKEW_4D + } + else if si.z > si.x && si.z > si.y && si.z >= si.w && si.z >= score { + svp.z += PRIME_Z + si.z -= 1 + ssi -= UNSKEW_4D + } + else if si.w > si.x && si.w > si.y && si.w > si.z && si.w >= score { + svp.w += PRIME_W + si.w -= 1 + ssi -= UNSKEW_4D + } + + // gradient contribution with falloff. + d := si + ssi + a := (d.x * d.x + d.y * d.y) + (d.z * d.z + d.w * d.w) + + if a < RSQUARED_4D { + a -= RSQUARED_4D + a *= a; a4 := a * a + value += a4 * grad(seed, svp, d) + } + + // Break from loop if we're done, skipping updates below. + if i == 4 { + break + } + + // Update for next lattice copy shifted down by <-0.2, -0.2, -0.2, -0.2>. + si += LATTICE_STEP_4D + ssi += LATTICE_STEP_4D * 4 * UNSKEW_4D + seed -= SEED_OFFSET_4D + + // Because we don't always start on the same lattice copy, there's a special reset case. + if i == starting_lattice { + svp -= {PRIME_X, PRIME_Y, PRIME_Z, PRIME_W} + seed += SEED_OFFSET_4D * 5 + } + } + return +} + +/* + Utility functions +*/ +@(optimization_mode="speed") +grad_2d :: proc(seed: i64, svp: [2]i64, delta: [2]f32) -> (value: f32) { + hash := seed ~ svp.x ~ svp.y + hash *= HASH_MULTIPLIER + hash ~= hash >> (64 - N_GRADS_2D_EXPONENT + 1) + + gi := hash & ((N_GRADS_2D - 1) << 1) + return GRADIENTS_2D[gi] * delta.x + GRADIENTS_2D[gi | 1] * delta.y +} + +@(optimization_mode="speed") +grad_3d :: proc(seed: i64, rvp: [3]i64, delta: [3]f32) -> (value: f32) { + hash := (seed ~ rvp.x) ~ (rvp.y ~ rvp.z) + hash *= HASH_MULTIPLIER + hash ~= hash >> (64 - N_GRADS_3D_EXPONENT + 2) + + gi := hash & ((N_GRADS_3D - 1) << 2) + return GRADIENTS_3D[gi] * delta.x + GRADIENTS_3D[gi | 1] * delta.y + GRADIENTS_3D[gi | 2] * delta.z +} + +@(optimization_mode="speed") +grad_4d :: proc(seed: i64, svp: [4]i64, delta: [4]f32) -> (value: f32) { + hash := seed ~ (svp.x ~ svp.y) ~ (svp.z ~ svp.w) + hash *= HASH_MULTIPLIER + hash ~= hash >> (64 - N_GRADS_4D_EXPONENT + 2) + + gi := hash & ((N_GRADS_4D - 1) << 2) + return (GRADIENTS_4D[gi] * delta.x + GRADIENTS_4D[gi | 1] * delta.y) + (GRADIENTS_4D[gi | 2] * delta.z + GRADIENTS_4D[gi | 3] * delta.w) +} + +grad :: proc {grad_2d, grad_3d, grad_4d} + +@(optimization_mode="speed") +fast_floor :: proc(x: f64) -> (floored: i64) { + xi := i64(x) + return x < f64(xi) ? xi - 1 : xi +} + +@(optimization_mode="speed") +fast_round :: proc(x: f64) -> (rounded: i64) { + return x < 0 ? i64(x - 0.5) : i64(x + 0.5) +} \ No newline at end of file diff --git a/core/math/noise/opensimplex2.odin b/core/math/noise/opensimplex2.odin new file mode 100644 index 000000000..d90dafdf5 --- /dev/null +++ b/core/math/noise/opensimplex2.odin @@ -0,0 +1,171 @@ +/* + OpenSimplex2 noise implementation. + + Ported from https://github.com/KdotJPG/OpenSimplex2. + Copyright 2022 Yuki2 (https://github.com/NoahR02) +*/ +package math_noise + +/* + Input coordinate vectors +*/ +Vec2 :: [2]f64 +Vec3 :: [3]f64 +Vec4 :: [4]f64 + +/* + Noise Evaluators +*/ + +/* + 2D Simplex noise, standard lattice orientation. +*/ +noise_2d :: proc(seed: i64, coord: Vec2) -> (value: f32) { + // Get points for A2* lattice + skew := SKEW_2D * (coord.x + coord.y) + skewed := coord + skew + + return _internal_noise_2d_unskewed_base(seed, skewed) +} + +/* + 2D Simplex noise, with Y pointing down the main diagonal. + Might be better for a 2D sandbox style game, where Y is vertical. + Probably slightly less optimal for heightmaps or continent maps, + unless your map is centered around an equator. It's a subtle + difference, but the option is here to make it an easy choice. +*/ +noise_2d_improve_x :: proc(seed: i64, coord: Vec2) -> (value: f32) { + // Skew transform and rotation baked into one. + xx := coord.x * ROOT_2_OVER_2 + yy := coord.y * (ROOT_2_OVER_2 * (1 + 2 * SKEW_2D)) + return _internal_noise_2d_unskewed_base(seed, Vec2{yy + xx, yy - xx}) +} + + +/* + 3D OpenSimplex2 noise, with better visual isotropy in (X, Y). + Recommended for 3D terrain and time-varied animations. + The Z coordinate should always be the "different" coordinate in whatever your use case is. + If Y is vertical in world coordinates, call `noise_3d_improve_xz(x, z, Y)` or use `noise_3d_xz_before_y`. + If Z is vertical in world coordinates, call `noise_3d_improve_xz(x, y, Z)`. + For a time varied animation, call `noise_3d_improve_xz(x, y, T)`. +*/ +noise_3d_improve_xy :: proc(seed: i64, coord: Vec3) -> (value: f32) { + /* + Re-orient the cubic lattices without skewing, so Z points up the main lattice diagonal, + and the planes formed by XY are moved far out of alignment with the cube faces. + Orthonormal rotation. Not a skew transform. + */ + xy := coord.x + coord.y + s2 := xy * ROTATE_3D_ORTHOGONALIZER + zz := coord.z * ROOT_3_OVER_3 + + r := Vec3{coord.x + s2 + zz, coord.y + s2 + zz, xy * -ROOT_3_OVER_3 + zz} + + // Evaluate both lattices to form a BCC lattice. + return _internal_noise_3d_unrotated_base(seed, r) +} + +/* + 3D OpenSimplex2 noise, with better visual isotropy in (X, Z). + Recommended for 3D terrain and time-varied animations. + The Y coordinate should always be the "different" coordinate in whatever your use case is. + If Y is vertical in world coordinates, call `noise_3d_improve_xz(x, Y, z)`. + If Z is vertical in world coordinates, call `noise_3d_improve_xz(x, Z, y)` or use `noise_3d_improve_xy`. + For a time varied animation, call `noise_3d_improve_xz(x, T, y)` or use `noise_3d_improve_xy`. +*/ +noise_3d_improve_xz :: proc(seed: i64, coord: Vec3) -> (value: f32) { + /* + Re-orient the cubic lattices without skewing, so Y points up the main lattice diagonal, + and the planes formed by XZ are moved far out of alignment with the cube faces. + Orthonormal rotation. Not a skew transform. + */ + xz := coord.x + coord.z + s2 := xz * ROTATE_3D_ORTHOGONALIZER + yy := coord.y * ROOT_3_OVER_3 + + r := Vec3{coord.x + s2 + yy, xz * -ROOT_3_OVER_3 + yy, coord.z + s2 + yy} + + // Evaluate both lattices to form a BCC lattice. + return _internal_noise_3d_unrotated_base(seed, r) +} + +/* + 3D OpenSimplex2 noise, fallback rotation option + Use `noise_3d_improve_xy` or `noise_3d_improve_xz` instead, wherever appropriate. + They have less diagonal bias. This function's best use is as a fallback. +*/ +noise_3d_fallback :: proc(seed: i64, coord: Vec3) -> (value: f32) { + /* + Re-orient the cubic lattices via rotation, to produce a familiar look. + Orthonormal rotation. Not a skew transform. + */ + bias := FALLBACK_ROTATE_3D * (coord.x + coord.y + coord.z) + biased := bias - coord + // Evaluate both lattices to form a BCC lattice. + return _internal_noise_3d_unrotated_base(seed, biased) +} + + +/* + 4D OpenSimplex2 noise, with XYZ oriented like `noise_3d_improve_xy` + and W for an extra degree of freedom. W repeats eventually. + Recommended for time-varied animations which texture a 3D object (W=time) + in a space where Z is vertical. +*/ +noise_4d_improve_xyz_improve_xy :: proc(seed: i64, coord: Vec4) -> (value: f32) { + xy := coord.x + coord.y + s2 := xy * -0.21132486540518699998 + zz := coord.z * 0.28867513459481294226 + ww := coord.w * 0.2236067977499788 + + xr, yr : f64 = coord.x + (zz + ww + s2), coord.y + (zz + ww + s2) + zr : f64 = xy * -0.57735026918962599998 + (zz + ww) + wr : f64 = coord.z * -0.866025403784439 + ww + + return _internal_noise_4d_unskewed_base(seed, Vec4{xr, yr, zr, wr}) +} + +/* + 4D OpenSimplex2 noise, with XYZ oriented like `noise_3d_improve_xz` + and W for an extra degree of freedom. W repeats eventually. + Recommended for time-varied animations which texture a 3D object (W=time) + in a space where Y is vertical. +*/ +noise_4d_improve_xyz_improve_xz :: proc(seed: i64, coord: Vec4) -> (value: f32) { + xz := coord.x + coord.z + s2 := xz * -0.21132486540518699998 + yy := coord.y * 0.28867513459481294226 + ww := coord.w * 0.2236067977499788 + + xr, zr : f64 = coord.x + (yy + ww + s2), coord.z + (yy + ww + s2) + yr := xz * -0.57735026918962599998 + (yy + ww) + wr := coord.y * -0.866025403784439 + ww + + return _internal_noise_4d_unskewed_base(seed, Vec4{xr, yr, zr, wr}) +} + +/* + 4D OpenSimplex2 noise, with XYZ oriented like `noise_3d_fallback` + and W for an extra degree of freedom. W repeats eventually. + Recommended for time-varied animations which texture a 3D object (W=time) + where there isn't a clear distinction between horizontal and vertical +*/ +noise_4d_improve_xyz :: proc(seed: i64, coord: Vec4) -> (value: f32) { + xyz := coord.x + coord.y + coord.z + ww := coord.w * 0.2236067977499788 + s2 := xyz * -0.16666666666666666 + ww + + skewed := Vec4{coord.x + s2, coord.y + s2, coord.z + s2, -0.5 * xyz + ww} + return _internal_noise_4d_unskewed_base(seed, skewed) +} + +/* + 4D OpenSimplex2 noise, fallback lattice orientation. +*/ +noise_4d_fallback :: proc(seed: i64, coord: Vec4) -> (value: f32) { + // Get points for A4 lattice + skew := f64(SKEW_4D) * (coord.x + coord.y + coord.z + coord.w) + return _internal_noise_4d_unskewed_base(seed, coord + skew) +} \ No newline at end of file diff --git a/tests/core/Makefile b/tests/core/Makefile index 0f0ffe4d6..1c2cee6bd 100644 --- a/tests/core/Makefile +++ b/tests/core/Makefile @@ -1,7 +1,7 @@ ODIN=../../odin PYTHON=$(shell which python3) -all: download_test_assets image_test compress_test strings_test hash_test crypto_test +all: download_test_assets image_test compress_test strings_test hash_test crypto_test noise_test download_test_assets: $(PYTHON) download_assets.py @@ -19,4 +19,7 @@ hash_test: $(ODIN) run hash -out=test_hash -o:speed -no-bounds-check crypto_test: - $(ODIN) run crypto -out=crypto_hash -o:speed -no-bounds-check \ No newline at end of file + $(ODIN) run crypto -out=crypto_hash -o:speed -no-bounds-check + +noise_test: + $(ODIN) run math/noise -out=test_noise \ No newline at end of file diff --git a/tests/core/build.bat b/tests/core/build.bat index 176b7f175..6af39e688 100644 --- a/tests/core/build.bat +++ b/tests/core/build.bat @@ -35,4 +35,9 @@ echo --- echo --- echo Running core:encoding tests echo --- -%PATH_TO_ODIN% run encoding %COMMON% \ No newline at end of file +%PATH_TO_ODIN% run encoding %COMMON% + +echo --- +echo Running core:math/noise tests +echo --- +%PATH_TO_ODIN% run math/noise %COMMON% \ No newline at end of file diff --git a/tests/core/math/noise/test_core_math_noise.odin b/tests/core/math/noise/test_core_math_noise.odin new file mode 100644 index 000000000..a3ac1b955 --- /dev/null +++ b/tests/core/math/noise/test_core_math_noise.odin @@ -0,0 +1,153 @@ +package test_core_math_noise + +import "core:testing" +import "core:math/noise" +import "core:fmt" + +TEST_count := 0 +TEST_fail := 0 + +V2 :: noise.Vec2 +V3 :: noise.Vec3 +V4 :: noise.Vec4 + +when ODIN_TEST { + expect :: testing.expect + log :: testing.log +} else { + expect :: proc(t: ^testing.T, condition: bool, message: string, loc := #caller_location) { + fmt.printf("[%v] ", loc) + TEST_count += 1 + if !condition { + TEST_fail += 1 + fmt.println(message) + return + } + fmt.println(" PASS") + } + log :: proc(t: ^testing.T, v: any, loc := #caller_location) { + fmt.printf("[%v] ", loc) + fmt.printf("log: %v\n", v) + } +} + +main :: proc() { + t := testing.T{} + noise_test(&t) + fmt.printf("%v/%v tests successful.\n", TEST_count - TEST_fail, TEST_count) +} + +Test_Vector :: struct { + seed: i64, + coord: union {V2, V3, V4}, + expected: f32, + + test_proc: union { + proc(_: i64, _: V2) -> f32, + proc(_: i64, _: V3) -> f32, + proc(_: i64, _: V4) -> f32, + }, +} + +SEED_1 :: 2324223232 +SEED_2 :: 932466901 +SEED_3 :: 9321 + +COORD_1 :: V4{ 242.0, 3433.0, 920.0, 222312.0} +COORD_2 :: V4{ 590.0, 9411.0, 5201.0, 942124256.0} +COORD_3 :: V4{12090.0, 19411.0, 81950901.0, 4224219.0} + +Noise_Tests := []Test_Vector{ + /* + `noise_2d` tests. + */ + {SEED_1, COORD_1.xy, 0.25010583, noise.noise_2d}, + {SEED_2, COORD_2.xy, -0.92513955, noise.noise_2d}, + {SEED_3, COORD_3.xy, 0.67327416, noise.noise_2d}, + + /* + `noise_2d_improve_x` tests. + */ + {SEED_1, COORD_1.xy, 0.17074019, noise.noise_2d_improve_x}, + {SEED_2, COORD_2.xy, 0.72330487, noise.noise_2d_improve_x}, + {SEED_3, COORD_3.xy, -0.032076947, noise.noise_2d_improve_x}, + + /* + `noise_3d_improve_xy` tests. + */ + {SEED_1, COORD_1.xyz, 0.14819577, noise.noise_3d_improve_xy}, + {SEED_2, COORD_2.xyz, -0.065345764, noise.noise_3d_improve_xy}, + {SEED_3, COORD_3.xyz, -0.37761918, noise.noise_3d_improve_xy}, + + /* + `noise_3d_improve_xz` tests. + */ + {SEED_1, COORD_1.xyz, -0.50075006, noise.noise_3d_improve_xz}, + {SEED_2, COORD_2.xyz, -0.36039603, noise.noise_3d_improve_xz}, + {SEED_3, COORD_3.xyz, -0.3479203, noise.noise_3d_improve_xz}, + + /* + `noise_3d_fallback` tests. + */ + {SEED_1, COORD_1.xyz, 0.6557345, noise.noise_3d_fallback}, + {SEED_2, COORD_2.xyz, 0.55452216, noise.noise_3d_fallback}, + {SEED_3, COORD_3.xyz, -0.26408964, noise.noise_3d_fallback}, + + /* + `noise_3d_fallback` tests. + */ + {SEED_1, COORD_1.xyz, 0.6557345, noise.noise_3d_fallback}, + {SEED_2, COORD_2.xyz, 0.55452216, noise.noise_3d_fallback}, + {SEED_3, COORD_3.xyz, -0.26408964, noise.noise_3d_fallback}, + + /* + `noise_4d_improve_xyz_improve_xy` tests. + */ + {SEED_1, COORD_1, 0.44929826, noise.noise_4d_improve_xyz_improve_xy}, + {SEED_2, COORD_2, -0.13270882, noise.noise_4d_improve_xyz_improve_xy}, + {SEED_3, COORD_3, 0.10298563, noise.noise_4d_improve_xyz_improve_xy}, + + /* + `noise_4d_improve_xyz_improve_xz` tests. + */ + {SEED_1, COORD_1, -0.078514606, noise.noise_4d_improve_xyz_improve_xz}, + {SEED_2, COORD_2, -0.032157656, noise.noise_4d_improve_xyz_improve_xz}, + {SEED_3, COORD_3, -0.38607058, noise.noise_4d_improve_xyz_improve_xz}, + + /* + `noise_4d_improve_xyz` tests. + */ + {SEED_1, COORD_1, -0.4442258, noise.noise_4d_improve_xyz}, + {SEED_2, COORD_2, 0.36822623, noise.noise_4d_improve_xyz}, + {SEED_3, COORD_3, 0.22628775, noise.noise_4d_improve_xyz}, + + /* + `noise_4d_fallback` tests. + */ + {SEED_1, COORD_1, -0.14233987, noise.noise_4d_fallback}, + {SEED_2, COORD_2, 0.1354035, noise.noise_4d_fallback}, + {SEED_3, COORD_3, 0.14565045, noise.noise_4d_fallback}, + + // TODO: Output according to C# - Figure out which of these two is right (and why). + // {SEED_1, COORD_1, -0.14233987, noise.noise_4d_fallback}, + // {SEED_2, COORD_2, 0.1354035, noise.noise_4d_fallback}, + // {SEED_3, COORD_3, 0.14565045, noise.noise_4d_fallback}, +} + +noise_test :: proc(t: ^testing.T) { + for test in Noise_Tests { + output: f32 + + switch coord in test.coord { + case V2: + output = test.test_proc.(proc(_: i64, _: V2) -> f32)(test.seed, test.coord.(V2)) + case V3: + output = test.test_proc.(proc(_: i64, _: V3) -> f32)(test.seed, test.coord.(V3)) + case V4: + output = test.test_proc.(proc(_: i64, _: V4) -> f32)(test.seed, test.coord.(V4)) + } + + error := fmt.tprintf("Seed %v, Coord: %v, Expected: %3.8f. Got %3.8f", test.seed, test.coord, test.expected, output) + expect(t, test.expected == output, error) + } +} \ No newline at end of file From accb35506f5c0b66fa25fb7ccec7e97a9da61d8e Mon Sep 17 00:00:00 2001 From: NoahR02 Date: Tue, 8 Feb 2022 06:25:07 -0500 Subject: [PATCH 015/190] Ports OpenSimplex2 from https://github.com/KdotJPG/OpenSimplex2 to Odin. Adds tests for the noise procedures. --- tests/core/math/noise/test_core_math_noise.odin | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/core/math/noise/test_core_math_noise.odin b/tests/core/math/noise/test_core_math_noise.odin index a3ac1b955..c3a3e4228 100644 --- a/tests/core/math/noise/test_core_math_noise.odin +++ b/tests/core/math/noise/test_core_math_noise.odin @@ -128,10 +128,6 @@ Noise_Tests := []Test_Vector{ {SEED_2, COORD_2, 0.1354035, noise.noise_4d_fallback}, {SEED_3, COORD_3, 0.14565045, noise.noise_4d_fallback}, - // TODO: Output according to C# - Figure out which of these two is right (and why). - // {SEED_1, COORD_1, -0.14233987, noise.noise_4d_fallback}, - // {SEED_2, COORD_2, 0.1354035, noise.noise_4d_fallback}, - // {SEED_3, COORD_3, 0.14565045, noise.noise_4d_fallback}, } noise_test :: proc(t: ^testing.T) { From 30bb2382aa0c7a9d6407c0b28258cd9fd00c560d Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 8 Feb 2022 11:48:59 +0000 Subject: [PATCH 016/190] Correct simple boolean intrinsics --- src/check_builtin.cpp | 5 +++-- src/checker_builtin_procs.hpp | 4 ---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index d3a3103b1..1fb3d6037 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -3344,9 +3344,11 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32 case BuiltinProc_type_is_simple_compare: case BuiltinProc_type_is_dereferenceable: case BuiltinProc_type_is_valid_map_key: + case BuiltinProc_type_is_valid_matrix_elements: case BuiltinProc_type_is_named: case BuiltinProc_type_is_pointer: case BuiltinProc_type_is_array: + case BuiltinProc_type_is_enumerated_array: case BuiltinProc_type_is_slice: case BuiltinProc_type_is_dynamic_array: case BuiltinProc_type_is_map: @@ -3354,10 +3356,9 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32 case BuiltinProc_type_is_union: case BuiltinProc_type_is_enum: case BuiltinProc_type_is_proc: - case BuiltinProc_type_is_bit_field: - case BuiltinProc_type_is_bit_field_value: case BuiltinProc_type_is_bit_set: case BuiltinProc_type_is_simd_vector: + case BuiltinProc_type_is_matrix: case BuiltinProc_type_is_specialized_polymorphic_record: case BuiltinProc_type_is_unspecialized_polymorphic_record: case BuiltinProc_type_has_nil: diff --git a/src/checker_builtin_procs.hpp b/src/checker_builtin_procs.hpp index e8f5174c0..d833a055f 100644 --- a/src/checker_builtin_procs.hpp +++ b/src/checker_builtin_procs.hpp @@ -213,8 +213,6 @@ BuiltinProc__type_simple_boolean_begin, BuiltinProc_type_is_union, BuiltinProc_type_is_enum, BuiltinProc_type_is_proc, - BuiltinProc_type_is_bit_field, - BuiltinProc_type_is_bit_field_value, BuiltinProc_type_is_bit_set, BuiltinProc_type_is_simd_vector, BuiltinProc_type_is_matrix, @@ -466,8 +464,6 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = { {STR_LIT("type_is_union"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("type_is_enum"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("type_is_proc"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, - {STR_LIT("type_is_bit_field"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, - {STR_LIT("type_is_bit_field_value"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("type_is_bit_set"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("type_is_simd_vector"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("type_is_matrix"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, From 83e9a6b417c449e0ffa413f4841ce0d19b1c7732 Mon Sep 17 00:00:00 2001 From: CiD- Date: Tue, 8 Feb 2022 09:21:43 -0500 Subject: [PATCH 017/190] fix -vet for filepath/match.odin --- core/path/filepath/match.odin | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/path/filepath/match.odin b/core/path/filepath/match.odin index cba44953d..bde7f5393 100644 --- a/core/path/filepath/match.odin +++ b/core/path/filepath/match.odin @@ -227,11 +227,10 @@ glob :: proc(pattern: string, allocator := context.allocator) -> (matches: []str return m[:], .None } - temp_buf: [8]byte - dir, file := split(pattern) volume_len := 0 when ODIN_OS == "windows" { + temp_buf: [8]byte volume_len, dir = clean_glob_path_windows(dir, temp_buf[:]) } else { dir = clean_glob_path(dir) From 0cc40db565a9c4b99e6fa0844b9ac512558626e4 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 8 Feb 2022 17:04:55 +0000 Subject: [PATCH 018/190] Begin work on support objc intrinsics --- src/check_builtin.cpp | 223 +++++++++++++++++++++++++++++++++- src/check_decl.cpp | 3 + src/checker.cpp | 36 ++++++ src/checker.hpp | 15 ++- src/checker_builtin_procs.hpp | 6 + src/entity.cpp | 1 + src/llvm_backend.cpp | 59 ++++++++- src/llvm_backend.hpp | 6 +- src/llvm_backend_general.cpp | 8 +- src/llvm_backend_proc.cpp | 3 + src/llvm_backend_utility.cpp | 96 +++++++++++++++ src/types.cpp | 10 ++ 12 files changed, 459 insertions(+), 7 deletions(-) diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index 1fb3d6037..8ada77b12 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -143,6 +143,219 @@ void check_or_return_split_types(CheckerContext *c, Operand *x, String const &na } +bool does_require_msgSend_stret(Type *return_type) { + if (return_type == nullptr) { + return false; + } + if (build_context.metrics.arch == TargetArch_i386 || build_context.metrics.arch == TargetArch_amd64) { + i64 struct_limit = type_size_of(t_uintptr) << 1; + return type_size_of(return_type) > struct_limit; + } + if (build_context.metrics.arch == TargetArch_arm64) { + return false; + } + + // if (build_context.metrics.arch == TargetArch_arm32) { + // i64 struct_limit = type_size_of(t_uintptr); + // // NOTE(bill): This is technically wrong + // return is_type_struct(return_type) && !is_type_raw_union(return_type) && type_size_of(return_type) > struct_limit; + // } + GB_PANIC("unsupported architecture"); + return false; +} + +ObjcMsgKind get_objc_proc_kind(Type *return_type) { + if (return_type == nullptr) { + return ObjcMsg_normal; + } + + if (build_context.metrics.arch == TargetArch_i386 || build_context.metrics.arch == TargetArch_amd64) { + if (is_type_float(return_type)) { + return ObjcMsg_fpret; + } + if (build_context.metrics.arch == TargetArch_amd64) { + if (is_type_complex(return_type)) { + // URL: https://github.com/opensource-apple/objc4/blob/cd5e62a5597ea7a31dccef089317abb3a661c154/runtime/message.h#L143-L159 + return ObjcMsg_fpret; + } + } + } + if (build_context.metrics.arch != TargetArch_arm64) { + if (does_require_msgSend_stret(return_type)) { + return ObjcMsg_stret; + } + } + return ObjcMsg_normal; +} + +void add_objc_proc_type(CheckerContext *c, Ast *call, Type *return_type, Slice param_types) { + ObjcMsgKind kind = get_objc_proc_kind(return_type); + + Scope *scope = create_scope(c->info, nullptr); + + // NOTE(bill, 2022-02-08): the backend's ABI handling should handle this correctly, I hope + Type *params = alloc_type_tuple(); + { + auto variables = array_make(permanent_allocator(), 0, param_types.count); + + for_array(i, param_types) { + Type *type = param_types[i]; + Entity *param = alloc_entity_param(scope, blank_token, type, false, true); + array_add(&variables, param); + } + params->Tuple.variables = slice_from_array(variables); + } + + Type *results = alloc_type_tuple(); + if (return_type) { + auto variables = array_make(permanent_allocator(), 1); + results->Tuple.variables = slice_from_array(variables); + Entity *param = alloc_entity_param(scope, blank_token, return_type, false, true); + results->Tuple.variables[0] = param; + } + + + ObjcMsgData data = {}; + data.kind = kind; + data.proc_type = alloc_type_proc(scope, params, param_types.count, results, results->Tuple.variables.count, false, ProcCC_CDecl); + + mutex_lock(&c->info->objc_types_mutex); + map_set(&c->info->objc_msgSend_types, call, data); + mutex_unlock(&c->info->objc_types_mutex); + + add_package_dependency(c, "runtime", "objc_lookUpClass"); + add_package_dependency(c, "runtime", "sel_registerName"); + + add_package_dependency(c, "runtime", "objc_msgSend"); + add_package_dependency(c, "runtime", "objc_msgSend_fpret"); + add_package_dependency(c, "runtime", "objc_msgSend_fp2ret"); + add_package_dependency(c, "runtime", "objc_msgSend_stret"); +} + +bool check_builtin_objc_procedure(CheckerContext *c, Operand *operand, Ast *call, i32 id, Type *type_hint) { + auto const is_constant_string = [](CheckerContext *c, String const &builtin_name, Ast *expr, String *name_) -> bool { + Operand op = {}; + check_expr(c, &op, expr); + if (op.mode == Addressing_Constant && op.value.kind == ExactValue_String) { + if (name_) *name_ = op.value.value_string; + return true; + } + gbString e = expr_to_string(op.expr); + gbString t = type_to_string(op.type); + error(op.expr, "'%.*s' expected a constant string value, got %s of type %s", LIT(builtin_name), e, t); + gb_string_free(t); + gb_string_free(e); + return false; + }; + String builtin_name = builtin_procs[id].name; + + if (build_context.metrics.os != TargetOs_darwin) { + error(call, "'%.*s' only works on darwin", LIT(builtin_name)); + return false; + } + + + ast_node(ce, CallExpr, call); + switch (id) { + default: + GB_PANIC("Implement objective built-in procedure: %.*s", LIT(builtin_name)); + return false; + + case BuiltinProc_objc_send: { + Type *return_type = nullptr; + + Operand rt = {}; + check_expr_or_type(c, &rt, ce->args[0]); + if (rt.mode == Addressing_Type) { + return_type = rt.type; + } else if (is_operand_nil(rt)) { + return_type = nullptr; + } else { + gbString e = expr_to_string(rt.expr); + error(rt.expr, "'%.*s' expected a type or nil to define the return type of the Objective-C call, got %s", LIT(builtin_name), e); + gb_string_free(e); + return false; + } + + operand->type = return_type; + operand->mode = return_type ? Addressing_Value : Addressing_NoValue; + + String class_name = {}; + String sel_name = {}; + + Type *sel_type = t_objc_SEL; + Operand self = {}; + check_expr_or_type(c, &self, ce->args[1]); + if (self.mode == Addressing_Type) { + if (!internal_check_is_assignable_to(self.type, t_objc_object)) { + gbString t = type_to_string(self.type); + error(self.expr, "'%.*s' expected a type or value derived from intrinsics.objc_object, got type %s", LIT(builtin_name), t); + gb_string_free(t); + return false; + } + if (!(self.type->kind == Type_Named && + self.type->Named.type_name != nullptr && + self.type->Named.type_name->TypeName.objc_class_name != "")) { + gbString t = type_to_string(self.type); + error(self.expr, "'%.*s' expected a named type with the attribute @(obj_class=) , got type %s", LIT(builtin_name), t); + gb_string_free(t); + return false; + } + + sel_type = t_objc_Class; + } else if (!is_operand_value(self) || !check_is_assignable_to(c, &self, t_objc_id)) { + gbString e = expr_to_string(self.expr); + gbString t = type_to_string(self.type); + error(self.expr, "'%.*s'3 expected a type or value derived from intrinsics.objc_object, got '%s' of type %s %d", LIT(builtin_name), e, t, self.type->kind); + gb_string_free(t); + gb_string_free(e); + return false; + } else if (!is_type_pointer(self.type)) { + gbString e = expr_to_string(self.expr); + gbString t = type_to_string(self.type); + error(self.expr, "'%.*s' expected a pointer of a value derived from intrinsics.objc_object, got '%s' of type %s", LIT(builtin_name), e, t); + gb_string_free(t); + gb_string_free(e); + return false; + } else { + Type *type = type_deref(self.type); + if (!(type->kind == Type_Named && + type->Named.type_name != nullptr && + type->Named.type_name->TypeName.objc_class_name != "")) { + gbString t = type_to_string(type); + error(self.expr, "'%.*s' expected a named type with the attribute @(obj_class=) , got type %s", LIT(builtin_name), t); + gb_string_free(t); + return false; + } + } + + + if (!is_constant_string(c, builtin_name, ce->args[2], &sel_name)) { + return false; + } + + isize const arg_offset = 1; + auto param_types = slice_make(permanent_allocator(), ce->args.count-arg_offset); + param_types[0] = t_objc_id; + param_types[1] = sel_type; + + for (isize i = 2+arg_offset; i < ce->args.count; i++) { + Operand x = {}; + check_expr(c, &x, ce->args[i]); + param_types[i-arg_offset] = x.type; + } + + add_objc_proc_type(c, call, return_type, param_types); + + return true; + } break; + + case BuiltinProc_objc_create: { + GB_PANIC("TODO: BuiltinProc_objc_create"); + return false; + } break; + } +} bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32 id, Type *type_hint) { ast_node(ce, CallExpr, call); @@ -179,6 +392,8 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32 case BuiltinProc_len: case BuiltinProc_min: case BuiltinProc_max: + case BuiltinProc_objc_send: + case BuiltinProc_objc_create: // NOTE(bill): The first arg may be a Type, this will be checked case by case break; @@ -202,7 +417,7 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32 break; } - String builtin_name = builtin_procs[id].name;; + String builtin_name = builtin_procs[id].name; if (ce->args.count > 0) { @@ -219,6 +434,10 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32 GB_PANIC("Implement built-in procedure: %.*s", LIT(builtin_name)); break; + case BuiltinProc_objc_send: + case BuiltinProc_objc_create: + return check_builtin_objc_procedure(c, operand, call, id, type_hint); + case BuiltinProc___entry_point: operand->mode = Addressing_NoValue; operand->type = nullptr; @@ -3815,6 +4034,8 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32 operand->type = t_hasher_proc; break; } + + } return true; diff --git a/src/check_decl.cpp b/src/check_decl.cpp index f6dade812..243dbbbc6 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -338,6 +338,9 @@ void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, Type *def) if (decl != nullptr) { AttributeContext ac = {}; check_decl_attributes(ctx, decl->attributes, type_decl_attribute, &ac); + if (e->kind == Entity_TypeName && ac.objc_class != "") { + e->TypeName.objc_class_name = ac.objc_class; + } } diff --git a/src/checker.cpp b/src/checker.cpp index 7fb4fdb29..2ab487592 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -841,6 +841,17 @@ void add_global_enum_constant(Slice const &fields, char const *name, i GB_PANIC("Unfound enum value for global constant: %s %lld", name, cast(long long)value); } +Type *add_global_type_name(Scope *scope, String const &type_name, Type *backing_type) { + Entity *e = alloc_entity_type_name(scope, make_token_ident(type_name), nullptr, EntityState_Resolved); + Type *named_type = alloc_type_named(type_name, backing_type, e); + e->type = named_type; + set_base_type(named_type, backing_type); + if (scope_insert(scope, e)) { + compiler_error("double declaration of %.*s", LIT(e->token.string)); + } + return named_type; +} + void init_universal(void) { BuildContext *bc = &build_context; @@ -985,6 +996,17 @@ void init_universal(void) { t_f64_ptr = alloc_type_pointer(t_f64); t_u8_slice = alloc_type_slice(t_u8); t_string_slice = alloc_type_slice(t_string); + + // intrinsics types for objective-c stuff + { + t_objc_object = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_object"), alloc_type_struct()); + t_objc_selector = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_selector"), alloc_type_struct()); + t_objc_class = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_class"), alloc_type_struct()); + + t_objc_id = alloc_type_pointer(t_objc_object); + t_objc_SEL = alloc_type_pointer(t_objc_selector); + t_objc_Class = alloc_type_pointer(t_objc_class); + } } @@ -1041,6 +1063,9 @@ void init_checker_info(CheckerInfo *i) { semaphore_init(&i->collect_semaphore); mpmc_init(&i->intrinsics_entry_point_usage, a, 1<<10); // just waste some memory here, even if it probably never used + + mutex_init(&i->objc_types_mutex); + map_init(&i->objc_msgSend_types, a); } void destroy_checker_info(CheckerInfo *i) { @@ -1073,6 +1098,9 @@ void destroy_checker_info(CheckerInfo *i) { mutex_destroy(&i->type_and_value_mutex); mutex_destroy(&i->identifier_uses_mutex); mutex_destroy(&i->foreign_mutex); + + mutex_destroy(&i->objc_types_mutex); + map_destroy(&i->objc_msgSend_types); } CheckerContext make_checker_context(Checker *c) { @@ -3161,6 +3189,14 @@ DECL_ATTRIBUTE_PROC(type_decl_attribute) { } else if (name == "private") { // NOTE(bill): Handled elsewhere `check_collect_value_decl` return true; + } else if (name == "objc_class") { + ExactValue ev = check_decl_attribute_value(c, value); + if (ev.kind != ExactValue_String || ev.value_string == "") { + error(elem, "Expected a non-empty string value for '%.*s'", LIT(name)); + } else { + ac->objc_class = ev.value_string; + } + return true; } return false; } diff --git a/src/checker.hpp b/src/checker.hpp index 9a8753efd..b812e10a4 100644 --- a/src/checker.hpp +++ b/src/checker.hpp @@ -107,6 +107,7 @@ struct AttributeContext { String thread_local_model; String deprecated_message; String warning_message; + String objc_class; DeferredProcedure deferred_procedure; bool is_export : 1; bool is_static : 1; @@ -267,6 +268,17 @@ struct UntypedExprInfo { typedef PtrMap UntypedExprInfoMap; typedef MPMCQueue ProcBodyQueue; +enum ObjcMsgKind : u32 { + ObjcMsg_normal, + ObjcMsg_fpret, + ObjcMsg_fp2ret, + ObjcMsg_stret, +}; +struct ObjcMsgData { + ObjcMsgKind kind; + Type *proc_type; +}; + // CheckerInfo stores all the symbol information for a type-checked program struct CheckerInfo { Checker *checker; @@ -340,7 +352,8 @@ struct CheckerInfo { MPMCQueue intrinsics_entry_point_usage; - + BlockingMutex objc_types_mutex; + PtrMap objc_msgSend_types; }; struct CheckerContext { diff --git a/src/checker_builtin_procs.hpp b/src/checker_builtin_procs.hpp index d833a055f..1a9d7d7a0 100644 --- a/src/checker_builtin_procs.hpp +++ b/src/checker_builtin_procs.hpp @@ -250,6 +250,9 @@ BuiltinProc__type_end, BuiltinProc___entry_point, + BuiltinProc_objc_send, + BuiltinProc_objc_create, + BuiltinProc_COUNT, }; gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = { @@ -500,4 +503,7 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = { {STR_LIT(""), 0, false, Expr_Stmt, BuiltinProcPkg_intrinsics}, {STR_LIT("__entry_point"), 0, false, Expr_Stmt, BuiltinProcPkg_intrinsics}, + + {STR_LIT("objc_send"), 3, true, Expr_Expr, BuiltinProcPkg_intrinsics}, + {STR_LIT("objc_create"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, }; diff --git a/src/entity.cpp b/src/entity.cpp index 8327a517e..4d5b3b9e1 100644 --- a/src/entity.cpp +++ b/src/entity.cpp @@ -186,6 +186,7 @@ struct Entity { Type * type_parameter_specialization; String ir_mangled_name; bool is_type_alias; + String objc_class_name; } TypeName; struct { u64 tags; diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 304effb7f..7941c65a3 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -652,7 +652,53 @@ lbProcedure *lb_create_startup_type_info(lbModule *m) { return p; } -lbProcedure *lb_create_startup_runtime(lbModule *main_module, lbProcedure *startup_type_info, Array &global_variables) { // Startup Runtime +lbProcedure *lb_create_objc_names(lbModule *main_module) { + if (build_context.metrics.os != TargetOs_darwin) { + return nullptr; + } + Type *proc_type = alloc_type_proc(nullptr, nullptr, 0, nullptr, 0, false, ProcCC_CDecl); + lbProcedure *p = lb_create_dummy_procedure(main_module, str_lit("__$init_objc_names"), proc_type); + p->is_startup = true; + return p; +} + +void lb_finalize_objc_names(lbProcedure *p) { + if (p == nullptr) { + return; + } + lbModule *m = p->module; + + LLVMPassManagerRef default_function_pass_manager = LLVMCreateFunctionPassManagerForModule(m->mod); + lb_populate_function_pass_manager(m, default_function_pass_manager, false, build_context.optimization_level); + LLVMFinalizeFunctionPassManager(default_function_pass_manager); + + LLVMSetLinkage(p->value, LLVMInternalLinkage); + lb_begin_procedure_body(p); + for_array(i, m->objc_classes.entries) { + auto const &entry = m->objc_classes.entries[i]; + String name = entry.key.string; + auto args = array_make(permanent_allocator(), 1); + args[0] = lb_const_value(m, t_cstring, exact_value_string(name)); + lbValue ptr = lb_emit_runtime_call(p, "objc_lookUpClass", args); + lb_addr_store(p, entry.value, ptr); + } + + for_array(i, m->objc_selectors.entries) { + auto const &entry = m->objc_selectors.entries[i]; + String name = entry.key.string; + auto args = array_make(permanent_allocator(), 1); + args[0] = lb_const_value(m, t_cstring, exact_value_string(name)); + lbValue ptr = lb_emit_runtime_call(p, "sel_registerName", args); + lb_addr_store(p, entry.value, ptr); + } + + lb_end_procedure_body(p); + + lb_run_function_pass_manager(default_function_pass_manager, p); + +} + +lbProcedure *lb_create_startup_runtime(lbModule *main_module, lbProcedure *startup_type_info, lbProcedure *objc_names, Array &global_variables) { // Startup Runtime LLVMPassManagerRef default_function_pass_manager = LLVMCreateFunctionPassManagerForModule(main_module->mod); lb_populate_function_pass_manager(main_module, default_function_pass_manager, false, build_context.optimization_level); LLVMFinalizeFunctionPassManager(default_function_pass_manager); @@ -666,6 +712,10 @@ lbProcedure *lb_create_startup_runtime(lbModule *main_module, lbProcedure *start LLVMBuildCall2(p->builder, LLVMGetElementType(lb_type(main_module, startup_type_info->type)), startup_type_info->value, nullptr, 0, ""); + if (objc_names) { + LLVMBuildCall2(p->builder, LLVMGetElementType(lb_type(main_module, objc_names->type)), objc_names->value, nullptr, 0, ""); + } + for_array(i, global_variables) { auto *var = &global_variables[i]; if (var->is_initialized) { @@ -1570,8 +1620,10 @@ void lb_generate_code(lbGenerator *gen) { TIME_SECTION("LLVM Runtime Type Information Creation"); lbProcedure *startup_type_info = lb_create_startup_type_info(default_module); + lbProcedure *objc_names = lb_create_objc_names(default_module); + TIME_SECTION("LLVM Runtime Startup Creation (Global Variables)"); - lbProcedure *startup_runtime = lb_create_startup_runtime(default_module, startup_type_info, global_variables); + lbProcedure *startup_runtime = lb_create_startup_runtime(default_module, startup_type_info, objc_names, global_variables); gb_unused(startup_runtime); TIME_SECTION("LLVM Global Procedures and Types"); @@ -1650,6 +1702,8 @@ void lb_generate_code(lbGenerator *gen) { } } + lb_finalize_objc_names(objc_names); + if (build_context.ODIN_DEBUG) { TIME_SECTION("LLVM Debug Info Complete Types and Finalize"); for_array(j, gen->modules.entries) { @@ -1662,6 +1716,7 @@ void lb_generate_code(lbGenerator *gen) { } + TIME_SECTION("LLVM Function Pass"); for_array(i, gen->modules.entries) { lbModule *m = gen->modules.entries[i].value; diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp index d7093bc63..087cda22a 100644 --- a/src/llvm_backend.hpp +++ b/src/llvm_backend.hpp @@ -144,6 +144,9 @@ struct lbModule { PtrMap debug_values; Array debug_incomplete_types; + + StringMap objc_classes; + StringMap objc_selectors; }; struct lbGenerator { @@ -293,7 +296,6 @@ struct lbProcedure { bool lb_init_generator(lbGenerator *gen, Checker *c); -void lb_generate_module(lbGenerator *gen); String lb_mangle_name(lbModule *m, Entity *e); String lb_get_entity_name(lbModule *m, Entity *e, String name = {}); @@ -366,7 +368,7 @@ lbContextData *lb_push_context_onto_stack(lbProcedure *p, lbAddr ctx); lbContextData *lb_push_context_onto_stack_from_implicit_parameter(lbProcedure *p); -lbAddr lb_add_global_generated(lbModule *m, Type *type, lbValue value={}); +lbAddr lb_add_global_generated(lbModule *m, Type *type, lbValue value={}, Entity **entity_=nullptr); lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e=nullptr, bool zero_init=true, i32 param_index=0, bool force_no_init=false); void lb_add_foreign_library_path(lbModule *m, Entity *e); diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 2fc21b534..1c98aa77f 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -72,6 +72,9 @@ void lb_init_module(lbModule *m, Checker *c) { map_init(&m->debug_values, a); array_init(&m->debug_incomplete_types, a, 0, 1024); + + string_map_init(&m->objc_classes, a); + string_map_init(&m->objc_selectors, a); } bool lb_init_generator(lbGenerator *gen, Checker *c) { @@ -2450,7 +2453,7 @@ lbValue lb_find_procedure_value_from_entity(lbModule *m, Entity *e) { return {}; } -lbAddr lb_add_global_generated(lbModule *m, Type *type, lbValue value) { +lbAddr lb_add_global_generated(lbModule *m, Type *type, lbValue value, Entity **entity_) { GB_ASSERT(type != nullptr); type = default_type(type); @@ -2476,6 +2479,9 @@ lbAddr lb_add_global_generated(lbModule *m, Type *type, lbValue value) { lb_add_entity(m, e, g); lb_add_member(m, name, g); + + if (entity_) *entity_ = e; + return lb_addr(g); } diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp index 7a6fac603..6de0aaed7 100644 --- a/src/llvm_backend_proc.cpp +++ b/src/llvm_backend_proc.cpp @@ -2106,6 +2106,9 @@ lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValue const &tv, res.type = t_uintptr; return res; } + + case BuiltinProc_objc_send: + return lb_handle_obj_send(p, expr); } GB_PANIC("Unhandled built-in procedure %.*s", LIT(builtin_procs[id].name)); diff --git a/src/llvm_backend_utility.cpp b/src/llvm_backend_utility.cpp index 7e2bd7daa..d92f711ba 100644 --- a/src/llvm_backend_utility.cpp +++ b/src/llvm_backend_utility.cpp @@ -1819,3 +1819,99 @@ void lb_set_wasm_export_attributes(LLVMValueRef value, String export_name) { LLVMSetVisibility(value, LLVMDefaultVisibility); LLVMAddTargetDependentFunctionAttr(value, "wasm-export-name", alloc_cstring(permanent_allocator(), export_name)); } + + +lbValue lb_lookup_runtime_procedure(lbModule *m, String const &name); + +lbValue lb_handle_obj_id(lbProcedure *p, Ast *expr) { + TypeAndValue const &tav = type_and_value_of_expr(expr); + if (tav.mode == Addressing_Type) { + Type *type = tav.type; + GB_ASSERT_MSG(type->kind == Type_Named, "%s", type_to_string(type)); + Entity *e = type->Named.type_name; + GB_ASSERT(e->kind == Entity_TypeName); + String name = e->TypeName.objc_class_name; + + lbAddr *found = string_map_get(&p->module->objc_classes, name); + if (found) { + return lb_addr_load(p, *found); + } else { + lbModule *default_module = &p->module->gen->default_module; + Entity *e = nullptr; + lbAddr default_addr = lb_add_global_generated(default_module, t_objc_Class, {}, &e); + + lbValue ptr = lb_find_value_from_entity(p->module, e); + lbAddr local_addr = lb_addr(ptr); + + string_map_set(&default_module->objc_classes, name, default_addr); + if (default_module != p->module) { + string_map_set(&p->module->objc_classes, name, local_addr); + } + return lb_addr_load(p, local_addr); + } + } + + return lb_build_expr(p, expr); +} + + +lbValue lb_handle_obj_selector(lbProcedure *p, String const &name) { + lbAddr *found = string_map_get(&p->module->objc_selectors, name); + if (found) { + return lb_addr_load(p, *found); + } else { + lbModule *default_module = &p->module->gen->default_module; + Entity *e = nullptr; + lbAddr default_addr = lb_add_global_generated(default_module, t_objc_SEL, {}, &e); + + lbValue ptr = lb_find_value_from_entity(p->module, e); + lbAddr local_addr = lb_addr(ptr); + + string_map_set(&default_module->objc_selectors, name, default_addr); + if (default_module != p->module) { + string_map_set(&p->module->objc_selectors, name, local_addr); + } + return lb_addr_load(p, local_addr); + } +} + + +lbValue lb_handle_obj_send(lbProcedure *p, Ast *expr) { + ast_node(ce, CallExpr, expr); + + lbModule *m = p->module; + CheckerInfo *info = m->info; + ObjcMsgData data = map_must_get(&info->objc_msgSend_types, expr); + GB_ASSERT(data.proc_type != nullptr); + + GB_ASSERT(ce->args.count >= 3); + auto args = array_make(permanent_allocator(), 0, ce->args.count-1); + + lbValue id = lb_handle_obj_id(p, ce->args[1]); + Ast *sel_expr = ce->args[2]; + GB_ASSERT(sel_expr->tav.value.kind == ExactValue_String); + lbValue sel = lb_handle_obj_selector(p, sel_expr->tav.value.value_string); + + array_add(&args, id); + array_add(&args, sel); + for (isize i = 3; i < ce->args.count; i++) { + lbValue arg = lb_build_expr(p, ce->args[i]); + array_add(&args, arg); + } + + + lbValue the_proc = {}; + switch (data.kind) { + default: + GB_PANIC("unhandled ObjcMsgKind %u", data.kind); + break; + case ObjcMsg_normal: the_proc = lb_lookup_runtime_procedure(m, str_lit("objc_msgSend")); break; + case ObjcMsg_fpret: the_proc = lb_lookup_runtime_procedure(m, str_lit("objc_msgSend_fpret")); break; + case ObjcMsg_fp2ret: the_proc = lb_lookup_runtime_procedure(m, str_lit("objc_msgSend_fp2ret")); break; + case ObjcMsg_stret: the_proc = lb_lookup_runtime_procedure(m, str_lit("objc_msgSend_stret")); break; + } + + the_proc = lb_emit_conv(p, the_proc, data.proc_type); + + return lb_emit_call(p, the_proc, args); +} diff --git a/src/types.cpp b/src/types.cpp index 9ee6ba359..cdb31c6e1 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -685,6 +685,16 @@ gb_global Type *t_map_header = nullptr; gb_global Type *t_equal_proc = nullptr; gb_global Type *t_hasher_proc = nullptr; +gb_global Type *t_objc_object = nullptr; +gb_global Type *t_objc_selector = nullptr; +gb_global Type *t_objc_class = nullptr; + +gb_global Type *t_objc_id = nullptr; +gb_global Type *t_objc_SEL = nullptr; +gb_global Type *t_objc_Class = nullptr; + + + gb_global RecursiveMutex g_type_mutex; struct TypePath; From 05dd3d490de3bf10c56e65987fbbe3024b84a4a6 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 8 Feb 2022 17:33:55 +0000 Subject: [PATCH 019/190] Correct objc_class propagation for parapoly structs --- src/check_type.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/check_type.cpp b/src/check_type.cpp index 6d3e32466..e1a0df7e6 100644 --- a/src/check_type.cpp +++ b/src/check_type.cpp @@ -323,6 +323,8 @@ void add_polymorphic_record_entity(CheckerContext *ctx, Ast *node, Type *named_t } named_type->Named.type_name = e; + GB_ASSERT(original_type->kind == Type_Named); + e->TypeName.objc_class_name = original_type->Named.type_name->TypeName.objc_class_name; mutex_lock(&ctx->info->gen_types_mutex); auto *found_gen_types = map_get(&ctx->info->gen_types, original_type); From c5d348515dcddbd2c29aca79f1863dd36af5476a Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 8 Feb 2022 22:59:37 +0000 Subject: [PATCH 020/190] Add `intrinsics.type_is_subtype_of`; `intrinsics.objc_selector_name` --- src/check_builtin.cpp | 42 +++++++++++++++++++++++++++++---- src/check_expr.cpp | 36 ---------------------------- src/checker_builtin_procs.hpp | 8 +++++-- src/llvm_backend_proc.cpp | 3 +++ src/llvm_backend_utility.cpp | 11 +++++++++ src/types.cpp | 44 +++++++++++++++++++++++++++++++++++ 6 files changed, 101 insertions(+), 43 deletions(-) diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index 8ada77b12..df22d82e2 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -350,9 +350,15 @@ bool check_builtin_objc_procedure(CheckerContext *c, Operand *operand, Ast *call return true; } break; - case BuiltinProc_objc_create: { - GB_PANIC("TODO: BuiltinProc_objc_create"); - return false; + case BuiltinProc_objc_selector_name: { + String sel_name = {}; + if (!is_constant_string(c, builtin_name, ce->args[0], &sel_name)) { + return false; + } + + operand->type = t_objc_SEL; + operand->mode = Addressing_Value; + return true; } break; } } @@ -392,8 +398,9 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32 case BuiltinProc_len: case BuiltinProc_min: case BuiltinProc_max: + case BuiltinProc_type_is_subtype_of: case BuiltinProc_objc_send: - case BuiltinProc_objc_create: + case BuiltinProc_objc_selector_name: // NOTE(bill): The first arg may be a Type, this will be checked case by case break; @@ -435,7 +442,7 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32 break; case BuiltinProc_objc_send: - case BuiltinProc_objc_create: + case BuiltinProc_objc_selector_name: return check_builtin_objc_procedure(c, operand, call, id, type_hint); case BuiltinProc___entry_point: @@ -3945,6 +3952,31 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32 break; + case BuiltinProc_type_is_subtype_of: + { + Operand op_src = {}; + Operand op_dst = {}; + + check_expr_or_type(c, &op_src, ce->args[0]); + if (op_src.mode != Addressing_Type) { + gbString e = expr_to_string(op_src.expr); + error(op_src.expr, "'%.*s' expects a type, got %s", LIT(builtin_name), e); + gb_string_free(e); + return false; + } + check_expr_or_type(c, &op_dst, ce->args[1]); + if (op_dst.mode != Addressing_Type) { + gbString e = expr_to_string(op_dst.expr); + error(op_dst.expr, "'%.*s' expects a type, got %s", LIT(builtin_name), e); + gb_string_free(e); + return false; + } + + operand->value = exact_value_bool(is_type_subtype_of(op_src.type, op_dst.type)); + operand->mode = Addressing_Constant; + operand->type = t_untyped_bool; + } break; + case BuiltinProc_type_field_index_of: { Operand op = {}; diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 3f31ac810..6db17a316 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -228,42 +228,6 @@ void check_scope_decls(CheckerContext *c, Slice const &nodes, isize reser } } - -isize check_is_assignable_to_using_subtype(Type *src, Type *dst, isize level = 0, bool src_is_ptr = false) { - Type *prev_src = src; - src = type_deref(src); - if (!src_is_ptr) { - src_is_ptr = src != prev_src; - } - src = base_type(src); - - if (!is_type_struct(src)) { - return 0; - } - - for_array(i, src->Struct.fields) { - Entity *f = src->Struct.fields[i]; - if (f->kind != Entity_Variable || (f->flags&EntityFlag_Using) == 0) { - continue; - } - - if (are_types_identical(f->type, dst)) { - return level+1; - } - if (src_is_ptr && is_type_pointer(dst)) { - if (are_types_identical(f->type, type_deref(dst))) { - return level+1; - } - } - isize nested_level = check_is_assignable_to_using_subtype(f->type, dst, level+1, src_is_ptr); - if (nested_level > 0) { - return nested_level; - } - } - - return 0; -} - bool find_or_generate_polymorphic_procedure(CheckerContext *old_c, Entity *base_entity, Type *type, Array *param_operands, Ast *poly_def_node, PolyProcData *poly_proc_data) { /////////////////////////////////////////////////////////////////////////////// diff --git a/src/checker_builtin_procs.hpp b/src/checker_builtin_procs.hpp index 1a9d7d7a0..c14c18412 100644 --- a/src/checker_builtin_procs.hpp +++ b/src/checker_builtin_procs.hpp @@ -241,6 +241,8 @@ BuiltinProc__type_simple_boolean_end, BuiltinProc_type_polymorphic_record_parameter_count, BuiltinProc_type_polymorphic_record_parameter_value, + BuiltinProc_type_is_subtype_of, + BuiltinProc_type_field_index_of, BuiltinProc_type_equal_proc, @@ -251,7 +253,7 @@ BuiltinProc__type_end, BuiltinProc___entry_point, BuiltinProc_objc_send, - BuiltinProc_objc_create, + BuiltinProc_objc_selector_name, BuiltinProc_COUNT, }; @@ -494,6 +496,8 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = { {STR_LIT("type_polymorphic_record_parameter_count"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("type_polymorphic_record_parameter_value"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics}, + {STR_LIT("type_is_subtype_of"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics}, + {STR_LIT("type_field_index_of"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("type_equal_proc"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, @@ -505,5 +509,5 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = { {STR_LIT("__entry_point"), 0, false, Expr_Stmt, BuiltinProcPkg_intrinsics}, {STR_LIT("objc_send"), 3, true, Expr_Expr, BuiltinProcPkg_intrinsics}, - {STR_LIT("objc_create"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, + {STR_LIT("objc_selector_name"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, }; diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp index 6de0aaed7..caa3dfa1a 100644 --- a/src/llvm_backend_proc.cpp +++ b/src/llvm_backend_proc.cpp @@ -2109,6 +2109,9 @@ lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValue const &tv, case BuiltinProc_objc_send: return lb_handle_obj_send(p, expr); + + case BuiltinProc_objc_selector_name: + return lb_handle_obj_selector_name(p, expr); } GB_PANIC("Unhandled built-in procedure %.*s", LIT(builtin_procs[id].name)); diff --git a/src/llvm_backend_utility.cpp b/src/llvm_backend_utility.cpp index d92f711ba..8ef66df7a 100644 --- a/src/llvm_backend_utility.cpp +++ b/src/llvm_backend_utility.cpp @@ -1915,3 +1915,14 @@ lbValue lb_handle_obj_send(lbProcedure *p, Ast *expr) { return lb_emit_call(p, the_proc, args); } + + +lbValue lb_handle_obj_selector_name(lbProcedure *p, Ast *expr) { + ast_node(ce, CallExpr, expr); + + auto tav = ce->args[0]->tav; + GB_ASSERT(tav.value.kind == ExactValue_String); + String name = tav.value.value_string; + return lb_handle_obj_selector(p, name); + +} \ No newline at end of file diff --git a/src/types.cpp b/src/types.cpp index cdb31c6e1..024d644a2 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -3748,6 +3748,50 @@ i64 type_offset_of_from_selection(Type *type, Selection sel) { return offset; } +isize check_is_assignable_to_using_subtype(Type *src, Type *dst, isize level = 0, bool src_is_ptr = false) { + Type *prev_src = src; + src = type_deref(src); + if (!src_is_ptr) { + src_is_ptr = src != prev_src; + } + src = base_type(src); + + if (!is_type_struct(src)) { + return 0; + } + + for_array(i, src->Struct.fields) { + Entity *f = src->Struct.fields[i]; + if (f->kind != Entity_Variable || (f->flags&EntityFlag_Using) == 0) { + continue; + } + + if (are_types_identical(f->type, dst)) { + return level+1; + } + if (src_is_ptr && is_type_pointer(dst)) { + if (are_types_identical(f->type, type_deref(dst))) { + return level+1; + } + } + isize nested_level = check_is_assignable_to_using_subtype(f->type, dst, level+1, src_is_ptr); + if (nested_level > 0) { + return nested_level; + } + } + + return 0; +} + +bool is_type_subtype_of(Type *src, Type *dst) { + if (are_types_identical(src, dst)) { + return true; + } + + return 0 < check_is_assignable_to_using_subtype(src, dst, 0, is_type_pointer(src)); +} + + Type *get_struct_field_type(Type *t, isize index) { t = base_type(type_deref(t)); From 340838c8789385212eb3225c15cabbd38b51dbea Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 8 Feb 2022 23:00:00 +0000 Subject: [PATCH 021/190] Add procs_darwin.odin --- core/runtime/procs_darwin.odin | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 core/runtime/procs_darwin.odin diff --git a/core/runtime/procs_darwin.odin b/core/runtime/procs_darwin.odin new file mode 100644 index 000000000..79fd777d7 --- /dev/null +++ b/core/runtime/procs_darwin.odin @@ -0,0 +1,20 @@ +//+private +package runtime + +foreign import "system:Foundation.framework" + +import "core:intrinsics" + +objc_id :: ^intrinsics.objc_object +objc_Class :: ^intrinsics.objc_class +objc_SEL :: ^intrinsics.objc_selector + +foreign Foundation { + objc_lookUpClass :: proc "c" (name: cstring) -> objc_Class --- + sel_registerName :: proc "c" (name: cstring) -> objc_SEL --- + + objc_msgSend :: proc "c" (self: objc_id, op: objc_SEL, #c_vararg args: ..any) --- + objc_msgSend_fpret :: proc "c" (self: objc_id, op: objc_SEL, #c_vararg args: ..any) -> f64 --- + objc_msgSend_fp2ret :: proc "c" (self: objc_id, op: objc_SEL, #c_vararg args: ..any) -> complex128 --- + objc_msgSend_stret :: proc "c" (self: objc_id, op: objc_SEL, #c_vararg args: ..any) --- +} From b95ade40c075ed23525f28d571b0175040194ed2 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 9 Feb 2022 00:19:20 +0000 Subject: [PATCH 022/190] Begin work on `core:sys/darwin/Foundation` --- core/sys/darwin/Foundation/Foundation.odin | 1 + core/sys/darwin/Foundation/NSArray.odin | 26 ++++ .../darwin/Foundation/NSAutoreleasePool.odin | 15 +++ core/sys/darwin/Foundation/NSData.odin | 12 ++ core/sys/darwin/Foundation/NSDate.odin | 8 ++ core/sys/darwin/Foundation/NSDictionary.odin | 27 +++++ core/sys/darwin/Foundation/NSLock.odin | 29 +++++ .../sys/darwin/Foundation/NSNotification.odin | 16 +++ core/sys/darwin/Foundation/NSNumber.odin | 45 +++++++ core/sys/darwin/Foundation/NSObject.odin | 66 +++++++++++ core/sys/darwin/Foundation/NSRange.odin | 22 ++++ core/sys/darwin/Foundation/NSString.odin | 112 ++++++++++++++++++ core/sys/darwin/Foundation/NSTypes.odin | 35 ++++++ 13 files changed, 414 insertions(+) create mode 100644 core/sys/darwin/Foundation/Foundation.odin create mode 100644 core/sys/darwin/Foundation/NSArray.odin create mode 100644 core/sys/darwin/Foundation/NSAutoreleasePool.odin create mode 100644 core/sys/darwin/Foundation/NSData.odin create mode 100644 core/sys/darwin/Foundation/NSDate.odin create mode 100644 core/sys/darwin/Foundation/NSDictionary.odin create mode 100644 core/sys/darwin/Foundation/NSLock.odin create mode 100644 core/sys/darwin/Foundation/NSNotification.odin create mode 100644 core/sys/darwin/Foundation/NSNumber.odin create mode 100644 core/sys/darwin/Foundation/NSObject.odin create mode 100644 core/sys/darwin/Foundation/NSRange.odin create mode 100644 core/sys/darwin/Foundation/NSString.odin create mode 100644 core/sys/darwin/Foundation/NSTypes.odin diff --git a/core/sys/darwin/Foundation/Foundation.odin b/core/sys/darwin/Foundation/Foundation.odin new file mode 100644 index 000000000..c69b10ddb --- /dev/null +++ b/core/sys/darwin/Foundation/Foundation.odin @@ -0,0 +1 @@ +package objc_Foundation diff --git a/core/sys/darwin/Foundation/NSArray.odin b/core/sys/darwin/Foundation/NSArray.odin new file mode 100644 index 000000000..7544c278c --- /dev/null +++ b/core/sys/darwin/Foundation/NSArray.odin @@ -0,0 +1,26 @@ +package objc_Foundation + +import "core:intrinsics" + +@(objc_class="NSArray") +Array :: struct($T: typeid) where intrinsics.type_is_pointer(T), intrinsics.type_is_subtype_of(T, ^Object) {using _: Copying(Array(T))} + +Array_initWithObjects :: proc(self: ^$A/Array($T), objects: [^]^Object, count: UInteger) -> ^A { + return msgSend(^A, "initWithObjects:count:", objects, count) +} + +Array_initWithCoder :: proc(self: ^$A/Array($T), coder: ^Coder) -> ^A { + return msgSend(^A, "initWithCoder:", coder) +} + +Array_objectAtIndex :: proc(self: ^Array($T), index: UInteger) -> ^Object { + return msgSend(^Object, self, "objectAtIndex:", index) +} + +Array_object :: proc(self: ^Array($T), index: UInteger) -> ^T { + return (^T)(Array_objectAtIndex(self, index)) +} + +Array_count :: proc(self: ^Array($T)) -> UInteger { + return msgSend(UInteger, self, "count") +} diff --git a/core/sys/darwin/Foundation/NSAutoreleasePool.odin b/core/sys/darwin/Foundation/NSAutoreleasePool.odin new file mode 100644 index 000000000..5ff2a6f1d --- /dev/null +++ b/core/sys/darwin/Foundation/NSAutoreleasePool.odin @@ -0,0 +1,15 @@ +package objc_Foundation + +@(objc_class="NSAutoreleasePool") +AutoreleasePool :: struct {using _: Object} + +AutoreleasePool_drain :: proc(self: ^AutoreleasePool) { + msgSend(nil, self, "drain") +} +AutoreleasePool_addObject :: proc(self: ^AutoreleasePool, obj: ^Object) { + msgSend(nil, self, "addObject:", obj) +} +AutoreleasePool_showPools :: proc(self: ^AutoreleasePool, obj: ^Object) { + msgSend(nil, self, "showPools") +} + diff --git a/core/sys/darwin/Foundation/NSData.odin b/core/sys/darwin/Foundation/NSData.odin new file mode 100644 index 000000000..93bb3ae0e --- /dev/null +++ b/core/sys/darwin/Foundation/NSData.odin @@ -0,0 +1,12 @@ +package objc_Foundation + +@(objc_class="NSData") +Data :: struct {using _: Copying(Data)} + +Data_mutableBytes :: proc(self: ^Data) -> rawptr { + return msgSend(rawptr, self, "mutableBytes") +} + +Data_length :: proc(self: ^Data) -> UInteger { + return msgSend(UInteger, self, "length") +} \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSDate.odin b/core/sys/darwin/Foundation/NSDate.odin new file mode 100644 index 000000000..4b298ee24 --- /dev/null +++ b/core/sys/darwin/Foundation/NSDate.odin @@ -0,0 +1,8 @@ +package objc_Foundation + +@(objc_class="NSDate") +Date :: struct {using _: Copying(Date)} + +Date_dateWithTimeIntervalSinceNow :: proc(secs: TimeInterval) -> ^Date { + return msgSend(^Date, Date, "dateWithTimeIntervalSinceNow:", secs) +} \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSDictionary.odin b/core/sys/darwin/Foundation/NSDictionary.odin new file mode 100644 index 000000000..19ea8a491 --- /dev/null +++ b/core/sys/darwin/Foundation/NSDictionary.odin @@ -0,0 +1,27 @@ +package objc_Foundation + +@(objc_class="NSDictionary") +Dictionary :: struct {using _: Copying(Dictionary)} + +Dictionary_dictionary :: proc() -> ^Dictionary { + return msgSend(^Dictionary, Dictionary, "dictionary") +} + +Dictionary_dictionaryWithObject :: proc(object: ^Object, forKey: ^Object) -> ^Dictionary { + return msgSend(^Dictionary, Dictionary, "dictionaryWithObject:forKey:", object, forKey) +} + +Dictionary_dictionaryWithObjects :: proc(objects: [^]^Object, forKeys: [^]^Object, count: UInteger) -> ^Dictionary { + return msgSend(^Dictionary, Dictionary, "dictionaryWithObjects:forKeys:count", objects, forKeys, count) +} + + +Dictionary_initWithObjects :: proc(self: ^Dictionary, objects: [^]^Object, forKeys: [^]^Object, count: UInteger) -> ^Dictionary { + return msgSend(^Dictionary, self, "initWithObjects:forKeys:count", objects, forKeys, count) +} + +Dictionary_objectForKey :: proc(self: ^Dictionary, key: ^Object) -> ^Object { + return msgSend(^Dictionary, self, "objectForKey:", key) +} + +// TODO(bill): enumerator \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSLock.odin b/core/sys/darwin/Foundation/NSLock.odin new file mode 100644 index 000000000..0e76dfc62 --- /dev/null +++ b/core/sys/darwin/Foundation/NSLock.odin @@ -0,0 +1,29 @@ +package objc_Foundation + +Locking :: struct($T: typeid) {using _: Object} + +Locking_lock :: proc(self: ^Locking($T)) { + msgSend(nil, self, "lock") +} +Locking_unlock :: proc(self: ^Locking($T)) { + msgSend(nil, self, "unlock") +} + +@(objc_class="NSCondition") +Condition :: struct {using _: Locking(Condition) } + +Condition_wait :: proc(self: ^Condition) { + msgSend(nil, self, "wait") +} + +Condition_waitUntilDate :: proc(self: ^Condition, limit: ^Date) -> BOOL { + return msgSend(BOOL, self, "waitUntilDate:", limit) +} + +Condition_signal :: proc(self: ^Condition) { + msgSend(nil, self, "signal") +} + +Condition_broadcast :: proc(self: ^Condition) { + msgSend(nil, self, "broadcast") +} \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSNotification.odin b/core/sys/darwin/Foundation/NSNotification.odin new file mode 100644 index 000000000..fa9160cc8 --- /dev/null +++ b/core/sys/darwin/Foundation/NSNotification.odin @@ -0,0 +1,16 @@ +package objc_Foundation + +@(objc_class="NSNotification") +Notification :: struct{using _: Object} + +Notification_name :: proc(self: ^Notification) -> ^String { + return msgSend(^String, self, "name") +} + +Notification_object :: proc(self: ^Notification) -> ^Object { + return msgSend(^Object, self, "object") +} + +Notification_userInfo :: proc(self: ^Notification) -> ^Dictionary { + return msgSend(^Dictionary, self, "userInfo") +} \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSNumber.odin b/core/sys/darwin/Foundation/NSNumber.odin new file mode 100644 index 000000000..d41f1e6d2 --- /dev/null +++ b/core/sys/darwin/Foundation/NSNumber.odin @@ -0,0 +1,45 @@ +package objc_Foundation + +@(objc_class="NSValue") +Value :: struct{using _: Copying(Value)} + + +@(objc_class="NSNumber") +Number :: struct{using _: Copying(Number), using _: Value} + + +Value_valueWithBytes :: proc(value: rawptr, type: cstring) -> ^Value { + return msgSend(^Value, Value, "valueWithBytes:objCType:", value, type) +} + +Value_valueWithPointer :: proc(pointer: rawptr) -> ^Value { + return msgSend(^Value, Value, "valueWithPointer:", pointer) +} + +Value_initWithBytes :: proc(value: rawptr, type: cstring) -> ^Value { + return msgSend(^Value, Value, "initWithBytes:objCType:", value, type) +} + +Value_initWithCoder :: proc(coder: ^Coder) -> ^Value { + return msgSend(^Value, Value, "initWithCoder:", coder) +} + +Value_getValue :: proc(self: ^Value, value: rawptr, size: UInteger) { + msgSend(nil, self, "getValue:size:", value, size) +} + + +Value_objCType :: proc(self: ^Value) -> cstring { + return msgSend(cstring, self, "objCType") +} + +Value_isEqualToValue :: proc(self, other: ^Value) -> BOOL { + return msgSend(BOOL, self, "isEqualToValue:", other) +} + +Value_pointerValue :: proc(self: ^Value) -> rawptr { + return msgSend(rawptr, self, "pointerValue") +} + + +// TODO(bill): Number methods \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSObject.odin b/core/sys/darwin/Foundation/NSObject.odin new file mode 100644 index 000000000..cf15dd68d --- /dev/null +++ b/core/sys/darwin/Foundation/NSObject.odin @@ -0,0 +1,66 @@ +package objc_Foundation + +import "core:intrinsics" + +methodSignatureForSelector :: proc "c" (obj: ^Object, selector: SEL) -> rawptr { + return msgSend(rawptr, obj, "methodSignatureForSelector:", selector) +} + +respondsToSelector :: proc "c" (obj: ^Object, selector: SEL) -> BOOL { + return msgSend(BOOL, obj, "respondsToSelector:", selector) +} + +msgSendSafeCheck :: proc "c" (obj: ^Object, selector: SEL) -> BOOL { + return respondsToSelector(obj, selector) || methodSignatureForSelector(obj, selector) != nil +} + + +@(objc_class="NSObject") +Object :: struct {using _: intrinsics.objc_object} + +@(objc_class="NSObject") +Copying :: struct($T: typeid) {using _: Object} + +alloc :: proc($T: typeid) -> ^T where intrinsics.type_is_subtype_of(T, Object) { + return msgSend(^T, T, "alloc") +} +init :: proc(self: ^$T) -> ^T where intrinsics.type_is_subtype_of(T, Object){ + return msgSend(^T, self, "init") +} +retain :: proc(self: ^$T) -> ^T where intrinsics.type_is_subtype_of(T, Object) { + return msgSend(^T, self, "retain") +} +release :: proc(self: ^$T) where intrinsics.type_is_subtype_of(T, Object) { + msgSend(nil, self, "release") +} +retainCount :: proc(self: ^$T) -> UInteger where intrinsics.type_is_subtype_of(T, Object) { + return msgSend(UInteger, self, "retainCount") +} + +copy :: proc(self: ^Copying($T)) -> ^T where intrinsics.type_is_subtype_of(T, Object) { + return msgSend(^T, self, "copy") +} + +hash :: proc(self: ^Object) -> UInteger { + return msgSend(UInteger, self, "hash") +} + +isEqual :: proc(self, pObject: ^Object) -> BOOL { + return msgSend(BOOL, self, "isEqual:", pObject) +} + +description :: proc(self: ^Object) -> ^String { + return msgSend(^String, self, "description") +} + +debugDescription :: proc(self: ^Object) -> ^String { + if msgSendSafeCheck(self, intrinsics.objc_selector_name("debugDescription")) { + return msgSend(^String, self, "debugDescription") + } + return nil +} + + +@(objc_class="NSCoder") +Coder :: struct {using _: Object} +// TODO(bill): Implement all the methods for this massive type \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSRange.odin b/core/sys/darwin/Foundation/NSRange.odin new file mode 100644 index 000000000..74ce595a3 --- /dev/null +++ b/core/sys/darwin/Foundation/NSRange.odin @@ -0,0 +1,22 @@ +package objc_Foundation + +Range :: struct { + location: UInteger, + length: UInteger, +} + +Range_Make :: proc(loc, len: UInteger) -> Range { + return Range{loc, len} +} + +Range_Equal :: proc(a, b: Range) -> BOOL { + return a == b +} + +Range_LocationInRange :: proc(self: Range, loc: UInteger) -> BOOL { + return !((loc < self.location) && ((loc - self.location) < self.length)) +} + +Range_Max :: proc(self: Range) -> UInteger { + return self.location + self.length +} \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSString.odin b/core/sys/darwin/Foundation/NSString.odin new file mode 100644 index 000000000..857e27f12 --- /dev/null +++ b/core/sys/darwin/Foundation/NSString.odin @@ -0,0 +1,112 @@ +package objc_Foundation + +foreign import "system:Foundation.framework" + +@(objc_class="NSString") +String :: struct {using _: Copying(String)} + +StringEncoding :: enum UInteger { + ASCII = 1, + NEXTSTEP = 2, + JapaneseEUC = 3, + UTF8 = 4, + ISOLatin1 = 5, + Symbol = 6, + NonLossyASCII = 7, + ShiftJIS = 8, + ISOLatin2 = 9, + Unicode = 10, + WindowsCP1251 = 11, + WindowsCP1252 = 12, + WindowsCP1253 = 13, + WindowsCP1254 = 14, + WindowsCP1250 = 15, + ISO2022JP = 21, + MacOSRoman = 30, + + UTF16 = Unicode, + + UTF16BigEndian = 0x90000100, + UTF16LittleEndian = 0x94000100, + + UTF32 = 0x8c000100, + UTF32BigEndian = 0x98000100, + UTF32LittleEndian = 0x9c000100, +} + +StringCompareOptions :: distinct bit_set[StringCompareOption; UInteger] +StringCompareOption :: enum UInteger { + CaseInsensitive = 0, + LiteralSearch = 1, + BackwardsSearch = 2, + AnchoredSearch = 3, + NumericSearch = 6, + DiacriticInsensitive = 7, + WidthInsensitive = 8, + ForcedOrdering = 9, + RegularExpression = 10, +} + +unichar :: distinct u16 + +foreign Foundation { + __CFStringMakeConstantString :: proc "c" (c: cstring) -> ^String --- +} + +AT :: MakeConstantString +MakeConstantString :: proc "c" (#const c: cstring) -> ^String { + return __CFStringMakeConstantString(c) +} + + +String_initWithString :: proc(self: ^String, other: ^String) -> ^String { + return msgSend(^String, self, "initWithString:", other) +} + +String_initWithCString :: proc(self: ^String, pString: cstring, encoding: StringEncoding) -> ^String { + return msgSend(^String, self, "initWithCstring:encoding:", pString, encoding) +} + +String_initWithBytesNoCopy :: proc(self: ^String, pBytes: rawptr, length: UInteger, encoding: StringEncoding, freeWhenDone: bool) -> ^String { + return msgSend(^String, self, "initWithBytesNoCopy:length:encoding:freeWhenDone:", pBytes, length, encoding, freeWhenDone) +} + +String_initWithOdinString :: proc(self: ^String, str: string) -> ^String { + return String_initWithBytesNoCopy(self, raw_data(str), UInteger(len(str)), .UTF8, false) +} + +String_characterAtIndex :: proc(self: ^String, index: UInteger) -> unichar { + return msgSend(unichar, self, "characterAtIndex:", index) +} + +String_length :: proc(self: ^String) -> UInteger { + return msgSend(UInteger, self, "length") +} + +String_cStringUsingEncoding :: proc(self: ^String, encoding: StringEncoding) -> cstring { + return msgSend(cstring, self, "cStringUsingEncoding:", encoding) +} + +String_UTFString :: proc(self: ^String) -> cstring { + return msgSend(cstring, self, "UTFString") +} + +String_OdinString :: proc(self: ^String) -> string { + return string(String_UTFString(self)) +} + +String_maximumLengthOfBytesUsingEncoding :: proc(self: ^String, encoding: StringEncoding) -> UInteger { + return msgSend(UInteger, self, "maximumLengthOfBytesUsingEncoding:", encoding) +} + +String_lengthOfBytesUsingEncoding :: proc(self: ^String, encoding: StringEncoding) -> UInteger { + return msgSend(UInteger, self, "lengthOfBytesUsingEncoding:", encoding) +} + +String_isEqualToString :: proc(self, other: ^String) -> BOOL { + return msgSend(BOOL, self, "isEqualToString:", other) +} + +String_rangeOfString :: proc(self, other: ^String, options: StringCompareOptions) -> Range { + return msgSend(Range, self, "rangeOfString:options:", other, options) +} \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSTypes.odin b/core/sys/darwin/Foundation/NSTypes.odin new file mode 100644 index 000000000..47f75630f --- /dev/null +++ b/core/sys/darwin/Foundation/NSTypes.odin @@ -0,0 +1,35 @@ +package objc_Foundation + +import "core:intrinsics" + +@(private) msgSend :: intrinsics.objc_send + +id :: ^intrinsics.objc_object +SEL :: ^intrinsics.objc_selector +Class :: ^intrinsics.objc_class + +TimeInterval :: distinct f64 +Integer :: distinct int +UInteger :: distinct uint + +IntegerMax :: max(Integer) +Integermin :: min(Integer) +UIntegerMax :: max(UInteger) + +BOOL :: bool // TODO(bill): should this be `distinct`? +YES :: true +NO :: false + +OperatingSystemVersion :: struct #packed { + majorVersion: Integer, + minorVersion: Integer, + patchVersion: Integer, +} + +ComparisonResult :: enum Integer { + OrderedAscending = -1, + OrderedSame = 0, + OrderedDescending = 1, +} + +NotFound :: IntegerMax From 5f2514db635a94937d214be4c4af16eaf8a5dcde Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 9 Feb 2022 11:50:11 +0000 Subject: [PATCH 023/190] Add NSNumber and NSURL --- core/sys/darwin/Foundation/NSArray.odin | 4 +- core/sys/darwin/Foundation/NSNumber.odin | 104 +++++++++++++++++++++-- core/sys/darwin/Foundation/NSURL.odin | 15 ++++ 3 files changed, 116 insertions(+), 7 deletions(-) create mode 100644 core/sys/darwin/Foundation/NSURL.odin diff --git a/core/sys/darwin/Foundation/NSArray.odin b/core/sys/darwin/Foundation/NSArray.odin index 7544c278c..a58543d7a 100644 --- a/core/sys/darwin/Foundation/NSArray.odin +++ b/core/sys/darwin/Foundation/NSArray.odin @@ -3,7 +3,9 @@ package objc_Foundation import "core:intrinsics" @(objc_class="NSArray") -Array :: struct($T: typeid) where intrinsics.type_is_pointer(T), intrinsics.type_is_subtype_of(T, ^Object) {using _: Copying(Array(T))} +Array :: struct($T: typeid) where intrinsics.type_is_pointer(T), intrinsics.type_is_subtype_of(T, ^Object) { + using _: Copying(Array(T)), +} Array_initWithObjects :: proc(self: ^$A/Array($T), objects: [^]^Object, count: UInteger) -> ^A { return msgSend(^A, "initWithObjects:count:", objects, count) diff --git a/core/sys/darwin/Foundation/NSNumber.odin b/core/sys/darwin/Foundation/NSNumber.odin index d41f1e6d2..3b8e59419 100644 --- a/core/sys/darwin/Foundation/NSNumber.odin +++ b/core/sys/darwin/Foundation/NSNumber.odin @@ -1,13 +1,13 @@ package objc_Foundation +import "core:c" + +#assert(size_of(c.long) == size_of(int)) +#assert(size_of(c.ulong) == size_of(uint)) + @(objc_class="NSValue") Value :: struct{using _: Copying(Value)} - -@(objc_class="NSNumber") -Number :: struct{using _: Copying(Number), using _: Value} - - Value_valueWithBytes :: proc(value: rawptr, type: cstring) -> ^Value { return msgSend(^Value, Value, "valueWithBytes:objCType:", value, type) } @@ -42,4 +42,96 @@ Value_pointerValue :: proc(self: ^Value) -> rawptr { } -// TODO(bill): Number methods \ No newline at end of file +@(objc_class="NSNumber") +Number :: struct{using _: Copying(Number), using _: Value} + + +Number_numberWithI8 :: proc(value: i8) -> ^Number { return msgSend(^Number, Number, "numberWithChar:", value) } +Number_numberWithU8 :: proc(value: u8) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedChar:", value) } +Number_numberWithI16 :: proc(value: i16) -> ^Number { return msgSend(^Number, Number, "numberWithShort:", value) } +Number_numberWithU16 :: proc(value: u16) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedShort:", value) } +Number_numberWithI32 :: proc(value: i32) -> ^Number { return msgSend(^Number, Number, "numberWithInt:", value) } +Number_numberWithU32 :: proc(value: u32) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedInt:", value) } +Number_numberWithInt :: proc(value: int) -> ^Number { return msgSend(^Number, Number, "numberWithLong:", value) } +Number_numberWithUint :: proc(value: uint) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedLong:", value) } +Number_numberWithU64 :: proc(value: u64) -> ^Number { return msgSend(^Number, Number, "numberWithLongLong:", value) } +Number_numberWithI64 :: proc(value: i64) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedLongLong:", value) } +Number_numberWithF32 :: proc(value: f32) -> ^Number { return msgSend(^Number, Number, "numberWithFloat:", value) } +Number_numberWithF64 :: proc(value: f64) -> ^Number { return msgSend(^Number, Number, "numberWithDouble:", value) } +Number_numberWithBool :: proc(value: BOOL) -> ^Number { return msgSend(^Number, Number, "numberWithBool:", value) } + +Number_number :: proc{ + Number_numberWithI8, + Number_numberWithU8, + Number_numberWithI16, + Number_numberWithU16, + Number_numberWithI32, + Number_numberWithU32, + Number_numberWithInt, + Number_numberWithUint, + Number_numberWithU64, + Number_numberWithI64, + Number_numberWithF32, + Number_numberWithF64, + Number_numberWithBool, +} + +Number_initWithI8 :: proc(self: ^Number, value: i8) -> ^Number { return msgSend(^Number, self, "initWithChar:", value) } +Number_initWithU8 :: proc(self: ^Number, value: u8) -> ^Number { return msgSend(^Number, self, "initWithUnsignedChar:", value) } +Number_initWithI16 :: proc(self: ^Number, value: i16) -> ^Number { return msgSend(^Number, self, "initWithShort:", value) } +Number_initWithU16 :: proc(self: ^Number, value: u16) -> ^Number { return msgSend(^Number, self, "initWithUnsignedShort:", value) } +Number_initWithI32 :: proc(self: ^Number, value: i32) -> ^Number { return msgSend(^Number, self, "initWithInt:", value) } +Number_initWithU32 :: proc(self: ^Number, value: u32) -> ^Number { return msgSend(^Number, self, "initWithUnsignedInt:", value) } +Number_initWithInt :: proc(self: ^Number, value: int) -> ^Number { return msgSend(^Number, self, "initWithLong:", value) } +Number_initWithUint :: proc(self: ^Number, value: uint) -> ^Number { return msgSend(^Number, self, "initWithUnsignedLong:", value) } +Number_initWithU64 :: proc(self: ^Number, value: u64) -> ^Number { return msgSend(^Number, self, "initWithLongLong:", value) } +Number_initWithI64 :: proc(self: ^Number, value: i64) -> ^Number { return msgSend(^Number, self, "initWithUnsignedLongLong:", value) } +Number_initWithF32 :: proc(self: ^Number, value: f32) -> ^Number { return msgSend(^Number, self, "initWithFloat:", value) } +Number_initWithF64 :: proc(self: ^Number, value: f64) -> ^Number { return msgSend(^Number, self, "initWithDouble:", value) } +Number_initWithBool :: proc(self: ^Number, value: BOOL) -> ^Number { return msgSend(^Number, self, "initWithBool:", value) } + + +Number_init :: proc{ + Number_initWithI8, + Number_initWithU8, + Number_initWithI16, + Number_initWithU16, + Number_initWithI32, + Number_initWithU32, + Number_initWithInt, + Number_initWithUint, + Number_initWithU64, + Number_initWithI64, + Number_initWithF32, + Number_initWithF64, + Number_initWithBool, +} + +Number_i8Value :: proc(self: ^Number) -> i8 { return msgSend(i8, self, "charValue") } +Number_u8Value :: proc(self: ^Number) -> u8 { return msgSend(u8, self, "unsignedCharValue") } +Number_i16Value :: proc(self: ^Number) -> i16 { return msgSend(i16, self, "shortValue") } +Number_u16Value :: proc(self: ^Number) -> u16 { return msgSend(u16, self, "unsignedShortValue") } +Number_i32Value :: proc(self: ^Number) -> i32 { return msgSend(i32, self, "intValue") } +Number_u32Value :: proc(self: ^Number) -> u32 { return msgSend(u32, self, "unsignedIntValue") } +Number_intValue :: proc(self: ^Number) -> int { return msgSend(int, self, "longValue") } +Number_uintValue :: proc(self: ^Number) -> uint { return msgSend(uint, self, "unsignedLongValue") } +Number_u64Value :: proc(self: ^Number) -> u64 { return msgSend(u64, self, "longLongValue") } +Number_i64Value :: proc(self: ^Number) -> i64 { return msgSend(i64, self, "unsignedLongLongValue") } +Number_f32Value :: proc(self: ^Number) -> f32 { return msgSend(f32, self, "floatValue") } +Number_f64Value :: proc(self: ^Number) -> f64 { return msgSend(f64, self, "doubleValue") } +Number_boolValue :: proc(self: ^Number) -> BOOL { return msgSend(BOOL, self, "boolValue") } +Number_integerValue :: proc(self: ^Number) -> Integer { return msgSend(Integer, self, "integerValue") } +Number_uintegerValue :: proc(self: ^Number) -> UInteger { return msgSend(UInteger, self, "unsignedIntegerValue") } +Number_stringValue :: proc(self: ^Number) -> ^String { return msgSend(^String, self, "stringValue") } + +Number_compare :: proc(a, b: ^Number) -> ComparisonResult { + return msgSend(ComparisonResult, a, "compare:", b) +} + +Number_isEqualToNumber :: proc(a, b: ^Number) -> BOOL { + return msgSend(BOOL, a, "isEqualToNumber:", b) +} + +Number_descriptionWithLocale :: proc(self: ^Number, locale: ^Object) -> ^String { + return msgSend(^String, self, "descriptionWithLocale:", locale) +} \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSURL.odin b/core/sys/darwin/Foundation/NSURL.odin new file mode 100644 index 000000000..f4f776130 --- /dev/null +++ b/core/sys/darwin/Foundation/NSURL.odin @@ -0,0 +1,15 @@ +package objc_Foundation + +@(objc_class="NSURL") +URL :: struct{using _: Copying(URL)} + +URL_initWithString :: proc(self: ^URL, value: ^String) -> ^URL { + return msgSend(^URL, self, "initWithString:", value) +} +URL_initFileURLWithPath :: proc(self: ^URL, path: ^String) -> ^URL { + return msgSend(^URL, self, "initFileURLWithPath:", path) +} + +URL_fileSystemRepresentation :: proc(self: ^URL) -> ^String { + return msgSend(^String, self, "fileSystemRepresentation") +} \ No newline at end of file From 768c2684d01ac77c7e15d4a24a48f21a8fbc8abc Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 9 Feb 2022 12:19:59 +0000 Subject: [PATCH 024/190] Add NSBundle, NSError, NSEnumerator --- core/sys/darwin/Foundation/NSArray.odin | 4 +- core/sys/darwin/Foundation/NSBundle.odin | 161 +++++++++++++++++++ core/sys/darwin/Foundation/NSDictionary.odin | 8 +- core/sys/darwin/Foundation/NSEnumerator.odin | 37 +++++ core/sys/darwin/Foundation/NSError.odin | 68 ++++++++ 5 files changed, 275 insertions(+), 3 deletions(-) create mode 100644 core/sys/darwin/Foundation/NSBundle.odin create mode 100644 core/sys/darwin/Foundation/NSEnumerator.odin create mode 100644 core/sys/darwin/Foundation/NSError.odin diff --git a/core/sys/darwin/Foundation/NSArray.odin b/core/sys/darwin/Foundation/NSArray.odin index a58543d7a..435e239a2 100644 --- a/core/sys/darwin/Foundation/NSArray.odin +++ b/core/sys/darwin/Foundation/NSArray.odin @@ -19,8 +19,8 @@ Array_objectAtIndex :: proc(self: ^Array($T), index: UInteger) -> ^Object { return msgSend(^Object, self, "objectAtIndex:", index) } -Array_object :: proc(self: ^Array($T), index: UInteger) -> ^T { - return (^T)(Array_objectAtIndex(self, index)) +Array_object :: proc(self: ^Array($T), index: UInteger) -> T { + return (T)(Array_objectAtIndex(self, index)) } Array_count :: proc(self: ^Array($T)) -> UInteger { diff --git a/core/sys/darwin/Foundation/NSBundle.odin b/core/sys/darwin/Foundation/NSBundle.odin new file mode 100644 index 000000000..375e15b65 --- /dev/null +++ b/core/sys/darwin/Foundation/NSBundle.odin @@ -0,0 +1,161 @@ +package objc_Foundation + +@(objc_class="NSBundle") +Bundle :: struct { using _: Object } + +Bundle_mainBundle :: proc() -> ^Bundle { + return msgSend(^Bundle, Bundle, "mainBundle") +} + +Bundle_bundleWithPath :: proc(path: ^String) -> ^Bundle { + return msgSend(^Bundle, Bundle, "bundleWithPath:", path) +} + +Bundle_bundleWithURL :: proc(url: ^URL) -> ^Bundle { + return msgSend(^Bundle, Bundle, "bundleWithUrl:", url) +} +Bundle_bundle :: proc{ + Bundle_bundleWithPath, + Bundle_bundleWithURL, +} + + +Bundle_initWithPath :: proc(self: ^Bundle, path: ^String) -> ^Bundle { + return msgSend(^Bundle, self, "initWithPath:", path) +} + +Bundle_initWithURL :: proc(self: ^Bundle, url: ^URL) -> ^Bundle { + return msgSend(^Bundle, self, "initWithUrl:", url) +} +Bundle_init :: proc{ + Bundle_initWithPath, + Bundle_initWithURL, +} + + +Bundle_allBundles :: proc() -> (all: ^Array(^Bundle)) { + return msgSend(type_of(all), Bundle, "allBundles") +} + +Bundle_allFrameworks :: proc() -> (all: ^Array(^Object)) { + return msgSend(type_of(all), Bundle, "allFrameworks") +} + +Bundle_load :: proc(self: ^Bundle) -> BOOL { + return msgSend(BOOL, self, "load") +} +Bundle_unload :: proc(self: ^Bundle) -> BOOL { + return msgSend(BOOL, self, "unload") +} + +Bundle_isLoaded :: proc(self: ^Bundle) -> BOOL { + return msgSend(BOOL, self, "isLoaded") +} + +Bundle_preflightAndReturnError :: proc(self: ^Bundle) -> (ok: BOOL, error: ^Error) { + ok = msgSend(BOOL, self, "preflightAndReturnError:", &error) + return +} + +Bundle_loadAndReturnError :: proc(self: ^Bundle) -> (ok: BOOL, error: ^Error) { + ok = msgSend(BOOL, self, "loadAndReturnError:", &error) + return +} + +Bundle_bundleURL :: proc(self: ^Bundle) -> ^URL { + return msgSend(^URL, self, "bundleURL") +} + +Bundle_resourceURL :: proc(self: ^Bundle) -> ^URL { + return msgSend(^URL, self, "resourceURL") +} + +Bundle_executableURL :: proc(self: ^Bundle) -> ^URL { + return msgSend(^URL, self, "executableURL") +} + +Bundle_URLForAuxiliaryExecutable :: proc(self: ^Bundle, executableName: ^String) -> ^URL { + return msgSend(^URL, self, "URLForAuxiliaryExecutable:", executableName) +} + +Bundle_privateFrameworksURL :: proc(self: ^Bundle) -> ^URL { + return msgSend(^URL, self, "privateFrameworksURL") +} + +Bundle_sharedFrameworksURL :: proc(self: ^Bundle) -> ^URL { + return msgSend(^URL, self, "sharedFrameworksURL") +} + + +Bundle_sharedSupportURL :: proc(self: ^Bundle) -> ^URL { + return msgSend(^URL, self, "sharedSupportURL") +} + +Bundle_builtInPlugInsURL :: proc(self: ^Bundle) -> ^URL { + return msgSend(^URL, self, "builtInPlugInsURL") +} + +Bundle_appStoreReceiptURL :: proc(self: ^Bundle) -> ^URL { + return msgSend(^URL, self, "appStoreReceiptURL") +} + + + + +Bundle_bundlePath :: proc(self: ^Bundle) -> ^String { + return msgSend(^String, self, "bundlePath") +} + +Bundle_resourcePath :: proc(self: ^Bundle) -> ^String { + return msgSend(^String, self, "resourcePath") +} + +Bundle_executablePath :: proc(self: ^Bundle) -> ^String { + return msgSend(^String, self, "executablePath") +} + +Bundle_PathForAuxiliaryExecutable :: proc(self: ^Bundle, executableName: ^String) -> ^String { + return msgSend(^String, self, "PathForAuxiliaryExecutable:", executableName) +} + +Bundle_privateFrameworksPath :: proc(self: ^Bundle) -> ^String { + return msgSend(^String, self, "privateFrameworksPath") +} + +Bundle_sharedFrameworksPath :: proc(self: ^Bundle) -> ^String { + return msgSend(^String, self, "sharedFrameworksPath") +} + + +Bundle_sharedSupportPath :: proc(self: ^Bundle) -> ^String { + return msgSend(^String, self, "sharedSupportPath") +} + +Bundle_builtInPlugInsPath :: proc(self: ^Bundle) -> ^String { + return msgSend(^String, self, "builtInPlugInsPath") +} + +Bundle_appStoreReceiptPath :: proc(self: ^Bundle) -> ^String { + return msgSend(^String, self, "appStoreReceiptPath") +} + +Bundle_bundleIdentifier :: proc(self: ^Bundle) -> ^String { + return msgSend(^String, self, "bundleIdentifier") +} + + +Bundle_infoDictionary :: proc(self: ^Bundle) -> ^Dictionary { + return msgSend(^Dictionary, self, "infoDictionary") +} + +Bundle_localizedInfoDictionary :: proc(self: ^Bundle) -> ^Dictionary { + return msgSend(^Dictionary, self, "localizedInfoDictionary") +} + +Bundle_objectForInfoDictionaryKey :: proc(self: ^Bundle, key: ^String) -> ^Object { + return msgSend(^Object, self, "objectForInfoDictionaryKey:", key) +} + +Bundle_localizedStringForKey :: proc(self: ^Bundle, key: ^String, value: ^String = nil, tableName: ^String = nil) -> ^String { + return msgSend(^String, self, "localizedStringForKey:value:table:", key, value, tableName) +} diff --git a/core/sys/darwin/Foundation/NSDictionary.odin b/core/sys/darwin/Foundation/NSDictionary.odin index 19ea8a491..f82b8cffd 100644 --- a/core/sys/darwin/Foundation/NSDictionary.odin +++ b/core/sys/darwin/Foundation/NSDictionary.odin @@ -24,4 +24,10 @@ Dictionary_objectForKey :: proc(self: ^Dictionary, key: ^Object) -> ^Object { return msgSend(^Dictionary, self, "objectForKey:", key) } -// TODO(bill): enumerator \ No newline at end of file +Dictionary_count :: proc(self: ^Dictionary) -> UInteger { + return msgSend(UInteger, self, "count") +} + +Dictionary_keyEnumerator :: proc(self: ^Dictionary, $KeyType: typeid) -> (enumerator: ^Enumerator(KeyType)) { + return msgSend(type_of(enumerator), self, "keyEnumerator") +} diff --git a/core/sys/darwin/Foundation/NSEnumerator.odin b/core/sys/darwin/Foundation/NSEnumerator.odin new file mode 100644 index 000000000..b6adf2b98 --- /dev/null +++ b/core/sys/darwin/Foundation/NSEnumerator.odin @@ -0,0 +1,37 @@ +package objc_Foundation + +import "core:c" +import "core:intrinsics" + +FastEnumerationState :: struct #packed { + state: c.ulong, + itemsPtr: [^]^Object, + mutationsPtr: [^]c.ulong, + extra: [5]c.ulong, +} + +@(objc_class="NSFastEnumeration") +FastEnumeration :: struct {using _: Object} + +@(objc_class="NSEnumerator") +Enumerator :: struct($T: typeid) where intrinsics.type_is_pointer(T), intrinsics.type_is_subtype_of(T, ^Object) { + using _: FastEnumeration, +} + +FastEnumeration_countByEnumerating :: proc(self: ^FastEnumeration, state: ^FastEnumerationState, buffer: [^]^Object, len: UInteger) -> UInteger { + return msgSend(UInteger, self, "countByEnumeratingWithState:objects:count:", state, buffer, len) +} + +Enumerator_nextObject :: proc(self: ^$E/Enumerator($T)) -> T { + return msgSend(T, self, "nextObject") +} + +Enumerator_allObjects :: proc(self: ^$E/Enumerator($T)) -> (all: Array(T)) { + return msgSend(type_of(all), self, "allObjects") +} + +Enumerator_iterator :: proc(self: ^$E/Enumerator($T)) -> (obj: T, ok: bool) { + obj = msgSend(T, self, "nextObject") + ok = obj != nil + return +} diff --git a/core/sys/darwin/Foundation/NSError.odin b/core/sys/darwin/Foundation/NSError.odin new file mode 100644 index 000000000..85ff5514a --- /dev/null +++ b/core/sys/darwin/Foundation/NSError.odin @@ -0,0 +1,68 @@ +package objc_Foundation + +foreign import "system:Foundation.framework" + +ErrorDomain :: ^String + +foreign Foundation { + CocoaErrorDomain: ErrorDomain + POSIXErrorDomain: ErrorDomain + OSStatusErrorDomain: ErrorDomain + MachErrorDomain: ErrorDomain +} + +ErrorUserInfoKey :: ^String + +foreign Foundation { + UnderlyingErrorKey: ErrorUserInfoKey + LocalizedDescriptionKey: ErrorUserInfoKey + LocalizedFailureReasonErrorKey: ErrorUserInfoKey + LocalizedRecoverySuggestionErrorKey: ErrorUserInfoKey + LocalizedRecoveryOptionsErrorKey: ErrorUserInfoKey + RecoveryAttempterErrorKey: ErrorUserInfoKey + HelpAnchorErrorKey: ErrorUserInfoKey + DebugDescriptionErrorKey: ErrorUserInfoKey + LocalizedFailureErrorKey: ErrorUserInfoKey + StringEncodingErrorKey: ErrorUserInfoKey + URLErrorKey: ErrorUserInfoKey + FilePathErrorKey: ErrorUserInfoKey +} + +@(objc_class="NSError") +Error :: struct { using _: Copying(Error) } + +Error_errorWithDomain :: proc(domain: ErrorDomain, code: Integer, userInfo: ^Dictionary) -> ^Error { + return msgSend(^Error, Error, "errorWithDomain:code:userInfo:", domain, code, userInfo) +} + +Error_initWithDomain :: proc(self: ^Error, domain: ErrorDomain, code: Integer, userInfo: ^Dictionary) -> ^Error { + return msgSend(^Error, self, "initWithDomain:code:userInfo:", domain, code, userInfo) +} + +Error_code :: proc(self: ^Error) -> Integer { + return msgSend(Integer, self, "code") +} + +Error_domain :: proc(self: ^Error) -> ErrorDomain { + return msgSend(ErrorDomain, self, "domain") +} + +Error_userInfo :: proc(self: ^Error) -> ^Dictionary { + return msgSend(^Dictionary, self, "userInfo") +} + +Error_localizedDescription :: proc(self: ^Error) -> ^String { + return msgSend(^String, self, "localizedDescription") +} + +Error_localizedRecoveryOptions :: proc(self: ^Error) -> (options: ^Array(^Object)) { + return msgSend(type_of(options), self, "localizedRecoveryOptions") +} + +Error_localizedRecoverySuggestion :: proc(self: ^Error) -> ^String { + return msgSend(^String, self, "localizedRecoverySuggestion") +} + +Error_localizedFailureReason :: proc(self: ^Error) -> ^String { + return msgSend(^String, self, "localizedFailureReason") +} \ No newline at end of file From ef98e92e8de11a65583ca7bca008e70a33249b01 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 9 Feb 2022 12:23:41 +0000 Subject: [PATCH 025/190] Remove unneeded file --- core/sys/darwin/Foundation/Foundation.odin | 1 - 1 file changed, 1 deletion(-) delete mode 100644 core/sys/darwin/Foundation/Foundation.odin diff --git a/core/sys/darwin/Foundation/Foundation.odin b/core/sys/darwin/Foundation/Foundation.odin deleted file mode 100644 index c69b10ddb..000000000 --- a/core/sys/darwin/Foundation/Foundation.odin +++ /dev/null @@ -1 +0,0 @@ -package objc_Foundation From b6abaf739ccaa226f2ddf808639994d2c0577258 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 9 Feb 2022 12:29:52 +0000 Subject: [PATCH 026/190] Add missing calls for `Object`; Add `scoped_autoreleasepool` --- core/sys/darwin/Foundation/NSAutoreleasePool.odin | 5 +++++ core/sys/darwin/Foundation/NSObject.odin | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/core/sys/darwin/Foundation/NSAutoreleasePool.odin b/core/sys/darwin/Foundation/NSAutoreleasePool.odin index 5ff2a6f1d..47cbc0e9a 100644 --- a/core/sys/darwin/Foundation/NSAutoreleasePool.odin +++ b/core/sys/darwin/Foundation/NSAutoreleasePool.odin @@ -13,3 +13,8 @@ AutoreleasePool_showPools :: proc(self: ^AutoreleasePool, obj: ^Object) { msgSend(nil, self, "showPools") } + +@(deferred_out=AutoreleasePool_drain) +scoped_autoreleasepool :: proc() -> ^AutoreleasePool { + return init(alloc(AutoreleasePool)) +} \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSObject.odin b/core/sys/darwin/Foundation/NSObject.odin index cf15dd68d..5e2f85ceb 100644 --- a/core/sys/darwin/Foundation/NSObject.odin +++ b/core/sys/darwin/Foundation/NSObject.odin @@ -33,14 +33,19 @@ retain :: proc(self: ^$T) -> ^T where intrinsics.type_is_subtype_of(T, Object) { release :: proc(self: ^$T) where intrinsics.type_is_subtype_of(T, Object) { msgSend(nil, self, "release") } +autorelease :: proc(self: ^$T) where intrinsics.type_is_subtype_of(T, Object) { + msgSend(nil, self, "autorelease") +} retainCount :: proc(self: ^$T) -> UInteger where intrinsics.type_is_subtype_of(T, Object) { return msgSend(UInteger, self, "retainCount") } + copy :: proc(self: ^Copying($T)) -> ^T where intrinsics.type_is_subtype_of(T, Object) { return msgSend(^T, self, "copy") } + hash :: proc(self: ^Object) -> UInteger { return msgSend(UInteger, self, "hash") } @@ -60,6 +65,10 @@ debugDescription :: proc(self: ^Object) -> ^String { return nil } +bridgingCast :: proc($T: typeid, obj: ^Object) where intrinsics.type_is_pointer(T), intrinsics.type_is_subtype_of(T, ^Object) { + return (T)(obj) +} + @(objc_class="NSCoder") Coder :: struct {using _: Object} From 42a1c58a8090bb3f5f6ac46db5f82edc3df49213 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 9 Feb 2022 21:42:20 +0000 Subject: [PATCH 027/190] Update Foundation linking --- core/sys/darwin/Foundation/NSError.odin | 32 ++++++++++++------------ core/sys/darwin/Foundation/NSNumber.odin | 30 +++++++++++----------- core/sys/darwin/Foundation/NSObject.odin | 2 +- 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/core/sys/darwin/Foundation/NSError.odin b/core/sys/darwin/Foundation/NSError.odin index 85ff5514a..aebf01035 100644 --- a/core/sys/darwin/Foundation/NSError.odin +++ b/core/sys/darwin/Foundation/NSError.odin @@ -5,27 +5,27 @@ foreign import "system:Foundation.framework" ErrorDomain :: ^String foreign Foundation { - CocoaErrorDomain: ErrorDomain - POSIXErrorDomain: ErrorDomain - OSStatusErrorDomain: ErrorDomain - MachErrorDomain: ErrorDomain + @(linkage="weak") CocoaErrorDomain: ErrorDomain + @(linkage="weak") POSIXErrorDomain: ErrorDomain + @(linkage="weak") OSStatusErrorDomain: ErrorDomain + @(linkage="weak") MachErrorDomain: ErrorDomain } ErrorUserInfoKey :: ^String foreign Foundation { - UnderlyingErrorKey: ErrorUserInfoKey - LocalizedDescriptionKey: ErrorUserInfoKey - LocalizedFailureReasonErrorKey: ErrorUserInfoKey - LocalizedRecoverySuggestionErrorKey: ErrorUserInfoKey - LocalizedRecoveryOptionsErrorKey: ErrorUserInfoKey - RecoveryAttempterErrorKey: ErrorUserInfoKey - HelpAnchorErrorKey: ErrorUserInfoKey - DebugDescriptionErrorKey: ErrorUserInfoKey - LocalizedFailureErrorKey: ErrorUserInfoKey - StringEncodingErrorKey: ErrorUserInfoKey - URLErrorKey: ErrorUserInfoKey - FilePathErrorKey: ErrorUserInfoKey + @(linkage="weak") UnderlyingErrorKey: ErrorUserInfoKey + @(linkage="weak") LocalizedDescriptionKey: ErrorUserInfoKey + @(linkage="weak") LocalizedFailureReasonErrorKey: ErrorUserInfoKey + @(linkage="weak") LocalizedRecoverySuggestionErrorKey: ErrorUserInfoKey + @(linkage="weak") LocalizedRecoveryOptionsErrorKey: ErrorUserInfoKey + @(linkage="weak") RecoveryAttempterErrorKey: ErrorUserInfoKey + @(linkage="weak") HelpAnchorErrorKey: ErrorUserInfoKey + @(linkage="weak") DebugDescriptionErrorKey: ErrorUserInfoKey + @(linkage="weak") LocalizedFailureErrorKey: ErrorUserInfoKey + @(linkage="weak") StringEncodingErrorKey: ErrorUserInfoKey + @(linkage="weak") URLErrorKey: ErrorUserInfoKey + @(linkage="weak") FilePathErrorKey: ErrorUserInfoKey } @(objc_class="NSError") diff --git a/core/sys/darwin/Foundation/NSNumber.odin b/core/sys/darwin/Foundation/NSNumber.odin index 3b8e59419..2630e6daa 100644 --- a/core/sys/darwin/Foundation/NSNumber.odin +++ b/core/sys/darwin/Foundation/NSNumber.odin @@ -16,8 +16,8 @@ Value_valueWithPointer :: proc(pointer: rawptr) -> ^Value { return msgSend(^Value, Value, "valueWithPointer:", pointer) } -Value_initWithBytes :: proc(value: rawptr, type: cstring) -> ^Value { - return msgSend(^Value, Value, "initWithBytes:objCType:", value, type) +Value_initWithBytes :: proc(self: ^Value, value: rawptr, type: cstring) -> ^Value { + return msgSend(^Value, self, "initWithBytes:objCType:", value, type) } Value_initWithCoder :: proc(coder: ^Coder) -> ^Value { @@ -46,19 +46,19 @@ Value_pointerValue :: proc(self: ^Value) -> rawptr { Number :: struct{using _: Copying(Number), using _: Value} -Number_numberWithI8 :: proc(value: i8) -> ^Number { return msgSend(^Number, Number, "numberWithChar:", value) } -Number_numberWithU8 :: proc(value: u8) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedChar:", value) } -Number_numberWithI16 :: proc(value: i16) -> ^Number { return msgSend(^Number, Number, "numberWithShort:", value) } -Number_numberWithU16 :: proc(value: u16) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedShort:", value) } -Number_numberWithI32 :: proc(value: i32) -> ^Number { return msgSend(^Number, Number, "numberWithInt:", value) } -Number_numberWithU32 :: proc(value: u32) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedInt:", value) } -Number_numberWithInt :: proc(value: int) -> ^Number { return msgSend(^Number, Number, "numberWithLong:", value) } -Number_numberWithUint :: proc(value: uint) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedLong:", value) } -Number_numberWithU64 :: proc(value: u64) -> ^Number { return msgSend(^Number, Number, "numberWithLongLong:", value) } -Number_numberWithI64 :: proc(value: i64) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedLongLong:", value) } -Number_numberWithF32 :: proc(value: f32) -> ^Number { return msgSend(^Number, Number, "numberWithFloat:", value) } -Number_numberWithF64 :: proc(value: f64) -> ^Number { return msgSend(^Number, Number, "numberWithDouble:", value) } -Number_numberWithBool :: proc(value: BOOL) -> ^Number { return msgSend(^Number, Number, "numberWithBool:", value) } +Number_numberWithI8 :: proc(value: i8) -> ^Number { return msgSend(^Number, Number, "numberWithChar:", value) } +Number_numberWithU8 :: proc(value: u8) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedChar:", value) } +Number_numberWithI16 :: proc(value: i16) -> ^Number { return msgSend(^Number, Number, "numberWithShort:", value) } +Number_numberWithU16 :: proc(value: u16) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedShort:", value) } +Number_numberWithI32 :: proc(value: i32) -> ^Number { return msgSend(^Number, Number, "numberWithInt:", value) } +Number_numberWithU32 :: proc(value: u32) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedInt:", value) } +Number_numberWithInt :: proc(value: int) -> ^Number { return msgSend(^Number, Number, "numberWithLong:", value) } +Number_numberWithUint :: proc(value: uint) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedLong:", value) } +Number_numberWithU64 :: proc(value: u64) -> ^Number { return msgSend(^Number, Number, "numberWithLongLong:", value) } +Number_numberWithI64 :: proc(value: i64) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedLongLong:", value) } +Number_numberWithF32 :: proc(value: f32) -> ^Number { return msgSend(^Number, Number, "numberWithFloat:", value) } +Number_numberWithF64 :: proc(value: f64) -> ^Number { return msgSend(^Number, Number, "numberWithDouble:", value) } +Number_numberWithBool :: proc(value: BOOL) -> ^Number { return msgSend(^Number, Number, "numberWithBool:", value) } Number_number :: proc{ Number_numberWithI8, diff --git a/core/sys/darwin/Foundation/NSObject.odin b/core/sys/darwin/Foundation/NSObject.odin index 5e2f85ceb..d61f8e947 100644 --- a/core/sys/darwin/Foundation/NSObject.odin +++ b/core/sys/darwin/Foundation/NSObject.odin @@ -24,7 +24,7 @@ Copying :: struct($T: typeid) {using _: Object} alloc :: proc($T: typeid) -> ^T where intrinsics.type_is_subtype_of(T, Object) { return msgSend(^T, T, "alloc") } -init :: proc(self: ^$T) -> ^T where intrinsics.type_is_subtype_of(T, Object){ +init :: proc(self: ^$T) -> ^T where intrinsics.type_is_subtype_of(T, Object) { return msgSend(^T, self, "init") } retain :: proc(self: ^$T) -> ^T where intrinsics.type_is_subtype_of(T, Object) { From c3809d7b84fedb633eaf599bcb9a8cb0534ba2ee Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 9 Feb 2022 21:46:26 +0000 Subject: [PATCH 028/190] Fix typo --- core/sys/darwin/Foundation/NSString.odin | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/sys/darwin/Foundation/NSString.odin b/core/sys/darwin/Foundation/NSString.odin index 857e27f12..86c8cabea 100644 --- a/core/sys/darwin/Foundation/NSString.odin +++ b/core/sys/darwin/Foundation/NSString.odin @@ -87,12 +87,12 @@ String_cStringUsingEncoding :: proc(self: ^String, encoding: StringEncoding) -> return msgSend(cstring, self, "cStringUsingEncoding:", encoding) } -String_UTFString :: proc(self: ^String) -> cstring { - return msgSend(cstring, self, "UTFString") +String_UTF8String :: proc(self: ^String) -> cstring { + return msgSend(cstring, self, "UTF8String") } String_OdinString :: proc(self: ^String) -> string { - return string(String_UTFString(self)) + return string(String_UTF8String(self)) } String_maximumLengthOfBytesUsingEncoding :: proc(self: ^String, encoding: StringEncoding) -> UInteger { From 416413bebfcddf2b7ae2bf20fb01b675339297eb Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 10 Feb 2022 14:35:10 +0000 Subject: [PATCH 029/190] Begin work on `Metal` --- vendor/Metal/MTLAccelerationStructure.odin | 270 ++++++++++++++++++ .../Metal/MTLAccelerationStructureTypes.odin | 10 + vendor/Metal/MTLRenderPipeline.odin | 74 +++++ .../Metal/MTLStageInputOutputDescriptor.odin | 76 +++++ vendor/Metal/Metal.odin | 22 ++ vendor/Metal/NSBuffer.odin | 5 + vendor/Metal/NSResource.odin | 5 + 7 files changed, 462 insertions(+) create mode 100644 vendor/Metal/MTLAccelerationStructure.odin create mode 100644 vendor/Metal/MTLAccelerationStructureTypes.odin create mode 100644 vendor/Metal/MTLRenderPipeline.odin create mode 100644 vendor/Metal/MTLStageInputOutputDescriptor.odin create mode 100644 vendor/Metal/Metal.odin create mode 100644 vendor/Metal/NSBuffer.odin create mode 100644 vendor/Metal/NSResource.odin diff --git a/vendor/Metal/MTLAccelerationStructure.odin b/vendor/Metal/MTLAccelerationStructure.odin new file mode 100644 index 000000000..342df3d07 --- /dev/null +++ b/vendor/Metal/MTLAccelerationStructure.odin @@ -0,0 +1,270 @@ +package objc_Metal + +import NS "core:sys/darwin/Foundation" + +AccelerationStructureUsage :: distinct bit_set[AccelerationStructureUsageFlag; NS.UInteger] +AccelerationStructureUsageFlag :: enum NS.UInteger { + Refit = 0, + PreferFastBuild = 1, + ExtendedLimits = 2, +} +AccelerationStructureUsageNone :: AccelerationStructureUsage{} + +AccelerationStructureInstanceOptions :: distinct bit_set[AccelerationStructureInstanceOption; u32] +AccelerationStructureInstanceOption :: enum u32 { + DisableTriangleCulling = 0, + TriangleFrontFacingWindingCounterClockwise = 1, + Opaque = 2, + NonOpaque = 3, +} +AccelerationStructureInstanceOptionNone :: AccelerationStructureInstanceOptions{} + +MotionBorderMode :: enum u32 { + Clamp = 0, + Vanish = 1, +} + +AccelerationStructureInstanceDescriptor :: struct #packed { + transformationMatrix: PackedFloat4x3, + options: AccelerationStructureInstanceOptions, + mask: u32, + intersectionFunctionTableOffset: u32, + accelerationStructureIndex: u32, +} + +AccelerationStructureUserIDInstanceDescriptor :: struct #packed { + transformationMatrix: PackedFloat4x3, + options: AccelerationStructureInstanceOptions, + mask: u32, + intersectionFunctionTableOffset: u32, + accelerationStructureIndex: u32, + userID: u32, +} + +AccelerationStructureInstanceDescriptorType :: enum NS.UInteger { + Default = 0, + UserID = 1, + Motion = 2, +} + +AccelerationStructureMotionInstanceDescriptor :: struct #packed { + options: AccelerationStructureInstanceOptions, + mask: u32, + intersectionFunctionTableOffset: u32, + accelerationStructureIndex: u32, + userID: u32, + motionTransformsStartIndex: u32, + motionTransformsCount: u32, + motionStartBorderMode: MotionBorderMode, + motionEndBorderMode: MotionBorderMode, + motionStartTime: f32, + motionEndTime: f32, +} + +@(objc_class="NSAccelerationStructureDescriptor") +AccelerationStructureDescriptor :: struct { using _: NS.Copying(AccelerationStructureDescriptor) } + +@(objc_class="NSAccelerationStructureGeometryDescriptor") +AccelerationStructureGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureGeometryDescriptor) } + +@(objc_class="NSPrimitiveAccelerationStructureDescriptor") +PrimitiveAccelerationStructureDescriptor :: struct { using _: NS.Copying(PrimitiveAccelerationStructureDescriptor), using _: AccelerationStructureDescriptor } + +@(objc_class="NSAccelerationStructureTriangleGeometryDescriptor") +AccelerationStructureTriangleGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureTriangleGeometryDescriptor), using _: AccelerationStructureGeometryDescriptor } + +@(objc_class="NSAccelerationStructureBoundingBoxGeometryDescriptor") +AccelerationStructureBoundingBoxGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureBoundingBoxGeometryDescriptor), using _: AccelerationStructureGeometryDescriptor } + +@(objc_class="NSMotionKeyframeData") +MotionKeyframeData :: struct { using _: NS.Object } + +@(objc_class="NSAccelerationStructureMotionTriangleGeometryDescriptor") +AccelerationStructureMotionTriangleGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureMotionTriangleGeometryDescriptor), using _: AccelerationStructureGeometryDescriptor } + +@(objc_class="NSAccelerationStructureMotionBoundingBoxGeometryDescriptor") +AccelerationStructureMotionBoundingBoxGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureMotionBoundingBoxGeometryDescriptor), using _: AccelerationStructureGeometryDescriptor } + +@(objc_class="NSInstanceAccelerationStructureDescriptor") +InstanceAccelerationStructureDescriptor :: struct { using _: NS.Copying(InstanceAccelerationStructureDescriptor), using _: AccelerationStructureGeometryDescriptor } + +@(objc_class="NSAccelerationStructure") +AccelerationStructure :: struct { using _: NS.Object } + + + +AccelerationStructureDescriptor_usage :: proc(self: ^AccelerationStructureDescriptor) -> AccelerationStructureUsage { + return msgSend(AccelerationStructureUsage, self, "usage") +} + +AccelerationStructureGeometryDescriptor_intersectionFunctionTableOffset :: proc(self: ^AccelerationStructureGeometryDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "intersectionFunctionTableOffset") +} + +AccelerationStructureGeometryDescriptor_setIntersectionFunctionTableOffset :: proc(self: ^AccelerationStructureGeometryDescriptor, intersectionFunctionTableOffset: NS.UInteger) { + msgSend(nil, self, "setIntersectionFunctionTableOffset:", intersectionFunctionTableOffset) +} + +AccelerationStructureGeometryDescriptor_opaque :: proc(self: ^AccelerationStructureGeometryDescriptor) -> BOOL { + return msgSend(BOOL, self, "opaque") +} + +AccelerationStructureGeometryDescriptor_setOpaque :: proc(self: ^AccelerationStructureGeometryDescriptor, opaque: BOOL) { + msgSend(nil, self, "setOpaque:", opaque) +} + +AccelerationStructureGeometryDescriptor_allowDuplicateIntersectionFunctionInvocation :: proc(self: ^AccelerationStructureGeometryDescriptor) -> BOOL { + return msgSend(BOOL, self, "allowDuplicateIntersectionFunctionInvocation") +} + +AccelerationStructureGeometryDescriptor_setAllowDuplicateIntersectionFunctionInvocation :: proc(self: ^AccelerationStructureGeometryDescriptor, allowDuplicateIntersectionFunctionInvocation: BOOL) { + msgSend(nil, self, "setAllowDuplicateIntersectionFunctionInvocation:", allowDuplicateIntersectionFunctionInvocation) +} + + +AccelerationStructureGeometryDescriptor_label :: proc(self: ^AccelerationStructureGeometryDescriptor) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} + +AccelerationStructureGeometryDescriptor_setLabel :: proc(self: ^AccelerationStructureGeometryDescriptor, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} + +PrimitiveAccelerationStructureDescriptor_geometryDescriptors :: proc(self: ^PrimitiveAccelerationStructureDescriptor) -> (descriptors: ^NS.Array(^NS.Object)) { + return msgSend(type_of(descriptors), self, "geometryDescriptors") +} + +PrimitiveAccelerationStructureDescriptor_setGeometryDescriptors :: proc(self: ^PrimitiveAccelerationStructureDescriptor, descriptors: ^NS.Array(^NS.Object)) { + msgSend(nil, self, "setGeometryDescriptors:", descriptors) +} + +PrimitiveAccelerationStructureDescriptor_motionStartBorderMode :: proc(self: ^PrimitiveAccelerationStructureDescriptor) -> MotionBorderMode { + return msgSend(MotionBorderMode, self, "motionStartBorderMode") +} +PrimitiveAccelerationStructureDescriptor_setMotionStartBorderMode :: proc(self: ^PrimitiveAccelerationStructureDescriptor, motionStartBorderMode: MotionBorderMode) { + msgSend(nil, self, "setMotionStartBorderMode:", motionStartBorderMode) +} + +PrimitiveAccelerationStructureDescriptor_motionEndBorderMode :: proc(self: ^PrimitiveAccelerationStructureDescriptor) -> MotionBorderMode { + return msgSend(MotionBorderMode, self, "motionEndBorderMode") +} +PrimitiveAccelerationStructureDescriptor_setMotionEndBorderMode :: proc(self: ^PrimitiveAccelerationStructureDescriptor, motionEndBorderMode: MotionBorderMode) { + msgSend(nil, self, "setMotionEndBorderMode:", motionEndBorderMode) +} + +PrimitiveAccelerationStructureDescriptor_motionStartTime :: proc(self: ^PrimitiveAccelerationStructureDescriptor) -> (motionStartTime: f32) { + return msgSend(f32, self, "motionStartTime") +} +PrimitiveAccelerationStructureDescriptor_setMotionStartTime :: proc(self: ^PrimitiveAccelerationStructureDescriptor, motionStartTime: f32) { + msgSend(nil, self, "setMotionStartTime:", motionStartTime) +} + + +PrimitiveAccelerationStructureDescriptor_motionEndTime :: proc(self: ^PrimitiveAccelerationStructureDescriptor) -> (motionEndTime: f32) { + return msgSend(f32, self, "motionEndTime") +} +PrimitiveAccelerationStructureDescriptor_setMotionEndTime :: proc(self: ^PrimitiveAccelerationStructureDescriptor, motionEndTime: f32) { + msgSend(nil, self, "setMotionEndTime:", motionEndTime) +} + + +PrimitiveAccelerationStructureDescriptor_motionKeyframeCount :: proc(self: ^PrimitiveAccelerationStructureDescriptor) -> (motionKeyframeCount: NS.UInteger) { + return msgSend(NS.UInteger, self, "motionKeyframeCount") +} +PrimitiveAccelerationStructureDescriptor_setmotionKeyframeCount :: proc(self: ^PrimitiveAccelerationStructureDescriptor, motionKeyframeCount: NS.UInteger) { + msgSend(nil, self, "setMotionKeyframeCount:", motionKeyframeCount) +} + +PrimitiveAccelerationStructureDescriptor_descriptor :: proc() -> ^PrimitiveAccelerationStructureDescriptor { + return msgSend(^PrimitiveAccelerationStructureDescriptor, PrimitiveAccelerationStructureDescriptor, "descriptor") +} + + +AccelerationStructureTriangleGeometryDescriptor_vertexBuffer :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> ^Buffer { + return msgSend(^Buffer, self, "vertexBuffer") +} +AccelerationStructureTriangleGeometryDescriptor_setVertexBuffer :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, buffer: ^Buffer) { + msgSend(nil, self, "setVertexBuffer:", buffer) +} + +AccelerationStructureTriangleGeometryDescriptor_vertexBufferOffset :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "vertexBufferOffset") +} +AccelerationStructureTriangleGeometryDescriptor_setVertexBufferOffset :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexBufferOffset: NS.UInteger) { + msgSend(nil, self, "setVertexBufferOffset:", vertexBufferOffset) +} + +AccelerationStructureTriangleGeometryDescriptor_vertexStride :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "vertexStride") +} +AccelerationStructureTriangleGeometryDescriptor_setVertexStride :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexStride: NS.UInteger) { + msgSend(nil, self, "setVertexStride:", vertexStride) +} + +AccelerationStructureTriangleGeometryDescriptor_indexBuffer :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> ^Buffer { + return msgSend(^Buffer, self, "indexBuffer") +} +AccelerationStructureTriangleGeometryDescriptor_setIndexBuffer :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, buffer: ^Buffer) { + msgSend(nil, self, "setIndexBuffer:", buffer) +} + +AccelerationStructureTriangleGeometryDescriptor_indexBufferOffset :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "indexBufferOffset") +} +AccelerationStructureTriangleGeometryDescriptor_setIndexBufferOffset :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indexBufferOffset: NS.UInteger) { + msgSend(nil, self, "setIndexBufferOffset:", indexBufferOffset) +} + + + +AccelerationStructureTriangleGeometryDescriptor_indexType :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> IndexType { + return msgSend(IndexType, self, "indexType") +} +AccelerationStructureTriangleGeometryDescriptor_setIndexType :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indextype: IndexType) { + msgSend(nil, self, "setIndexType:", indextype) +} + +AccelerationStructureTriangleGeometryDescriptor_triangleCount :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "triangleCount") +} +AccelerationStructureTriangleGeometryDescriptor_setTriangleCount :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, triangleCount: NS.UInteger) { + msgSend(nil, self, "setTriangleCount", triangleCount) +} + + +AccelerationStructureTriangleGeometryDescriptor_descriptor :: proc() -> ^AccelerationStructureTriangleGeometryDescriptor { + return msgSend(^AccelerationStructureTriangleGeometryDescriptor, AccelerationStructureTriangleGeometryDescriptor, "descriptor") +} + +AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxBuffer :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> ^Buffer { + return msgSend(^Buffer, self, "boundingBoxBuffer") +} + +AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxBuffer :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, buffer: ^Buffer) { + msgSend(nil, self, "setBoundingBoxBuffer:", buffer) +} + +AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxBufferOffset :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "boundingBoxBufferOffset") +} + +AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxBufferOffset :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxBufferOffset: NS.UInteger) { + msgSend(nil, self, "setBoundingBoxBufferOffset:", boundingBoxBufferOffset) +} + + +AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxStride :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "boundingBoxStride") +} + +AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxStride :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxStride: NS.UInteger) { + msgSend(nil, self, "setBoundingBoxStride:", boundingBoxStride) +} + +AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxCount :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "boundingBoxCount") +} + +AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxCount :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxCount: NS.UInteger) { + msgSend(nil, self, "setBoundingBoxCount:", boundingBoxCount) +} diff --git a/vendor/Metal/MTLAccelerationStructureTypes.odin b/vendor/Metal/MTLAccelerationStructureTypes.odin new file mode 100644 index 000000000..eba672836 --- /dev/null +++ b/vendor/Metal/MTLAccelerationStructureTypes.odin @@ -0,0 +1,10 @@ +package objc_Metal + +import NS "core:sys/darwin/Foundation" + +PackedFloat3 :: distinct [3]f32 +PackedFloat4x3 :: distinct [4]PackedFloat3 + +AxisAlignedBoundingBox :: struct{ + min, ax: PackedFloat3, +} \ No newline at end of file diff --git a/vendor/Metal/MTLRenderPipeline.odin b/vendor/Metal/MTLRenderPipeline.odin new file mode 100644 index 000000000..c05c02c64 --- /dev/null +++ b/vendor/Metal/MTLRenderPipeline.odin @@ -0,0 +1,74 @@ +package objc_Metal + +import NS "core:sys/darwin/Foundation" + +BlendFactor :: enum NS.UInteger { + Zero = 0, + One = 1, + SourceColor = 2, + OneMinusSourceColor = 3, + SourceAlpha = 4, + OneMinusSourceAlpha = 5, + DestinationColor = 6, + OneMinusDestinationColor = 7, + DestinationAlpha = 8, + OneMinusDestinationAlpha = 9, + SourceAlphaSaturated = 10, + BlendColor = 11, + OneMinusBlendColor = 12, + BlendAlpha = 13, + OneMinusBlendAlpha = 14, + Source1Color = 15, + OneMinusSource1Color = 16, + Source1Alpha = 17, + OneMinusSource1Alpha = 18, +} + +BlendOperation :: enum NS.UInteger { + Add = 0, + Subtract = 1, + ReverseSubtract = 2, + Min = 3, + Max = 4, +} + +ColorWriteMaskOption :: enum NS.UInteger { + Alpha = 0, + Blue = 1, + Green = 2, + Red = 3, +} +ColorWriteMask :: distinct bit_set[ColorWriteMaskOption; NS.UInteger] +ColorWriteMaskNone :: ColorWriteMask{} +ColorWriteMaskAll :: ColorWriteMask{.Alpha, .Blue, .Green, .Red} + +PrimitiveTopologyClass :: enum NS.UInteger { + ClassUnspecified = 0, + ClassPoint = 1, + ClassLine = 2, + ClassTriangle = 3, +} + +TessellationPartitionMode :: enum NS.UInteger { + ModePow2 = 0, + ModeInteger = 1, + ModeFractionalOdd = 2, + ModeFractionalEven = 3, +} + +TessellationFactorStepFunction :: enum NS.UInteger { + Constant = 0, + PerPatch = 1, + PerInstance = 2, + PerPatchAndPerInstance = 3, +} + +TessellationFactorFormat :: enum NS.UInteger { + Half = 0, +} + +TessellationControlPointIndexType :: enum NS.UInteger { + None = 0, + UInt16 = 1, + UInt32 = 2, +} diff --git a/vendor/Metal/MTLStageInputOutputDescriptor.odin b/vendor/Metal/MTLStageInputOutputDescriptor.odin new file mode 100644 index 000000000..98ff66ce5 --- /dev/null +++ b/vendor/Metal/MTLStageInputOutputDescriptor.odin @@ -0,0 +1,76 @@ +package objc_Metal + +import NS "core:sys/darwin/Foundation" + + +AttributeFormat :: enum NS.UInteger { + Invalid = 0, + UChar2 = 1, + UChar3 = 2, + UChar4 = 3, + Char2 = 4, + Char3 = 5, + Char4 = 6, + UChar2Normalized = 7, + UChar3Normalized = 8, + UChar4Normalized = 9, + Char2Normalized = 10, + Char3Normalized = 11, + Char4Normalized = 12, + UShort2 = 13, + UShort3 = 14, + UShort4 = 15, + Short2 = 16, + Short3 = 17, + Short4 = 18, + UShort2Normalized = 19, + UShort3Normalized = 20, + UShort4Normalized = 21, + Short2Normalized = 22, + Short3Normalized = 23, + Short4Normalized = 24, + Half2 = 25, + Half3 = 26, + Half4 = 27, + Float = 28, + Float2 = 29, + Float3 = 30, + Float4 = 31, + Int = 32, + Int2 = 33, + Int3 = 34, + Int4 = 35, + UInt = 36, + UInt2 = 37, + UInt3 = 38, + UInt4 = 39, + Int1010102Normalized = 40, + UInt1010102Normalized = 41, + UChar4Normalized_BGRA = 42, + UChar = 45, + Char = 46, + UCharNormalized = 47, + CharNormalized = 48, + UShort = 49, + Short = 50, + UShortNormalized = 51, + ShortNormalized = 52, + Half = 53, +} + +IndexType :: enum NS.UInteger { + UInt16 = 0, + UInt32 = 1, +} + +StepFunction :: enum NS.UInteger { + Constant = 0, + PerVertex = 1, + PerInstance = 2, + PerPatch = 3, + PerPatchControlPoint = 4, + ThreadPositionInGridX = 5, + ThreadPositionInGridY = 6, + ThreadPositionInGridXIndexed = 7, + ThreadPositionInGridYIndexed = 8, +} \ No newline at end of file diff --git a/vendor/Metal/Metal.odin b/vendor/Metal/Metal.odin new file mode 100644 index 000000000..eefada00d --- /dev/null +++ b/vendor/Metal/Metal.odin @@ -0,0 +1,22 @@ +package objc_Metal + +import NS "core:sys/darwin/Foundation" +import "core:intrinsics" + +alloc :: NS.alloc +init :: NS.init +retain :: NS.retain +release :: NS.release +autorelease :: NS.autorelease +retainCount :: NS.retainCount +copy :: NS.copy +hash :: NS.hash +isEqual :: NS.isEqual +description :: NS.description +debugDescription :: NS.debugDescription +bridgingCast :: NS.bridgingCast + +@(private) +msgSend :: intrinsics.objc_send + +BOOL :: NS.BOOL \ No newline at end of file diff --git a/vendor/Metal/NSBuffer.odin b/vendor/Metal/NSBuffer.odin new file mode 100644 index 000000000..9f7a83c1a --- /dev/null +++ b/vendor/Metal/NSBuffer.odin @@ -0,0 +1,5 @@ +package objc_Metal + +import NS "core:sys/darwin/Foundation" + +Buffer :: struct { using _: Resource } \ No newline at end of file diff --git a/vendor/Metal/NSResource.odin b/vendor/Metal/NSResource.odin new file mode 100644 index 000000000..34bc0267c --- /dev/null +++ b/vendor/Metal/NSResource.odin @@ -0,0 +1,5 @@ +package objc_Metal + +import NS "core:sys/darwin/Foundation" + +Resource :: struct { using _: NS.Object } \ No newline at end of file From f77cd5533d8fdda0abc9052e63c1f13a57db73ae Mon Sep 17 00:00:00 2001 From: Colin Davidson Date: Fri, 11 Feb 2022 08:10:48 -0800 Subject: [PATCH 030/190] Add fork and personality --- core/os/os_linux.odin | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/core/os/os_linux.odin b/core/os/os_linux.odin index 3288388ea..3a9136b43 100644 --- a/core/os/os_linux.odin +++ b/core/os/os_linux.odin @@ -11,6 +11,7 @@ import "core:intrinsics" import "core:sys/unix" Handle :: distinct i32 +Pid :: distinct i32 File_Time :: distinct u64 Errno :: distinct i32 @@ -150,6 +151,8 @@ ERFKILL: Errno : 132 /* Operation not possible due to RF-kill */ EHWPOISON: Errno : 133 /* Memory page has hardware error */ +ADDR_NO_RANDOMIZE :: 0x40000 + O_RDONLY :: 0x00000 O_WRONLY :: 0x00001 O_RDWR :: 0x00002 @@ -270,6 +273,15 @@ AT_FDCWD :: -100 AT_REMOVEDIR :: uintptr(0x200) AT_SYMLINK_NOFOLLOW :: uintptr(0x100) +_unix_personality :: proc(persona: u64) -> int { + return int(intrinsics.syscall(unix.SYS_personality, uintptr(persona))) +} + +_unix_fork :: proc() -> Pid { + res := int(intrinsics.syscall(unix.SYS_fork)) + return -1 if res < 0 else Pid(res) +} + _unix_open :: proc(path: cstring, flags: int, mode: int = 0o000) -> Handle { when ODIN_ARCH != "arm64" { res := int(intrinsics.syscall(unix.SYS_open, uintptr(rawptr(path)), uintptr(flags), uintptr(mode))) @@ -431,6 +443,22 @@ get_last_error :: proc() -> int { return __errno_location()^ } +personality :: proc(persona: u64) -> (Errno) { + res := _unix_personality(persona) + if res == -1 { + return _get_errno(res) + } + return ERROR_NONE +} + +fork :: proc() -> (Pid, Errno) { + pid := _unix_fork() + if pid == -1 { + return -1, _get_errno(int(pid)) + } + return pid, ERROR_NONE +} + open :: proc(path: string, flags: int = O_RDONLY, mode: int = 0) -> (Handle, Errno) { cstr := strings.clone_to_cstring(path) handle := _unix_open(cstr, flags, mode) From 251edf7bc7eff05b1dcead77133fe1a3ec2e973c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikkel=20Hjortsh=C3=B8j?= Date: Fri, 11 Feb 2022 17:22:14 +0100 Subject: [PATCH 031/190] Update ci.yml --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a1f96d20b..c62fcd36b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -79,7 +79,7 @@ jobs: make timeout-minutes: 10 build_windows: - runs-on: windows-latest + runs-on: windows-2019 steps: - uses: actions/checkout@v1 - name: build Odin From 1c57d1c01921284e82329933df558bf9edd317bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikkel=20Hjortsh=C3=B8j?= Date: Fri, 11 Feb 2022 17:22:33 +0100 Subject: [PATCH 032/190] Update nightly.yml --- .github/workflows/nightly.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 2b33c45a8..7175843f5 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -7,7 +7,7 @@ on: jobs: build_windows: - runs-on: windows-latest + runs-on: windows-2019 steps: - uses: actions/checkout@v1 - name: build Odin From f8afda3b221f6c2279a393c2c0fb8ab7ea1d59df Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 11 Feb 2022 22:54:51 +0000 Subject: [PATCH 033/190] Add more objc attributes --- core/sys/darwin/Foundation/NSArray.odin | 36 +++-- .../darwin/Foundation/NSAutoreleasePool.odin | 15 +- core/sys/darwin/Foundation/NSBundle.odin | 56 +++++-- core/sys/darwin/Foundation/NSData.odin | 12 ++ core/sys/darwin/Foundation/NSDate.odin | 12 ++ core/sys/darwin/Foundation/NSDictionary.odin | 18 +++ core/sys/darwin/Foundation/NSEnumerator.odin | 15 +- core/sys/darwin/Foundation/NSError.odin | 22 ++- core/sys/darwin/Foundation/NSLock.odin | 24 +++ .../sys/darwin/Foundation/NSNotification.odin | 15 ++ core/sys/darwin/Foundation/NSNumber.odin | 145 ++++++++++-------- core/sys/darwin/Foundation/NSObject.odin | 36 +++-- core/sys/darwin/Foundation/NSString.odin | 24 +++ core/sys/darwin/Foundation/NSURL.odin | 12 ++ src/check_builtin.cpp | 8 +- src/check_decl.cpp | 63 ++++++++ src/check_type.cpp | 2 + src/checker.cpp | 50 +++++- src/checker.hpp | 6 +- src/entity.cpp | 23 +++ src/llvm_backend_expr.cpp | 11 +- src/main.cpp | 32 +--- src/string.cpp | 31 ++++ src/types.cpp | 62 ++++++++ 24 files changed, 588 insertions(+), 142 deletions(-) diff --git a/core/sys/darwin/Foundation/NSArray.odin b/core/sys/darwin/Foundation/NSArray.odin index 435e239a2..e17223ff7 100644 --- a/core/sys/darwin/Foundation/NSArray.odin +++ b/core/sys/darwin/Foundation/NSArray.odin @@ -3,26 +3,40 @@ package objc_Foundation import "core:intrinsics" @(objc_class="NSArray") -Array :: struct($T: typeid) where intrinsics.type_is_pointer(T), intrinsics.type_is_subtype_of(T, ^Object) { - using _: Copying(Array(T)), +Array :: struct { + using _: Copying(Array), } -Array_initWithObjects :: proc(self: ^$A/Array($T), objects: [^]^Object, count: UInteger) -> ^A { - return msgSend(^A, "initWithObjects:count:", objects, count) +@(objc_type=Array, objc_class_name="alloc") +Array_alloc :: proc() -> ^Array { + return msgSend(^Array, Array, "alloc") } -Array_initWithCoder :: proc(self: ^$A/Array($T), coder: ^Coder) -> ^A { - return msgSend(^A, "initWithCoder:", coder) +@(objc_type=Array, objc_name="init") +Array_init :: proc(self: ^Array) -> ^Array { + return msgSend(^Array, self, "init") } -Array_objectAtIndex :: proc(self: ^Array($T), index: UInteger) -> ^Object { +@(objc_type=Array, objc_name="initWithObjects") +Array_initWithObjects :: proc(self: ^Array, objects: [^]^Object, count: UInteger) -> ^Array { + return msgSend(^Array, self, "initWithObjects:count:", objects, count) +} + +@(objc_type=Array, objc_name="initWithCoder") +Array_initWithCoder :: proc(self: ^Array, coder: ^Coder) -> ^Array { + return msgSend(^Array, self, "initWithCoder:", coder) +} + +@(objc_type=Array, objc_name="object") +Array_object :: proc(self: ^Array, index: UInteger) -> ^Object { return msgSend(^Object, self, "objectAtIndex:", index) } - -Array_object :: proc(self: ^Array($T), index: UInteger) -> T { - return (T)(Array_objectAtIndex(self, index)) +@(objc_type=Array, objc_name="objectAs") +Array_objectAs :: proc(self: ^Array, index: UInteger, $T: typeid) -> T where intrinsics.type_is_pointer(T), intrinsics.type_is_subtype_of(T, ^Object) { + return (T)(Array_object(self, index)) } -Array_count :: proc(self: ^Array($T)) -> UInteger { +@(objc_type=Array, objc_name="count") +Array_count :: proc(self: ^Array) -> UInteger { return msgSend(UInteger, self, "count") } diff --git a/core/sys/darwin/Foundation/NSAutoreleasePool.odin b/core/sys/darwin/Foundation/NSAutoreleasePool.odin index 47cbc0e9a..17ec88ba1 100644 --- a/core/sys/darwin/Foundation/NSAutoreleasePool.odin +++ b/core/sys/darwin/Foundation/NSAutoreleasePool.odin @@ -3,12 +3,25 @@ package objc_Foundation @(objc_class="NSAutoreleasePool") AutoreleasePool :: struct {using _: Object} +@(objc_type=AutoreleasePool, objc_class_name="alloc") +AutoreleasePool_alloc :: proc() -> ^AutoreleasePool { + return msgSend(^AutoreleasePool, AutoreleasePool, "alloc") +} + +@(objc_type=AutoreleasePool, objc_name="init") +AutoreleasePool_init :: proc(self: ^AutoreleasePool) -> ^AutoreleasePool { + return msgSend(^AutoreleasePool, self, "init") +} + +@(objc_type=AutoreleasePool, objc_name="drain") AutoreleasePool_drain :: proc(self: ^AutoreleasePool) { msgSend(nil, self, "drain") } +@(objc_type=AutoreleasePool, objc_name="addObject") AutoreleasePool_addObject :: proc(self: ^AutoreleasePool, obj: ^Object) { msgSend(nil, self, "addObject:", obj) } +@(objc_type=AutoreleasePool, objc_name="showPools") AutoreleasePool_showPools :: proc(self: ^AutoreleasePool, obj: ^Object) { msgSend(nil, self, "showPools") } @@ -16,5 +29,5 @@ AutoreleasePool_showPools :: proc(self: ^AutoreleasePool, obj: ^Object) { @(deferred_out=AutoreleasePool_drain) scoped_autoreleasepool :: proc() -> ^AutoreleasePool { - return init(alloc(AutoreleasePool)) + return AutoreleasePool.alloc()->init() } \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSBundle.odin b/core/sys/darwin/Foundation/NSBundle.odin index 375e15b65..a18809b7e 100644 --- a/core/sys/darwin/Foundation/NSBundle.odin +++ b/core/sys/darwin/Foundation/NSBundle.odin @@ -3,98 +3,120 @@ package objc_Foundation @(objc_class="NSBundle") Bundle :: struct { using _: Object } +@(objc_type=Bundle, objc_class_name="mainBundle") Bundle_mainBundle :: proc() -> ^Bundle { return msgSend(^Bundle, Bundle, "mainBundle") } +@(objc_type=Bundle, objc_class_name="bundleWithPath") Bundle_bundleWithPath :: proc(path: ^String) -> ^Bundle { return msgSend(^Bundle, Bundle, "bundleWithPath:", path) } +@(objc_type=Bundle, objc_class_name="bundleWithURL") Bundle_bundleWithURL :: proc(url: ^URL) -> ^Bundle { return msgSend(^Bundle, Bundle, "bundleWithUrl:", url) } -Bundle_bundle :: proc{ - Bundle_bundleWithPath, - Bundle_bundleWithURL, + + +@(objc_type=Bundle, objc_class_name="alloc") +Bundle_alloc :: proc() -> ^Bundle { + return msgSend(^Bundle, Bundle, "alloc") } +@(objc_type=Bundle, objc_name="init") +Bundle_init :: proc(self: ^Bundle) -> ^Bundle { + return msgSend(^Bundle, self, "init") +} +@(objc_type=Bundle, objc_name="initWithPath") Bundle_initWithPath :: proc(self: ^Bundle, path: ^String) -> ^Bundle { return msgSend(^Bundle, self, "initWithPath:", path) } +@(objc_type=Bundle, objc_name="initWithURL") Bundle_initWithURL :: proc(self: ^Bundle, url: ^URL) -> ^Bundle { return msgSend(^Bundle, self, "initWithUrl:", url) } -Bundle_init :: proc{ - Bundle_initWithPath, - Bundle_initWithURL, -} - -Bundle_allBundles :: proc() -> (all: ^Array(^Bundle)) { +@(objc_type=Bundle, objc_name="allBundles") +Bundle_allBundles :: proc() -> (all: ^Array) { return msgSend(type_of(all), Bundle, "allBundles") } -Bundle_allFrameworks :: proc() -> (all: ^Array(^Object)) { +@(objc_type=Bundle, objc_name="allFrameworks") +Bundle_allFrameworks :: proc() -> (all: ^Array) { return msgSend(type_of(all), Bundle, "allFrameworks") } +@(objc_type=Bundle, objc_name="load") Bundle_load :: proc(self: ^Bundle) -> BOOL { return msgSend(BOOL, self, "load") } +@(objc_type=Bundle, objc_name="unload") Bundle_unload :: proc(self: ^Bundle) -> BOOL { return msgSend(BOOL, self, "unload") } +@(objc_type=Bundle, objc_name="isLoaded") Bundle_isLoaded :: proc(self: ^Bundle) -> BOOL { return msgSend(BOOL, self, "isLoaded") } +@(objc_type=Bundle, objc_name="preflightAndReturnError") Bundle_preflightAndReturnError :: proc(self: ^Bundle) -> (ok: BOOL, error: ^Error) { ok = msgSend(BOOL, self, "preflightAndReturnError:", &error) return } +@(objc_type=Bundle, objc_name="loadAndReturnError") Bundle_loadAndReturnError :: proc(self: ^Bundle) -> (ok: BOOL, error: ^Error) { ok = msgSend(BOOL, self, "loadAndReturnError:", &error) return } +@(objc_type=Bundle, objc_name="bundleURL") Bundle_bundleURL :: proc(self: ^Bundle) -> ^URL { return msgSend(^URL, self, "bundleURL") } +@(objc_type=Bundle, objc_name="resourceURL") Bundle_resourceURL :: proc(self: ^Bundle) -> ^URL { return msgSend(^URL, self, "resourceURL") } +@(objc_type=Bundle, objc_name="executableURL") Bundle_executableURL :: proc(self: ^Bundle) -> ^URL { return msgSend(^URL, self, "executableURL") } +@(objc_type=Bundle, objc_name="URLForAuxiliaryExecutable") Bundle_URLForAuxiliaryExecutable :: proc(self: ^Bundle, executableName: ^String) -> ^URL { return msgSend(^URL, self, "URLForAuxiliaryExecutable:", executableName) } +@(objc_type=Bundle, objc_name="privateFrameworksURL") Bundle_privateFrameworksURL :: proc(self: ^Bundle) -> ^URL { return msgSend(^URL, self, "privateFrameworksURL") } +@(objc_type=Bundle, objc_name="sharedFrameworksURL") Bundle_sharedFrameworksURL :: proc(self: ^Bundle) -> ^URL { return msgSend(^URL, self, "sharedFrameworksURL") } +@(objc_type=Bundle, objc_name="sharedSupportURL") Bundle_sharedSupportURL :: proc(self: ^Bundle) -> ^URL { return msgSend(^URL, self, "sharedSupportURL") } +@(objc_type=Bundle, objc_name="builtInPlugInsURL") Bundle_builtInPlugInsURL :: proc(self: ^Bundle) -> ^URL { return msgSend(^URL, self, "builtInPlugInsURL") } +@(objc_type=Bundle, objc_name="appStoreReceiptURL") Bundle_appStoreReceiptURL :: proc(self: ^Bundle) -> ^URL { return msgSend(^URL, self, "appStoreReceiptURL") } @@ -102,60 +124,74 @@ Bundle_appStoreReceiptURL :: proc(self: ^Bundle) -> ^URL { +@(objc_type=Bundle, objc_name="bundlePath") Bundle_bundlePath :: proc(self: ^Bundle) -> ^String { return msgSend(^String, self, "bundlePath") } +@(objc_type=Bundle, objc_name="resourcePath") Bundle_resourcePath :: proc(self: ^Bundle) -> ^String { return msgSend(^String, self, "resourcePath") } +@(objc_type=Bundle, objc_name="executablePath") Bundle_executablePath :: proc(self: ^Bundle) -> ^String { return msgSend(^String, self, "executablePath") } +@(objc_type=Bundle, objc_name="PathForAuxiliaryExecutable") Bundle_PathForAuxiliaryExecutable :: proc(self: ^Bundle, executableName: ^String) -> ^String { return msgSend(^String, self, "PathForAuxiliaryExecutable:", executableName) } +@(objc_type=Bundle, objc_name="privateFrameworksPath") Bundle_privateFrameworksPath :: proc(self: ^Bundle) -> ^String { return msgSend(^String, self, "privateFrameworksPath") } +@(objc_type=Bundle, objc_name="sharedFrameworksPath") Bundle_sharedFrameworksPath :: proc(self: ^Bundle) -> ^String { return msgSend(^String, self, "sharedFrameworksPath") } +@(objc_type=Bundle, objc_name="sharedSupportPath") Bundle_sharedSupportPath :: proc(self: ^Bundle) -> ^String { return msgSend(^String, self, "sharedSupportPath") } +@(objc_type=Bundle, objc_name="builtInPlugInsPath") Bundle_builtInPlugInsPath :: proc(self: ^Bundle) -> ^String { return msgSend(^String, self, "builtInPlugInsPath") } +@(objc_type=Bundle, objc_name="appStoreReceiptPath") Bundle_appStoreReceiptPath :: proc(self: ^Bundle) -> ^String { return msgSend(^String, self, "appStoreReceiptPath") } +@(objc_type=Bundle, objc_name="bundleIdentifier") Bundle_bundleIdentifier :: proc(self: ^Bundle) -> ^String { return msgSend(^String, self, "bundleIdentifier") } +@(objc_type=Bundle, objc_name="infoDictionary") Bundle_infoDictionary :: proc(self: ^Bundle) -> ^Dictionary { return msgSend(^Dictionary, self, "infoDictionary") } +@(objc_type=Bundle, objc_name="localizedInfoDictionary") Bundle_localizedInfoDictionary :: proc(self: ^Bundle) -> ^Dictionary { return msgSend(^Dictionary, self, "localizedInfoDictionary") } +@(objc_type=Bundle, objc_name="objectForInfoDictionaryKey") Bundle_objectForInfoDictionaryKey :: proc(self: ^Bundle, key: ^String) -> ^Object { return msgSend(^Object, self, "objectForInfoDictionaryKey:", key) } +@(objc_type=Bundle, objc_name="localizedStringForKey") Bundle_localizedStringForKey :: proc(self: ^Bundle, key: ^String, value: ^String = nil, tableName: ^String = nil) -> ^String { return msgSend(^String, self, "localizedStringForKey:value:table:", key, value, tableName) } diff --git a/core/sys/darwin/Foundation/NSData.odin b/core/sys/darwin/Foundation/NSData.odin index 93bb3ae0e..e28f6a644 100644 --- a/core/sys/darwin/Foundation/NSData.odin +++ b/core/sys/darwin/Foundation/NSData.odin @@ -3,10 +3,22 @@ package objc_Foundation @(objc_class="NSData") Data :: struct {using _: Copying(Data)} +@(objc_type=Data, objc_class_name="alloc") +Data_alloc :: proc() -> ^Data { + return msgSend(^Data, Data, "alloc") +} + +@(objc_type=Data, objc_name="init") +Data_init :: proc(self: ^Data) -> ^Data { + return msgSend(^Data, self, "init") +} + +@(objc_type=Data, objc_name="mutableBytes") Data_mutableBytes :: proc(self: ^Data) -> rawptr { return msgSend(rawptr, self, "mutableBytes") } +@(objc_type=Data, objc_name="length") Data_length :: proc(self: ^Data) -> UInteger { return msgSend(UInteger, self, "length") } \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSDate.odin b/core/sys/darwin/Foundation/NSDate.odin index 4b298ee24..85bb14c3e 100644 --- a/core/sys/darwin/Foundation/NSDate.odin +++ b/core/sys/darwin/Foundation/NSDate.odin @@ -3,6 +3,18 @@ package objc_Foundation @(objc_class="NSDate") Date :: struct {using _: Copying(Date)} +@(objc_type=Date, objc_class_name="alloc") +Date_alloc :: proc() -> ^Date { + return msgSend(^Date, Date, "alloc") +} + +@(objc_type=Date, objc_name="init") +Date_init :: proc(self: ^Date) -> ^Date { + return msgSend(^Date, self, "init") +} + + +@(objc_type=Date, objc_name="dateWithTimeIntervalSinceNow") Date_dateWithTimeIntervalSinceNow :: proc(secs: TimeInterval) -> ^Date { return msgSend(^Date, Date, "dateWithTimeIntervalSinceNow:", secs) } \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSDictionary.odin b/core/sys/darwin/Foundation/NSDictionary.odin index f82b8cffd..3eb378dc7 100644 --- a/core/sys/darwin/Foundation/NSDictionary.odin +++ b/core/sys/darwin/Foundation/NSDictionary.odin @@ -3,31 +3,49 @@ package objc_Foundation @(objc_class="NSDictionary") Dictionary :: struct {using _: Copying(Dictionary)} +@(objc_type=Dictionary, objc_class_name="dictionary") Dictionary_dictionary :: proc() -> ^Dictionary { return msgSend(^Dictionary, Dictionary, "dictionary") } +@(objc_type=Dictionary, objc_class_name="dictionaryWithObject") Dictionary_dictionaryWithObject :: proc(object: ^Object, forKey: ^Object) -> ^Dictionary { return msgSend(^Dictionary, Dictionary, "dictionaryWithObject:forKey:", object, forKey) } +@(objc_type=Dictionary, objc_class_name="dictionaryWithObjects") Dictionary_dictionaryWithObjects :: proc(objects: [^]^Object, forKeys: [^]^Object, count: UInteger) -> ^Dictionary { return msgSend(^Dictionary, Dictionary, "dictionaryWithObjects:forKeys:count", objects, forKeys, count) } +@(objc_type=Dictionary, objc_class_name="alloc") +Dictionary_alloc :: proc() -> ^Dictionary { + return msgSend(^Dictionary, Dictionary, "alloc") +} + +@(objc_type=Dictionary, objc_name="init") +Dictionary_init :: proc(self: ^Dictionary) -> ^Dictionary { + return msgSend(^Dictionary, self, "init") +} + + +@(objc_type=Dictionary, objc_name="initWithObjects") Dictionary_initWithObjects :: proc(self: ^Dictionary, objects: [^]^Object, forKeys: [^]^Object, count: UInteger) -> ^Dictionary { return msgSend(^Dictionary, self, "initWithObjects:forKeys:count", objects, forKeys, count) } +@(objc_type=Dictionary, objc_name="objectForKey") Dictionary_objectForKey :: proc(self: ^Dictionary, key: ^Object) -> ^Object { return msgSend(^Dictionary, self, "objectForKey:", key) } +@(objc_type=Dictionary, objc_name="count") Dictionary_count :: proc(self: ^Dictionary) -> UInteger { return msgSend(UInteger, self, "count") } +@(objc_type=Dictionary, objc_name="keyEnumerator") Dictionary_keyEnumerator :: proc(self: ^Dictionary, $KeyType: typeid) -> (enumerator: ^Enumerator(KeyType)) { return msgSend(type_of(enumerator), self, "keyEnumerator") } diff --git a/core/sys/darwin/Foundation/NSEnumerator.odin b/core/sys/darwin/Foundation/NSEnumerator.odin index b6adf2b98..8a5a32e69 100644 --- a/core/sys/darwin/Foundation/NSEnumerator.odin +++ b/core/sys/darwin/Foundation/NSEnumerator.odin @@ -18,6 +18,19 @@ Enumerator :: struct($T: typeid) where intrinsics.type_is_pointer(T), intrinsics using _: FastEnumeration, } + +@(objc_type=FastEnumeration, objc_class_name="alloc") +FastEnumeration_alloc :: proc() -> ^FastEnumeration { + return msgSend(^FastEnumeration, FastEnumeration, "alloc") +} + +@(objc_type=FastEnumeration, objc_name="init") +FastEnumeration_init :: proc(self: ^FastEnumeration) -> ^FastEnumeration { + return msgSend(^FastEnumeration, self, "init") +} + + +@(objc_type=FastEnumeration, objc_name="countByEnumerating") FastEnumeration_countByEnumerating :: proc(self: ^FastEnumeration, state: ^FastEnumerationState, buffer: [^]^Object, len: UInteger) -> UInteger { return msgSend(UInteger, self, "countByEnumeratingWithState:objects:count:", state, buffer, len) } @@ -26,7 +39,7 @@ Enumerator_nextObject :: proc(self: ^$E/Enumerator($T)) -> T { return msgSend(T, self, "nextObject") } -Enumerator_allObjects :: proc(self: ^$E/Enumerator($T)) -> (all: Array(T)) { +Enumerator_allObjects :: proc(self: ^$E/Enumerator($T)) -> (all: ^Array) { return msgSend(type_of(all), self, "allObjects") } diff --git a/core/sys/darwin/Foundation/NSError.odin b/core/sys/darwin/Foundation/NSError.odin index aebf01035..bff0088e9 100644 --- a/core/sys/darwin/Foundation/NSError.odin +++ b/core/sys/darwin/Foundation/NSError.odin @@ -31,38 +31,58 @@ foreign Foundation { @(objc_class="NSError") Error :: struct { using _: Copying(Error) } + +@(objc_type=Error, objc_class_name="alloc") +Error_alloc :: proc() -> ^Error { + return msgSend(^Error, Error, "alloc") +} + +@(objc_type=Error, objc_name="init") +Error_init :: proc(self: ^Error) -> ^Error { + return msgSend(^Error, self, "init") +} + +@(objc_type=Error, objc_class_name="errorWithDomain") Error_errorWithDomain :: proc(domain: ErrorDomain, code: Integer, userInfo: ^Dictionary) -> ^Error { return msgSend(^Error, Error, "errorWithDomain:code:userInfo:", domain, code, userInfo) } +@(objc_type=Error, objc_name="initWithDomain") Error_initWithDomain :: proc(self: ^Error, domain: ErrorDomain, code: Integer, userInfo: ^Dictionary) -> ^Error { return msgSend(^Error, self, "initWithDomain:code:userInfo:", domain, code, userInfo) } +@(objc_type=Error, objc_name="code") Error_code :: proc(self: ^Error) -> Integer { return msgSend(Integer, self, "code") } +@(objc_type=Error, objc_name="domain") Error_domain :: proc(self: ^Error) -> ErrorDomain { return msgSend(ErrorDomain, self, "domain") } +@(objc_type=Error, objc_name="userInfo") Error_userInfo :: proc(self: ^Error) -> ^Dictionary { return msgSend(^Dictionary, self, "userInfo") } +@(objc_type=Error, objc_name="localizedDescription") Error_localizedDescription :: proc(self: ^Error) -> ^String { return msgSend(^String, self, "localizedDescription") } -Error_localizedRecoveryOptions :: proc(self: ^Error) -> (options: ^Array(^Object)) { +@(objc_type=Error, objc_name="localizedRecoveryOptions") +Error_localizedRecoveryOptions :: proc(self: ^Error) -> (options: ^Array) { return msgSend(type_of(options), self, "localizedRecoveryOptions") } +@(objc_type=Error, objc_name="localizedRecoverySuggestion") Error_localizedRecoverySuggestion :: proc(self: ^Error) -> ^String { return msgSend(^String, self, "localizedRecoverySuggestion") } +@(objc_type=Error, objc_name="localizedFailureReason") Error_localizedFailureReason :: proc(self: ^Error) -> ^String { return msgSend(^String, self, "localizedFailureReason") } \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSLock.odin b/core/sys/darwin/Foundation/NSLock.odin index 0e76dfc62..3bcc06eab 100644 --- a/core/sys/darwin/Foundation/NSLock.odin +++ b/core/sys/darwin/Foundation/NSLock.odin @@ -12,18 +12,42 @@ Locking_unlock :: proc(self: ^Locking($T)) { @(objc_class="NSCondition") Condition :: struct {using _: Locking(Condition) } + +@(objc_type=Condition, objc_class_name="alloc") +Condition_alloc :: proc() -> ^Condition { + return msgSend(^Condition, Condition, "alloc") +} + +@(objc_type=Condition, objc_name="init") +Condition_init :: proc(self: ^Condition) -> ^Condition { + return msgSend(^Condition, self, "init") +} + +@(objc_type=Condition, objc_name="wait") Condition_wait :: proc(self: ^Condition) { msgSend(nil, self, "wait") } +@(objc_type=Condition, objc_name="waitUntilDate") Condition_waitUntilDate :: proc(self: ^Condition, limit: ^Date) -> BOOL { return msgSend(BOOL, self, "waitUntilDate:", limit) } +@(objc_type=Condition, objc_name="signal") Condition_signal :: proc(self: ^Condition) { msgSend(nil, self, "signal") } +@(objc_type=Condition, objc_name="broadcast") Condition_broadcast :: proc(self: ^Condition) { msgSend(nil, self, "broadcast") +} + +@(objc_type=Condition, objc_name="lock") +Condition_lock :: proc(self: ^Condition) { + msgSend(nil, self, "lock") +} +@(objc_type=Condition, objc_name="unlock") +Condition_unlock :: proc(self: ^Condition) { + msgSend(nil, self, "unlock") } \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSNotification.odin b/core/sys/darwin/Foundation/NSNotification.odin index fa9160cc8..d8b142e53 100644 --- a/core/sys/darwin/Foundation/NSNotification.odin +++ b/core/sys/darwin/Foundation/NSNotification.odin @@ -3,14 +3,29 @@ package objc_Foundation @(objc_class="NSNotification") Notification :: struct{using _: Object} + +@(objc_type=Notification, objc_class_name="alloc") +Notification_alloc :: proc() -> ^Notification { + return msgSend(^Notification, Notification, "alloc") +} + +@(objc_type=Notification, objc_name="init") +Notification_init :: proc(self: ^Notification) -> ^Notification { + return msgSend(^Notification, self, "init") +} + + +@(objc_type=Notification, objc_name="name") Notification_name :: proc(self: ^Notification) -> ^String { return msgSend(^String, self, "name") } +@(objc_type=Notification, objc_name="object") Notification_object :: proc(self: ^Notification) -> ^Object { return msgSend(^Object, self, "object") } +@(objc_type=Notification, objc_name="userInfo") Notification_userInfo :: proc(self: ^Notification) -> ^Dictionary { return msgSend(^Dictionary, self, "userInfo") } \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSNumber.odin b/core/sys/darwin/Foundation/NSNumber.odin index 2630e6daa..f77b0866a 100644 --- a/core/sys/darwin/Foundation/NSNumber.odin +++ b/core/sys/darwin/Foundation/NSNumber.odin @@ -8,35 +8,53 @@ import "core:c" @(objc_class="NSValue") Value :: struct{using _: Copying(Value)} +@(objc_type=Value, objc_class_name="alloc") +Value_alloc :: proc() -> ^Value { + return msgSend(^Value, Value, "alloc") +} + +@(objc_type=Value, objc_name="init") +Value_init :: proc(self: ^Value) -> ^Value { + return msgSend(^Value, self, "init") +} + +@(objc_type=Value, objc_class_name="valueWithBytes") Value_valueWithBytes :: proc(value: rawptr, type: cstring) -> ^Value { return msgSend(^Value, Value, "valueWithBytes:objCType:", value, type) } +@(objc_type=Value, objc_class_name="valueWithPointer") Value_valueWithPointer :: proc(pointer: rawptr) -> ^Value { return msgSend(^Value, Value, "valueWithPointer:", pointer) } +@(objc_type=Value, objc_name="initWithBytes") Value_initWithBytes :: proc(self: ^Value, value: rawptr, type: cstring) -> ^Value { return msgSend(^Value, self, "initWithBytes:objCType:", value, type) } -Value_initWithCoder :: proc(coder: ^Coder) -> ^Value { - return msgSend(^Value, Value, "initWithCoder:", coder) +@(objc_type=Value, objc_name="initWithCoder") +Value_initWithCoder :: proc(self: ^Value, coder: ^Coder) -> ^Value { + return msgSend(^Value, self, "initWithCoder:", coder) } +@(objc_type=Value, objc_name="getValue") Value_getValue :: proc(self: ^Value, value: rawptr, size: UInteger) { msgSend(nil, self, "getValue:size:", value, size) } +@(objc_type=Value, objc_name="objCType") Value_objCType :: proc(self: ^Value) -> cstring { return msgSend(cstring, self, "objCType") } +@(objc_type=Value, objc_name="isEqualToValue") Value_isEqualToValue :: proc(self, other: ^Value) -> BOOL { return msgSend(BOOL, self, "isEqualToValue:", other) } +@(objc_type=Value, objc_name="pointerValue") Value_pointerValue :: proc(self: ^Value) -> rawptr { return msgSend(rawptr, self, "pointerValue") } @@ -46,19 +64,29 @@ Value_pointerValue :: proc(self: ^Value) -> rawptr { Number :: struct{using _: Copying(Number), using _: Value} -Number_numberWithI8 :: proc(value: i8) -> ^Number { return msgSend(^Number, Number, "numberWithChar:", value) } -Number_numberWithU8 :: proc(value: u8) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedChar:", value) } -Number_numberWithI16 :: proc(value: i16) -> ^Number { return msgSend(^Number, Number, "numberWithShort:", value) } -Number_numberWithU16 :: proc(value: u16) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedShort:", value) } -Number_numberWithI32 :: proc(value: i32) -> ^Number { return msgSend(^Number, Number, "numberWithInt:", value) } -Number_numberWithU32 :: proc(value: u32) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedInt:", value) } -Number_numberWithInt :: proc(value: int) -> ^Number { return msgSend(^Number, Number, "numberWithLong:", value) } -Number_numberWithUint :: proc(value: uint) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedLong:", value) } -Number_numberWithU64 :: proc(value: u64) -> ^Number { return msgSend(^Number, Number, "numberWithLongLong:", value) } -Number_numberWithI64 :: proc(value: i64) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedLongLong:", value) } -Number_numberWithF32 :: proc(value: f32) -> ^Number { return msgSend(^Number, Number, "numberWithFloat:", value) } -Number_numberWithF64 :: proc(value: f64) -> ^Number { return msgSend(^Number, Number, "numberWithDouble:", value) } -Number_numberWithBool :: proc(value: BOOL) -> ^Number { return msgSend(^Number, Number, "numberWithBool:", value) } +@(objc_type=Number, objc_class_name="alloc") +Number_alloc :: proc() -> ^Number { + return msgSend(^Number, Number, "alloc") +} + +@(objc_type=Number, objc_name="init") +Number_init :: proc(self: ^Number) -> ^Number { + return msgSend(^Number, self, "init") +} + +@(objc_type=Number, objc_class_name="numberWithI8") Number_numberWithI8 :: proc(value: i8) -> ^Number { return msgSend(^Number, Number, "numberWithChar:", value) } +@(objc_type=Number, objc_class_name="numberWithU8") Number_numberWithU8 :: proc(value: u8) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedChar:", value) } +@(objc_type=Number, objc_class_name="numberWithI16") Number_numberWithI16 :: proc(value: i16) -> ^Number { return msgSend(^Number, Number, "numberWithShort:", value) } +@(objc_type=Number, objc_class_name="numberWithU16") Number_numberWithU16 :: proc(value: u16) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedShort:", value) } +@(objc_type=Number, objc_class_name="numberWithI32") Number_numberWithI32 :: proc(value: i32) -> ^Number { return msgSend(^Number, Number, "numberWithInt:", value) } +@(objc_type=Number, objc_class_name="numberWithU32") Number_numberWithU32 :: proc(value: u32) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedInt:", value) } +@(objc_type=Number, objc_class_name="numberWithInt") Number_numberWithInt :: proc(value: int) -> ^Number { return msgSend(^Number, Number, "numberWithLong:", value) } +@(objc_type=Number, objc_class_name="numberWithUint") Number_numberWithUint :: proc(value: uint) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedLong:", value) } +@(objc_type=Number, objc_class_name="numberWithU64") Number_numberWithU64 :: proc(value: u64) -> ^Number { return msgSend(^Number, Number, "numberWithLongLong:", value) } +@(objc_type=Number, objc_class_name="numberWithI64") Number_numberWithI64 :: proc(value: i64) -> ^Number { return msgSend(^Number, Number, "numberWithUnsignedLongLong:", value) } +@(objc_type=Number, objc_class_name="numberWithF32") Number_numberWithF32 :: proc(value: f32) -> ^Number { return msgSend(^Number, Number, "numberWithFloat:", value) } +@(objc_type=Number, objc_class_name="numberWithF64") Number_numberWithF64 :: proc(value: f64) -> ^Number { return msgSend(^Number, Number, "numberWithDouble:", value) } +@(objc_type=Number, objc_class_name="numberWithBool") Number_numberWithBool :: proc(value: BOOL) -> ^Number { return msgSend(^Number, Number, "numberWithBool:", value) } Number_number :: proc{ Number_numberWithI8, @@ -76,62 +104,49 @@ Number_number :: proc{ Number_numberWithBool, } -Number_initWithI8 :: proc(self: ^Number, value: i8) -> ^Number { return msgSend(^Number, self, "initWithChar:", value) } -Number_initWithU8 :: proc(self: ^Number, value: u8) -> ^Number { return msgSend(^Number, self, "initWithUnsignedChar:", value) } -Number_initWithI16 :: proc(self: ^Number, value: i16) -> ^Number { return msgSend(^Number, self, "initWithShort:", value) } -Number_initWithU16 :: proc(self: ^Number, value: u16) -> ^Number { return msgSend(^Number, self, "initWithUnsignedShort:", value) } -Number_initWithI32 :: proc(self: ^Number, value: i32) -> ^Number { return msgSend(^Number, self, "initWithInt:", value) } -Number_initWithU32 :: proc(self: ^Number, value: u32) -> ^Number { return msgSend(^Number, self, "initWithUnsignedInt:", value) } -Number_initWithInt :: proc(self: ^Number, value: int) -> ^Number { return msgSend(^Number, self, "initWithLong:", value) } -Number_initWithUint :: proc(self: ^Number, value: uint) -> ^Number { return msgSend(^Number, self, "initWithUnsignedLong:", value) } -Number_initWithU64 :: proc(self: ^Number, value: u64) -> ^Number { return msgSend(^Number, self, "initWithLongLong:", value) } -Number_initWithI64 :: proc(self: ^Number, value: i64) -> ^Number { return msgSend(^Number, self, "initWithUnsignedLongLong:", value) } -Number_initWithF32 :: proc(self: ^Number, value: f32) -> ^Number { return msgSend(^Number, self, "initWithFloat:", value) } -Number_initWithF64 :: proc(self: ^Number, value: f64) -> ^Number { return msgSend(^Number, self, "initWithDouble:", value) } -Number_initWithBool :: proc(self: ^Number, value: BOOL) -> ^Number { return msgSend(^Number, self, "initWithBool:", value) } +@(objc_type=Number, objc_name="initWithI8") Number_initWithI8 :: proc(self: ^Number, value: i8) -> ^Number { return msgSend(^Number, self, "initWithChar:", value) } +@(objc_type=Number, objc_name="initWithU8") Number_initWithU8 :: proc(self: ^Number, value: u8) -> ^Number { return msgSend(^Number, self, "initWithUnsignedChar:", value) } +@(objc_type=Number, objc_name="initWithI16") Number_initWithI16 :: proc(self: ^Number, value: i16) -> ^Number { return msgSend(^Number, self, "initWithShort:", value) } +@(objc_type=Number, objc_name="initWithU16") Number_initWithU16 :: proc(self: ^Number, value: u16) -> ^Number { return msgSend(^Number, self, "initWithUnsignedShort:", value) } +@(objc_type=Number, objc_name="initWithI32") Number_initWithI32 :: proc(self: ^Number, value: i32) -> ^Number { return msgSend(^Number, self, "initWithInt:", value) } +@(objc_type=Number, objc_name="initWithU32") Number_initWithU32 :: proc(self: ^Number, value: u32) -> ^Number { return msgSend(^Number, self, "initWithUnsignedInt:", value) } +@(objc_type=Number, objc_name="initWithInt") Number_initWithInt :: proc(self: ^Number, value: int) -> ^Number { return msgSend(^Number, self, "initWithLong:", value) } +@(objc_type=Number, objc_name="initWithUint") Number_initWithUint :: proc(self: ^Number, value: uint) -> ^Number { return msgSend(^Number, self, "initWithUnsignedLong:", value) } +@(objc_type=Number, objc_name="initWithU64") Number_initWithU64 :: proc(self: ^Number, value: u64) -> ^Number { return msgSend(^Number, self, "initWithLongLong:", value) } +@(objc_type=Number, objc_name="initWithI64") Number_initWithI64 :: proc(self: ^Number, value: i64) -> ^Number { return msgSend(^Number, self, "initWithUnsignedLongLong:", value) } +@(objc_type=Number, objc_name="initWithF32") Number_initWithF32 :: proc(self: ^Number, value: f32) -> ^Number { return msgSend(^Number, self, "initWithFloat:", value) } +@(objc_type=Number, objc_name="initWithF64") Number_initWithF64 :: proc(self: ^Number, value: f64) -> ^Number { return msgSend(^Number, self, "initWithDouble:", value) } +@(objc_type=Number, objc_name="initWithBool") Number_initWithBool :: proc(self: ^Number, value: BOOL) -> ^Number { return msgSend(^Number, self, "initWithBool:", value) } -Number_init :: proc{ - Number_initWithI8, - Number_initWithU8, - Number_initWithI16, - Number_initWithU16, - Number_initWithI32, - Number_initWithU32, - Number_initWithInt, - Number_initWithUint, - Number_initWithU64, - Number_initWithI64, - Number_initWithF32, - Number_initWithF64, - Number_initWithBool, +@(objc_type=Number, objc_name="i8Value") Number_i8Value :: proc(self: ^Number) -> i8 { return msgSend(i8, self, "charValue") } +@(objc_type=Number, objc_name="u8Value") Number_u8Value :: proc(self: ^Number) -> u8 { return msgSend(u8, self, "unsignedCharValue") } +@(objc_type=Number, objc_name="i16Value") Number_i16Value :: proc(self: ^Number) -> i16 { return msgSend(i16, self, "shortValue") } +@(objc_type=Number, objc_name="u16Value") Number_u16Value :: proc(self: ^Number) -> u16 { return msgSend(u16, self, "unsignedShortValue") } +@(objc_type=Number, objc_name="i32Value") Number_i32Value :: proc(self: ^Number) -> i32 { return msgSend(i32, self, "intValue") } +@(objc_type=Number, objc_name="u32Value") Number_u32Value :: proc(self: ^Number) -> u32 { return msgSend(u32, self, "unsignedIntValue") } +@(objc_type=Number, objc_name="intValue") Number_intValue :: proc(self: ^Number) -> int { return msgSend(int, self, "longValue") } +@(objc_type=Number, objc_name="uintValue") Number_uintValue :: proc(self: ^Number) -> uint { return msgSend(uint, self, "unsignedLongValue") } +@(objc_type=Number, objc_name="u64Value") Number_u64Value :: proc(self: ^Number) -> u64 { return msgSend(u64, self, "longLongValue") } +@(objc_type=Number, objc_name="i64Value") Number_i64Value :: proc(self: ^Number) -> i64 { return msgSend(i64, self, "unsignedLongLongValue") } +@(objc_type=Number, objc_name="f32Value") Number_f32Value :: proc(self: ^Number) -> f32 { return msgSend(f32, self, "floatValue") } +@(objc_type=Number, objc_name="f64Value") Number_f64Value :: proc(self: ^Number) -> f64 { return msgSend(f64, self, "doubleValue") } +@(objc_type=Number, objc_name="boolValue") Number_boolValue :: proc(self: ^Number) -> BOOL { return msgSend(BOOL, self, "boolValue") } +@(objc_type=Number, objc_name="integerValue") Number_integerValue :: proc(self: ^Number) -> Integer { return msgSend(Integer, self, "integerValue") } +@(objc_type=Number, objc_name="uintegerValue") Number_uintegerValue :: proc(self: ^Number) -> UInteger { return msgSend(UInteger, self, "unsignedIntegerValue") } +@(objc_type=Number, objc_name="stringValue") Number_stringValue :: proc(self: ^Number) -> ^String { return msgSend(^String, self, "stringValue") } + +@(objc_type=Number, objc_name="compare") +Number_compare :: proc(self, other: ^Number) -> ComparisonResult { + return msgSend(ComparisonResult, self, "compare:", other) } -Number_i8Value :: proc(self: ^Number) -> i8 { return msgSend(i8, self, "charValue") } -Number_u8Value :: proc(self: ^Number) -> u8 { return msgSend(u8, self, "unsignedCharValue") } -Number_i16Value :: proc(self: ^Number) -> i16 { return msgSend(i16, self, "shortValue") } -Number_u16Value :: proc(self: ^Number) -> u16 { return msgSend(u16, self, "unsignedShortValue") } -Number_i32Value :: proc(self: ^Number) -> i32 { return msgSend(i32, self, "intValue") } -Number_u32Value :: proc(self: ^Number) -> u32 { return msgSend(u32, self, "unsignedIntValue") } -Number_intValue :: proc(self: ^Number) -> int { return msgSend(int, self, "longValue") } -Number_uintValue :: proc(self: ^Number) -> uint { return msgSend(uint, self, "unsignedLongValue") } -Number_u64Value :: proc(self: ^Number) -> u64 { return msgSend(u64, self, "longLongValue") } -Number_i64Value :: proc(self: ^Number) -> i64 { return msgSend(i64, self, "unsignedLongLongValue") } -Number_f32Value :: proc(self: ^Number) -> f32 { return msgSend(f32, self, "floatValue") } -Number_f64Value :: proc(self: ^Number) -> f64 { return msgSend(f64, self, "doubleValue") } -Number_boolValue :: proc(self: ^Number) -> BOOL { return msgSend(BOOL, self, "boolValue") } -Number_integerValue :: proc(self: ^Number) -> Integer { return msgSend(Integer, self, "integerValue") } -Number_uintegerValue :: proc(self: ^Number) -> UInteger { return msgSend(UInteger, self, "unsignedIntegerValue") } -Number_stringValue :: proc(self: ^Number) -> ^String { return msgSend(^String, self, "stringValue") } - -Number_compare :: proc(a, b: ^Number) -> ComparisonResult { - return msgSend(ComparisonResult, a, "compare:", b) -} - -Number_isEqualToNumber :: proc(a, b: ^Number) -> BOOL { - return msgSend(BOOL, a, "isEqualToNumber:", b) +@(objc_type=Number, objc_name="isEqualToNumber") +Number_isEqualToNumber :: proc(self, other: ^Number) -> BOOL { + return msgSend(BOOL, self, "isEqualToNumber:", other) } +@(objc_type=Number, objc_name="descriptionWithLocale") Number_descriptionWithLocale :: proc(self: ^Number, locale: ^Object) -> ^String { return msgSend(^String, self, "descriptionWithLocale:", locale) } \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSObject.odin b/core/sys/darwin/Foundation/NSObject.odin index d61f8e947..cd0919edd 100644 --- a/core/sys/darwin/Foundation/NSObject.odin +++ b/core/sys/darwin/Foundation/NSObject.odin @@ -27,37 +27,45 @@ alloc :: proc($T: typeid) -> ^T where intrinsics.type_is_subtype_of(T, Object) { init :: proc(self: ^$T) -> ^T where intrinsics.type_is_subtype_of(T, Object) { return msgSend(^T, self, "init") } -retain :: proc(self: ^$T) -> ^T where intrinsics.type_is_subtype_of(T, Object) { - return msgSend(^T, self, "retain") -} -release :: proc(self: ^$T) where intrinsics.type_is_subtype_of(T, Object) { - msgSend(nil, self, "release") -} -autorelease :: proc(self: ^$T) where intrinsics.type_is_subtype_of(T, Object) { - msgSend(nil, self, "autorelease") -} -retainCount :: proc(self: ^$T) -> UInteger where intrinsics.type_is_subtype_of(T, Object) { - return msgSend(UInteger, self, "retainCount") -} - - copy :: proc(self: ^Copying($T)) -> ^T where intrinsics.type_is_subtype_of(T, Object) { return msgSend(^T, self, "copy") } +@(objc_type=Object, objc_name="retain") +retain :: proc(self: ^Object) { + _ = msgSend(^Object, self, "retain") +} +@(objc_type=Object, objc_name="release") +release :: proc(self: ^Object) { + msgSend(nil, self, "release") +} +@(objc_type=Object, objc_name="autorelease") +autorelease :: proc(self: ^Object) { + msgSend(nil, self, "autorelease") +} +@(objc_type=Object, objc_name="retainCount") +retainCount :: proc(self: ^Object) -> UInteger { + return msgSend(UInteger, self, "retainCount") +} + + +@(objc_type=Object, objc_name="hash") hash :: proc(self: ^Object) -> UInteger { return msgSend(UInteger, self, "hash") } +@(objc_type=Object, objc_name="isEqual") isEqual :: proc(self, pObject: ^Object) -> BOOL { return msgSend(BOOL, self, "isEqual:", pObject) } +@(objc_type=Object, objc_name="description") description :: proc(self: ^Object) -> ^String { return msgSend(^String, self, "description") } +@(objc_type=Object, objc_name="debugDescription") debugDescription :: proc(self: ^Object) -> ^String { if msgSendSafeCheck(self, intrinsics.objc_selector_name("debugDescription")) { return msgSend(^String, self, "debugDescription") diff --git a/core/sys/darwin/Foundation/NSString.odin b/core/sys/darwin/Foundation/NSString.odin index 86c8cabea..06dbc27a3 100644 --- a/core/sys/darwin/Foundation/NSString.odin +++ b/core/sys/darwin/Foundation/NSString.odin @@ -59,54 +59,78 @@ MakeConstantString :: proc "c" (#const c: cstring) -> ^String { } +@(objc_type=String, objc_class_name="alloc") +String_alloc :: proc() -> ^String { + return msgSend(^String, String, "alloc") +} + +@(objc_type=String, objc_name="init") +String_init :: proc(self: ^String) -> ^String { + return msgSend(^String, self, "init") +} + + +@(objc_type=String, objc_name="initWithString") String_initWithString :: proc(self: ^String, other: ^String) -> ^String { return msgSend(^String, self, "initWithString:", other) } +@(objc_type=String, objc_name="initWithCString") String_initWithCString :: proc(self: ^String, pString: cstring, encoding: StringEncoding) -> ^String { return msgSend(^String, self, "initWithCstring:encoding:", pString, encoding) } +@(objc_type=String, objc_name="initWithBytesNoCopy") String_initWithBytesNoCopy :: proc(self: ^String, pBytes: rawptr, length: UInteger, encoding: StringEncoding, freeWhenDone: bool) -> ^String { return msgSend(^String, self, "initWithBytesNoCopy:length:encoding:freeWhenDone:", pBytes, length, encoding, freeWhenDone) } +@(objc_type=String, objc_name="initWithOdinString") String_initWithOdinString :: proc(self: ^String, str: string) -> ^String { return String_initWithBytesNoCopy(self, raw_data(str), UInteger(len(str)), .UTF8, false) } +@(objc_type=String, objc_name="characterAtIndex") String_characterAtIndex :: proc(self: ^String, index: UInteger) -> unichar { return msgSend(unichar, self, "characterAtIndex:", index) } +@(objc_type=String, objc_name="length") String_length :: proc(self: ^String) -> UInteger { return msgSend(UInteger, self, "length") } +@(objc_type=String, objc_name="cStringUsingEncoding") String_cStringUsingEncoding :: proc(self: ^String, encoding: StringEncoding) -> cstring { return msgSend(cstring, self, "cStringUsingEncoding:", encoding) } +@(objc_type=String, objc_name="UTF8String") String_UTF8String :: proc(self: ^String) -> cstring { return msgSend(cstring, self, "UTF8String") } +@(objc_type=String, objc_name="OdinString") String_OdinString :: proc(self: ^String) -> string { return string(String_UTF8String(self)) } +@(objc_type=String, objc_name="maximumLengthOfBytesUsingEncoding") String_maximumLengthOfBytesUsingEncoding :: proc(self: ^String, encoding: StringEncoding) -> UInteger { return msgSend(UInteger, self, "maximumLengthOfBytesUsingEncoding:", encoding) } +@(objc_type=String, objc_name="lengthOfBytesUsingEncoding") String_lengthOfBytesUsingEncoding :: proc(self: ^String, encoding: StringEncoding) -> UInteger { return msgSend(UInteger, self, "lengthOfBytesUsingEncoding:", encoding) } +@(objc_type=String, objc_name="isEqualToString") String_isEqualToString :: proc(self, other: ^String) -> BOOL { return msgSend(BOOL, self, "isEqualToString:", other) } +@(objc_type=String, objc_name="rangeOfString") String_rangeOfString :: proc(self, other: ^String, options: StringCompareOptions) -> Range { return msgSend(Range, self, "rangeOfString:options:", other, options) } \ No newline at end of file diff --git a/core/sys/darwin/Foundation/NSURL.odin b/core/sys/darwin/Foundation/NSURL.odin index f4f776130..42edf91c0 100644 --- a/core/sys/darwin/Foundation/NSURL.odin +++ b/core/sys/darwin/Foundation/NSURL.odin @@ -3,6 +3,18 @@ package objc_Foundation @(objc_class="NSURL") URL :: struct{using _: Copying(URL)} + +@(objc_type=URL, objc_class_name="alloc") +URL_alloc :: proc() -> ^URL { + return msgSend(^URL, URL, "alloc") +} + +@(objc_type=URL, objc_name="init") +URL_init :: proc(self: ^URL) -> ^URL { + return msgSend(^URL, self, "init") +} + + URL_initWithString :: proc(self: ^URL, value: ^String) -> ^URL { return msgSend(^URL, self, "initWithString:", value) } diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index df22d82e2..a9ee5d25f 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -287,15 +287,13 @@ bool check_builtin_objc_procedure(CheckerContext *c, Operand *operand, Ast *call Operand self = {}; check_expr_or_type(c, &self, ce->args[1]); if (self.mode == Addressing_Type) { - if (!internal_check_is_assignable_to(self.type, t_objc_object)) { + if (!is_type_objc_object(self.type)) { gbString t = type_to_string(self.type); error(self.expr, "'%.*s' expected a type or value derived from intrinsics.objc_object, got type %s", LIT(builtin_name), t); gb_string_free(t); return false; } - if (!(self.type->kind == Type_Named && - self.type->Named.type_name != nullptr && - self.type->Named.type_name->TypeName.objc_class_name != "")) { + if (!has_type_got_objc_class_attribute(self.type)) { gbString t = type_to_string(self.type); error(self.expr, "'%.*s' expected a named type with the attribute @(obj_class=) , got type %s", LIT(builtin_name), t); gb_string_free(t); @@ -306,7 +304,7 @@ bool check_builtin_objc_procedure(CheckerContext *c, Operand *operand, Ast *call } else if (!is_operand_value(self) || !check_is_assignable_to(c, &self, t_objc_id)) { gbString e = expr_to_string(self.expr); gbString t = type_to_string(self.type); - error(self.expr, "'%.*s'3 expected a type or value derived from intrinsics.objc_object, got '%s' of type %s %d", LIT(builtin_name), e, t, self.type->kind); + error(self.expr, "'%.*s' expected a type or value derived from intrinsics.objc_object, got '%s' of type %s %d", LIT(builtin_name), e, t, self.type->kind); gb_string_free(t); gb_string_free(e); return false; diff --git a/src/check_decl.cpp b/src/check_decl.cpp index 243dbbbc6..1d30088d6 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -340,6 +340,10 @@ void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, Type *def) check_decl_attributes(ctx, decl->attributes, type_decl_attribute, &ac); if (e->kind == Entity_TypeName && ac.objc_class != "") { e->TypeName.objc_class_name = ac.objc_class; + + if (type_size_of(e->type) > 0) { + error(e->token, "@(objc_class) marked type must be of zero size"); + } } } @@ -822,6 +826,65 @@ void check_proc_decl(CheckerContext *ctx, Entity *e, DeclInfo *d) { } e->Procedure.optimization_mode = cast(ProcedureOptimizationMode)ac.optimization_mode; + if (ac.objc_name.len || ac.objc_class_name.len || ac.objc_type) { + if (ac.objc_class_name.len && ac.objc_name.len) { + error(e->token, "@(objc_class_name) and @(objc_name) may not be allowed at the same time"); + } else if (ac.objc_type == nullptr) { + if (ac.objc_name.len) { + error(e->token, "@(objc_name) requires that @(objc_type) to be set"); + } else { + error(e->token, "@(objc_class_name) requires that @(objc_type) to be set"); + } + } else { + Type *t = ac.objc_type; + if (t->kind == Type_Named) { + Entity *tn = t->Named.type_name; + + GB_ASSERT(tn->kind == Entity_TypeName); + + if (tn->scope != e->scope) { + error(e->token, "@(objc_name) and @(objc_class_name) attributes may only be applied to procedures and types within the same scope"); + } else { + mutex_lock(&global_type_name_objc_metadata_mutex); + defer (mutex_unlock(&global_type_name_objc_metadata_mutex)); + + if (!tn->TypeName.objc_metadata) { + tn->TypeName.objc_metadata = create_type_name_obj_c_metadata(); + } + auto *md = tn->TypeName.objc_metadata; + mutex_lock(md->mutex); + defer (mutex_unlock(md->mutex)); + + if (ac.objc_name.len) { + bool ok = true; + for (TypeNameObjCMetadataEntry const &entry : md->value_entries) { + if (entry.name == ac.objc_name) { + error(e->token, "Previous declaration of @(objc_name=\"%.*s\")", LIT(ac.objc_name)); + ok = false; + break; + } + } + if (ok) { + array_add(&md->value_entries, TypeNameObjCMetadataEntry{ac.objc_name, e}); + } + } else { + bool ok = true; + for (TypeNameObjCMetadataEntry const &entry : md->type_entries) { + if (entry.name == ac.objc_class_name) { + error(e->token, "Previous declaration of @(objc_class_name=\"%.*s\")", LIT(ac.objc_class_name)); + ok = false; + break; + } + } + if (ok) { + array_add(&md->type_entries, TypeNameObjCMetadataEntry{ac.objc_class_name, e}); + } + } + } + } + } + } + switch (e->Procedure.optimization_mode) { case ProcedureOptimizationMode_None: diff --git a/src/check_type.cpp b/src/check_type.cpp index e1a0df7e6..32340070e 100644 --- a/src/check_type.cpp +++ b/src/check_type.cpp @@ -325,6 +325,8 @@ void add_polymorphic_record_entity(CheckerContext *ctx, Ast *node, Type *named_t named_type->Named.type_name = e; GB_ASSERT(original_type->kind == Type_Named); e->TypeName.objc_class_name = original_type->Named.type_name->TypeName.objc_class_name; + // TODO(bill): Is this even correct? Or should the metadata be copied? + e->TypeName.objc_metadata = original_type->Named.type_name->TypeName.objc_metadata; mutex_lock(&ctx->info->gen_types_mutex); auto *found_gen_types = map_get(&ctx->info->gen_types, original_type); diff --git a/src/checker.cpp b/src/checker.cpp index 2ab487592..0dd36987e 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -4,7 +4,7 @@ void check_expr(CheckerContext *c, Operand *operand, Ast *expression); void check_expr_or_type(CheckerContext *c, Operand *operand, Ast *expression, Type *type_hint=nullptr); void add_comparison_procedures_for_fields(CheckerContext *c, Type *t); - +Type *check_type(CheckerContext *ctx, Ast *e); bool is_operand_value(Operand o) { switch (o.mode) { @@ -2740,6 +2740,14 @@ ExactValue check_decl_attribute_value(CheckerContext *c, Ast *value) { return ev; } +Type *check_decl_attribute_type(CheckerContext *c, Ast *value) { + if (value != nullptr) { + return check_type(c, value); + } + return nullptr; +} + + #define ATTRIBUTE_USER_TAG_NAME "tag" @@ -3039,6 +3047,46 @@ DECL_ATTRIBUTE_PROC(proc_decl_attribute) { error(elem, "Expected a string for '%.*s'", LIT(name)); } return true; + } else if (name == "objc_name") { + ExactValue ev = check_decl_attribute_value(c, value); + if (ev.kind == ExactValue_String) { + if (string_is_valid_identifier(ev.value_string)) { + ac->objc_name = ev.value_string; + } else { + error(elem, "Invalid identifier for '%.*s', got '%.*s'", LIT(name), LIT(ev.value_string)); + } + } else { + error(elem, "Expected a string value for '%.*s'", LIT(name)); + } + return true; + } else if (name == "objc_class_name") { + ExactValue ev = check_decl_attribute_value(c, value); + if (ev.kind == ExactValue_String) { + if (string_is_valid_identifier(ev.value_string)) { + ac->objc_class_name = ev.value_string; + } else { + error(elem, "Invalid identifier for '%.*s', got '%.*s'", LIT(name), LIT(ev.value_string)); + } + } else { + error(elem, "Expected a string value for '%.*s'", LIT(name)); + } + return true; + } else if (name == "objc_type") { + if (value == nullptr) { + error(elem, "Expected a type for '%.*s'", LIT(name)); + } else { + Type *objc_type = check_type(c, value); + if (objc_type != nullptr) { + if (!has_type_got_objc_class_attribute(objc_type)) { + gbString t = type_to_string(objc_type); + error(value, "'%.*s' expected a named type with the attribute @(obj_class=), got type %s", LIT(name), t); + gb_string_free(t); + } else { + ac->objc_type = objc_type; + } + } + } + return true; } return false; } diff --git a/src/checker.hpp b/src/checker.hpp index b812e10a4..38c8d32f6 100644 --- a/src/checker.hpp +++ b/src/checker.hpp @@ -107,7 +107,6 @@ struct AttributeContext { String thread_local_model; String deprecated_message; String warning_message; - String objc_class; DeferredProcedure deferred_procedure; bool is_export : 1; bool is_static : 1; @@ -119,6 +118,11 @@ struct AttributeContext { bool init : 1; bool set_cold : 1; u32 optimization_mode; // ProcedureOptimizationMode + + String objc_class; + String objc_name; + String objc_class_name; + Type * objc_type; }; AttributeContext make_attribute_context(String link_prefix) { diff --git a/src/entity.cpp b/src/entity.cpp index 4d5b3b9e1..df8ee3faa 100644 --- a/src/entity.cpp +++ b/src/entity.cpp @@ -122,6 +122,28 @@ enum ProcedureOptimizationMode : u32 { ProcedureOptimizationMode_Speed, }; + +BlockingMutex global_type_name_objc_metadata_mutex; + +struct TypeNameObjCMetadataEntry { + String name; + Entity *entity; +}; +struct TypeNameObjCMetadata { + BlockingMutex *mutex; + Array type_entries; + Array value_entries; +}; + +TypeNameObjCMetadata *create_type_name_obj_c_metadata() { + TypeNameObjCMetadata *md = gb_alloc_item(permanent_allocator(), TypeNameObjCMetadata); + md->mutex = gb_alloc_item(permanent_allocator(), BlockingMutex); + mutex_init(md->mutex); + array_init(&md->type_entries, heap_allocator()); + array_init(&md->value_entries, heap_allocator()); + return md; +} + // An Entity is a named "thing" in the language struct Entity { EntityKind kind; @@ -187,6 +209,7 @@ struct Entity { String ir_mangled_name; bool is_type_alias; String objc_class_name; + TypeNameObjCMetadata *objc_metadata; } TypeName; struct { u64 tags; diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp index 29a86d116..b2f430cd2 100644 --- a/src/llvm_backend_expr.cpp +++ b/src/llvm_backend_expr.cpp @@ -3320,7 +3320,12 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { Type *type = base_type(tav.type); if (tav.mode == Addressing_Type) { // Addressing_Type - GB_PANIC("Unreachable"); + Selection sel = lookup_field(tav.type, selector, true); + if (sel.pseudo_field) { + GB_ASSERT(sel.entity->kind == Entity_Procedure); + return lb_addr(lb_find_value_from_entity(p->module, sel.entity)); + } + GB_PANIC("Unreachable %.*s", LIT(selector)); } if (se->swizzle_count > 0) { @@ -3347,6 +3352,10 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { Selection sel = lookup_field(type, selector, false); GB_ASSERT(sel.entity != nullptr); + if (sel.pseudo_field) { + GB_ASSERT(sel.entity->kind == Entity_Procedure); + return lb_addr(lb_find_value_from_entity(p->module, sel.entity)); + } { lbAddr addr = lb_build_addr(p, se->expr); diff --git a/src/main.cpp b/src/main.cpp index fe56d451f..bd06193bd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -585,37 +585,6 @@ void usage(String argv0) { print_usage_line(1, "e.g. odin build -help"); } - -bool string_is_valid_identifier(String str) { - if (str.len <= 0) return false; - - isize rune_count = 0; - - isize w = 0; - isize offset = 0; - while (offset < str.len) { - Rune r = 0; - w = utf8_decode(str.text, str.len, &r); - if (r == GB_RUNE_INVALID) { - return false; - } - - if (rune_count == 0) { - if (!rune_is_letter(r)) { - return false; - } - } else { - if (!rune_is_letter(r) && !rune_is_digit(r)) { - return false; - } - } - rune_count += 1; - offset += w; - } - - return true; -} - enum BuildFlagKind { BuildFlag_Invalid, @@ -2447,6 +2416,7 @@ int main(int arg_count, char const **arg_ptr) { virtual_memory_init(); mutex_init(&fullpath_mutex); mutex_init(&hash_exact_value_mutex); + mutex_init(&global_type_name_objc_metadata_mutex); init_string_buffer_memory(); init_string_interner(); diff --git a/src/string.cpp b/src/string.cpp index eb6058f78..bcaf23b9b 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -781,3 +781,34 @@ i32 unquote_string(gbAllocator a, String *s_, u8 quote=0, bool has_carriage_retu return 2; } + + +bool string_is_valid_identifier(String str) { + if (str.len <= 0) return false; + + isize rune_count = 0; + + isize w = 0; + isize offset = 0; + while (offset < str.len) { + Rune r = 0; + w = utf8_decode(str.text, str.len, &r); + if (r == GB_RUNE_INVALID) { + return false; + } + + if (rune_count == 0) { + if (!rune_is_letter(r)) { + return false; + } + } else { + if (!rune_is_letter(r) && !rune_is_digit(r)) { + return false; + } + } + rune_count += 1; + offset += w; + } + + return true; +} diff --git a/src/types.cpp b/src/types.cpp index 024d644a2..78958146b 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -393,6 +393,7 @@ struct Selection { bool indirect; // Set if there was a pointer deref anywhere down the line u8 swizzle_count; // maximum components = 4 u8 swizzle_indices; // 2 bits per component, representing which swizzle index + bool pseudo_field; }; Selection empty_selection = {0}; @@ -2782,6 +2783,7 @@ Selection lookup_field_from_index(Type *type, i64 index) { } Entity *scope_lookup_current(Scope *s, String const &name); +bool has_type_got_objc_class_attribute(Type *t); Selection lookup_field_with_selection(Type *type_, String field_name, bool is_type, Selection sel, bool allow_blank_ident) { GB_ASSERT(type_ != nullptr); @@ -2794,9 +2796,40 @@ Selection lookup_field_with_selection(Type *type_, String field_name, bool is_ty bool is_ptr = type != type_; sel.indirect = sel.indirect || is_ptr; + Type *original_type = type; + type = base_type(type); if (is_type) { + if (has_type_got_objc_class_attribute(original_type) && original_type->kind == Type_Named) { + Entity *e = original_type->Named.type_name; + GB_ASSERT(e->kind == Entity_TypeName); + if (e->TypeName.objc_metadata) { + auto *md = e->TypeName.objc_metadata; + mutex_lock(md->mutex); + defer (mutex_unlock(md->mutex)); + for (TypeNameObjCMetadataEntry const &entry : md->type_entries) { + GB_ASSERT(entry.entity->kind == Entity_Procedure); + if (entry.name == field_name) { + sel.entity = entry.entity; + sel.pseudo_field = true; + return sel; + } + } + } + if (type->kind == Type_Struct) { + for_array(i, type->Struct.fields) { + Entity *f = type->Struct.fields[i]; + if (f->flags&EntityFlag_Using) { + sel = lookup_field_with_selection(f->type, field_name, is_type, sel, allow_blank_ident); + if (sel.entity) { + return sel; + } + } + } + } + } + if (is_type_enum(type)) { // NOTE(bill): These may not have been added yet, so check in case for_array(i, type->Enum.fields) { @@ -2843,6 +2876,24 @@ Selection lookup_field_with_selection(Type *type_, String field_name, bool is_ty } else if (type->kind == Type_Union) { } else if (type->kind == Type_Struct) { + if (has_type_got_objc_class_attribute(original_type) && original_type->kind == Type_Named) { + Entity *e = original_type->Named.type_name; + GB_ASSERT(e->kind == Entity_TypeName); + if (e->TypeName.objc_metadata) { + auto *md = e->TypeName.objc_metadata; + mutex_lock(md->mutex); + defer (mutex_unlock(md->mutex)); + for (TypeNameObjCMetadataEntry const &entry : md->value_entries) { + GB_ASSERT(entry.entity->kind == Entity_Procedure); + if (entry.name == field_name) { + sel.entity = entry.entity; + sel.pseudo_field = true; + return sel; + } + } + } + } + for_array(i, type->Struct.fields) { Entity *f = type->Struct.fields[i]; if (f->kind != Entity_Variable || (f->flags & EntityFlag_Field) == 0) { @@ -3792,6 +3843,17 @@ bool is_type_subtype_of(Type *src, Type *dst) { } +bool has_type_got_objc_class_attribute(Type *t) { + return t->kind == Type_Named && t->Named.type_name != nullptr && t->Named.type_name->TypeName.objc_class_name != ""; +} + + + +bool is_type_objc_object(Type *t) { + bool internal_check_is_assignable_to(Type *src, Type *dst); + + return internal_check_is_assignable_to(t, t_objc_object); +} Type *get_struct_field_type(Type *t, isize index) { t = base_type(type_deref(t)); From acaae1357cf7d9a5b3cd94df123a8942c8290192 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 12 Feb 2022 17:30:32 +0000 Subject: [PATCH 034/190] Update Metal for the full API Methods need better names --- vendor/Metal/MTLAccelerationStructure.odin | 270 - .../Metal/MTLAccelerationStructureTypes.odin | 10 - vendor/Metal/MTLRenderPipeline.odin | 74 - .../Metal/MTLStageInputOutputDescriptor.odin | 76 - vendor/Metal/Metal.odin | 22 - vendor/Metal/MetalClasses.odin | 8076 +++++++++++++++++ vendor/Metal/MetalEnums.odin | 961 ++ vendor/Metal/MetalErrors.odin | 39 + vendor/Metal/MetalTypes.odin | 198 + vendor/Metal/NSBuffer.odin | 5 - vendor/Metal/NSResource.odin | 5 - 11 files changed, 9274 insertions(+), 462 deletions(-) delete mode 100644 vendor/Metal/MTLAccelerationStructure.odin delete mode 100644 vendor/Metal/MTLAccelerationStructureTypes.odin delete mode 100644 vendor/Metal/MTLRenderPipeline.odin delete mode 100644 vendor/Metal/MTLStageInputOutputDescriptor.odin delete mode 100644 vendor/Metal/Metal.odin create mode 100644 vendor/Metal/MetalClasses.odin create mode 100644 vendor/Metal/MetalEnums.odin create mode 100644 vendor/Metal/MetalErrors.odin create mode 100644 vendor/Metal/MetalTypes.odin delete mode 100644 vendor/Metal/NSBuffer.odin delete mode 100644 vendor/Metal/NSResource.odin diff --git a/vendor/Metal/MTLAccelerationStructure.odin b/vendor/Metal/MTLAccelerationStructure.odin deleted file mode 100644 index 342df3d07..000000000 --- a/vendor/Metal/MTLAccelerationStructure.odin +++ /dev/null @@ -1,270 +0,0 @@ -package objc_Metal - -import NS "core:sys/darwin/Foundation" - -AccelerationStructureUsage :: distinct bit_set[AccelerationStructureUsageFlag; NS.UInteger] -AccelerationStructureUsageFlag :: enum NS.UInteger { - Refit = 0, - PreferFastBuild = 1, - ExtendedLimits = 2, -} -AccelerationStructureUsageNone :: AccelerationStructureUsage{} - -AccelerationStructureInstanceOptions :: distinct bit_set[AccelerationStructureInstanceOption; u32] -AccelerationStructureInstanceOption :: enum u32 { - DisableTriangleCulling = 0, - TriangleFrontFacingWindingCounterClockwise = 1, - Opaque = 2, - NonOpaque = 3, -} -AccelerationStructureInstanceOptionNone :: AccelerationStructureInstanceOptions{} - -MotionBorderMode :: enum u32 { - Clamp = 0, - Vanish = 1, -} - -AccelerationStructureInstanceDescriptor :: struct #packed { - transformationMatrix: PackedFloat4x3, - options: AccelerationStructureInstanceOptions, - mask: u32, - intersectionFunctionTableOffset: u32, - accelerationStructureIndex: u32, -} - -AccelerationStructureUserIDInstanceDescriptor :: struct #packed { - transformationMatrix: PackedFloat4x3, - options: AccelerationStructureInstanceOptions, - mask: u32, - intersectionFunctionTableOffset: u32, - accelerationStructureIndex: u32, - userID: u32, -} - -AccelerationStructureInstanceDescriptorType :: enum NS.UInteger { - Default = 0, - UserID = 1, - Motion = 2, -} - -AccelerationStructureMotionInstanceDescriptor :: struct #packed { - options: AccelerationStructureInstanceOptions, - mask: u32, - intersectionFunctionTableOffset: u32, - accelerationStructureIndex: u32, - userID: u32, - motionTransformsStartIndex: u32, - motionTransformsCount: u32, - motionStartBorderMode: MotionBorderMode, - motionEndBorderMode: MotionBorderMode, - motionStartTime: f32, - motionEndTime: f32, -} - -@(objc_class="NSAccelerationStructureDescriptor") -AccelerationStructureDescriptor :: struct { using _: NS.Copying(AccelerationStructureDescriptor) } - -@(objc_class="NSAccelerationStructureGeometryDescriptor") -AccelerationStructureGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureGeometryDescriptor) } - -@(objc_class="NSPrimitiveAccelerationStructureDescriptor") -PrimitiveAccelerationStructureDescriptor :: struct { using _: NS.Copying(PrimitiveAccelerationStructureDescriptor), using _: AccelerationStructureDescriptor } - -@(objc_class="NSAccelerationStructureTriangleGeometryDescriptor") -AccelerationStructureTriangleGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureTriangleGeometryDescriptor), using _: AccelerationStructureGeometryDescriptor } - -@(objc_class="NSAccelerationStructureBoundingBoxGeometryDescriptor") -AccelerationStructureBoundingBoxGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureBoundingBoxGeometryDescriptor), using _: AccelerationStructureGeometryDescriptor } - -@(objc_class="NSMotionKeyframeData") -MotionKeyframeData :: struct { using _: NS.Object } - -@(objc_class="NSAccelerationStructureMotionTriangleGeometryDescriptor") -AccelerationStructureMotionTriangleGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureMotionTriangleGeometryDescriptor), using _: AccelerationStructureGeometryDescriptor } - -@(objc_class="NSAccelerationStructureMotionBoundingBoxGeometryDescriptor") -AccelerationStructureMotionBoundingBoxGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureMotionBoundingBoxGeometryDescriptor), using _: AccelerationStructureGeometryDescriptor } - -@(objc_class="NSInstanceAccelerationStructureDescriptor") -InstanceAccelerationStructureDescriptor :: struct { using _: NS.Copying(InstanceAccelerationStructureDescriptor), using _: AccelerationStructureGeometryDescriptor } - -@(objc_class="NSAccelerationStructure") -AccelerationStructure :: struct { using _: NS.Object } - - - -AccelerationStructureDescriptor_usage :: proc(self: ^AccelerationStructureDescriptor) -> AccelerationStructureUsage { - return msgSend(AccelerationStructureUsage, self, "usage") -} - -AccelerationStructureGeometryDescriptor_intersectionFunctionTableOffset :: proc(self: ^AccelerationStructureGeometryDescriptor) -> NS.UInteger { - return msgSend(NS.UInteger, self, "intersectionFunctionTableOffset") -} - -AccelerationStructureGeometryDescriptor_setIntersectionFunctionTableOffset :: proc(self: ^AccelerationStructureGeometryDescriptor, intersectionFunctionTableOffset: NS.UInteger) { - msgSend(nil, self, "setIntersectionFunctionTableOffset:", intersectionFunctionTableOffset) -} - -AccelerationStructureGeometryDescriptor_opaque :: proc(self: ^AccelerationStructureGeometryDescriptor) -> BOOL { - return msgSend(BOOL, self, "opaque") -} - -AccelerationStructureGeometryDescriptor_setOpaque :: proc(self: ^AccelerationStructureGeometryDescriptor, opaque: BOOL) { - msgSend(nil, self, "setOpaque:", opaque) -} - -AccelerationStructureGeometryDescriptor_allowDuplicateIntersectionFunctionInvocation :: proc(self: ^AccelerationStructureGeometryDescriptor) -> BOOL { - return msgSend(BOOL, self, "allowDuplicateIntersectionFunctionInvocation") -} - -AccelerationStructureGeometryDescriptor_setAllowDuplicateIntersectionFunctionInvocation :: proc(self: ^AccelerationStructureGeometryDescriptor, allowDuplicateIntersectionFunctionInvocation: BOOL) { - msgSend(nil, self, "setAllowDuplicateIntersectionFunctionInvocation:", allowDuplicateIntersectionFunctionInvocation) -} - - -AccelerationStructureGeometryDescriptor_label :: proc(self: ^AccelerationStructureGeometryDescriptor) -> ^NS.String { - return msgSend(^NS.String, self, "label") -} - -AccelerationStructureGeometryDescriptor_setLabel :: proc(self: ^AccelerationStructureGeometryDescriptor, label: ^NS.String) { - msgSend(nil, self, "setLabel:", label) -} - -PrimitiveAccelerationStructureDescriptor_geometryDescriptors :: proc(self: ^PrimitiveAccelerationStructureDescriptor) -> (descriptors: ^NS.Array(^NS.Object)) { - return msgSend(type_of(descriptors), self, "geometryDescriptors") -} - -PrimitiveAccelerationStructureDescriptor_setGeometryDescriptors :: proc(self: ^PrimitiveAccelerationStructureDescriptor, descriptors: ^NS.Array(^NS.Object)) { - msgSend(nil, self, "setGeometryDescriptors:", descriptors) -} - -PrimitiveAccelerationStructureDescriptor_motionStartBorderMode :: proc(self: ^PrimitiveAccelerationStructureDescriptor) -> MotionBorderMode { - return msgSend(MotionBorderMode, self, "motionStartBorderMode") -} -PrimitiveAccelerationStructureDescriptor_setMotionStartBorderMode :: proc(self: ^PrimitiveAccelerationStructureDescriptor, motionStartBorderMode: MotionBorderMode) { - msgSend(nil, self, "setMotionStartBorderMode:", motionStartBorderMode) -} - -PrimitiveAccelerationStructureDescriptor_motionEndBorderMode :: proc(self: ^PrimitiveAccelerationStructureDescriptor) -> MotionBorderMode { - return msgSend(MotionBorderMode, self, "motionEndBorderMode") -} -PrimitiveAccelerationStructureDescriptor_setMotionEndBorderMode :: proc(self: ^PrimitiveAccelerationStructureDescriptor, motionEndBorderMode: MotionBorderMode) { - msgSend(nil, self, "setMotionEndBorderMode:", motionEndBorderMode) -} - -PrimitiveAccelerationStructureDescriptor_motionStartTime :: proc(self: ^PrimitiveAccelerationStructureDescriptor) -> (motionStartTime: f32) { - return msgSend(f32, self, "motionStartTime") -} -PrimitiveAccelerationStructureDescriptor_setMotionStartTime :: proc(self: ^PrimitiveAccelerationStructureDescriptor, motionStartTime: f32) { - msgSend(nil, self, "setMotionStartTime:", motionStartTime) -} - - -PrimitiveAccelerationStructureDescriptor_motionEndTime :: proc(self: ^PrimitiveAccelerationStructureDescriptor) -> (motionEndTime: f32) { - return msgSend(f32, self, "motionEndTime") -} -PrimitiveAccelerationStructureDescriptor_setMotionEndTime :: proc(self: ^PrimitiveAccelerationStructureDescriptor, motionEndTime: f32) { - msgSend(nil, self, "setMotionEndTime:", motionEndTime) -} - - -PrimitiveAccelerationStructureDescriptor_motionKeyframeCount :: proc(self: ^PrimitiveAccelerationStructureDescriptor) -> (motionKeyframeCount: NS.UInteger) { - return msgSend(NS.UInteger, self, "motionKeyframeCount") -} -PrimitiveAccelerationStructureDescriptor_setmotionKeyframeCount :: proc(self: ^PrimitiveAccelerationStructureDescriptor, motionKeyframeCount: NS.UInteger) { - msgSend(nil, self, "setMotionKeyframeCount:", motionKeyframeCount) -} - -PrimitiveAccelerationStructureDescriptor_descriptor :: proc() -> ^PrimitiveAccelerationStructureDescriptor { - return msgSend(^PrimitiveAccelerationStructureDescriptor, PrimitiveAccelerationStructureDescriptor, "descriptor") -} - - -AccelerationStructureTriangleGeometryDescriptor_vertexBuffer :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> ^Buffer { - return msgSend(^Buffer, self, "vertexBuffer") -} -AccelerationStructureTriangleGeometryDescriptor_setVertexBuffer :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, buffer: ^Buffer) { - msgSend(nil, self, "setVertexBuffer:", buffer) -} - -AccelerationStructureTriangleGeometryDescriptor_vertexBufferOffset :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.UInteger { - return msgSend(NS.UInteger, self, "vertexBufferOffset") -} -AccelerationStructureTriangleGeometryDescriptor_setVertexBufferOffset :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexBufferOffset: NS.UInteger) { - msgSend(nil, self, "setVertexBufferOffset:", vertexBufferOffset) -} - -AccelerationStructureTriangleGeometryDescriptor_vertexStride :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.UInteger { - return msgSend(NS.UInteger, self, "vertexStride") -} -AccelerationStructureTriangleGeometryDescriptor_setVertexStride :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexStride: NS.UInteger) { - msgSend(nil, self, "setVertexStride:", vertexStride) -} - -AccelerationStructureTriangleGeometryDescriptor_indexBuffer :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> ^Buffer { - return msgSend(^Buffer, self, "indexBuffer") -} -AccelerationStructureTriangleGeometryDescriptor_setIndexBuffer :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, buffer: ^Buffer) { - msgSend(nil, self, "setIndexBuffer:", buffer) -} - -AccelerationStructureTriangleGeometryDescriptor_indexBufferOffset :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.UInteger { - return msgSend(NS.UInteger, self, "indexBufferOffset") -} -AccelerationStructureTriangleGeometryDescriptor_setIndexBufferOffset :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indexBufferOffset: NS.UInteger) { - msgSend(nil, self, "setIndexBufferOffset:", indexBufferOffset) -} - - - -AccelerationStructureTriangleGeometryDescriptor_indexType :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> IndexType { - return msgSend(IndexType, self, "indexType") -} -AccelerationStructureTriangleGeometryDescriptor_setIndexType :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indextype: IndexType) { - msgSend(nil, self, "setIndexType:", indextype) -} - -AccelerationStructureTriangleGeometryDescriptor_triangleCount :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.UInteger { - return msgSend(NS.UInteger, self, "triangleCount") -} -AccelerationStructureTriangleGeometryDescriptor_setTriangleCount :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, triangleCount: NS.UInteger) { - msgSend(nil, self, "setTriangleCount", triangleCount) -} - - -AccelerationStructureTriangleGeometryDescriptor_descriptor :: proc() -> ^AccelerationStructureTriangleGeometryDescriptor { - return msgSend(^AccelerationStructureTriangleGeometryDescriptor, AccelerationStructureTriangleGeometryDescriptor, "descriptor") -} - -AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxBuffer :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> ^Buffer { - return msgSend(^Buffer, self, "boundingBoxBuffer") -} - -AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxBuffer :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, buffer: ^Buffer) { - msgSend(nil, self, "setBoundingBoxBuffer:", buffer) -} - -AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxBufferOffset :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.UInteger { - return msgSend(NS.UInteger, self, "boundingBoxBufferOffset") -} - -AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxBufferOffset :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxBufferOffset: NS.UInteger) { - msgSend(nil, self, "setBoundingBoxBufferOffset:", boundingBoxBufferOffset) -} - - -AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxStride :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.UInteger { - return msgSend(NS.UInteger, self, "boundingBoxStride") -} - -AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxStride :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxStride: NS.UInteger) { - msgSend(nil, self, "setBoundingBoxStride:", boundingBoxStride) -} - -AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxCount :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.UInteger { - return msgSend(NS.UInteger, self, "boundingBoxCount") -} - -AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxCount :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxCount: NS.UInteger) { - msgSend(nil, self, "setBoundingBoxCount:", boundingBoxCount) -} diff --git a/vendor/Metal/MTLAccelerationStructureTypes.odin b/vendor/Metal/MTLAccelerationStructureTypes.odin deleted file mode 100644 index eba672836..000000000 --- a/vendor/Metal/MTLAccelerationStructureTypes.odin +++ /dev/null @@ -1,10 +0,0 @@ -package objc_Metal - -import NS "core:sys/darwin/Foundation" - -PackedFloat3 :: distinct [3]f32 -PackedFloat4x3 :: distinct [4]PackedFloat3 - -AxisAlignedBoundingBox :: struct{ - min, ax: PackedFloat3, -} \ No newline at end of file diff --git a/vendor/Metal/MTLRenderPipeline.odin b/vendor/Metal/MTLRenderPipeline.odin deleted file mode 100644 index c05c02c64..000000000 --- a/vendor/Metal/MTLRenderPipeline.odin +++ /dev/null @@ -1,74 +0,0 @@ -package objc_Metal - -import NS "core:sys/darwin/Foundation" - -BlendFactor :: enum NS.UInteger { - Zero = 0, - One = 1, - SourceColor = 2, - OneMinusSourceColor = 3, - SourceAlpha = 4, - OneMinusSourceAlpha = 5, - DestinationColor = 6, - OneMinusDestinationColor = 7, - DestinationAlpha = 8, - OneMinusDestinationAlpha = 9, - SourceAlphaSaturated = 10, - BlendColor = 11, - OneMinusBlendColor = 12, - BlendAlpha = 13, - OneMinusBlendAlpha = 14, - Source1Color = 15, - OneMinusSource1Color = 16, - Source1Alpha = 17, - OneMinusSource1Alpha = 18, -} - -BlendOperation :: enum NS.UInteger { - Add = 0, - Subtract = 1, - ReverseSubtract = 2, - Min = 3, - Max = 4, -} - -ColorWriteMaskOption :: enum NS.UInteger { - Alpha = 0, - Blue = 1, - Green = 2, - Red = 3, -} -ColorWriteMask :: distinct bit_set[ColorWriteMaskOption; NS.UInteger] -ColorWriteMaskNone :: ColorWriteMask{} -ColorWriteMaskAll :: ColorWriteMask{.Alpha, .Blue, .Green, .Red} - -PrimitiveTopologyClass :: enum NS.UInteger { - ClassUnspecified = 0, - ClassPoint = 1, - ClassLine = 2, - ClassTriangle = 3, -} - -TessellationPartitionMode :: enum NS.UInteger { - ModePow2 = 0, - ModeInteger = 1, - ModeFractionalOdd = 2, - ModeFractionalEven = 3, -} - -TessellationFactorStepFunction :: enum NS.UInteger { - Constant = 0, - PerPatch = 1, - PerInstance = 2, - PerPatchAndPerInstance = 3, -} - -TessellationFactorFormat :: enum NS.UInteger { - Half = 0, -} - -TessellationControlPointIndexType :: enum NS.UInteger { - None = 0, - UInt16 = 1, - UInt32 = 2, -} diff --git a/vendor/Metal/MTLStageInputOutputDescriptor.odin b/vendor/Metal/MTLStageInputOutputDescriptor.odin deleted file mode 100644 index 98ff66ce5..000000000 --- a/vendor/Metal/MTLStageInputOutputDescriptor.odin +++ /dev/null @@ -1,76 +0,0 @@ -package objc_Metal - -import NS "core:sys/darwin/Foundation" - - -AttributeFormat :: enum NS.UInteger { - Invalid = 0, - UChar2 = 1, - UChar3 = 2, - UChar4 = 3, - Char2 = 4, - Char3 = 5, - Char4 = 6, - UChar2Normalized = 7, - UChar3Normalized = 8, - UChar4Normalized = 9, - Char2Normalized = 10, - Char3Normalized = 11, - Char4Normalized = 12, - UShort2 = 13, - UShort3 = 14, - UShort4 = 15, - Short2 = 16, - Short3 = 17, - Short4 = 18, - UShort2Normalized = 19, - UShort3Normalized = 20, - UShort4Normalized = 21, - Short2Normalized = 22, - Short3Normalized = 23, - Short4Normalized = 24, - Half2 = 25, - Half3 = 26, - Half4 = 27, - Float = 28, - Float2 = 29, - Float3 = 30, - Float4 = 31, - Int = 32, - Int2 = 33, - Int3 = 34, - Int4 = 35, - UInt = 36, - UInt2 = 37, - UInt3 = 38, - UInt4 = 39, - Int1010102Normalized = 40, - UInt1010102Normalized = 41, - UChar4Normalized_BGRA = 42, - UChar = 45, - Char = 46, - UCharNormalized = 47, - CharNormalized = 48, - UShort = 49, - Short = 50, - UShortNormalized = 51, - ShortNormalized = 52, - Half = 53, -} - -IndexType :: enum NS.UInteger { - UInt16 = 0, - UInt32 = 1, -} - -StepFunction :: enum NS.UInteger { - Constant = 0, - PerVertex = 1, - PerInstance = 2, - PerPatch = 3, - PerPatchControlPoint = 4, - ThreadPositionInGridX = 5, - ThreadPositionInGridY = 6, - ThreadPositionInGridXIndexed = 7, - ThreadPositionInGridYIndexed = 8, -} \ No newline at end of file diff --git a/vendor/Metal/Metal.odin b/vendor/Metal/Metal.odin deleted file mode 100644 index eefada00d..000000000 --- a/vendor/Metal/Metal.odin +++ /dev/null @@ -1,22 +0,0 @@ -package objc_Metal - -import NS "core:sys/darwin/Foundation" -import "core:intrinsics" - -alloc :: NS.alloc -init :: NS.init -retain :: NS.retain -release :: NS.release -autorelease :: NS.autorelease -retainCount :: NS.retainCount -copy :: NS.copy -hash :: NS.hash -isEqual :: NS.isEqual -description :: NS.description -debugDescription :: NS.debugDescription -bridgingCast :: NS.bridgingCast - -@(private) -msgSend :: intrinsics.objc_send - -BOOL :: NS.BOOL \ No newline at end of file diff --git a/vendor/Metal/MetalClasses.odin b/vendor/Metal/MetalClasses.odin new file mode 100644 index 000000000..138677d0d --- /dev/null +++ b/vendor/Metal/MetalClasses.odin @@ -0,0 +1,8076 @@ +package objc_Metal + +import NS "core:sys/darwin/Foundation" + +foreign import "system:Metal.framework" + +@(default_calling_convention="c", link_prefix="MTL") +foreign Metal { + CopyAllDevices :: proc() -> ^NS.Array --- + CopyAllDevicesWithObserver :: proc(observer: ^^NS.Object, handler: DeviceNotificationHandler) -> ^NS.Array --- + CreateSystemDefaultDevice :: proc() -> ^NS.Object --- + RemoveDeviceObserver :: proc(observer: ^NS.Object) --- +} + + + + + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + AccelerationStructureBoundingBoxGeometryDescriptor +Class Methods: + alloc + descriptor +Methods: + init + boundingBoxBuffer + boundingBoxBufferOffset + boundingBoxCount + boundingBoxStride + setBoundingBoxBuffer + setBoundingBoxBufferOffset + setBoundingBoxCount + setBoundingBoxStride +*/ +@(objc_class="MTLAccelerationStructureBoundingBoxGeometryDescriptor") +AccelerationStructureBoundingBoxGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureBoundingBoxGeometryDescriptor) } + +@(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_class_name="alloc") +AccelerationStructureBoundingBoxGeometryDescriptor_alloc :: proc() -> ^AccelerationStructureBoundingBoxGeometryDescriptor { + return msgSend(^AccelerationStructureBoundingBoxGeometryDescriptor, AccelerationStructureBoundingBoxGeometryDescriptor, "alloc") +} +@(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="init") +AccelerationStructureBoundingBoxGeometryDescriptor_init :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> ^AccelerationStructureBoundingBoxGeometryDescriptor { + return msgSend(^AccelerationStructureBoundingBoxGeometryDescriptor, self, "init") +} +@(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="boundingBoxBuffer") +AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxBuffer :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> ^AccelerationStructureBoundingBoxGeometryDescriptor { + return msgSend(^AccelerationStructureBoundingBoxGeometryDescriptor, self, "boundingBoxBuffer") +} +@(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="boundingBoxBufferOffset") +AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxBufferOffset :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "boundingBoxBufferOffset") +} +@(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="boundingBoxCount") +AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxCount :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "boundingBoxCount") +} +@(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="boundingBoxStride") +AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxStride :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "boundingBoxStride") +} +@(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_class_name="descriptor") +AccelerationStructureBoundingBoxGeometryDescriptor_descriptor :: proc() -> ^AccelerationStructureBoundingBoxGeometryDescriptor { + return msgSend(^AccelerationStructureBoundingBoxGeometryDescriptor, AccelerationStructureBoundingBoxGeometryDescriptor, "descriptor") +} +@(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="setBoundingBoxBuffer") +AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxBuffer :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxBuffer: ^NS.Object) { + msgSend(nil, self, "setBoundingBoxBuffer:", boundingBoxBuffer) +} +@(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="setBoundingBoxBufferOffset") +AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxBufferOffset :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxBufferOffset: NS.Integer) { + msgSend(nil, self, "setBoundingBoxBufferOffset:", boundingBoxBufferOffset) +} +@(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="setBoundingBoxCount") +AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxCount :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxCount: NS.Integer) { + msgSend(nil, self, "setBoundingBoxCount:", boundingBoxCount) +} +@(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="setBoundingBoxStride") +AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxStride :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxStride: NS.Integer) { + msgSend(nil, self, "setBoundingBoxStride:", boundingBoxStride) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + AccelerationStructureDescriptor +Class Methods: + alloc +Methods: + init + setUsage + usage +*/ +@(objc_class="MTLAccelerationStructureDescriptor") +AccelerationStructureDescriptor :: struct { using _: NS.Copying(AccelerationStructureDescriptor) } + +@(objc_type=AccelerationStructureDescriptor, objc_class_name="alloc") +AccelerationStructureDescriptor_alloc :: proc() -> ^AccelerationStructureDescriptor { + return msgSend(^AccelerationStructureDescriptor, AccelerationStructureDescriptor, "alloc") +} +@(objc_type=AccelerationStructureDescriptor, objc_name="init") +AccelerationStructureDescriptor_init :: proc(self: ^AccelerationStructureDescriptor) -> ^AccelerationStructureDescriptor { + return msgSend(^AccelerationStructureDescriptor, self, "init") +} +@(objc_type=AccelerationStructureDescriptor, objc_name="setUsage") +AccelerationStructureDescriptor_setUsage :: proc(self: ^AccelerationStructureDescriptor, usage: AccelerationStructureUsage) { + msgSend(nil, self, "setUsage:", usage) +} +@(objc_type=AccelerationStructureDescriptor, objc_name="usage") +AccelerationStructureDescriptor_usage :: proc(self: ^AccelerationStructureDescriptor) -> AccelerationStructureUsage { + return msgSend(AccelerationStructureUsage, self, "usage") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + AccelerationStructureGeometryDescriptor +Class Methods: + alloc +Methods: + init + allowDuplicateIntersectionFunctionInvocation + intersectionFunctionTableOffset + opaque + setAllowDuplicateIntersectionFunctionInvocation + setIntersectionFunctionTableOffset + setOpaque +*/ +@(objc_class="MTLAccelerationStructureGeometryDescriptor") +AccelerationStructureGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureGeometryDescriptor) } + +@(objc_type=AccelerationStructureGeometryDescriptor, objc_class_name="alloc") +AccelerationStructureGeometryDescriptor_alloc :: proc() -> ^AccelerationStructureGeometryDescriptor { + return msgSend(^AccelerationStructureGeometryDescriptor, AccelerationStructureGeometryDescriptor, "alloc") +} +@(objc_type=AccelerationStructureGeometryDescriptor, objc_name="init") +AccelerationStructureGeometryDescriptor_init :: proc(self: ^AccelerationStructureGeometryDescriptor) -> ^AccelerationStructureGeometryDescriptor { + return msgSend(^AccelerationStructureGeometryDescriptor, self, "init") +} +@(objc_type=AccelerationStructureGeometryDescriptor, objc_name="allowDuplicateIntersectionFunctionInvocation") +AccelerationStructureGeometryDescriptor_allowDuplicateIntersectionFunctionInvocation :: proc(self: ^AccelerationStructureGeometryDescriptor) -> BOOL { + return msgSend(BOOL, self, "allowDuplicateIntersectionFunctionInvocation") +} +@(objc_type=AccelerationStructureGeometryDescriptor, objc_name="intersectionFunctionTableOffset") +AccelerationStructureGeometryDescriptor_intersectionFunctionTableOffset :: proc(self: ^AccelerationStructureGeometryDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "intersectionFunctionTableOffset") +} +@(objc_type=AccelerationStructureGeometryDescriptor, objc_name="opaque") +AccelerationStructureGeometryDescriptor_opaque :: proc(self: ^AccelerationStructureGeometryDescriptor) -> BOOL { + return msgSend(BOOL, self, "opaque") +} +@(objc_type=AccelerationStructureGeometryDescriptor, objc_name="setAllowDuplicateIntersectionFunctionInvocation") +AccelerationStructureGeometryDescriptor_setAllowDuplicateIntersectionFunctionInvocation :: proc(self: ^AccelerationStructureGeometryDescriptor, allowDuplicateIntersectionFunctionInvocation: BOOL) { + msgSend(nil, self, "setAllowDuplicateIntersectionFunctionInvocation:", allowDuplicateIntersectionFunctionInvocation) +} +@(objc_type=AccelerationStructureGeometryDescriptor, objc_name="setIntersectionFunctionTableOffset") +AccelerationStructureGeometryDescriptor_setIntersectionFunctionTableOffset :: proc(self: ^AccelerationStructureGeometryDescriptor, intersectionFunctionTableOffset: NS.Integer) { + msgSend(nil, self, "setIntersectionFunctionTableOffset:", intersectionFunctionTableOffset) +} +@(objc_type=AccelerationStructureGeometryDescriptor, objc_name="setOpaque") +AccelerationStructureGeometryDescriptor_setOpaque :: proc(self: ^AccelerationStructureGeometryDescriptor, opaque: BOOL) { + msgSend(nil, self, "setOpaque:", opaque) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + AccelerationStructureTriangleGeometryDescriptor +Class Methods: + alloc + descriptor +Methods: + init + indexBuffer + indexBufferOffset + indexType + setIndexBuffer + setIndexBufferOffset + setIndexType + setTriangleCount + setVertexBuffer + setVertexBufferOffset + setVertexStride + triangleCount + vertexBuffer + vertexBufferOffset + vertexStride +*/ +@(objc_class="MTLAccelerationStructureTriangleGeometryDescriptor") +AccelerationStructureTriangleGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureTriangleGeometryDescriptor) } + +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_class_name="alloc") +AccelerationStructureTriangleGeometryDescriptor_alloc :: proc() -> ^AccelerationStructureTriangleGeometryDescriptor { + return msgSend(^AccelerationStructureTriangleGeometryDescriptor, AccelerationStructureTriangleGeometryDescriptor, "alloc") +} +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="init") +AccelerationStructureTriangleGeometryDescriptor_init :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> ^AccelerationStructureTriangleGeometryDescriptor { + return msgSend(^AccelerationStructureTriangleGeometryDescriptor, self, "init") +} +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_class_name="descriptor") +AccelerationStructureTriangleGeometryDescriptor_descriptor :: proc() -> ^AccelerationStructureTriangleGeometryDescriptor { + return msgSend(^AccelerationStructureTriangleGeometryDescriptor, AccelerationStructureTriangleGeometryDescriptor, "descriptor") +} +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="indexBuffer") +AccelerationStructureTriangleGeometryDescriptor_indexBuffer :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> ^AccelerationStructureTriangleGeometryDescriptor { + return msgSend(^AccelerationStructureTriangleGeometryDescriptor, self, "indexBuffer") +} +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="indexBufferOffset") +AccelerationStructureTriangleGeometryDescriptor_indexBufferOffset :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "indexBufferOffset") +} +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="indexType") +AccelerationStructureTriangleGeometryDescriptor_indexType :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> IndexType { + return msgSend(IndexType, self, "indexType") +} +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setIndexBuffer") +AccelerationStructureTriangleGeometryDescriptor_setIndexBuffer :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indexBuffer: ^NS.Object) { + msgSend(nil, self, "setIndexBuffer:", indexBuffer) +} +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setIndexBufferOffset") +AccelerationStructureTriangleGeometryDescriptor_setIndexBufferOffset :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indexBufferOffset: NS.Integer) { + msgSend(nil, self, "setIndexBufferOffset:", indexBufferOffset) +} +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setIndexType") +AccelerationStructureTriangleGeometryDescriptor_setIndexType :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indexType: IndexType) { + msgSend(nil, self, "setIndexType:", indexType) +} +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setTriangleCount") +AccelerationStructureTriangleGeometryDescriptor_setTriangleCount :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, triangleCount: NS.Integer) { + msgSend(nil, self, "setTriangleCount:", triangleCount) +} +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setVertexBuffer") +AccelerationStructureTriangleGeometryDescriptor_setVertexBuffer :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexBuffer: ^NS.Object) { + msgSend(nil, self, "setVertexBuffer:", vertexBuffer) +} +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setVertexBufferOffset") +AccelerationStructureTriangleGeometryDescriptor_setVertexBufferOffset :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexBufferOffset: NS.Integer) { + msgSend(nil, self, "setVertexBufferOffset:", vertexBufferOffset) +} +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setVertexStride") +AccelerationStructureTriangleGeometryDescriptor_setVertexStride :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexStride: NS.Integer) { + msgSend(nil, self, "setVertexStride:", vertexStride) +} +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="triangleCount") +AccelerationStructureTriangleGeometryDescriptor_triangleCount :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "triangleCount") +} +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="vertexBuffer") +AccelerationStructureTriangleGeometryDescriptor_vertexBuffer :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> ^AccelerationStructureTriangleGeometryDescriptor { + return msgSend(^AccelerationStructureTriangleGeometryDescriptor, self, "vertexBuffer") +} +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="vertexBufferOffset") +AccelerationStructureTriangleGeometryDescriptor_vertexBufferOffset :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "vertexBufferOffset") +} +@(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="vertexStride") +AccelerationStructureTriangleGeometryDescriptor_vertexStride :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "vertexStride") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + Argument +Class Methods: + alloc +Methods: + init + access + arrayLength + bufferAlignment + bufferDataSize + bufferDataType + bufferPointerType + bufferStructType + index + isActive + isDepthTexture + name + textureDataType + textureType + threadgroupMemoryAlignment + threadgroupMemoryDataSize + type +*/ +@(objc_class="MTLArgument") +Argument :: struct { using _: NS.Object } + +@(objc_type=Argument, objc_class_name="alloc") +Argument_alloc :: proc() -> ^Argument { + return msgSend(^Argument, Argument, "alloc") +} +@(objc_type=Argument, objc_name="init") +Argument_init :: proc(self: ^Argument) -> ^Argument { + return msgSend(^Argument, self, "init") +} +@(objc_type=Argument, objc_name="access") +Argument_access :: proc(self: ^Argument) -> ArgumentAccess { + return msgSend(ArgumentAccess, self, "access") +} +@(objc_type=Argument, objc_name="arrayLength") +Argument_arrayLength :: proc(self: ^Argument) -> NS.Integer { + return msgSend(NS.Integer, self, "arrayLength") +} +@(objc_type=Argument, objc_name="bufferAlignment") +Argument_bufferAlignment :: proc(self: ^Argument) -> NS.Integer { + return msgSend(NS.Integer, self, "bufferAlignment") +} +@(objc_type=Argument, objc_name="bufferDataSize") +Argument_bufferDataSize :: proc(self: ^Argument) -> NS.Integer { + return msgSend(NS.Integer, self, "bufferDataSize") +} +@(objc_type=Argument, objc_name="bufferDataType") +Argument_bufferDataType :: proc(self: ^Argument) -> DataType { + return msgSend(DataType, self, "bufferDataType") +} +@(objc_type=Argument, objc_name="bufferPointerType") +Argument_bufferPointerType :: proc(self: ^Argument) -> ^PointerType { + return msgSend(^PointerType, self, "bufferPointerType") +} +@(objc_type=Argument, objc_name="bufferStructType") +Argument_bufferStructType :: proc(self: ^Argument) -> ^StructType { + return msgSend(^StructType, self, "bufferStructType") +} +@(objc_type=Argument, objc_name="index") +Argument_index :: proc(self: ^Argument) -> NS.Integer { + return msgSend(NS.Integer, self, "index") +} +@(objc_type=Argument, objc_name="isActive") +Argument_isActive :: proc(self: ^Argument) -> BOOL { + return msgSend(BOOL, self, "isActive") +} +@(objc_type=Argument, objc_name="isDepthTexture") +Argument_isDepthTexture :: proc(self: ^Argument) -> BOOL { + return msgSend(BOOL, self, "isDepthTexture") +} +@(objc_type=Argument, objc_name="name") +Argument_name :: proc(self: ^Argument) -> ^NS.String { + return msgSend(^NS.String, self, "name") +} +@(objc_type=Argument, objc_name="textureDataType") +Argument_textureDataType :: proc(self: ^Argument) -> DataType { + return msgSend(DataType, self, "textureDataType") +} +@(objc_type=Argument, objc_name="textureType") +Argument_textureType :: proc(self: ^Argument) -> TextureType { + return msgSend(TextureType, self, "textureType") +} +@(objc_type=Argument, objc_name="threadgroupMemoryAlignment") +Argument_threadgroupMemoryAlignment :: proc(self: ^Argument) -> NS.Integer { + return msgSend(NS.Integer, self, "threadgroupMemoryAlignment") +} +@(objc_type=Argument, objc_name="threadgroupMemoryDataSize") +Argument_threadgroupMemoryDataSize :: proc(self: ^Argument) -> NS.Integer { + return msgSend(NS.Integer, self, "threadgroupMemoryDataSize") +} +@(objc_type=Argument, objc_name="type") +Argument_type :: proc(self: ^Argument) -> ArgumentType { + return msgSend(ArgumentType, self, "type") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + ArgumentDescriptor +Class Methods: + alloc + argumentDescriptor +Methods: + init + access + arrayLength + constantBlockAlignment + dataType + index + setAccess + setArrayLength + setConstantBlockAlignment + setDataType + setIndex + setTextureType + textureType +*/ +@(objc_class="MTLArgumentDescriptor") +ArgumentDescriptor :: struct { using _: NS.Copying(ArgumentDescriptor) } + +@(objc_type=ArgumentDescriptor, objc_class_name="alloc") +ArgumentDescriptor_alloc :: proc() -> ^ArgumentDescriptor { + return msgSend(^ArgumentDescriptor, ArgumentDescriptor, "alloc") +} +@(objc_type=ArgumentDescriptor, objc_name="init") +ArgumentDescriptor_init :: proc(self: ^ArgumentDescriptor) -> ^ArgumentDescriptor { + return msgSend(^ArgumentDescriptor, self, "init") +} +@(objc_type=ArgumentDescriptor, objc_name="access") +ArgumentDescriptor_access :: proc(self: ^ArgumentDescriptor) -> ArgumentAccess { + return msgSend(ArgumentAccess, self, "access") +} +@(objc_type=ArgumentDescriptor, objc_class_name="argumentDescriptor") +ArgumentDescriptor_argumentDescriptor :: proc() -> ^ArgumentDescriptor { + return msgSend(^ArgumentDescriptor, ArgumentDescriptor, "argumentDescriptor") +} +@(objc_type=ArgumentDescriptor, objc_name="arrayLength") +ArgumentDescriptor_arrayLength :: proc(self: ^ArgumentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "arrayLength") +} +@(objc_type=ArgumentDescriptor, objc_name="constantBlockAlignment") +ArgumentDescriptor_constantBlockAlignment :: proc(self: ^ArgumentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "constantBlockAlignment") +} +@(objc_type=ArgumentDescriptor, objc_name="dataType") +ArgumentDescriptor_dataType :: proc(self: ^ArgumentDescriptor) -> DataType { + return msgSend(DataType, self, "dataType") +} +@(objc_type=ArgumentDescriptor, objc_name="index") +ArgumentDescriptor_index :: proc(self: ^ArgumentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "index") +} +@(objc_type=ArgumentDescriptor, objc_name="setAccess") +ArgumentDescriptor_setAccess :: proc(self: ^ArgumentDescriptor, access: ArgumentAccess) { + msgSend(nil, self, "setAccess:", access) +} +@(objc_type=ArgumentDescriptor, objc_name="setArrayLength") +ArgumentDescriptor_setArrayLength :: proc(self: ^ArgumentDescriptor, arrayLength: NS.Integer) { + msgSend(nil, self, "setArrayLength:", arrayLength) +} +@(objc_type=ArgumentDescriptor, objc_name="setConstantBlockAlignment") +ArgumentDescriptor_setConstantBlockAlignment :: proc(self: ^ArgumentDescriptor, constantBlockAlignment: NS.Integer) { + msgSend(nil, self, "setConstantBlockAlignment:", constantBlockAlignment) +} +@(objc_type=ArgumentDescriptor, objc_name="setDataType") +ArgumentDescriptor_setDataType :: proc(self: ^ArgumentDescriptor, dataType: DataType) { + msgSend(nil, self, "setDataType:", dataType) +} +@(objc_type=ArgumentDescriptor, objc_name="setIndex") +ArgumentDescriptor_setIndex :: proc(self: ^ArgumentDescriptor, index: NS.Integer) { + msgSend(nil, self, "setIndex:", index) +} +@(objc_type=ArgumentDescriptor, objc_name="setTextureType") +ArgumentDescriptor_setTextureType :: proc(self: ^ArgumentDescriptor, textureType: TextureType) { + msgSend(nil, self, "setTextureType:", textureType) +} +@(objc_type=ArgumentDescriptor, objc_name="textureType") +ArgumentDescriptor_textureType :: proc(self: ^ArgumentDescriptor) -> TextureType { + return msgSend(TextureType, self, "textureType") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + ArrayType +Class Methods: + alloc +Methods: + init + argumentIndexStride + arrayLength + elementArrayType + elementPointerType + elementStructType + elementTextureReferenceType + elementType + stride +*/ +@(objc_class="MTLArrayType") +ArrayType :: struct { using _: NS.Object } + +@(objc_type=ArrayType, objc_class_name="alloc") +ArrayType_alloc :: proc() -> ^ArrayType { + return msgSend(^ArrayType, ArrayType, "alloc") +} +@(objc_type=ArrayType, objc_name="init") +ArrayType_init :: proc(self: ^ArrayType) -> ^ArrayType { + return msgSend(^ArrayType, self, "init") +} +@(objc_type=ArrayType, objc_name="argumentIndexStride") +ArrayType_argumentIndexStride :: proc(self: ^ArrayType) -> NS.Integer { + return msgSend(NS.Integer, self, "argumentIndexStride") +} +@(objc_type=ArrayType, objc_name="arrayLength") +ArrayType_arrayLength :: proc(self: ^ArrayType) -> NS.Integer { + return msgSend(NS.Integer, self, "arrayLength") +} +@(objc_type=ArrayType, objc_name="elementArrayType") +ArrayType_elementArrayType :: proc(self: ^ArrayType) -> ^ArrayType { + return msgSend(^ArrayType, self, "elementArrayType") +} +@(objc_type=ArrayType, objc_name="elementPointerType") +ArrayType_elementPointerType :: proc(self: ^ArrayType) -> ^PointerType { + return msgSend(^PointerType, self, "elementPointerType") +} +@(objc_type=ArrayType, objc_name="elementStructType") +ArrayType_elementStructType :: proc(self: ^ArrayType) -> ^StructType { + return msgSend(^StructType, self, "elementStructType") +} +@(objc_type=ArrayType, objc_name="elementTextureReferenceType") +ArrayType_elementTextureReferenceType :: proc(self: ^ArrayType) -> ^TextureReferenceType { + return msgSend(^TextureReferenceType, self, "elementTextureReferenceType") +} +@(objc_type=ArrayType, objc_name="elementType") +ArrayType_elementType :: proc(self: ^ArrayType) -> DataType { + return msgSend(DataType, self, "elementType") +} +@(objc_type=ArrayType, objc_name="stride") +ArrayType_stride :: proc(self: ^ArrayType) -> NS.Integer { + return msgSend(NS.Integer, self, "stride") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + Attribute +Class Methods: + alloc +Methods: + init + attributeIndex + attributeType + isActive + isPatchControlPointData + isPatchData + name +*/ +@(objc_class="MTLAttribute") +Attribute :: struct { using _: NS.Object } + +@(objc_type=Attribute, objc_class_name="alloc") +Attribute_alloc :: proc() -> ^Attribute { + return msgSend(^Attribute, Attribute, "alloc") +} +@(objc_type=Attribute, objc_name="init") +Attribute_init :: proc(self: ^Attribute) -> ^Attribute { + return msgSend(^Attribute, self, "init") +} +@(objc_type=Attribute, objc_name="attributeIndex") +Attribute_attributeIndex :: proc(self: ^Attribute) -> NS.Integer { + return msgSend(NS.Integer, self, "attributeIndex") +} +@(objc_type=Attribute, objc_name="attributeType") +Attribute_attributeType :: proc(self: ^Attribute) -> DataType { + return msgSend(DataType, self, "attributeType") +} +@(objc_type=Attribute, objc_name="isActive") +Attribute_isActive :: proc(self: ^Attribute) -> BOOL { + return msgSend(BOOL, self, "isActive") +} +@(objc_type=Attribute, objc_name="isPatchControlPointData") +Attribute_isPatchControlPointData :: proc(self: ^Attribute) -> BOOL { + return msgSend(BOOL, self, "isPatchControlPointData") +} +@(objc_type=Attribute, objc_name="isPatchData") +Attribute_isPatchData :: proc(self: ^Attribute) -> BOOL { + return msgSend(BOOL, self, "isPatchData") +} +@(objc_type=Attribute, objc_name="name") +Attribute_name :: proc(self: ^Attribute) -> ^NS.String { + return msgSend(^NS.String, self, "name") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + AttributeDescriptor +Class Methods: + alloc +Methods: + init + bufferIndex + format + offset + setBufferIndex + setFormat + setOffset +*/ +@(objc_class="MTLAttributeDescriptor") +AttributeDescriptor :: struct { using _: NS.Copying(AttributeDescriptor) } + +@(objc_type=AttributeDescriptor, objc_class_name="alloc") +AttributeDescriptor_alloc :: proc() -> ^AttributeDescriptor { + return msgSend(^AttributeDescriptor, AttributeDescriptor, "alloc") +} +@(objc_type=AttributeDescriptor, objc_name="init") +AttributeDescriptor_init :: proc(self: ^AttributeDescriptor) -> ^AttributeDescriptor { + return msgSend(^AttributeDescriptor, self, "init") +} +@(objc_type=AttributeDescriptor, objc_name="bufferIndex") +AttributeDescriptor_bufferIndex :: proc(self: ^AttributeDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "bufferIndex") +} +@(objc_type=AttributeDescriptor, objc_name="format") +AttributeDescriptor_format :: proc(self: ^AttributeDescriptor) -> AttributeFormat { + return msgSend(AttributeFormat, self, "format") +} +@(objc_type=AttributeDescriptor, objc_name="offset") +AttributeDescriptor_offset :: proc(self: ^AttributeDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "offset") +} +@(objc_type=AttributeDescriptor, objc_name="setBufferIndex") +AttributeDescriptor_setBufferIndex :: proc(self: ^AttributeDescriptor, bufferIndex: NS.Integer) { + msgSend(nil, self, "setBufferIndex:", bufferIndex) +} +@(objc_type=AttributeDescriptor, objc_name="setFormat") +AttributeDescriptor_setFormat :: proc(self: ^AttributeDescriptor, format: AttributeFormat) { + msgSend(nil, self, "setFormat:", format) +} +@(objc_type=AttributeDescriptor, objc_name="setOffset") +AttributeDescriptor_setOffset :: proc(self: ^AttributeDescriptor, offset: NS.Integer) { + msgSend(nil, self, "setOffset:", offset) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + AttributeDescriptorArray +Class Methods: + alloc +Methods: + init + objectAtIndexedSubscript + setObject +*/ +@(objc_class="MTLAttributeDescriptorArray") +AttributeDescriptorArray :: struct { using _: NS.Object } + +@(objc_type=AttributeDescriptorArray, objc_class_name="alloc") +AttributeDescriptorArray_alloc :: proc() -> ^AttributeDescriptorArray { + return msgSend(^AttributeDescriptorArray, AttributeDescriptorArray, "alloc") +} +@(objc_type=AttributeDescriptorArray, objc_name="init") +AttributeDescriptorArray_init :: proc(self: ^AttributeDescriptorArray) -> ^AttributeDescriptorArray { + return msgSend(^AttributeDescriptorArray, self, "init") +} +@(objc_type=AttributeDescriptorArray, objc_name="objectAtIndexedSubscript") +AttributeDescriptorArray_objectAtIndexedSubscript :: proc(self: ^AttributeDescriptorArray, index: ^NS.Object) -> ^AttributeDescriptor { + return msgSend(^AttributeDescriptor, self, "objectAtIndexedSubscript:", index) +} +@(objc_type=AttributeDescriptorArray, objc_name="setObject") +AttributeDescriptorArray_setObject :: proc(self: ^AttributeDescriptorArray, attributeDesc: ^AttributeDescriptor, index: ^NS.Object) { + msgSend(nil, self, "setObject:atIndexedSubscript:", attributeDesc, index) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + BinaryArchiveDescriptor +Class Methods: + alloc +Methods: + init + setUrl + url +*/ +@(objc_class="MTLBinaryArchiveDescriptor") +BinaryArchiveDescriptor :: struct { using _: NS.Copying(BinaryArchiveDescriptor) } + +@(objc_type=BinaryArchiveDescriptor, objc_class_name="alloc") +BinaryArchiveDescriptor_alloc :: proc() -> ^BinaryArchiveDescriptor { + return msgSend(^BinaryArchiveDescriptor, BinaryArchiveDescriptor, "alloc") +} +@(objc_type=BinaryArchiveDescriptor, objc_name="init") +BinaryArchiveDescriptor_init :: proc(self: ^BinaryArchiveDescriptor) -> ^BinaryArchiveDescriptor { + return msgSend(^BinaryArchiveDescriptor, self, "init") +} +@(objc_type=BinaryArchiveDescriptor, objc_name="setUrl") +BinaryArchiveDescriptor_setUrl :: proc(self: ^BinaryArchiveDescriptor, url: ^NS.URL) { + msgSend(nil, self, "setUrl:", url) +} +@(objc_type=BinaryArchiveDescriptor, objc_name="url") +BinaryArchiveDescriptor_url :: proc(self: ^BinaryArchiveDescriptor) -> ^NS.URL { + return msgSend(^NS.URL, self, "url") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + BlitPassDescriptor +Class Methods: + alloc + blitPassDescriptor +Methods: + init + sampleBufferAttachments +*/ +@(objc_class="MTLBlitPassDescriptor") +BlitPassDescriptor :: struct { using _: NS.Copying(BlitPassDescriptor) } + +@(objc_type=BlitPassDescriptor, objc_class_name="alloc") +BlitPassDescriptor_alloc :: proc() -> ^BlitPassDescriptor { + return msgSend(^BlitPassDescriptor, BlitPassDescriptor, "alloc") +} +@(objc_type=BlitPassDescriptor, objc_name="init") +BlitPassDescriptor_init :: proc(self: ^BlitPassDescriptor) -> ^BlitPassDescriptor { + return msgSend(^BlitPassDescriptor, self, "init") +} +@(objc_type=BlitPassDescriptor, objc_class_name="blitPassDescriptor") +BlitPassDescriptor_blitPassDescriptor :: proc() -> ^BlitPassDescriptor { + return msgSend(^BlitPassDescriptor, BlitPassDescriptor, "blitPassDescriptor") +} +@(objc_type=BlitPassDescriptor, objc_name="sampleBufferAttachments") +BlitPassDescriptor_sampleBufferAttachments :: proc(self: ^BlitPassDescriptor) -> ^BlitPassSampleBufferAttachmentDescriptorArray { + return msgSend(^BlitPassSampleBufferAttachmentDescriptorArray, self, "sampleBufferAttachments") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + BlitPassSampleBufferAttachmentDescriptor +Class Methods: + alloc +Methods: + init + endOfEncoderSampleIndex + sampleBuffer + setEndOfEncoderSampleIndex + setSampleBuffer + setStartOfEncoderSampleIndex + startOfEncoderSampleIndex +*/ +@(objc_class="MTLBlitPassSampleBufferAttachmentDescriptor") +BlitPassSampleBufferAttachmentDescriptor :: struct { using _: NS.Copying(BlitPassSampleBufferAttachmentDescriptor) } + +@(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_class_name="alloc") +BlitPassSampleBufferAttachmentDescriptor_alloc :: proc() -> ^BlitPassSampleBufferAttachmentDescriptor { + return msgSend(^BlitPassSampleBufferAttachmentDescriptor, BlitPassSampleBufferAttachmentDescriptor, "alloc") +} +@(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="init") +BlitPassSampleBufferAttachmentDescriptor_init :: proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> ^BlitPassSampleBufferAttachmentDescriptor { + return msgSend(^BlitPassSampleBufferAttachmentDescriptor, self, "init") +} +@(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="endOfEncoderSampleIndex") +BlitPassSampleBufferAttachmentDescriptor_endOfEncoderSampleIndex :: proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "endOfEncoderSampleIndex") +} +@(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="sampleBuffer") +BlitPassSampleBufferAttachmentDescriptor_sampleBuffer :: proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> ^BlitPassSampleBufferAttachmentDescriptor { + return msgSend(^BlitPassSampleBufferAttachmentDescriptor, self, "sampleBuffer") +} +@(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="setEndOfEncoderSampleIndex") +BlitPassSampleBufferAttachmentDescriptor_setEndOfEncoderSampleIndex :: proc(self: ^BlitPassSampleBufferAttachmentDescriptor, endOfEncoderSampleIndex: NS.Integer) { + msgSend(nil, self, "setEndOfEncoderSampleIndex:", endOfEncoderSampleIndex) +} +@(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="setSampleBuffer") +BlitPassSampleBufferAttachmentDescriptor_setSampleBuffer :: proc(self: ^BlitPassSampleBufferAttachmentDescriptor, sampleBuffer: ^NS.Object) { + msgSend(nil, self, "setSampleBuffer:", sampleBuffer) +} +@(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="setStartOfEncoderSampleIndex") +BlitPassSampleBufferAttachmentDescriptor_setStartOfEncoderSampleIndex :: proc(self: ^BlitPassSampleBufferAttachmentDescriptor, startOfEncoderSampleIndex: NS.Integer) { + msgSend(nil, self, "setStartOfEncoderSampleIndex:", startOfEncoderSampleIndex) +} +@(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="startOfEncoderSampleIndex") +BlitPassSampleBufferAttachmentDescriptor_startOfEncoderSampleIndex :: proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "startOfEncoderSampleIndex") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + BlitPassSampleBufferAttachmentDescriptorArray +Class Methods: + alloc +Methods: + init + objectAtIndexedSubscript + setObject +*/ +@(objc_class="MTLBlitPassSampleBufferAttachmentDescriptorArray") +BlitPassSampleBufferAttachmentDescriptorArray :: struct { using _: NS.Object } + +@(objc_type=BlitPassSampleBufferAttachmentDescriptorArray, objc_class_name="alloc") +BlitPassSampleBufferAttachmentDescriptorArray_alloc :: proc() -> ^BlitPassSampleBufferAttachmentDescriptorArray { + return msgSend(^BlitPassSampleBufferAttachmentDescriptorArray, BlitPassSampleBufferAttachmentDescriptorArray, "alloc") +} +@(objc_type=BlitPassSampleBufferAttachmentDescriptorArray, objc_name="init") +BlitPassSampleBufferAttachmentDescriptorArray_init :: proc(self: ^BlitPassSampleBufferAttachmentDescriptorArray) -> ^BlitPassSampleBufferAttachmentDescriptorArray { + return msgSend(^BlitPassSampleBufferAttachmentDescriptorArray, self, "init") +} +@(objc_type=BlitPassSampleBufferAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") +BlitPassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: proc(self: ^BlitPassSampleBufferAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^BlitPassSampleBufferAttachmentDescriptor { + return msgSend(^BlitPassSampleBufferAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) +} +@(objc_type=BlitPassSampleBufferAttachmentDescriptorArray, objc_name="setObject") +BlitPassSampleBufferAttachmentDescriptorArray_setObject :: proc(self: ^BlitPassSampleBufferAttachmentDescriptorArray, attachment: ^BlitPassSampleBufferAttachmentDescriptor, attachmentIndex: ^NS.Object) { + msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + BufferLayoutDescriptor +Class Methods: + alloc +Methods: + init + setStepFunction + setStepRate + setStride + stepFunction + stepRate + stride +*/ +@(objc_class="MTLBufferLayoutDescriptor") +BufferLayoutDescriptor :: struct { using _: NS.Copying(BufferLayoutDescriptor) } + +@(objc_type=BufferLayoutDescriptor, objc_class_name="alloc") +BufferLayoutDescriptor_alloc :: proc() -> ^BufferLayoutDescriptor { + return msgSend(^BufferLayoutDescriptor, BufferLayoutDescriptor, "alloc") +} +@(objc_type=BufferLayoutDescriptor, objc_name="init") +BufferLayoutDescriptor_init :: proc(self: ^BufferLayoutDescriptor) -> ^BufferLayoutDescriptor { + return msgSend(^BufferLayoutDescriptor, self, "init") +} +@(objc_type=BufferLayoutDescriptor, objc_name="setStepFunction") +BufferLayoutDescriptor_setStepFunction :: proc(self: ^BufferLayoutDescriptor, stepFunction: StepFunction) { + msgSend(nil, self, "setStepFunction:", stepFunction) +} +@(objc_type=BufferLayoutDescriptor, objc_name="setStepRate") +BufferLayoutDescriptor_setStepRate :: proc(self: ^BufferLayoutDescriptor, stepRate: NS.Integer) { + msgSend(nil, self, "setStepRate:", stepRate) +} +@(objc_type=BufferLayoutDescriptor, objc_name="setStride") +BufferLayoutDescriptor_setStride :: proc(self: ^BufferLayoutDescriptor, stride: NS.Integer) { + msgSend(nil, self, "setStride:", stride) +} +@(objc_type=BufferLayoutDescriptor, objc_name="stepFunction") +BufferLayoutDescriptor_stepFunction :: proc(self: ^BufferLayoutDescriptor) -> StepFunction { + return msgSend(StepFunction, self, "stepFunction") +} +@(objc_type=BufferLayoutDescriptor, objc_name="stepRate") +BufferLayoutDescriptor_stepRate :: proc(self: ^BufferLayoutDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "stepRate") +} +@(objc_type=BufferLayoutDescriptor, objc_name="stride") +BufferLayoutDescriptor_stride :: proc(self: ^BufferLayoutDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "stride") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + BufferLayoutDescriptorArray +Class Methods: + alloc +Methods: + init + objectAtIndexedSubscript + setObject +*/ +@(objc_class="MTLBufferLayoutDescriptorArray") +BufferLayoutDescriptorArray :: struct { using _: NS.Object } + +@(objc_type=BufferLayoutDescriptorArray, objc_class_name="alloc") +BufferLayoutDescriptorArray_alloc :: proc() -> ^BufferLayoutDescriptorArray { + return msgSend(^BufferLayoutDescriptorArray, BufferLayoutDescriptorArray, "alloc") +} +@(objc_type=BufferLayoutDescriptorArray, objc_name="init") +BufferLayoutDescriptorArray_init :: proc(self: ^BufferLayoutDescriptorArray) -> ^BufferLayoutDescriptorArray { + return msgSend(^BufferLayoutDescriptorArray, self, "init") +} +@(objc_type=BufferLayoutDescriptorArray, objc_name="objectAtIndexedSubscript") +BufferLayoutDescriptorArray_objectAtIndexedSubscript :: proc(self: ^BufferLayoutDescriptorArray, index: ^NS.Object) -> ^BufferLayoutDescriptor { + return msgSend(^BufferLayoutDescriptor, self, "objectAtIndexedSubscript:", index) +} +@(objc_type=BufferLayoutDescriptorArray, objc_name="setObject") +BufferLayoutDescriptorArray_setObject :: proc(self: ^BufferLayoutDescriptorArray, bufferDesc: ^BufferLayoutDescriptor, index: ^NS.Object) { + msgSend(nil, self, "setObject:atIndexedSubscript:", bufferDesc, index) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + CaptureDescriptor +Class Methods: + alloc +Methods: + init + captureObject + destination + outputURL + setCaptureObject + setDestination + setOutputURL +*/ +@(objc_class="MTLCaptureDescriptor") +CaptureDescriptor :: struct { using _: NS.Copying(CaptureDescriptor) } + +@(objc_type=CaptureDescriptor, objc_class_name="alloc") +CaptureDescriptor_alloc :: proc() -> ^CaptureDescriptor { + return msgSend(^CaptureDescriptor, CaptureDescriptor, "alloc") +} +@(objc_type=CaptureDescriptor, objc_name="init") +CaptureDescriptor_init :: proc(self: ^CaptureDescriptor) -> ^CaptureDescriptor { + return msgSend(^CaptureDescriptor, self, "init") +} +@(objc_type=CaptureDescriptor, objc_name="captureObject") +CaptureDescriptor_captureObject :: proc(self: ^CaptureDescriptor) -> ^CaptureDescriptor { + return msgSend(^CaptureDescriptor, self, "captureObject") +} +@(objc_type=CaptureDescriptor, objc_name="destination") +CaptureDescriptor_destination :: proc(self: ^CaptureDescriptor) -> CaptureDestination { + return msgSend(CaptureDestination, self, "destination") +} +@(objc_type=CaptureDescriptor, objc_name="outputURL") +CaptureDescriptor_outputURL :: proc(self: ^CaptureDescriptor) -> ^NS.URL { + return msgSend(^NS.URL, self, "outputURL") +} +@(objc_type=CaptureDescriptor, objc_name="setCaptureObject") +CaptureDescriptor_setCaptureObject :: proc(self: ^CaptureDescriptor, captureObject: ^NS.Object) { + msgSend(nil, self, "setCaptureObject:", captureObject) +} +@(objc_type=CaptureDescriptor, objc_name="setDestination") +CaptureDescriptor_setDestination :: proc(self: ^CaptureDescriptor, destination: CaptureDestination) { + msgSend(nil, self, "setDestination:", destination) +} +@(objc_type=CaptureDescriptor, objc_name="setOutputURL") +CaptureDescriptor_setOutputURL :: proc(self: ^CaptureDescriptor, outputURL: ^NS.URL) { + msgSend(nil, self, "setOutputURL:", outputURL) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + CaptureManager +Class Methods: + alloc + sharedCaptureManager +Methods: + defaultCaptureScope + init + isCapturing + newCaptureScopeWithCommandQueue + newCaptureScopeWithDevice + setDefaultCaptureScope + startCaptureWithCommandQueue + startCaptureWithDescriptor + startCaptureWithDevice + startCaptureWithScope + stopCapture + supportsDestination +*/ +@(objc_class="MTLCaptureManager") +CaptureManager :: struct { using _: NS.Object } + +@(objc_type=CaptureManager, objc_class_name="alloc") +CaptureManager_alloc :: proc() -> ^CaptureManager { + return msgSend(^CaptureManager, CaptureManager, "alloc") +} +@(objc_type=CaptureManager, objc_name="defaultCaptureScope") +CaptureManager_defaultCaptureScope :: proc(self: ^CaptureManager) -> ^CaptureManager { + return msgSend(^CaptureManager, self, "defaultCaptureScope") +} +@(objc_type=CaptureManager, objc_name="init") +CaptureManager_init :: proc(self: ^CaptureManager) -> ^CaptureManager { + return msgSend(^CaptureManager, self, "init") +} +@(objc_type=CaptureManager, objc_name="isCapturing") +CaptureManager_isCapturing :: proc(self: ^CaptureManager) -> BOOL { + return msgSend(BOOL, self, "isCapturing") +} +@(objc_type=CaptureManager, objc_name="newCaptureScopeWithCommandQueue") +CaptureManager_newCaptureScopeWithCommandQueue :: proc(self: ^CaptureManager, commandQueue: ^NS.Object) -> ^CaptureManager { + return msgSend(^CaptureManager, self, "newCaptureScopeWithCommandQueue:", commandQueue) +} +@(objc_type=CaptureManager, objc_name="newCaptureScopeWithDevice") +CaptureManager_newCaptureScopeWithDevice :: proc(self: ^CaptureManager, device: ^NS.Object) -> ^CaptureManager { + return msgSend(^CaptureManager, self, "newCaptureScopeWithDevice:", device) +} +@(objc_type=CaptureManager, objc_name="setDefaultCaptureScope") +CaptureManager_setDefaultCaptureScope :: proc(self: ^CaptureManager, defaultCaptureScope: ^NS.Object) { + msgSend(nil, self, "setDefaultCaptureScope:", defaultCaptureScope) +} +@(objc_type=CaptureManager, objc_class_name="sharedCaptureManager") +CaptureManager_sharedCaptureManager :: proc() -> ^CaptureManager { + return msgSend(^CaptureManager, CaptureManager, "sharedCaptureManager") +} +@(objc_type=CaptureManager, objc_name="startCaptureWithCommandQueue") +CaptureManager_startCaptureWithCommandQueue :: proc(self: ^CaptureManager, commandQueue: ^NS.Object) { + msgSend(nil, self, "startCaptureWithCommandQueue:", commandQueue) +} +@(objc_type=CaptureManager, objc_name="startCaptureWithDescriptor") +CaptureManager_startCaptureWithDescriptor :: proc(self: ^CaptureManager, descriptor: ^CaptureDescriptor, error: ^^NS.Error ) -> BOOL { + return msgSend(BOOL, self, "startCaptureWithDescriptor:error:", descriptor, error) +} +@(objc_type=CaptureManager, objc_name="startCaptureWithDevice") +CaptureManager_startCaptureWithDevice :: proc(self: ^CaptureManager, device: ^NS.Object) { + msgSend(nil, self, "startCaptureWithDevice:", device) +} +@(objc_type=CaptureManager, objc_name="startCaptureWithScope") +CaptureManager_startCaptureWithScope :: proc(self: ^CaptureManager, captureScope: ^NS.Object) { + msgSend(nil, self, "startCaptureWithScope:", captureScope) +} +@(objc_type=CaptureManager, objc_name="stopCapture") +CaptureManager_stopCapture :: proc(self: ^CaptureManager) { + msgSend(nil, self, "stopCapture") +} +@(objc_type=CaptureManager, objc_name="supportsDestination") +CaptureManager_supportsDestination :: proc(self: ^CaptureManager, destination: CaptureDestination) -> BOOL { + return msgSend(BOOL, self, "supportsDestination:", destination) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + CommandBufferDescriptor +Class Methods: + alloc +Methods: + init + errorOptions + retainedReferences + setErrorOptions + setRetainedReferences +*/ +@(objc_class="MTLCommandBufferDescriptor") +CommandBufferDescriptor :: struct { using _: NS.Copying(CommandBufferDescriptor) } + +@(objc_type=CommandBufferDescriptor, objc_class_name="alloc") +CommandBufferDescriptor_alloc :: proc() -> ^CommandBufferDescriptor { + return msgSend(^CommandBufferDescriptor, CommandBufferDescriptor, "alloc") +} +@(objc_type=CommandBufferDescriptor, objc_name="init") +CommandBufferDescriptor_init :: proc(self: ^CommandBufferDescriptor) -> ^CommandBufferDescriptor { + return msgSend(^CommandBufferDescriptor, self, "init") +} +@(objc_type=CommandBufferDescriptor, objc_name="errorOptions") +CommandBufferDescriptor_errorOptions :: proc(self: ^CommandBufferDescriptor) -> CommandBufferErrorOption { + return msgSend(CommandBufferErrorOption, self, "errorOptions") +} +@(objc_type=CommandBufferDescriptor, objc_name="retainedReferences") +CommandBufferDescriptor_retainedReferences :: proc(self: ^CommandBufferDescriptor) -> BOOL { + return msgSend(BOOL, self, "retainedReferences") +} +@(objc_type=CommandBufferDescriptor, objc_name="setErrorOptions") +CommandBufferDescriptor_setErrorOptions :: proc(self: ^CommandBufferDescriptor, errorOptions: CommandBufferErrorOption) { + msgSend(nil, self, "setErrorOptions:", errorOptions) +} +@(objc_type=CommandBufferDescriptor, objc_name="setRetainedReferences") +CommandBufferDescriptor_setRetainedReferences :: proc(self: ^CommandBufferDescriptor, retainedReferences: BOOL) { + msgSend(nil, self, "setRetainedReferences:", retainedReferences) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + CompileOptions +Class Methods: + alloc +Methods: + init + fastMathEnabled + installName + languageVersion + libraries + libraryType + preprocessorMacros + preserveInvariance + setFastMathEnabled + setInstallName + setLanguageVersion + setLibraries + setLibraryType + setPreprocessorMacros + setPreserveInvariance +*/ +@(objc_class="MTLCompileOptions") +CompileOptions :: struct { using _: NS.Copying(CompileOptions) } + +@(objc_type=CompileOptions, objc_class_name="alloc") +CompileOptions_alloc :: proc() -> ^CompileOptions { + return msgSend(^CompileOptions, CompileOptions, "alloc") +} +@(objc_type=CompileOptions, objc_name="init") +CompileOptions_init :: proc(self: ^CompileOptions) -> ^CompileOptions { + return msgSend(^CompileOptions, self, "init") +} +@(objc_type=CompileOptions, objc_name="fastMathEnabled") +CompileOptions_fastMathEnabled :: proc(self: ^CompileOptions) -> BOOL { + return msgSend(BOOL, self, "fastMathEnabled") +} +@(objc_type=CompileOptions, objc_name="installName") +CompileOptions_installName :: proc(self: ^CompileOptions) -> ^NS.String { + return msgSend(^NS.String, self, "installName") +} +@(objc_type=CompileOptions, objc_name="languageVersion") +CompileOptions_languageVersion :: proc(self: ^CompileOptions) -> LanguageVersion { + return msgSend(LanguageVersion, self, "languageVersion") +} +@(objc_type=CompileOptions, objc_name="libraries") +CompileOptions_libraries :: proc(self: ^CompileOptions) -> ^NS.Array { + return msgSend(^NS.Array, self, "libraries") +} +@(objc_type=CompileOptions, objc_name="libraryType") +CompileOptions_libraryType :: proc(self: ^CompileOptions) -> LibraryType { + return msgSend(LibraryType, self, "libraryType") +} +@(objc_type=CompileOptions, objc_name="preprocessorMacros") +CompileOptions_preprocessorMacros :: proc(self: ^CompileOptions) -> ^NS.Dictionary { + return msgSend(^NS.Dictionary, self, "preprocessorMacros") +} +@(objc_type=CompileOptions, objc_name="preserveInvariance") +CompileOptions_preserveInvariance :: proc(self: ^CompileOptions) -> BOOL { + return msgSend(BOOL, self, "preserveInvariance") +} +@(objc_type=CompileOptions, objc_name="setFastMathEnabled") +CompileOptions_setFastMathEnabled :: proc(self: ^CompileOptions, fastMathEnabled: BOOL) { + msgSend(nil, self, "setFastMathEnabled:", fastMathEnabled) +} +@(objc_type=CompileOptions, objc_name="setInstallName") +CompileOptions_setInstallName :: proc(self: ^CompileOptions, installName: ^NS.String) { + msgSend(nil, self, "setInstallName:", installName) +} +@(objc_type=CompileOptions, objc_name="setLanguageVersion") +CompileOptions_setLanguageVersion :: proc(self: ^CompileOptions, languageVersion: LanguageVersion) { + msgSend(nil, self, "setLanguageVersion:", languageVersion) +} +@(objc_type=CompileOptions, objc_name="setLibraries") +CompileOptions_setLibraries :: proc(self: ^CompileOptions, libraries: ^NS.Array) { + msgSend(nil, self, "setLibraries:", libraries) +} +@(objc_type=CompileOptions, objc_name="setLibraryType") +CompileOptions_setLibraryType :: proc(self: ^CompileOptions, libraryType: LibraryType) { + msgSend(nil, self, "setLibraryType:", libraryType) +} +@(objc_type=CompileOptions, objc_name="setPreprocessorMacros") +CompileOptions_setPreprocessorMacros :: proc(self: ^CompileOptions, preprocessorMacros: ^NS.Dictionary) { + msgSend(nil, self, "setPreprocessorMacros:", preprocessorMacros) +} +@(objc_type=CompileOptions, objc_name="setPreserveInvariance") +CompileOptions_setPreserveInvariance :: proc(self: ^CompileOptions, preserveInvariance: BOOL) { + msgSend(nil, self, "setPreserveInvariance:", preserveInvariance) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + ComputePassDescriptor +Class Methods: + alloc + computePassDescriptor +Methods: + init + dispatchType + sampleBufferAttachments + setDispatchType +*/ +@(objc_class="MTLComputePassDescriptor") +ComputePassDescriptor :: struct { using _: NS.Copying(ComputePassDescriptor) } + +@(objc_type=ComputePassDescriptor, objc_class_name="alloc") +ComputePassDescriptor_alloc :: proc() -> ^ComputePassDescriptor { + return msgSend(^ComputePassDescriptor, ComputePassDescriptor, "alloc") +} +@(objc_type=ComputePassDescriptor, objc_name="init") +ComputePassDescriptor_init :: proc(self: ^ComputePassDescriptor) -> ^ComputePassDescriptor { + return msgSend(^ComputePassDescriptor, self, "init") +} +@(objc_type=ComputePassDescriptor, objc_class_name="computePassDescriptor") +ComputePassDescriptor_computePassDescriptor :: proc() -> ^ComputePassDescriptor { + return msgSend(^ComputePassDescriptor, ComputePassDescriptor, "computePassDescriptor") +} +@(objc_type=ComputePassDescriptor, objc_name="dispatchType") +ComputePassDescriptor_dispatchType :: proc(self: ^ComputePassDescriptor) -> DispatchType { + return msgSend(DispatchType, self, "dispatchType") +} +@(objc_type=ComputePassDescriptor, objc_name="sampleBufferAttachments") +ComputePassDescriptor_sampleBufferAttachments :: proc(self: ^ComputePassDescriptor) -> ^ComputePassSampleBufferAttachmentDescriptorArray { + return msgSend(^ComputePassSampleBufferAttachmentDescriptorArray, self, "sampleBufferAttachments") +} +@(objc_type=ComputePassDescriptor, objc_name="setDispatchType") +ComputePassDescriptor_setDispatchType :: proc(self: ^ComputePassDescriptor, dispatchType: DispatchType) { + msgSend(nil, self, "setDispatchType:", dispatchType) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + ComputePassSampleBufferAttachmentDescriptor +Class Methods: + alloc +Methods: + init + endOfEncoderSampleIndex + sampleBuffer + setEndOfEncoderSampleIndex + setSampleBuffer + setStartOfEncoderSampleIndex + startOfEncoderSampleIndex +*/ +@(objc_class="MTLComputePassSampleBufferAttachmentDescriptor") +ComputePassSampleBufferAttachmentDescriptor :: struct { using _: NS.Copying(ComputePassSampleBufferAttachmentDescriptor) } + +@(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_class_name="alloc") +ComputePassSampleBufferAttachmentDescriptor_alloc :: proc() -> ^ComputePassSampleBufferAttachmentDescriptor { + return msgSend(^ComputePassSampleBufferAttachmentDescriptor, ComputePassSampleBufferAttachmentDescriptor, "alloc") +} +@(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="init") +ComputePassSampleBufferAttachmentDescriptor_init :: proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> ^ComputePassSampleBufferAttachmentDescriptor { + return msgSend(^ComputePassSampleBufferAttachmentDescriptor, self, "init") +} +@(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="endOfEncoderSampleIndex") +ComputePassSampleBufferAttachmentDescriptor_endOfEncoderSampleIndex :: proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "endOfEncoderSampleIndex") +} +@(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="sampleBuffer") +ComputePassSampleBufferAttachmentDescriptor_sampleBuffer :: proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> ^ComputePassSampleBufferAttachmentDescriptor { + return msgSend(^ComputePassSampleBufferAttachmentDescriptor, self, "sampleBuffer") +} +@(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="setEndOfEncoderSampleIndex") +ComputePassSampleBufferAttachmentDescriptor_setEndOfEncoderSampleIndex :: proc(self: ^ComputePassSampleBufferAttachmentDescriptor, endOfEncoderSampleIndex: NS.Integer) { + msgSend(nil, self, "setEndOfEncoderSampleIndex:", endOfEncoderSampleIndex) +} +@(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="setSampleBuffer") +ComputePassSampleBufferAttachmentDescriptor_setSampleBuffer :: proc(self: ^ComputePassSampleBufferAttachmentDescriptor, sampleBuffer: ^NS.Object) { + msgSend(nil, self, "setSampleBuffer:", sampleBuffer) +} +@(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="setStartOfEncoderSampleIndex") +ComputePassSampleBufferAttachmentDescriptor_setStartOfEncoderSampleIndex :: proc(self: ^ComputePassSampleBufferAttachmentDescriptor, startOfEncoderSampleIndex: NS.Integer) { + msgSend(nil, self, "setStartOfEncoderSampleIndex:", startOfEncoderSampleIndex) +} +@(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="startOfEncoderSampleIndex") +ComputePassSampleBufferAttachmentDescriptor_startOfEncoderSampleIndex :: proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "startOfEncoderSampleIndex") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + ComputePassSampleBufferAttachmentDescriptorArray +Class Methods: + alloc +Methods: + init + objectAtIndexedSubscript + setObject +*/ +@(objc_class="MTLComputePassSampleBufferAttachmentDescriptorArray") +ComputePassSampleBufferAttachmentDescriptorArray :: struct { using _: NS.Object } + +@(objc_type=ComputePassSampleBufferAttachmentDescriptorArray, objc_class_name="alloc") +ComputePassSampleBufferAttachmentDescriptorArray_alloc :: proc() -> ^ComputePassSampleBufferAttachmentDescriptorArray { + return msgSend(^ComputePassSampleBufferAttachmentDescriptorArray, ComputePassSampleBufferAttachmentDescriptorArray, "alloc") +} +@(objc_type=ComputePassSampleBufferAttachmentDescriptorArray, objc_name="init") +ComputePassSampleBufferAttachmentDescriptorArray_init :: proc(self: ^ComputePassSampleBufferAttachmentDescriptorArray) -> ^ComputePassSampleBufferAttachmentDescriptorArray { + return msgSend(^ComputePassSampleBufferAttachmentDescriptorArray, self, "init") +} +@(objc_type=ComputePassSampleBufferAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") +ComputePassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: proc(self: ^ComputePassSampleBufferAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^ComputePassSampleBufferAttachmentDescriptor { + return msgSend(^ComputePassSampleBufferAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) +} +@(objc_type=ComputePassSampleBufferAttachmentDescriptorArray, objc_name="setObject") +ComputePassSampleBufferAttachmentDescriptorArray_setObject :: proc(self: ^ComputePassSampleBufferAttachmentDescriptorArray, attachment: ^ComputePassSampleBufferAttachmentDescriptor, attachmentIndex: ^NS.Object) { + msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + ComputePipelineDescriptor +Class Methods: + alloc +Methods: + init + binaryArchives + buffers + computeFunction + insertLibraries + label + linkedFunctions + maxCallStackDepth + maxTotalThreadsPerThreadgroup + reset + setBinaryArchives + setComputeFunction + setInsertLibraries + setLabel + setLinkedFunctions + setMaxCallStackDepth + setMaxTotalThreadsPerThreadgroup + setStageInputDescriptor + setSupportAddingBinaryFunctions + setSupportIndirectCommandBuffers + setThreadGroupSizeIsMultipleOfThreadExecutionWidth + stageInputDescriptor + supportAddingBinaryFunctions + supportIndirectCommandBuffers + threadGroupSizeIsMultipleOfThreadExecutionWidth +*/ +@(objc_class="MTLComputePipelineDescriptor") +ComputePipelineDescriptor :: struct { using _: NS.Copying(ComputePipelineDescriptor) } + +@(objc_type=ComputePipelineDescriptor, objc_class_name="alloc") +ComputePipelineDescriptor_alloc :: proc() -> ^ComputePipelineDescriptor { + return msgSend(^ComputePipelineDescriptor, ComputePipelineDescriptor, "alloc") +} +@(objc_type=ComputePipelineDescriptor, objc_name="init") +ComputePipelineDescriptor_init :: proc(self: ^ComputePipelineDescriptor) -> ^ComputePipelineDescriptor { + return msgSend(^ComputePipelineDescriptor, self, "init") +} +@(objc_type=ComputePipelineDescriptor, objc_name="binaryArchives") +ComputePipelineDescriptor_binaryArchives :: proc(self: ^ComputePipelineDescriptor) -> ^NS.Array { + return msgSend(^NS.Array, self, "binaryArchives") +} +@(objc_type=ComputePipelineDescriptor, objc_name="buffers") +ComputePipelineDescriptor_buffers :: proc(self: ^ComputePipelineDescriptor) -> ^PipelineBufferDescriptorArray { + return msgSend(^PipelineBufferDescriptorArray, self, "buffers") +} +@(objc_type=ComputePipelineDescriptor, objc_name="computeFunction") +ComputePipelineDescriptor_computeFunction :: proc(self: ^ComputePipelineDescriptor) -> ^ComputePipelineDescriptor { + return msgSend(^ComputePipelineDescriptor, self, "computeFunction") +} +@(objc_type=ComputePipelineDescriptor, objc_name="insertLibraries") +ComputePipelineDescriptor_insertLibraries :: proc(self: ^ComputePipelineDescriptor) -> ^NS.Array { + return msgSend(^NS.Array, self, "insertLibraries") +} +@(objc_type=ComputePipelineDescriptor, objc_name="label") +ComputePipelineDescriptor_label :: proc(self: ^ComputePipelineDescriptor) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=ComputePipelineDescriptor, objc_name="linkedFunctions") +ComputePipelineDescriptor_linkedFunctions :: proc(self: ^ComputePipelineDescriptor) -> ^LinkedFunctions { + return msgSend(^LinkedFunctions, self, "linkedFunctions") +} +@(objc_type=ComputePipelineDescriptor, objc_name="maxCallStackDepth") +ComputePipelineDescriptor_maxCallStackDepth :: proc(self: ^ComputePipelineDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "maxCallStackDepth") +} +@(objc_type=ComputePipelineDescriptor, objc_name="maxTotalThreadsPerThreadgroup") +ComputePipelineDescriptor_maxTotalThreadsPerThreadgroup :: proc(self: ^ComputePipelineDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "maxTotalThreadsPerThreadgroup") +} +@(objc_type=ComputePipelineDescriptor, objc_name="reset") +ComputePipelineDescriptor_reset :: proc(self: ^ComputePipelineDescriptor) { + msgSend(nil, self, "reset") +} +@(objc_type=ComputePipelineDescriptor, objc_name="setBinaryArchives") +ComputePipelineDescriptor_setBinaryArchives :: proc(self: ^ComputePipelineDescriptor, binaryArchives: ^NS.Array) { + msgSend(nil, self, "setBinaryArchives:", binaryArchives) +} +@(objc_type=ComputePipelineDescriptor, objc_name="setComputeFunction") +ComputePipelineDescriptor_setComputeFunction :: proc(self: ^ComputePipelineDescriptor, computeFunction: ^NS.Object) { + msgSend(nil, self, "setComputeFunction:", computeFunction) +} +@(objc_type=ComputePipelineDescriptor, objc_name="setInsertLibraries") +ComputePipelineDescriptor_setInsertLibraries :: proc(self: ^ComputePipelineDescriptor, insertLibraries: ^NS.Array) { + msgSend(nil, self, "setInsertLibraries:", insertLibraries) +} +@(objc_type=ComputePipelineDescriptor, objc_name="setLabel") +ComputePipelineDescriptor_setLabel :: proc(self: ^ComputePipelineDescriptor, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} +@(objc_type=ComputePipelineDescriptor, objc_name="setLinkedFunctions") +ComputePipelineDescriptor_setLinkedFunctions :: proc(self: ^ComputePipelineDescriptor, linkedFunctions: ^LinkedFunctions) { + msgSend(nil, self, "setLinkedFunctions:", linkedFunctions) +} +@(objc_type=ComputePipelineDescriptor, objc_name="setMaxCallStackDepth") +ComputePipelineDescriptor_setMaxCallStackDepth :: proc(self: ^ComputePipelineDescriptor, maxCallStackDepth: NS.Integer) { + msgSend(nil, self, "setMaxCallStackDepth:", maxCallStackDepth) +} +@(objc_type=ComputePipelineDescriptor, objc_name="setMaxTotalThreadsPerThreadgroup") +ComputePipelineDescriptor_setMaxTotalThreadsPerThreadgroup :: proc(self: ^ComputePipelineDescriptor, maxTotalThreadsPerThreadgroup: NS.Integer) { + msgSend(nil, self, "setMaxTotalThreadsPerThreadgroup:", maxTotalThreadsPerThreadgroup) +} +@(objc_type=ComputePipelineDescriptor, objc_name="setStageInputDescriptor") +ComputePipelineDescriptor_setStageInputDescriptor :: proc(self: ^ComputePipelineDescriptor, stageInputDescriptor: ^StageInputOutputDescriptor) { + msgSend(nil, self, "setStageInputDescriptor:", stageInputDescriptor) +} +@(objc_type=ComputePipelineDescriptor, objc_name="setSupportAddingBinaryFunctions") +ComputePipelineDescriptor_setSupportAddingBinaryFunctions :: proc(self: ^ComputePipelineDescriptor, supportAddingBinaryFunctions: BOOL) { + msgSend(nil, self, "setSupportAddingBinaryFunctions:", supportAddingBinaryFunctions) +} +@(objc_type=ComputePipelineDescriptor, objc_name="setSupportIndirectCommandBuffers") +ComputePipelineDescriptor_setSupportIndirectCommandBuffers :: proc(self: ^ComputePipelineDescriptor, supportIndirectCommandBuffers: BOOL) { + msgSend(nil, self, "setSupportIndirectCommandBuffers:", supportIndirectCommandBuffers) +} +@(objc_type=ComputePipelineDescriptor, objc_name="setThreadGroupSizeIsMultipleOfThreadExecutionWidth") +ComputePipelineDescriptor_setThreadGroupSizeIsMultipleOfThreadExecutionWidth :: proc(self: ^ComputePipelineDescriptor, threadGroupSizeIsMultipleOfThreadExecutionWidth: BOOL) { + msgSend(nil, self, "setThreadGroupSizeIsMultipleOfThreadExecutionWidth:", threadGroupSizeIsMultipleOfThreadExecutionWidth) +} +@(objc_type=ComputePipelineDescriptor, objc_name="stageInputDescriptor") +ComputePipelineDescriptor_stageInputDescriptor :: proc(self: ^ComputePipelineDescriptor) -> ^StageInputOutputDescriptor { + return msgSend(^StageInputOutputDescriptor, self, "stageInputDescriptor") +} +@(objc_type=ComputePipelineDescriptor, objc_name="supportAddingBinaryFunctions") +ComputePipelineDescriptor_supportAddingBinaryFunctions :: proc(self: ^ComputePipelineDescriptor) -> BOOL { + return msgSend(BOOL, self, "supportAddingBinaryFunctions") +} +@(objc_type=ComputePipelineDescriptor, objc_name="supportIndirectCommandBuffers") +ComputePipelineDescriptor_supportIndirectCommandBuffers :: proc(self: ^ComputePipelineDescriptor) -> BOOL { + return msgSend(BOOL, self, "supportIndirectCommandBuffers") +} +@(objc_type=ComputePipelineDescriptor, objc_name="threadGroupSizeIsMultipleOfThreadExecutionWidth") +ComputePipelineDescriptor_threadGroupSizeIsMultipleOfThreadExecutionWidth :: proc(self: ^ComputePipelineDescriptor) -> BOOL { + return msgSend(BOOL, self, "threadGroupSizeIsMultipleOfThreadExecutionWidth") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + ComputePipelineReflection +Class Methods: + alloc +Methods: + init + arguments +*/ +@(objc_class="MTLComputePipelineReflection") +ComputePipelineReflection :: struct { using _: NS.Object } + +@(objc_type=ComputePipelineReflection, objc_class_name="alloc") +ComputePipelineReflection_alloc :: proc() -> ^ComputePipelineReflection { + return msgSend(^ComputePipelineReflection, ComputePipelineReflection, "alloc") +} +@(objc_type=ComputePipelineReflection, objc_name="init") +ComputePipelineReflection_init :: proc(self: ^ComputePipelineReflection) -> ^ComputePipelineReflection { + return msgSend(^ComputePipelineReflection, self, "init") +} +@(objc_type=ComputePipelineReflection, objc_name="arguments") +ComputePipelineReflection_arguments :: proc(self: ^ComputePipelineReflection) -> ^NS.Array { + return msgSend(^NS.Array, self, "arguments") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + CounterSampleBufferDescriptor +Class Methods: + alloc +Methods: + init + counterSet + label + sampleCount + setCounterSet + setLabel + setSampleCount + setStorageMode + storageMode +*/ +@(objc_class="MTLCounterSampleBufferDescriptor") +CounterSampleBufferDescriptor :: struct { using _: NS.Copying(CounterSampleBufferDescriptor) } + +@(objc_type=CounterSampleBufferDescriptor, objc_class_name="alloc") +CounterSampleBufferDescriptor_alloc :: proc() -> ^CounterSampleBufferDescriptor { + return msgSend(^CounterSampleBufferDescriptor, CounterSampleBufferDescriptor, "alloc") +} +@(objc_type=CounterSampleBufferDescriptor, objc_name="init") +CounterSampleBufferDescriptor_init :: proc(self: ^CounterSampleBufferDescriptor) -> ^CounterSampleBufferDescriptor { + return msgSend(^CounterSampleBufferDescriptor, self, "init") +} +@(objc_type=CounterSampleBufferDescriptor, objc_name="counterSet") +CounterSampleBufferDescriptor_counterSet :: proc(self: ^CounterSampleBufferDescriptor) -> ^CounterSampleBufferDescriptor { + return msgSend(^CounterSampleBufferDescriptor, self, "counterSet") +} +@(objc_type=CounterSampleBufferDescriptor, objc_name="label") +CounterSampleBufferDescriptor_label :: proc(self: ^CounterSampleBufferDescriptor) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=CounterSampleBufferDescriptor, objc_name="sampleCount") +CounterSampleBufferDescriptor_sampleCount :: proc(self: ^CounterSampleBufferDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "sampleCount") +} +@(objc_type=CounterSampleBufferDescriptor, objc_name="setCounterSet") +CounterSampleBufferDescriptor_setCounterSet :: proc(self: ^CounterSampleBufferDescriptor, counterSet: ^NS.Object) { + msgSend(nil, self, "setCounterSet:", counterSet) +} +@(objc_type=CounterSampleBufferDescriptor, objc_name="setLabel") +CounterSampleBufferDescriptor_setLabel :: proc(self: ^CounterSampleBufferDescriptor, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} +@(objc_type=CounterSampleBufferDescriptor, objc_name="setSampleCount") +CounterSampleBufferDescriptor_setSampleCount :: proc(self: ^CounterSampleBufferDescriptor, sampleCount: NS.Integer) { + msgSend(nil, self, "setSampleCount:", sampleCount) +} +@(objc_type=CounterSampleBufferDescriptor, objc_name="setStorageMode") +CounterSampleBufferDescriptor_setStorageMode :: proc(self: ^CounterSampleBufferDescriptor, storageMode: StorageMode) { + msgSend(nil, self, "setStorageMode:", storageMode) +} +@(objc_type=CounterSampleBufferDescriptor, objc_name="storageMode") +CounterSampleBufferDescriptor_storageMode :: proc(self: ^CounterSampleBufferDescriptor) -> StorageMode { + return msgSend(StorageMode, self, "storageMode") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + DepthStencilDescriptor +Class Methods: + alloc +Methods: + init + backFaceStencil + depthCompareFunction + frontFaceStencil + isDepthWriteEnabled + label + setBackFaceStencil + setDepthCompareFunction + setDepthWriteEnabled + setFrontFaceStencil + setLabel +*/ +@(objc_class="MTLDepthStencilDescriptor") +DepthStencilDescriptor :: struct { using _: NS.Copying(DepthStencilDescriptor) } + +@(objc_type=DepthStencilDescriptor, objc_class_name="alloc") +DepthStencilDescriptor_alloc :: proc() -> ^DepthStencilDescriptor { + return msgSend(^DepthStencilDescriptor, DepthStencilDescriptor, "alloc") +} +@(objc_type=DepthStencilDescriptor, objc_name="init") +DepthStencilDescriptor_init :: proc(self: ^DepthStencilDescriptor) -> ^DepthStencilDescriptor { + return msgSend(^DepthStencilDescriptor, self, "init") +} +@(objc_type=DepthStencilDescriptor, objc_name="backFaceStencil") +DepthStencilDescriptor_backFaceStencil :: proc(self: ^DepthStencilDescriptor) -> ^StencilDescriptor { + return msgSend(^StencilDescriptor, self, "backFaceStencil") +} +@(objc_type=DepthStencilDescriptor, objc_name="depthCompareFunction") +DepthStencilDescriptor_depthCompareFunction :: proc(self: ^DepthStencilDescriptor) -> CompareFunction { + return msgSend(CompareFunction, self, "depthCompareFunction") +} +@(objc_type=DepthStencilDescriptor, objc_name="frontFaceStencil") +DepthStencilDescriptor_frontFaceStencil :: proc(self: ^DepthStencilDescriptor) -> ^StencilDescriptor { + return msgSend(^StencilDescriptor, self, "frontFaceStencil") +} +@(objc_type=DepthStencilDescriptor, objc_name="isDepthWriteEnabled") +DepthStencilDescriptor_isDepthWriteEnabled :: proc(self: ^DepthStencilDescriptor) -> BOOL { + return msgSend(BOOL, self, "isDepthWriteEnabled") +} +@(objc_type=DepthStencilDescriptor, objc_name="label") +DepthStencilDescriptor_label :: proc(self: ^DepthStencilDescriptor) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=DepthStencilDescriptor, objc_name="setBackFaceStencil") +DepthStencilDescriptor_setBackFaceStencil :: proc(self: ^DepthStencilDescriptor, backFaceStencil: ^StencilDescriptor) { + msgSend(nil, self, "setBackFaceStencil:", backFaceStencil) +} +@(objc_type=DepthStencilDescriptor, objc_name="setDepthCompareFunction") +DepthStencilDescriptor_setDepthCompareFunction :: proc(self: ^DepthStencilDescriptor, depthCompareFunction: CompareFunction) { + msgSend(nil, self, "setDepthCompareFunction:", depthCompareFunction) +} +@(objc_type=DepthStencilDescriptor, objc_name="setDepthWriteEnabled") +DepthStencilDescriptor_setDepthWriteEnabled :: proc(self: ^DepthStencilDescriptor, depthWriteEnabled: BOOL) { + msgSend(nil, self, "setDepthWriteEnabled:", depthWriteEnabled) +} +@(objc_type=DepthStencilDescriptor, objc_name="setFrontFaceStencil") +DepthStencilDescriptor_setFrontFaceStencil :: proc(self: ^DepthStencilDescriptor, frontFaceStencil: ^StencilDescriptor) { + msgSend(nil, self, "setFrontFaceStencil:", frontFaceStencil) +} +@(objc_type=DepthStencilDescriptor, objc_name="setLabel") +DepthStencilDescriptor_setLabel :: proc(self: ^DepthStencilDescriptor, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + FunctionConstant +Class Methods: + alloc +Methods: + init + index + name + required + type +*/ +@(objc_class="MTLFunctionConstant") +FunctionConstant :: struct { using _: NS.Copying(FunctionConstant) } + +@(objc_type=FunctionConstant, objc_class_name="alloc") +FunctionConstant_alloc :: proc() -> ^FunctionConstant { + return msgSend(^FunctionConstant, FunctionConstant, "alloc") +} +@(objc_type=FunctionConstant, objc_name="init") +FunctionConstant_init :: proc(self: ^FunctionConstant) -> ^FunctionConstant { + return msgSend(^FunctionConstant, self, "init") +} +@(objc_type=FunctionConstant, objc_name="index") +FunctionConstant_index :: proc(self: ^FunctionConstant) -> NS.Integer { + return msgSend(NS.Integer, self, "index") +} +@(objc_type=FunctionConstant, objc_name="name") +FunctionConstant_name :: proc(self: ^FunctionConstant) -> ^NS.String { + return msgSend(^NS.String, self, "name") +} +@(objc_type=FunctionConstant, objc_name="required") +FunctionConstant_required :: proc(self: ^FunctionConstant) -> BOOL { + return msgSend(BOOL, self, "required") +} +@(objc_type=FunctionConstant, objc_name="type") +FunctionConstant_type :: proc(self: ^FunctionConstant) -> DataType { + return msgSend(DataType, self, "type") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + FunctionConstantValues +Class Methods: + alloc +Methods: + init + reset + setConstantValue + setConstantValue + setConstantValues +*/ +@(objc_class="MTLFunctionConstantValues") +FunctionConstantValues :: struct { using _: NS.Copying(FunctionConstantValues) } + +@(objc_type=FunctionConstantValues, objc_class_name="alloc") +FunctionConstantValues_alloc :: proc() -> ^FunctionConstantValues { + return msgSend(^FunctionConstantValues, FunctionConstantValues, "alloc") +} +@(objc_type=FunctionConstantValues, objc_name="init") +FunctionConstantValues_init :: proc(self: ^FunctionConstantValues) -> ^FunctionConstantValues { + return msgSend(^FunctionConstantValues, self, "init") +} +@(objc_type=FunctionConstantValues, objc_name="reset") +FunctionConstantValues_reset :: proc(self: ^FunctionConstantValues) { + msgSend(nil, self, "reset") +} +@(objc_type=FunctionConstantValues, objc_name="setConstantValue_type_atIndex_") +FunctionConstantValues_setConstantValue_type_atIndex_ :: proc(self: ^FunctionConstantValues, value: rawptr, type: DataType, index: ^NS.Object) { + msgSend(nil, self, "setConstantValue:type:atIndex:", value, type, index) +} +@(objc_type=FunctionConstantValues, objc_name="setConstantValue_type_withName_") +FunctionConstantValues_setConstantValue_type_withName_ :: proc(self: ^FunctionConstantValues, value: rawptr, type: DataType, name: ^NS.String) { + msgSend(nil, self, "setConstantValue:type:withName:", value, type, name) +} +@(objc_type=FunctionConstantValues, objc_name="setConstantValues") +FunctionConstantValues_setConstantValues :: proc(self: ^FunctionConstantValues, values: rawptr, type: DataType, range: NS.Range) { + msgSend(nil, self, "setConstantValues:type:withRange:", values, type, range) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + FunctionDescriptor +Class Methods: + alloc + functionDescriptor +Methods: + init + constantValues + name + options + setConstantValues + setName + setOptions + setSpecializedName + specializedName +*/ +@(objc_class="MTLFunctionDescriptor") +FunctionDescriptor :: struct { using _: NS.Copying(FunctionDescriptor) } + +@(objc_type=FunctionDescriptor, objc_class_name="alloc") +FunctionDescriptor_alloc :: proc() -> ^FunctionDescriptor { + return msgSend(^FunctionDescriptor, FunctionDescriptor, "alloc") +} +@(objc_type=FunctionDescriptor, objc_name="init") +FunctionDescriptor_init :: proc(self: ^FunctionDescriptor) -> ^FunctionDescriptor { + return msgSend(^FunctionDescriptor, self, "init") +} +@(objc_type=FunctionDescriptor, objc_name="constantValues") +FunctionDescriptor_constantValues :: proc(self: ^FunctionDescriptor) -> ^FunctionConstantValues { + return msgSend(^FunctionConstantValues, self, "constantValues") +} +@(objc_type=FunctionDescriptor, objc_class_name="functionDescriptor") +FunctionDescriptor_functionDescriptor :: proc() -> ^FunctionDescriptor { + return msgSend(^FunctionDescriptor, FunctionDescriptor, "functionDescriptor") +} +@(objc_type=FunctionDescriptor, objc_name="name") +FunctionDescriptor_name :: proc(self: ^FunctionDescriptor) -> ^NS.String { + return msgSend(^NS.String, self, "name") +} +@(objc_type=FunctionDescriptor, objc_name="options") +FunctionDescriptor_options :: proc(self: ^FunctionDescriptor) -> FunctionOptions { + return msgSend(FunctionOptions, self, "options") +} +@(objc_type=FunctionDescriptor, objc_name="setConstantValues") +FunctionDescriptor_setConstantValues :: proc(self: ^FunctionDescriptor, constantValues: ^FunctionConstantValues) { + msgSend(nil, self, "setConstantValues:", constantValues) +} +@(objc_type=FunctionDescriptor, objc_name="setName") +FunctionDescriptor_setName :: proc(self: ^FunctionDescriptor, name: ^NS.String) { + msgSend(nil, self, "setName:", name) +} +@(objc_type=FunctionDescriptor, objc_name="setOptions") +FunctionDescriptor_setOptions :: proc(self: ^FunctionDescriptor, options: FunctionOptions) { + msgSend(nil, self, "setOptions:", options) +} +@(objc_type=FunctionDescriptor, objc_name="setSpecializedName") +FunctionDescriptor_setSpecializedName :: proc(self: ^FunctionDescriptor, specializedName: ^NS.String) { + msgSend(nil, self, "setSpecializedName:", specializedName) +} +@(objc_type=FunctionDescriptor, objc_name="specializedName") +FunctionDescriptor_specializedName :: proc(self: ^FunctionDescriptor) -> ^NS.String { + return msgSend(^NS.String, self, "specializedName") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + IntersectionFunctionDescriptor +Class Methods: + alloc +Methods: + init +*/ +@(objc_class="MTLIntersectionFunctionDescriptor") +IntersectionFunctionDescriptor :: struct { using _: NS.Copying(IntersectionFunctionDescriptor) } + +@(objc_type=IntersectionFunctionDescriptor, objc_class_name="alloc") +IntersectionFunctionDescriptor_alloc :: proc() -> ^IntersectionFunctionDescriptor { + return msgSend(^IntersectionFunctionDescriptor, IntersectionFunctionDescriptor, "alloc") +} +@(objc_type=IntersectionFunctionDescriptor, objc_name="init") +IntersectionFunctionDescriptor_init :: proc(self: ^IntersectionFunctionDescriptor) -> ^IntersectionFunctionDescriptor { + return msgSend(^IntersectionFunctionDescriptor, self, "init") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + HeapDescriptor +Class Methods: + alloc +Methods: + init + cpuCacheMode + hazardTrackingMode + resourceOptions + setCpuCacheMode + setHazardTrackingMode + setResourceOptions + setSize + setStorageMode + setType + size + storageMode + type +*/ +@(objc_class="MTLHeapDescriptor") +HeapDescriptor :: struct { using _: NS.Copying(HeapDescriptor) } + +@(objc_type=HeapDescriptor, objc_class_name="alloc") +HeapDescriptor_alloc :: proc() -> ^HeapDescriptor { + return msgSend(^HeapDescriptor, HeapDescriptor, "alloc") +} +@(objc_type=HeapDescriptor, objc_name="init") +HeapDescriptor_init :: proc(self: ^HeapDescriptor) -> ^HeapDescriptor { + return msgSend(^HeapDescriptor, self, "init") +} +@(objc_type=HeapDescriptor, objc_name="cpuCacheMode") +HeapDescriptor_cpuCacheMode :: proc(self: ^HeapDescriptor) -> CPUCacheMode { + return msgSend(CPUCacheMode, self, "cpuCacheMode") +} +@(objc_type=HeapDescriptor, objc_name="hazardTrackingMode") +HeapDescriptor_hazardTrackingMode :: proc(self: ^HeapDescriptor) -> HazardTrackingMode { + return msgSend(HazardTrackingMode, self, "hazardTrackingMode") +} +@(objc_type=HeapDescriptor, objc_name="resourceOptions") +HeapDescriptor_resourceOptions :: proc(self: ^HeapDescriptor) -> ResourceOptions { + return msgSend(ResourceOptions, self, "resourceOptions") +} +@(objc_type=HeapDescriptor, objc_name="setCpuCacheMode") +HeapDescriptor_setCpuCacheMode :: proc(self: ^HeapDescriptor, cpuCacheMode: CPUCacheMode) { + msgSend(nil, self, "setCpuCacheMode:", cpuCacheMode) +} +@(objc_type=HeapDescriptor, objc_name="setHazardTrackingMode") +HeapDescriptor_setHazardTrackingMode :: proc(self: ^HeapDescriptor, hazardTrackingMode: HazardTrackingMode) { + msgSend(nil, self, "setHazardTrackingMode:", hazardTrackingMode) +} +@(objc_type=HeapDescriptor, objc_name="setResourceOptions") +HeapDescriptor_setResourceOptions :: proc(self: ^HeapDescriptor, resourceOptions: ResourceOptions) { + msgSend(nil, self, "setResourceOptions:", resourceOptions) +} +@(objc_type=HeapDescriptor, objc_name="setSize") +HeapDescriptor_setSize :: proc(self: ^HeapDescriptor, size: NS.Integer) { + msgSend(nil, self, "setSize:", size) +} +@(objc_type=HeapDescriptor, objc_name="setStorageMode") +HeapDescriptor_setStorageMode :: proc(self: ^HeapDescriptor, storageMode: StorageMode) { + msgSend(nil, self, "setStorageMode:", storageMode) +} +@(objc_type=HeapDescriptor, objc_name="setType") +HeapDescriptor_setType :: proc(self: ^HeapDescriptor, type: HeapType) { + msgSend(nil, self, "setType:", type) +} +@(objc_type=HeapDescriptor, objc_name="size") +HeapDescriptor_size :: proc(self: ^HeapDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "size") +} +@(objc_type=HeapDescriptor, objc_name="storageMode") +HeapDescriptor_storageMode :: proc(self: ^HeapDescriptor) -> StorageMode { + return msgSend(StorageMode, self, "storageMode") +} +@(objc_type=HeapDescriptor, objc_name="type") +HeapDescriptor_type :: proc(self: ^HeapDescriptor) -> HeapType { + return msgSend(HeapType, self, "type") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + IndirectCommandBufferDescriptor +Class Methods: + alloc +Methods: + init + commandTypes + inheritBuffers + inheritPipelineState + maxFragmentBufferBindCount + maxKernelBufferBindCount + maxVertexBufferBindCount + setCommandTypes + setInheritBuffers + setInheritPipelineState + setMaxFragmentBufferBindCount + setMaxKernelBufferBindCount + setMaxVertexBufferBindCount +*/ +@(objc_class="MTLIndirectCommandBufferDescriptor") +IndirectCommandBufferDescriptor :: struct { using _: NS.Copying(IndirectCommandBufferDescriptor) } + +@(objc_type=IndirectCommandBufferDescriptor, objc_class_name="alloc") +IndirectCommandBufferDescriptor_alloc :: proc() -> ^IndirectCommandBufferDescriptor { + return msgSend(^IndirectCommandBufferDescriptor, IndirectCommandBufferDescriptor, "alloc") +} +@(objc_type=IndirectCommandBufferDescriptor, objc_name="init") +IndirectCommandBufferDescriptor_init :: proc(self: ^IndirectCommandBufferDescriptor) -> ^IndirectCommandBufferDescriptor { + return msgSend(^IndirectCommandBufferDescriptor, self, "init") +} +@(objc_type=IndirectCommandBufferDescriptor, objc_name="commandTypes") +IndirectCommandBufferDescriptor_commandTypes :: proc(self: ^IndirectCommandBufferDescriptor) -> IndirectCommandType { + return msgSend(IndirectCommandType, self, "commandTypes") +} +@(objc_type=IndirectCommandBufferDescriptor, objc_name="inheritBuffers") +IndirectCommandBufferDescriptor_inheritBuffers :: proc(self: ^IndirectCommandBufferDescriptor) -> BOOL { + return msgSend(BOOL, self, "inheritBuffers") +} +@(objc_type=IndirectCommandBufferDescriptor, objc_name="inheritPipelineState") +IndirectCommandBufferDescriptor_inheritPipelineState :: proc(self: ^IndirectCommandBufferDescriptor) -> BOOL { + return msgSend(BOOL, self, "inheritPipelineState") +} +@(objc_type=IndirectCommandBufferDescriptor, objc_name="maxFragmentBufferBindCount") +IndirectCommandBufferDescriptor_maxFragmentBufferBindCount :: proc(self: ^IndirectCommandBufferDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "maxFragmentBufferBindCount") +} +@(objc_type=IndirectCommandBufferDescriptor, objc_name="maxKernelBufferBindCount") +IndirectCommandBufferDescriptor_maxKernelBufferBindCount :: proc(self: ^IndirectCommandBufferDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "maxKernelBufferBindCount") +} +@(objc_type=IndirectCommandBufferDescriptor, objc_name="maxVertexBufferBindCount") +IndirectCommandBufferDescriptor_maxVertexBufferBindCount :: proc(self: ^IndirectCommandBufferDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "maxVertexBufferBindCount") +} +@(objc_type=IndirectCommandBufferDescriptor, objc_name="setCommandTypes") +IndirectCommandBufferDescriptor_setCommandTypes :: proc(self: ^IndirectCommandBufferDescriptor, commandTypes: IndirectCommandType) { + msgSend(nil, self, "setCommandTypes:", commandTypes) +} +@(objc_type=IndirectCommandBufferDescriptor, objc_name="setInheritBuffers") +IndirectCommandBufferDescriptor_setInheritBuffers :: proc(self: ^IndirectCommandBufferDescriptor, inheritBuffers: BOOL) { + msgSend(nil, self, "setInheritBuffers:", inheritBuffers) +} +@(objc_type=IndirectCommandBufferDescriptor, objc_name="setInheritPipelineState") +IndirectCommandBufferDescriptor_setInheritPipelineState :: proc(self: ^IndirectCommandBufferDescriptor, inheritPipelineState: BOOL) { + msgSend(nil, self, "setInheritPipelineState:", inheritPipelineState) +} +@(objc_type=IndirectCommandBufferDescriptor, objc_name="setMaxFragmentBufferBindCount") +IndirectCommandBufferDescriptor_setMaxFragmentBufferBindCount :: proc(self: ^IndirectCommandBufferDescriptor, maxFragmentBufferBindCount: NS.Integer) { + msgSend(nil, self, "setMaxFragmentBufferBindCount:", maxFragmentBufferBindCount) +} +@(objc_type=IndirectCommandBufferDescriptor, objc_name="setMaxKernelBufferBindCount") +IndirectCommandBufferDescriptor_setMaxKernelBufferBindCount :: proc(self: ^IndirectCommandBufferDescriptor, maxKernelBufferBindCount: NS.Integer) { + msgSend(nil, self, "setMaxKernelBufferBindCount:", maxKernelBufferBindCount) +} +@(objc_type=IndirectCommandBufferDescriptor, objc_name="setMaxVertexBufferBindCount") +IndirectCommandBufferDescriptor_setMaxVertexBufferBindCount :: proc(self: ^IndirectCommandBufferDescriptor, maxVertexBufferBindCount: NS.Integer) { + msgSend(nil, self, "setMaxVertexBufferBindCount:", maxVertexBufferBindCount) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + InstanceAccelerationStructureDescriptor +Class Methods: + alloc + descriptor +Methods: + init + instanceCount + instanceDescriptorBuffer + instanceDescriptorBufferOffset + instanceDescriptorStride + instancedAccelerationStructures + setInstanceCount + setInstanceDescriptorBuffer + setInstanceDescriptorBufferOffset + setInstanceDescriptorStride + setInstancedAccelerationStructures +*/ +@(objc_class="MTLInstanceAccelerationStructureDescriptor") +InstanceAccelerationStructureDescriptor :: struct { using _: NS.Copying(InstanceAccelerationStructureDescriptor) } + +@(objc_type=InstanceAccelerationStructureDescriptor, objc_class_name="alloc") +InstanceAccelerationStructureDescriptor_alloc :: proc() -> ^InstanceAccelerationStructureDescriptor { + return msgSend(^InstanceAccelerationStructureDescriptor, InstanceAccelerationStructureDescriptor, "alloc") +} +@(objc_type=InstanceAccelerationStructureDescriptor, objc_name="init") +InstanceAccelerationStructureDescriptor_init :: proc(self: ^InstanceAccelerationStructureDescriptor) -> ^InstanceAccelerationStructureDescriptor { + return msgSend(^InstanceAccelerationStructureDescriptor, self, "init") +} +@(objc_type=InstanceAccelerationStructureDescriptor, objc_class_name="descriptor") +InstanceAccelerationStructureDescriptor_descriptor :: proc() -> ^InstanceAccelerationStructureDescriptor { + return msgSend(^InstanceAccelerationStructureDescriptor, InstanceAccelerationStructureDescriptor, "descriptor") +} +@(objc_type=InstanceAccelerationStructureDescriptor, objc_name="instanceCount") +InstanceAccelerationStructureDescriptor_instanceCount :: proc(self: ^InstanceAccelerationStructureDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "instanceCount") +} +@(objc_type=InstanceAccelerationStructureDescriptor, objc_name="instanceDescriptorBuffer") +InstanceAccelerationStructureDescriptor_instanceDescriptorBuffer :: proc(self: ^InstanceAccelerationStructureDescriptor) -> ^InstanceAccelerationStructureDescriptor { + return msgSend(^InstanceAccelerationStructureDescriptor, self, "instanceDescriptorBuffer") +} +@(objc_type=InstanceAccelerationStructureDescriptor, objc_name="instanceDescriptorBufferOffset") +InstanceAccelerationStructureDescriptor_instanceDescriptorBufferOffset :: proc(self: ^InstanceAccelerationStructureDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "instanceDescriptorBufferOffset") +} +@(objc_type=InstanceAccelerationStructureDescriptor, objc_name="instanceDescriptorStride") +InstanceAccelerationStructureDescriptor_instanceDescriptorStride :: proc(self: ^InstanceAccelerationStructureDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "instanceDescriptorStride") +} +@(objc_type=InstanceAccelerationStructureDescriptor, objc_name="instancedAccelerationStructures") +InstanceAccelerationStructureDescriptor_instancedAccelerationStructures :: proc(self: ^InstanceAccelerationStructureDescriptor) -> ^NS.Array { + return msgSend(^NS.Array, self, "instancedAccelerationStructures") +} +@(objc_type=InstanceAccelerationStructureDescriptor, objc_name="setInstanceCount") +InstanceAccelerationStructureDescriptor_setInstanceCount :: proc(self: ^InstanceAccelerationStructureDescriptor, instanceCount: NS.Integer) { + msgSend(nil, self, "setInstanceCount:", instanceCount) +} +@(objc_type=InstanceAccelerationStructureDescriptor, objc_name="setInstanceDescriptorBuffer") +InstanceAccelerationStructureDescriptor_setInstanceDescriptorBuffer :: proc(self: ^InstanceAccelerationStructureDescriptor, instanceDescriptorBuffer: ^NS.Object) { + msgSend(nil, self, "setInstanceDescriptorBuffer:", instanceDescriptorBuffer) +} +@(objc_type=InstanceAccelerationStructureDescriptor, objc_name="setInstanceDescriptorBufferOffset") +InstanceAccelerationStructureDescriptor_setInstanceDescriptorBufferOffset :: proc(self: ^InstanceAccelerationStructureDescriptor, instanceDescriptorBufferOffset: NS.Integer) { + msgSend(nil, self, "setInstanceDescriptorBufferOffset:", instanceDescriptorBufferOffset) +} +@(objc_type=InstanceAccelerationStructureDescriptor, objc_name="setInstanceDescriptorStride") +InstanceAccelerationStructureDescriptor_setInstanceDescriptorStride :: proc(self: ^InstanceAccelerationStructureDescriptor, instanceDescriptorStride: NS.Integer) { + msgSend(nil, self, "setInstanceDescriptorStride:", instanceDescriptorStride) +} +@(objc_type=InstanceAccelerationStructureDescriptor, objc_name="setInstancedAccelerationStructures") +InstanceAccelerationStructureDescriptor_setInstancedAccelerationStructures :: proc(self: ^InstanceAccelerationStructureDescriptor, instancedAccelerationStructures: ^NS.Array) { + msgSend(nil, self, "setInstancedAccelerationStructures:", instancedAccelerationStructures) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + IntersectionFunctionTableDescriptor +Class Methods: + alloc + intersectionFunctionTableDescriptor +Methods: + init + functionCount + setFunctionCount +*/ +@(objc_class="MTLIntersectionFunctionTableDescriptor") +IntersectionFunctionTableDescriptor :: struct { using _: NS.Copying(IntersectionFunctionTableDescriptor) } + +@(objc_type=IntersectionFunctionTableDescriptor, objc_class_name="alloc") +IntersectionFunctionTableDescriptor_alloc :: proc() -> ^IntersectionFunctionTableDescriptor { + return msgSend(^IntersectionFunctionTableDescriptor, IntersectionFunctionTableDescriptor, "alloc") +} +@(objc_type=IntersectionFunctionTableDescriptor, objc_name="init") +IntersectionFunctionTableDescriptor_init :: proc(self: ^IntersectionFunctionTableDescriptor) -> ^IntersectionFunctionTableDescriptor { + return msgSend(^IntersectionFunctionTableDescriptor, self, "init") +} +@(objc_type=IntersectionFunctionTableDescriptor, objc_name="functionCount") +IntersectionFunctionTableDescriptor_functionCount :: proc(self: ^IntersectionFunctionTableDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "functionCount") +} +@(objc_type=IntersectionFunctionTableDescriptor, objc_class_name="intersectionFunctionTableDescriptor") +IntersectionFunctionTableDescriptor_intersectionFunctionTableDescriptor :: proc() -> ^IntersectionFunctionTableDescriptor { + return msgSend(^IntersectionFunctionTableDescriptor, IntersectionFunctionTableDescriptor, "intersectionFunctionTableDescriptor") +} +@(objc_type=IntersectionFunctionTableDescriptor, objc_name="setFunctionCount") +IntersectionFunctionTableDescriptor_setFunctionCount :: proc(self: ^IntersectionFunctionTableDescriptor, functionCount: NS.Integer) { + msgSend(nil, self, "setFunctionCount:", functionCount) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + LinkedFunctions +Class Methods: + alloc + linkedFunctions +Methods: + init + binaryFunctions + functions + groups + setBinaryFunctions + setFunctions + setGroups +*/ +@(objc_class="MTLLinkedFunctions") +LinkedFunctions :: struct { using _: NS.Copying(LinkedFunctions) } + +@(objc_type=LinkedFunctions, objc_class_name="alloc") +LinkedFunctions_alloc :: proc() -> ^LinkedFunctions { + return msgSend(^LinkedFunctions, LinkedFunctions, "alloc") +} +@(objc_type=LinkedFunctions, objc_name="init") +LinkedFunctions_init :: proc(self: ^LinkedFunctions) -> ^LinkedFunctions { + return msgSend(^LinkedFunctions, self, "init") +} +@(objc_type=LinkedFunctions, objc_name="binaryFunctions") +LinkedFunctions_binaryFunctions :: proc(self: ^LinkedFunctions) -> ^NS.Array { + return msgSend(^NS.Array, self, "binaryFunctions") +} +@(objc_type=LinkedFunctions, objc_name="functions") +LinkedFunctions_functions :: proc(self: ^LinkedFunctions) -> ^NS.Array { + return msgSend(^NS.Array, self, "functions") +} +@(objc_type=LinkedFunctions, objc_name="groups") +LinkedFunctions_groups :: proc(self: ^LinkedFunctions) -> ^NS.Dictionary { + return msgSend(^NS.Dictionary, self, "groups") +} +@(objc_type=LinkedFunctions, objc_class_name="linkedFunctions") +LinkedFunctions_linkedFunctions :: proc() -> ^LinkedFunctions { + return msgSend(^LinkedFunctions, LinkedFunctions, "linkedFunctions") +} +@(objc_type=LinkedFunctions, objc_name="setBinaryFunctions") +LinkedFunctions_setBinaryFunctions :: proc(self: ^LinkedFunctions, binaryFunctions: ^NS.Array) { + msgSend(nil, self, "setBinaryFunctions:", binaryFunctions) +} +@(objc_type=LinkedFunctions, objc_name="setFunctions") +LinkedFunctions_setFunctions :: proc(self: ^LinkedFunctions, functions: ^NS.Array) { + msgSend(nil, self, "setFunctions:", functions) +} +@(objc_type=LinkedFunctions, objc_name="setGroups") +LinkedFunctions_setGroups :: proc(self: ^LinkedFunctions, groups: ^NS.Dictionary) { + msgSend(nil, self, "setGroups:", groups) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + PipelineBufferDescriptor +Class Methods: + alloc +Methods: + init + mutability + setMutability +*/ +@(objc_class="MTLPipelineBufferDescriptor") +PipelineBufferDescriptor :: struct { using _: NS.Copying(PipelineBufferDescriptor) } + +@(objc_type=PipelineBufferDescriptor, objc_class_name="alloc") +PipelineBufferDescriptor_alloc :: proc() -> ^PipelineBufferDescriptor { + return msgSend(^PipelineBufferDescriptor, PipelineBufferDescriptor, "alloc") +} +@(objc_type=PipelineBufferDescriptor, objc_name="init") +PipelineBufferDescriptor_init :: proc(self: ^PipelineBufferDescriptor) -> ^PipelineBufferDescriptor { + return msgSend(^PipelineBufferDescriptor, self, "init") +} +@(objc_type=PipelineBufferDescriptor, objc_name="mutability") +PipelineBufferDescriptor_mutability :: proc(self: ^PipelineBufferDescriptor) -> Mutability { + return msgSend(Mutability, self, "mutability") +} +@(objc_type=PipelineBufferDescriptor, objc_name="setMutability") +PipelineBufferDescriptor_setMutability :: proc(self: ^PipelineBufferDescriptor, mutability: Mutability) { + msgSend(nil, self, "setMutability:", mutability) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + PipelineBufferDescriptorArray +Class Methods: + alloc +Methods: + init + objectAtIndexedSubscript + setObject +*/ +@(objc_class="MTLPipelineBufferDescriptorArray") +PipelineBufferDescriptorArray :: struct { using _: NS.Object } + +@(objc_type=PipelineBufferDescriptorArray, objc_class_name="alloc") +PipelineBufferDescriptorArray_alloc :: proc() -> ^PipelineBufferDescriptorArray { + return msgSend(^PipelineBufferDescriptorArray, PipelineBufferDescriptorArray, "alloc") +} +@(objc_type=PipelineBufferDescriptorArray, objc_name="init") +PipelineBufferDescriptorArray_init :: proc(self: ^PipelineBufferDescriptorArray) -> ^PipelineBufferDescriptorArray { + return msgSend(^PipelineBufferDescriptorArray, self, "init") +} +@(objc_type=PipelineBufferDescriptorArray, objc_name="objectAtIndexedSubscript") +PipelineBufferDescriptorArray_objectAtIndexedSubscript :: proc(self: ^PipelineBufferDescriptorArray, bufferIndex: ^NS.Object) -> ^PipelineBufferDescriptor { + return msgSend(^PipelineBufferDescriptor, self, "objectAtIndexedSubscript:", bufferIndex) +} +@(objc_type=PipelineBufferDescriptorArray, objc_name="setObject") +PipelineBufferDescriptorArray_setObject :: proc(self: ^PipelineBufferDescriptorArray, buffer: ^PipelineBufferDescriptor, bufferIndex: ^NS.Object) { + msgSend(nil, self, "setObject:atIndexedSubscript:", buffer, bufferIndex) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + PointerType +Class Methods: + alloc +Methods: + init + access + alignment + dataSize + elementArrayType + elementIsArgumentBuffer + elementStructType + elementType +*/ +@(objc_class="MTLPointerType") +PointerType :: struct { using _: NS.Object } + +@(objc_type=PointerType, objc_class_name="alloc") +PointerType_alloc :: proc() -> ^PointerType { + return msgSend(^PointerType, PointerType, "alloc") +} +@(objc_type=PointerType, objc_name="init") +PointerType_init :: proc(self: ^PointerType) -> ^PointerType { + return msgSend(^PointerType, self, "init") +} +@(objc_type=PointerType, objc_name="access") +PointerType_access :: proc(self: ^PointerType) -> ArgumentAccess { + return msgSend(ArgumentAccess, self, "access") +} +@(objc_type=PointerType, objc_name="alignment") +PointerType_alignment :: proc(self: ^PointerType) -> NS.Integer { + return msgSend(NS.Integer, self, "alignment") +} +@(objc_type=PointerType, objc_name="dataSize") +PointerType_dataSize :: proc(self: ^PointerType) -> NS.Integer { + return msgSend(NS.Integer, self, "dataSize") +} +@(objc_type=PointerType, objc_name="elementArrayType") +PointerType_elementArrayType :: proc(self: ^PointerType) -> ^ArrayType { + return msgSend(^ArrayType, self, "elementArrayType") +} +@(objc_type=PointerType, objc_name="elementIsArgumentBuffer") +PointerType_elementIsArgumentBuffer :: proc(self: ^PointerType) -> BOOL { + return msgSend(BOOL, self, "elementIsArgumentBuffer") +} +@(objc_type=PointerType, objc_name="elementStructType") +PointerType_elementStructType :: proc(self: ^PointerType) -> ^StructType { + return msgSend(^StructType, self, "elementStructType") +} +@(objc_type=PointerType, objc_name="elementType") +PointerType_elementType :: proc(self: ^PointerType) -> DataType { + return msgSend(DataType, self, "elementType") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + PrimitiveAccelerationStructureDescriptor +Class Methods: + alloc + descriptor +Methods: + init + geometryDescriptors + setGeometryDescriptors +*/ +@(objc_class="MTLPrimitiveAccelerationStructureDescriptor") +PrimitiveAccelerationStructureDescriptor :: struct { using _: NS.Copying(PrimitiveAccelerationStructureDescriptor) } + +@(objc_type=PrimitiveAccelerationStructureDescriptor, objc_class_name="alloc") +PrimitiveAccelerationStructureDescriptor_alloc :: proc() -> ^PrimitiveAccelerationStructureDescriptor { + return msgSend(^PrimitiveAccelerationStructureDescriptor, PrimitiveAccelerationStructureDescriptor, "alloc") +} +@(objc_type=PrimitiveAccelerationStructureDescriptor, objc_name="init") +PrimitiveAccelerationStructureDescriptor_init :: proc(self: ^PrimitiveAccelerationStructureDescriptor) -> ^PrimitiveAccelerationStructureDescriptor { + return msgSend(^PrimitiveAccelerationStructureDescriptor, self, "init") +} +@(objc_type=PrimitiveAccelerationStructureDescriptor, objc_class_name="descriptor") +PrimitiveAccelerationStructureDescriptor_descriptor :: proc() -> ^PrimitiveAccelerationStructureDescriptor { + return msgSend(^PrimitiveAccelerationStructureDescriptor, PrimitiveAccelerationStructureDescriptor, "descriptor") +} +@(objc_type=PrimitiveAccelerationStructureDescriptor, objc_name="geometryDescriptors") +PrimitiveAccelerationStructureDescriptor_geometryDescriptors :: proc(self: ^PrimitiveAccelerationStructureDescriptor) -> ^NS.Array { + return msgSend(^NS.Array, self, "geometryDescriptors") +} +@(objc_type=PrimitiveAccelerationStructureDescriptor, objc_name="setGeometryDescriptors") +PrimitiveAccelerationStructureDescriptor_setGeometryDescriptors :: proc(self: ^PrimitiveAccelerationStructureDescriptor, geometryDescriptors: ^NS.Array) { + msgSend(nil, self, "setGeometryDescriptors:", geometryDescriptors) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RasterizationRateLayerArray +Class Methods: + alloc +Methods: + init + objectAtIndexedSubscript + setObject +*/ +@(objc_class="MTLRasterizationRateLayerArray") +RasterizationRateLayerArray :: struct { using _: NS.Object } + +@(objc_type=RasterizationRateLayerArray, objc_class_name="alloc") +RasterizationRateLayerArray_alloc :: proc() -> ^RasterizationRateLayerArray { + return msgSend(^RasterizationRateLayerArray, RasterizationRateLayerArray, "alloc") +} +@(objc_type=RasterizationRateLayerArray, objc_name="init") +RasterizationRateLayerArray_init :: proc(self: ^RasterizationRateLayerArray) -> ^RasterizationRateLayerArray { + return msgSend(^RasterizationRateLayerArray, self, "init") +} +@(objc_type=RasterizationRateLayerArray, objc_name="objectAtIndexedSubscript") +RasterizationRateLayerArray_objectAtIndexedSubscript :: proc(self: ^RasterizationRateLayerArray, layerIndex: ^NS.Object) -> ^RasterizationRateLayerDescriptor { + return msgSend(^RasterizationRateLayerDescriptor, self, "objectAtIndexedSubscript:", layerIndex) +} +@(objc_type=RasterizationRateLayerArray, objc_name="setObject") +RasterizationRateLayerArray_setObject :: proc(self: ^RasterizationRateLayerArray, layer: ^RasterizationRateLayerDescriptor, layerIndex: ^NS.Object) { + msgSend(nil, self, "setObject:atIndexedSubscript:", layer, layerIndex) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RasterizationRateLayerDescriptor +Class Methods: + alloc +Methods: + horizontal + horizontalSampleStorage + init + initWithSampleCount + initWithSampleCount + sampleCount + vertical + verticalSampleStorage +*/ +@(objc_class="MTLRasterizationRateLayerDescriptor") +RasterizationRateLayerDescriptor :: struct { using _: NS.Copying(RasterizationRateLayerDescriptor) } + +@(objc_type=RasterizationRateLayerDescriptor, objc_class_name="alloc") +RasterizationRateLayerDescriptor_alloc :: proc() -> ^RasterizationRateLayerDescriptor { + return msgSend(^RasterizationRateLayerDescriptor, RasterizationRateLayerDescriptor, "alloc") +} +@(objc_type=RasterizationRateLayerDescriptor, objc_name="horizontal") +RasterizationRateLayerDescriptor_horizontal :: proc(self: ^RasterizationRateLayerDescriptor) -> ^RasterizationRateSampleArray { + return msgSend(^RasterizationRateSampleArray, self, "horizontal") +} +@(objc_type=RasterizationRateLayerDescriptor, objc_name="horizontalSampleStorage") +RasterizationRateLayerDescriptor_horizontalSampleStorage :: proc(self: ^RasterizationRateLayerDescriptor) -> ^f32 { + return msgSend(^f32, self, "horizontalSampleStorage") +} +@(objc_type=RasterizationRateLayerDescriptor, objc_name="init") +RasterizationRateLayerDescriptor_init :: proc(self: ^RasterizationRateLayerDescriptor) -> ^RasterizationRateLayerDescriptor { + return msgSend(^RasterizationRateLayerDescriptor, self, "init") +} +@(objc_type=RasterizationRateLayerDescriptor, objc_name="initWithSampleCount") +RasterizationRateLayerDescriptor_initWithSampleCount :: proc(self: ^RasterizationRateLayerDescriptor, sampleCount: Size) -> ^RasterizationRateLayerDescriptor { + return msgSend(^RasterizationRateLayerDescriptor, self, "initWithSampleCount:", sampleCount) +} +@(objc_type=RasterizationRateLayerDescriptor, objc_name="initWithSampleCountWithDimensions") +RasterizationRateLayerDescriptor_initWithSampleCountWithDimensions :: proc(self: ^RasterizationRateLayerDescriptor, sampleCount: Size, horizontal: ^f32, vertical: ^f32) -> ^RasterizationRateLayerDescriptor { + return msgSend(^RasterizationRateLayerDescriptor, self, "initWithSampleCount:horizontal:vertical:", sampleCount, horizontal, vertical) +} +@(objc_type=RasterizationRateLayerDescriptor, objc_name="sampleCount") +RasterizationRateLayerDescriptor_sampleCount :: proc(self: ^RasterizationRateLayerDescriptor) -> Size { + return msgSend(Size, self, "sampleCount") +} +@(objc_type=RasterizationRateLayerDescriptor, objc_name="vertical") +RasterizationRateLayerDescriptor_vertical :: proc(self: ^RasterizationRateLayerDescriptor) -> ^RasterizationRateSampleArray { + return msgSend(^RasterizationRateSampleArray, self, "vertical") +} +@(objc_type=RasterizationRateLayerDescriptor, objc_name="verticalSampleStorage") +RasterizationRateLayerDescriptor_verticalSampleStorage :: proc(self: ^RasterizationRateLayerDescriptor) -> ^f32 { + return msgSend(^f32, self, "verticalSampleStorage") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RasterizationRateMapDescriptor +Class Methods: + alloc + rasterizationRateMapDescriptorWithScreenSize + rasterizationRateMapDescriptorWithScreenSize + rasterizationRateMapDescriptorWithScreenSize +Methods: + init + label + layerAtIndex + layerCount + layers + screenSize + setLabel + setLayer + setScreenSize +*/ +@(objc_class="MTLRasterizationRateMapDescriptor") +RasterizationRateMapDescriptor :: struct { using _: NS.Copying(RasterizationRateMapDescriptor) } + +@(objc_type=RasterizationRateMapDescriptor, objc_class_name="alloc") +RasterizationRateMapDescriptor_alloc :: proc() -> ^RasterizationRateMapDescriptor { + return msgSend(^RasterizationRateMapDescriptor, RasterizationRateMapDescriptor, "alloc") +} +@(objc_type=RasterizationRateMapDescriptor, objc_name="init") +RasterizationRateMapDescriptor_init :: proc(self: ^RasterizationRateMapDescriptor) -> ^RasterizationRateMapDescriptor { + return msgSend(^RasterizationRateMapDescriptor, self, "init") +} +@(objc_type=RasterizationRateMapDescriptor, objc_name="label") +RasterizationRateMapDescriptor_label :: proc(self: ^RasterizationRateMapDescriptor) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=RasterizationRateMapDescriptor, objc_name="layerAtIndex") +RasterizationRateMapDescriptor_layerAtIndex :: proc(self: ^RasterizationRateMapDescriptor, layerIndex: ^NS.Object) -> ^RasterizationRateLayerDescriptor { + return msgSend(^RasterizationRateLayerDescriptor, self, "layerAtIndex:", layerIndex) +} +@(objc_type=RasterizationRateMapDescriptor, objc_name="layerCount") +RasterizationRateMapDescriptor_layerCount :: proc(self: ^RasterizationRateMapDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "layerCount") +} +@(objc_type=RasterizationRateMapDescriptor, objc_name="layers") +RasterizationRateMapDescriptor_layers :: proc(self: ^RasterizationRateMapDescriptor) -> ^RasterizationRateLayerArray { + return msgSend(^RasterizationRateLayerArray, self, "layers") +} +@(objc_type=RasterizationRateMapDescriptor, objc_class_name="rasterizationRateMapDescriptorWithScreenSize") +RasterizationRateMapDescriptor_rasterizationRateMapDescriptorWithScreenSize :: proc(screenSize: Size) -> ^RasterizationRateMapDescriptor { + return msgSend(^RasterizationRateMapDescriptor, RasterizationRateMapDescriptor, "rasterizationRateMapDescriptorWithScreenSize:", screenSize) +} +@(objc_type=RasterizationRateMapDescriptor, objc_class_name="rasterizationRateMapDescriptorWithScreenSize_layer_") +RasterizationRateMapDescriptor_rasterizationRateMapDescriptorWithScreenSize_layer_ :: proc(screenSize: Size, layer: ^RasterizationRateLayerDescriptor) -> ^RasterizationRateMapDescriptor { + return msgSend(^RasterizationRateMapDescriptor, RasterizationRateMapDescriptor, "rasterizationRateMapDescriptorWithScreenSize:layer:", screenSize, layer) +} +@(objc_type=RasterizationRateMapDescriptor, objc_class_name="rasterizationRateMapDescriptorWithScreenSize_layerCount_layers_") +RasterizationRateMapDescriptor_rasterizationRateMapDescriptorWithScreenSize_layerCount_layers_ :: proc(screenSize: Size, layerCount: ^NS.Object, layers: ^^RasterizationRateLayerDescriptor ) -> ^RasterizationRateMapDescriptor { + return msgSend(^RasterizationRateMapDescriptor, RasterizationRateMapDescriptor, "rasterizationRateMapDescriptorWithScreenSize:layerCount:layers:", screenSize, layerCount, layers) +} +@(objc_type=RasterizationRateMapDescriptor, objc_name="screenSize") +RasterizationRateMapDescriptor_screenSize :: proc(self: ^RasterizationRateMapDescriptor) -> Size { + return msgSend(Size, self, "screenSize") +} +@(objc_type=RasterizationRateMapDescriptor, objc_name="setLabel") +RasterizationRateMapDescriptor_setLabel :: proc(self: ^RasterizationRateMapDescriptor, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} +@(objc_type=RasterizationRateMapDescriptor, objc_name="setLayer") +RasterizationRateMapDescriptor_setLayer :: proc(self: ^RasterizationRateMapDescriptor, layer: ^RasterizationRateLayerDescriptor, layerIndex: ^NS.Object) { + msgSend(nil, self, "setLayer:atIndex:", layer, layerIndex) +} +@(objc_type=RasterizationRateMapDescriptor, objc_name="setScreenSize") +RasterizationRateMapDescriptor_setScreenSize :: proc(self: ^RasterizationRateMapDescriptor, screenSize: Size) { + msgSend(nil, self, "setScreenSize:", screenSize) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RasterizationRateSampleArray +Class Methods: + alloc +Methods: + init + objectAtIndexedSubscript + setObject +*/ +@(objc_class="MTLRasterizationRateSampleArray") +RasterizationRateSampleArray :: struct { using _: NS.Object } + +@(objc_type=RasterizationRateSampleArray, objc_class_name="alloc") +RasterizationRateSampleArray_alloc :: proc() -> ^RasterizationRateSampleArray { + return msgSend(^RasterizationRateSampleArray, RasterizationRateSampleArray, "alloc") +} +@(objc_type=RasterizationRateSampleArray, objc_name="init") +RasterizationRateSampleArray_init :: proc(self: ^RasterizationRateSampleArray) -> ^RasterizationRateSampleArray { + return msgSend(^RasterizationRateSampleArray, self, "init") +} +@(objc_type=RasterizationRateSampleArray, objc_name="objectAtIndexedSubscript") +RasterizationRateSampleArray_objectAtIndexedSubscript :: proc(self: ^RasterizationRateSampleArray, index: ^NS.Object) -> ^NS.Number { + return msgSend(^NS.Number, self, "objectAtIndexedSubscript:", index) +} +@(objc_type=RasterizationRateSampleArray, objc_name="setObject") +RasterizationRateSampleArray_setObject :: proc(self: ^RasterizationRateSampleArray, value: ^NS.Number, index: ^NS.Object) { + msgSend(nil, self, "setObject:atIndexedSubscript:", value, index) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RenderPassAttachmentDescriptor +Class Methods: + alloc +Methods: + init + depthPlane + level + loadAction + resolveDepthPlane + resolveLevel + resolveSlice + resolveTexture + setDepthPlane + setLevel + setLoadAction + setResolveDepthPlane + setResolveLevel + setResolveSlice + setResolveTexture + setSlice + setStoreAction + setStoreActionOptions + setTexture + slice + storeAction + storeActionOptions + texture +*/ +@(objc_class="MTLRenderPassAttachmentDescriptor") +RenderPassAttachmentDescriptor :: struct { using _: NS.Copying(RenderPassAttachmentDescriptor) } + +@(objc_type=RenderPassAttachmentDescriptor, objc_class_name="alloc") +RenderPassAttachmentDescriptor_alloc :: proc() -> ^RenderPassAttachmentDescriptor { + return msgSend(^RenderPassAttachmentDescriptor, RenderPassAttachmentDescriptor, "alloc") +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="init") +RenderPassAttachmentDescriptor_init :: proc(self: ^RenderPassAttachmentDescriptor) -> ^RenderPassAttachmentDescriptor { + return msgSend(^RenderPassAttachmentDescriptor, self, "init") +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="depthPlane") +RenderPassAttachmentDescriptor_depthPlane :: proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "depthPlane") +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="level") +RenderPassAttachmentDescriptor_level :: proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "level") +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="loadAction") +RenderPassAttachmentDescriptor_loadAction :: proc(self: ^RenderPassAttachmentDescriptor) -> LoadAction { + return msgSend(LoadAction, self, "loadAction") +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="resolveDepthPlane") +RenderPassAttachmentDescriptor_resolveDepthPlane :: proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "resolveDepthPlane") +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="resolveLevel") +RenderPassAttachmentDescriptor_resolveLevel :: proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "resolveLevel") +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="resolveSlice") +RenderPassAttachmentDescriptor_resolveSlice :: proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "resolveSlice") +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="resolveTexture") +RenderPassAttachmentDescriptor_resolveTexture :: proc(self: ^RenderPassAttachmentDescriptor) -> ^RenderPassAttachmentDescriptor { + return msgSend(^RenderPassAttachmentDescriptor, self, "resolveTexture") +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="setDepthPlane") +RenderPassAttachmentDescriptor_setDepthPlane :: proc(self: ^RenderPassAttachmentDescriptor, depthPlane: NS.Integer) { + msgSend(nil, self, "setDepthPlane:", depthPlane) +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="setLevel") +RenderPassAttachmentDescriptor_setLevel :: proc(self: ^RenderPassAttachmentDescriptor, level: NS.Integer) { + msgSend(nil, self, "setLevel:", level) +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="setLoadAction") +RenderPassAttachmentDescriptor_setLoadAction :: proc(self: ^RenderPassAttachmentDescriptor, loadAction: LoadAction) { + msgSend(nil, self, "setLoadAction:", loadAction) +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="setResolveDepthPlane") +RenderPassAttachmentDescriptor_setResolveDepthPlane :: proc(self: ^RenderPassAttachmentDescriptor, resolveDepthPlane: NS.Integer) { + msgSend(nil, self, "setResolveDepthPlane:", resolveDepthPlane) +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="setResolveLevel") +RenderPassAttachmentDescriptor_setResolveLevel :: proc(self: ^RenderPassAttachmentDescriptor, resolveLevel: NS.Integer) { + msgSend(nil, self, "setResolveLevel:", resolveLevel) +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="setResolveSlice") +RenderPassAttachmentDescriptor_setResolveSlice :: proc(self: ^RenderPassAttachmentDescriptor, resolveSlice: NS.Integer) { + msgSend(nil, self, "setResolveSlice:", resolveSlice) +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="setResolveTexture") +RenderPassAttachmentDescriptor_setResolveTexture :: proc(self: ^RenderPassAttachmentDescriptor, resolveTexture: ^NS.Object) { + msgSend(nil, self, "setResolveTexture:", resolveTexture) +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="setSlice") +RenderPassAttachmentDescriptor_setSlice :: proc(self: ^RenderPassAttachmentDescriptor, slice: NS.Integer) { + msgSend(nil, self, "setSlice:", slice) +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="setStoreAction") +RenderPassAttachmentDescriptor_setStoreAction :: proc(self: ^RenderPassAttachmentDescriptor, storeAction: StoreAction) { + msgSend(nil, self, "setStoreAction:", storeAction) +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="setStoreActionOptions") +RenderPassAttachmentDescriptor_setStoreActionOptions :: proc(self: ^RenderPassAttachmentDescriptor, storeActionOptions: StoreActionOptions) { + msgSend(nil, self, "setStoreActionOptions:", storeActionOptions) +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="setTexture") +RenderPassAttachmentDescriptor_setTexture :: proc(self: ^RenderPassAttachmentDescriptor, texture: ^NS.Object) { + msgSend(nil, self, "setTexture:", texture) +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="slice") +RenderPassAttachmentDescriptor_slice :: proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "slice") +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="storeAction") +RenderPassAttachmentDescriptor_storeAction :: proc(self: ^RenderPassAttachmentDescriptor) -> StoreAction { + return msgSend(StoreAction, self, "storeAction") +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="storeActionOptions") +RenderPassAttachmentDescriptor_storeActionOptions :: proc(self: ^RenderPassAttachmentDescriptor) -> StoreActionOptions { + return msgSend(StoreActionOptions, self, "storeActionOptions") +} +@(objc_type=RenderPassAttachmentDescriptor, objc_name="texture") +RenderPassAttachmentDescriptor_texture :: proc(self: ^RenderPassAttachmentDescriptor) -> ^RenderPassAttachmentDescriptor { + return msgSend(^RenderPassAttachmentDescriptor, self, "texture") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RenderPassColorAttachmentDescriptor +Class Methods: + alloc +Methods: + init + clearColor + setClearColor +*/ +@(objc_class="MTLRenderPassColorAttachmentDescriptor") +RenderPassColorAttachmentDescriptor :: struct { using _: NS.Copying(RenderPassColorAttachmentDescriptor) } + +@(objc_type=RenderPassColorAttachmentDescriptor, objc_class_name="alloc") +RenderPassColorAttachmentDescriptor_alloc :: proc() -> ^RenderPassColorAttachmentDescriptor { + return msgSend(^RenderPassColorAttachmentDescriptor, RenderPassColorAttachmentDescriptor, "alloc") +} +@(objc_type=RenderPassColorAttachmentDescriptor, objc_name="init") +RenderPassColorAttachmentDescriptor_init :: proc(self: ^RenderPassColorAttachmentDescriptor) -> ^RenderPassColorAttachmentDescriptor { + return msgSend(^RenderPassColorAttachmentDescriptor, self, "init") +} +@(objc_type=RenderPassColorAttachmentDescriptor, objc_name="clearColor") +RenderPassColorAttachmentDescriptor_clearColor :: proc(self: ^RenderPassColorAttachmentDescriptor) -> ClearColor { + return msgSend(ClearColor, self, "clearColor") +} +@(objc_type=RenderPassColorAttachmentDescriptor, objc_name="setClearColor") +RenderPassColorAttachmentDescriptor_setClearColor :: proc(self: ^RenderPassColorAttachmentDescriptor, clearColor: ClearColor) { + msgSend(nil, self, "setClearColor:", clearColor) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RenderPassColorAttachmentDescriptorArray +Class Methods: + alloc +Methods: + init + objectAtIndexedSubscript + setObject +*/ +@(objc_class="MTLRenderPassColorAttachmentDescriptorArray") +RenderPassColorAttachmentDescriptorArray :: struct { using _: NS.Object } + +@(objc_type=RenderPassColorAttachmentDescriptorArray, objc_class_name="alloc") +RenderPassColorAttachmentDescriptorArray_alloc :: proc() -> ^RenderPassColorAttachmentDescriptorArray { + return msgSend(^RenderPassColorAttachmentDescriptorArray, RenderPassColorAttachmentDescriptorArray, "alloc") +} +@(objc_type=RenderPassColorAttachmentDescriptorArray, objc_name="init") +RenderPassColorAttachmentDescriptorArray_init :: proc(self: ^RenderPassColorAttachmentDescriptorArray) -> ^RenderPassColorAttachmentDescriptorArray { + return msgSend(^RenderPassColorAttachmentDescriptorArray, self, "init") +} +@(objc_type=RenderPassColorAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") +RenderPassColorAttachmentDescriptorArray_objectAtIndexedSubscript :: proc(self: ^RenderPassColorAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^RenderPassColorAttachmentDescriptor { + return msgSend(^RenderPassColorAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) +} +@(objc_type=RenderPassColorAttachmentDescriptorArray, objc_name="setObject") +RenderPassColorAttachmentDescriptorArray_setObject :: proc(self: ^RenderPassColorAttachmentDescriptorArray, attachment: ^RenderPassColorAttachmentDescriptor, attachmentIndex: ^NS.Object) { + msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RenderPassDepthAttachmentDescriptor +Class Methods: + alloc +Methods: + init + clearDepth + depthResolveFilter + setClearDepth + setDepthResolveFilter +*/ +@(objc_class="MTLRenderPassDepthAttachmentDescriptor") +RenderPassDepthAttachmentDescriptor :: struct { using _: NS.Copying(RenderPassDepthAttachmentDescriptor) } + +@(objc_type=RenderPassDepthAttachmentDescriptor, objc_class_name="alloc") +RenderPassDepthAttachmentDescriptor_alloc :: proc() -> ^RenderPassDepthAttachmentDescriptor { + return msgSend(^RenderPassDepthAttachmentDescriptor, RenderPassDepthAttachmentDescriptor, "alloc") +} +@(objc_type=RenderPassDepthAttachmentDescriptor, objc_name="init") +RenderPassDepthAttachmentDescriptor_init :: proc(self: ^RenderPassDepthAttachmentDescriptor) -> ^RenderPassDepthAttachmentDescriptor { + return msgSend(^RenderPassDepthAttachmentDescriptor, self, "init") +} +@(objc_type=RenderPassDepthAttachmentDescriptor, objc_name="clearDepth") +RenderPassDepthAttachmentDescriptor_clearDepth :: proc(self: ^RenderPassDepthAttachmentDescriptor) -> f64 { + return msgSend(f64, self, "clearDepth") +} +@(objc_type=RenderPassDepthAttachmentDescriptor, objc_name="depthResolveFilter") +RenderPassDepthAttachmentDescriptor_depthResolveFilter :: proc(self: ^RenderPassDepthAttachmentDescriptor) -> MultisampleDepthResolveFilter { + return msgSend(MultisampleDepthResolveFilter, self, "depthResolveFilter") +} +@(objc_type=RenderPassDepthAttachmentDescriptor, objc_name="setClearDepth") +RenderPassDepthAttachmentDescriptor_setClearDepth :: proc(self: ^RenderPassDepthAttachmentDescriptor, clearDepth: f64) { + msgSend(nil, self, "setClearDepth:", clearDepth) +} +@(objc_type=RenderPassDepthAttachmentDescriptor, objc_name="setDepthResolveFilter") +RenderPassDepthAttachmentDescriptor_setDepthResolveFilter :: proc(self: ^RenderPassDepthAttachmentDescriptor, depthResolveFilter: MultisampleDepthResolveFilter) { + msgSend(nil, self, "setDepthResolveFilter:", depthResolveFilter) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RenderPassDescriptor +Class Methods: + alloc + renderPassDescriptor +Methods: + init + colorAttachments + defaultRasterSampleCount + depthAttachment + getSamplePositions + imageblockSampleLength + rasterizationRateMap + renderTargetArrayLength + renderTargetHeight + renderTargetWidth + sampleBufferAttachments + setDefaultRasterSampleCount + setDepthAttachment + setImageblockSampleLength + setRasterizationRateMap + setRenderTargetArrayLength + setRenderTargetHeight + setRenderTargetWidth + setSamplePositions + setStencilAttachment + setThreadgroupMemoryLength + setTileHeight + setTileWidth + setVisibilityResultBuffer + stencilAttachment + threadgroupMemoryLength + tileHeight + tileWidth + visibilityResultBuffer +*/ +@(objc_class="MTLRenderPassDescriptor") +RenderPassDescriptor :: struct { using _: NS.Copying(RenderPassDescriptor) } + +@(objc_type=RenderPassDescriptor, objc_class_name="alloc") +RenderPassDescriptor_alloc :: proc() -> ^RenderPassDescriptor { + return msgSend(^RenderPassDescriptor, RenderPassDescriptor, "alloc") +} +@(objc_type=RenderPassDescriptor, objc_name="init") +RenderPassDescriptor_init :: proc(self: ^RenderPassDescriptor) -> ^RenderPassDescriptor { + return msgSend(^RenderPassDescriptor, self, "init") +} +@(objc_type=RenderPassDescriptor, objc_name="colorAttachments") +RenderPassDescriptor_colorAttachments :: proc(self: ^RenderPassDescriptor) -> ^RenderPassColorAttachmentDescriptorArray { + return msgSend(^RenderPassColorAttachmentDescriptorArray, self, "colorAttachments") +} +@(objc_type=RenderPassDescriptor, objc_name="defaultRasterSampleCount") +RenderPassDescriptor_defaultRasterSampleCount :: proc(self: ^RenderPassDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "defaultRasterSampleCount") +} +@(objc_type=RenderPassDescriptor, objc_name="depthAttachment") +RenderPassDescriptor_depthAttachment :: proc(self: ^RenderPassDescriptor) -> ^RenderPassDepthAttachmentDescriptor { + return msgSend(^RenderPassDepthAttachmentDescriptor, self, "depthAttachment") +} +@(objc_type=RenderPassDescriptor, objc_name="getSamplePositions") +RenderPassDescriptor_getSamplePositions :: proc(self: ^RenderPassDescriptor, positions: ^SamplePosition, count: ^NS.Object) -> ^RenderPassDescriptor { + return msgSend(^RenderPassDescriptor, self, "getSamplePositions:count:", positions, count) +} +@(objc_type=RenderPassDescriptor, objc_name="imageblockSampleLength") +RenderPassDescriptor_imageblockSampleLength :: proc(self: ^RenderPassDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "imageblockSampleLength") +} +@(objc_type=RenderPassDescriptor, objc_name="rasterizationRateMap") +RenderPassDescriptor_rasterizationRateMap :: proc(self: ^RenderPassDescriptor) -> ^RenderPassDescriptor { + return msgSend(^RenderPassDescriptor, self, "rasterizationRateMap") +} +@(objc_type=RenderPassDescriptor, objc_class_name="renderPassDescriptor") +RenderPassDescriptor_renderPassDescriptor :: proc() -> ^RenderPassDescriptor { + return msgSend(^RenderPassDescriptor, RenderPassDescriptor, "renderPassDescriptor") +} +@(objc_type=RenderPassDescriptor, objc_name="renderTargetArrayLength") +RenderPassDescriptor_renderTargetArrayLength :: proc(self: ^RenderPassDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "renderTargetArrayLength") +} +@(objc_type=RenderPassDescriptor, objc_name="renderTargetHeight") +RenderPassDescriptor_renderTargetHeight :: proc(self: ^RenderPassDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "renderTargetHeight") +} +@(objc_type=RenderPassDescriptor, objc_name="renderTargetWidth") +RenderPassDescriptor_renderTargetWidth :: proc(self: ^RenderPassDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "renderTargetWidth") +} +@(objc_type=RenderPassDescriptor, objc_name="sampleBufferAttachments") +RenderPassDescriptor_sampleBufferAttachments :: proc(self: ^RenderPassDescriptor) -> ^RenderPassSampleBufferAttachmentDescriptorArray { + return msgSend(^RenderPassSampleBufferAttachmentDescriptorArray, self, "sampleBufferAttachments") +} +@(objc_type=RenderPassDescriptor, objc_name="setDefaultRasterSampleCount") +RenderPassDescriptor_setDefaultRasterSampleCount :: proc(self: ^RenderPassDescriptor, defaultRasterSampleCount: NS.Integer) { + msgSend(nil, self, "setDefaultRasterSampleCount:", defaultRasterSampleCount) +} +@(objc_type=RenderPassDescriptor, objc_name="setDepthAttachment") +RenderPassDescriptor_setDepthAttachment :: proc(self: ^RenderPassDescriptor, depthAttachment: ^RenderPassDepthAttachmentDescriptor) { + msgSend(nil, self, "setDepthAttachment:", depthAttachment) +} +@(objc_type=RenderPassDescriptor, objc_name="setImageblockSampleLength") +RenderPassDescriptor_setImageblockSampleLength :: proc(self: ^RenderPassDescriptor, imageblockSampleLength: NS.Integer) { + msgSend(nil, self, "setImageblockSampleLength:", imageblockSampleLength) +} +@(objc_type=RenderPassDescriptor, objc_name="setRasterizationRateMap") +RenderPassDescriptor_setRasterizationRateMap :: proc(self: ^RenderPassDescriptor, rasterizationRateMap: ^NS.Object) { + msgSend(nil, self, "setRasterizationRateMap:", rasterizationRateMap) +} +@(objc_type=RenderPassDescriptor, objc_name="setRenderTargetArrayLength") +RenderPassDescriptor_setRenderTargetArrayLength :: proc(self: ^RenderPassDescriptor, renderTargetArrayLength: NS.Integer) { + msgSend(nil, self, "setRenderTargetArrayLength:", renderTargetArrayLength) +} +@(objc_type=RenderPassDescriptor, objc_name="setRenderTargetHeight") +RenderPassDescriptor_setRenderTargetHeight :: proc(self: ^RenderPassDescriptor, renderTargetHeight: NS.Integer) { + msgSend(nil, self, "setRenderTargetHeight:", renderTargetHeight) +} +@(objc_type=RenderPassDescriptor, objc_name="setRenderTargetWidth") +RenderPassDescriptor_setRenderTargetWidth :: proc(self: ^RenderPassDescriptor, renderTargetWidth: NS.Integer) { + msgSend(nil, self, "setRenderTargetWidth:", renderTargetWidth) +} +@(objc_type=RenderPassDescriptor, objc_name="setSamplePositions") +RenderPassDescriptor_setSamplePositions :: proc(self: ^RenderPassDescriptor, positions: ^SamplePosition, count: ^NS.Object) { + msgSend(nil, self, "setSamplePositions:count:", positions, count) +} +@(objc_type=RenderPassDescriptor, objc_name="setStencilAttachment") +RenderPassDescriptor_setStencilAttachment :: proc(self: ^RenderPassDescriptor, stencilAttachment: ^RenderPassStencilAttachmentDescriptor) { + msgSend(nil, self, "setStencilAttachment:", stencilAttachment) +} +@(objc_type=RenderPassDescriptor, objc_name="setThreadgroupMemoryLength") +RenderPassDescriptor_setThreadgroupMemoryLength :: proc(self: ^RenderPassDescriptor, threadgroupMemoryLength: NS.Integer) { + msgSend(nil, self, "setThreadgroupMemoryLength:", threadgroupMemoryLength) +} +@(objc_type=RenderPassDescriptor, objc_name="setTileHeight") +RenderPassDescriptor_setTileHeight :: proc(self: ^RenderPassDescriptor, tileHeight: NS.Integer) { + msgSend(nil, self, "setTileHeight:", tileHeight) +} +@(objc_type=RenderPassDescriptor, objc_name="setTileWidth") +RenderPassDescriptor_setTileWidth :: proc(self: ^RenderPassDescriptor, tileWidth: NS.Integer) { + msgSend(nil, self, "setTileWidth:", tileWidth) +} +@(objc_type=RenderPassDescriptor, objc_name="setVisibilityResultBuffer") +RenderPassDescriptor_setVisibilityResultBuffer :: proc(self: ^RenderPassDescriptor, visibilityResultBuffer: ^NS.Object) { + msgSend(nil, self, "setVisibilityResultBuffer:", visibilityResultBuffer) +} +@(objc_type=RenderPassDescriptor, objc_name="stencilAttachment") +RenderPassDescriptor_stencilAttachment :: proc(self: ^RenderPassDescriptor) -> ^RenderPassStencilAttachmentDescriptor { + return msgSend(^RenderPassStencilAttachmentDescriptor, self, "stencilAttachment") +} +@(objc_type=RenderPassDescriptor, objc_name="threadgroupMemoryLength") +RenderPassDescriptor_threadgroupMemoryLength :: proc(self: ^RenderPassDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "threadgroupMemoryLength") +} +@(objc_type=RenderPassDescriptor, objc_name="tileHeight") +RenderPassDescriptor_tileHeight :: proc(self: ^RenderPassDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "tileHeight") +} +@(objc_type=RenderPassDescriptor, objc_name="tileWidth") +RenderPassDescriptor_tileWidth :: proc(self: ^RenderPassDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "tileWidth") +} +@(objc_type=RenderPassDescriptor, objc_name="visibilityResultBuffer") +RenderPassDescriptor_visibilityResultBuffer :: proc(self: ^RenderPassDescriptor) -> ^RenderPassDescriptor { + return msgSend(^RenderPassDescriptor, self, "visibilityResultBuffer") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RenderPassSampleBufferAttachmentDescriptor +Class Methods: + alloc +Methods: + init + endOfFragmentSampleIndex + endOfVertexSampleIndex + sampleBuffer + setEndOfFragmentSampleIndex + setEndOfVertexSampleIndex + setSampleBuffer + setStartOfFragmentSampleIndex + setStartOfVertexSampleIndex + startOfFragmentSampleIndex + startOfVertexSampleIndex +*/ +@(objc_class="MTLRenderPassSampleBufferAttachmentDescriptor") +RenderPassSampleBufferAttachmentDescriptor :: struct { using _: NS.Copying(RenderPassSampleBufferAttachmentDescriptor) } + +@(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_class_name="alloc") +RenderPassSampleBufferAttachmentDescriptor_alloc :: proc() -> ^RenderPassSampleBufferAttachmentDescriptor { + return msgSend(^RenderPassSampleBufferAttachmentDescriptor, RenderPassSampleBufferAttachmentDescriptor, "alloc") +} +@(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="init") +RenderPassSampleBufferAttachmentDescriptor_init :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> ^RenderPassSampleBufferAttachmentDescriptor { + return msgSend(^RenderPassSampleBufferAttachmentDescriptor, self, "init") +} +@(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="endOfFragmentSampleIndex") +RenderPassSampleBufferAttachmentDescriptor_endOfFragmentSampleIndex :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "endOfFragmentSampleIndex") +} +@(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="endOfVertexSampleIndex") +RenderPassSampleBufferAttachmentDescriptor_endOfVertexSampleIndex :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "endOfVertexSampleIndex") +} +@(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="sampleBuffer") +RenderPassSampleBufferAttachmentDescriptor_sampleBuffer :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> ^RenderPassSampleBufferAttachmentDescriptor { + return msgSend(^RenderPassSampleBufferAttachmentDescriptor, self, "sampleBuffer") +} +@(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="setEndOfFragmentSampleIndex") +RenderPassSampleBufferAttachmentDescriptor_setEndOfFragmentSampleIndex :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor, endOfFragmentSampleIndex: NS.Integer) { + msgSend(nil, self, "setEndOfFragmentSampleIndex:", endOfFragmentSampleIndex) +} +@(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="setEndOfVertexSampleIndex") +RenderPassSampleBufferAttachmentDescriptor_setEndOfVertexSampleIndex :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor, endOfVertexSampleIndex: NS.Integer) { + msgSend(nil, self, "setEndOfVertexSampleIndex:", endOfVertexSampleIndex) +} +@(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="setSampleBuffer") +RenderPassSampleBufferAttachmentDescriptor_setSampleBuffer :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor, sampleBuffer: ^NS.Object) { + msgSend(nil, self, "setSampleBuffer:", sampleBuffer) +} +@(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="setStartOfFragmentSampleIndex") +RenderPassSampleBufferAttachmentDescriptor_setStartOfFragmentSampleIndex :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor, startOfFragmentSampleIndex: NS.Integer) { + msgSend(nil, self, "setStartOfFragmentSampleIndex:", startOfFragmentSampleIndex) +} +@(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="setStartOfVertexSampleIndex") +RenderPassSampleBufferAttachmentDescriptor_setStartOfVertexSampleIndex :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor, startOfVertexSampleIndex: NS.Integer) { + msgSend(nil, self, "setStartOfVertexSampleIndex:", startOfVertexSampleIndex) +} +@(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="startOfFragmentSampleIndex") +RenderPassSampleBufferAttachmentDescriptor_startOfFragmentSampleIndex :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "startOfFragmentSampleIndex") +} +@(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="startOfVertexSampleIndex") +RenderPassSampleBufferAttachmentDescriptor_startOfVertexSampleIndex :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "startOfVertexSampleIndex") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RenderPassSampleBufferAttachmentDescriptorArray +Class Methods: + alloc +Methods: + init + objectAtIndexedSubscript + setObject +*/ +@(objc_class="MTLRenderPassSampleBufferAttachmentDescriptorArray") +RenderPassSampleBufferAttachmentDescriptorArray :: struct { using _: NS.Object } + +@(objc_type=RenderPassSampleBufferAttachmentDescriptorArray, objc_class_name="alloc") +RenderPassSampleBufferAttachmentDescriptorArray_alloc :: proc() -> ^RenderPassSampleBufferAttachmentDescriptorArray { + return msgSend(^RenderPassSampleBufferAttachmentDescriptorArray, RenderPassSampleBufferAttachmentDescriptorArray, "alloc") +} +@(objc_type=RenderPassSampleBufferAttachmentDescriptorArray, objc_name="init") +RenderPassSampleBufferAttachmentDescriptorArray_init :: proc(self: ^RenderPassSampleBufferAttachmentDescriptorArray) -> ^RenderPassSampleBufferAttachmentDescriptorArray { + return msgSend(^RenderPassSampleBufferAttachmentDescriptorArray, self, "init") +} +@(objc_type=RenderPassSampleBufferAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") +RenderPassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: proc(self: ^RenderPassSampleBufferAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^RenderPassSampleBufferAttachmentDescriptor { + return msgSend(^RenderPassSampleBufferAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) +} +@(objc_type=RenderPassSampleBufferAttachmentDescriptorArray, objc_name="setObject") +RenderPassSampleBufferAttachmentDescriptorArray_setObject :: proc(self: ^RenderPassSampleBufferAttachmentDescriptorArray, attachment: ^RenderPassSampleBufferAttachmentDescriptor, attachmentIndex: ^NS.Object) { + msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RenderPassStencilAttachmentDescriptor +Class Methods: + alloc +Methods: + init + clearStencil + setClearStencil + setStencilResolveFilter + stencilResolveFilter +*/ +@(objc_class="MTLRenderPassStencilAttachmentDescriptor") +RenderPassStencilAttachmentDescriptor :: struct { using _: NS.Copying(RenderPassStencilAttachmentDescriptor) } + +@(objc_type=RenderPassStencilAttachmentDescriptor, objc_class_name="alloc") +RenderPassStencilAttachmentDescriptor_alloc :: proc() -> ^RenderPassStencilAttachmentDescriptor { + return msgSend(^RenderPassStencilAttachmentDescriptor, RenderPassStencilAttachmentDescriptor, "alloc") +} +@(objc_type=RenderPassStencilAttachmentDescriptor, objc_name="init") +RenderPassStencilAttachmentDescriptor_init :: proc(self: ^RenderPassStencilAttachmentDescriptor) -> ^RenderPassStencilAttachmentDescriptor { + return msgSend(^RenderPassStencilAttachmentDescriptor, self, "init") +} +@(objc_type=RenderPassStencilAttachmentDescriptor, objc_name="clearStencil") +RenderPassStencilAttachmentDescriptor_clearStencil :: proc(self: ^RenderPassStencilAttachmentDescriptor) -> u32 { + return msgSend(u32, self, "clearStencil") +} +@(objc_type=RenderPassStencilAttachmentDescriptor, objc_name="setClearStencil") +RenderPassStencilAttachmentDescriptor_setClearStencil :: proc(self: ^RenderPassStencilAttachmentDescriptor, clearStencil: u32) { + msgSend(nil, self, "setClearStencil:", clearStencil) +} +@(objc_type=RenderPassStencilAttachmentDescriptor, objc_name="setStencilResolveFilter") +RenderPassStencilAttachmentDescriptor_setStencilResolveFilter :: proc(self: ^RenderPassStencilAttachmentDescriptor, stencilResolveFilter: MultisampleStencilResolveFilter) { + msgSend(nil, self, "setStencilResolveFilter:", stencilResolveFilter) +} +@(objc_type=RenderPassStencilAttachmentDescriptor, objc_name="stencilResolveFilter") +RenderPassStencilAttachmentDescriptor_stencilResolveFilter :: proc(self: ^RenderPassStencilAttachmentDescriptor) -> MultisampleStencilResolveFilter { + return msgSend(MultisampleStencilResolveFilter, self, "stencilResolveFilter") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RenderPipelineColorAttachmentDescriptor +Class Methods: + alloc +Methods: + init + alphaBlendOperation + destinationAlphaBlendFactor + destinationRGBBlendFactor + isBlendingEnabled + pixelFormat + rgbBlendOperation + setAlphaBlendOperation + setBlendingEnabled + setDestinationAlphaBlendFactor + setDestinationRGBBlendFactor + setPixelFormat + setRgbBlendOperation + setSourceAlphaBlendFactor + setSourceRGBBlendFactor + setWriteMask + sourceAlphaBlendFactor + sourceRGBBlendFactor + writeMask +*/ +@(objc_class="MTLRenderPipelineColorAttachmentDescriptor") +RenderPipelineColorAttachmentDescriptor :: struct { using _: NS.Copying(RenderPipelineColorAttachmentDescriptor) } + +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_class_name="alloc") +RenderPipelineColorAttachmentDescriptor_alloc :: proc() -> ^RenderPipelineColorAttachmentDescriptor { + return msgSend(^RenderPipelineColorAttachmentDescriptor, RenderPipelineColorAttachmentDescriptor, "alloc") +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="init") +RenderPipelineColorAttachmentDescriptor_init :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> ^RenderPipelineColorAttachmentDescriptor { + return msgSend(^RenderPipelineColorAttachmentDescriptor, self, "init") +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="alphaBlendOperation") +RenderPipelineColorAttachmentDescriptor_alphaBlendOperation :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendOperation { + return msgSend(BlendOperation, self, "alphaBlendOperation") +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="destinationAlphaBlendFactor") +RenderPipelineColorAttachmentDescriptor_destinationAlphaBlendFactor :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendFactor { + return msgSend(BlendFactor, self, "destinationAlphaBlendFactor") +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="destinationRGBBlendFactor") +RenderPipelineColorAttachmentDescriptor_destinationRGBBlendFactor :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendFactor { + return msgSend(BlendFactor, self, "destinationRGBBlendFactor") +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="isBlendingEnabled") +RenderPipelineColorAttachmentDescriptor_isBlendingEnabled :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BOOL { + return msgSend(BOOL, self, "isBlendingEnabled") +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="pixelFormat") +RenderPipelineColorAttachmentDescriptor_pixelFormat :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> PixelFormat { + return msgSend(PixelFormat, self, "pixelFormat") +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="rgbBlendOperation") +RenderPipelineColorAttachmentDescriptor_rgbBlendOperation :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendOperation { + return msgSend(BlendOperation, self, "rgbBlendOperation") +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setAlphaBlendOperation") +RenderPipelineColorAttachmentDescriptor_setAlphaBlendOperation :: proc(self: ^RenderPipelineColorAttachmentDescriptor, alphaBlendOperation: BlendOperation) { + msgSend(nil, self, "setAlphaBlendOperation:", alphaBlendOperation) +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setBlendingEnabled") +RenderPipelineColorAttachmentDescriptor_setBlendingEnabled :: proc(self: ^RenderPipelineColorAttachmentDescriptor, blendingEnabled: BOOL) { + msgSend(nil, self, "setBlendingEnabled:", blendingEnabled) +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setDestinationAlphaBlendFactor") +RenderPipelineColorAttachmentDescriptor_setDestinationAlphaBlendFactor :: proc(self: ^RenderPipelineColorAttachmentDescriptor, destinationAlphaBlendFactor: BlendFactor) { + msgSend(nil, self, "setDestinationAlphaBlendFactor:", destinationAlphaBlendFactor) +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setDestinationRGBBlendFactor") +RenderPipelineColorAttachmentDescriptor_setDestinationRGBBlendFactor :: proc(self: ^RenderPipelineColorAttachmentDescriptor, destinationRGBBlendFactor: BlendFactor) { + msgSend(nil, self, "setDestinationRGBBlendFactor:", destinationRGBBlendFactor) +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setPixelFormat") +RenderPipelineColorAttachmentDescriptor_setPixelFormat :: proc(self: ^RenderPipelineColorAttachmentDescriptor, pixelFormat: PixelFormat) { + msgSend(nil, self, "setPixelFormat:", pixelFormat) +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setRgbBlendOperation") +RenderPipelineColorAttachmentDescriptor_setRgbBlendOperation :: proc(self: ^RenderPipelineColorAttachmentDescriptor, rgbBlendOperation: BlendOperation) { + msgSend(nil, self, "setRgbBlendOperation:", rgbBlendOperation) +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setSourceAlphaBlendFactor") +RenderPipelineColorAttachmentDescriptor_setSourceAlphaBlendFactor :: proc(self: ^RenderPipelineColorAttachmentDescriptor, sourceAlphaBlendFactor: BlendFactor) { + msgSend(nil, self, "setSourceAlphaBlendFactor:", sourceAlphaBlendFactor) +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setSourceRGBBlendFactor") +RenderPipelineColorAttachmentDescriptor_setSourceRGBBlendFactor :: proc(self: ^RenderPipelineColorAttachmentDescriptor, sourceRGBBlendFactor: BlendFactor) { + msgSend(nil, self, "setSourceRGBBlendFactor:", sourceRGBBlendFactor) +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setWriteMask") +RenderPipelineColorAttachmentDescriptor_setWriteMask :: proc(self: ^RenderPipelineColorAttachmentDescriptor, writeMask: ColorWriteMask) { + msgSend(nil, self, "setWriteMask:", writeMask) +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="sourceAlphaBlendFactor") +RenderPipelineColorAttachmentDescriptor_sourceAlphaBlendFactor :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendFactor { + return msgSend(BlendFactor, self, "sourceAlphaBlendFactor") +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="sourceRGBBlendFactor") +RenderPipelineColorAttachmentDescriptor_sourceRGBBlendFactor :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendFactor { + return msgSend(BlendFactor, self, "sourceRGBBlendFactor") +} +@(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="writeMask") +RenderPipelineColorAttachmentDescriptor_writeMask :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> ColorWriteMask { + return msgSend(ColorWriteMask, self, "writeMask") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RenderPipelineColorAttachmentDescriptorArray +Class Methods: + alloc +Methods: + init + objectAtIndexedSubscript + setObject +*/ +@(objc_class="MTLRenderPipelineColorAttachmentDescriptorArray") +RenderPipelineColorAttachmentDescriptorArray :: struct { using _: NS.Object } + +@(objc_type=RenderPipelineColorAttachmentDescriptorArray, objc_class_name="alloc") +RenderPipelineColorAttachmentDescriptorArray_alloc :: proc() -> ^RenderPipelineColorAttachmentDescriptorArray { + return msgSend(^RenderPipelineColorAttachmentDescriptorArray, RenderPipelineColorAttachmentDescriptorArray, "alloc") +} +@(objc_type=RenderPipelineColorAttachmentDescriptorArray, objc_name="init") +RenderPipelineColorAttachmentDescriptorArray_init :: proc(self: ^RenderPipelineColorAttachmentDescriptorArray) -> ^RenderPipelineColorAttachmentDescriptorArray { + return msgSend(^RenderPipelineColorAttachmentDescriptorArray, self, "init") +} +@(objc_type=RenderPipelineColorAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") +RenderPipelineColorAttachmentDescriptorArray_objectAtIndexedSubscript :: proc(self: ^RenderPipelineColorAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^RenderPipelineColorAttachmentDescriptor { + return msgSend(^RenderPipelineColorAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) +} +@(objc_type=RenderPipelineColorAttachmentDescriptorArray, objc_name="setObject") +RenderPipelineColorAttachmentDescriptorArray_setObject :: proc(self: ^RenderPipelineColorAttachmentDescriptorArray, attachment: ^RenderPipelineColorAttachmentDescriptor, attachmentIndex: ^NS.Object) { + msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RenderPipelineDescriptor +Class Methods: + alloc +Methods: + init + binaryArchives + colorAttachments + depthAttachmentPixelFormat + fragmentBuffers + fragmentFunction + inputPrimitiveTopology + isAlphaToCoverageEnabled + isAlphaToOneEnabled + isRasterizationEnabled + isTessellationFactorScaleEnabled + label + maxTessellationFactor + maxVertexAmplificationCount + rasterSampleCount + reset + sampleCount + setAlphaToCoverageEnabled + setAlphaToOneEnabled + setBinaryArchives + setDepthAttachmentPixelFormat + setFragmentFunction + setInputPrimitiveTopology + setLabel + setMaxTessellationFactor + setMaxVertexAmplificationCount + setRasterSampleCount + setRasterizationEnabled + setSampleCount + setStencilAttachmentPixelFormat + setSupportIndirectCommandBuffers + setTessellationControlPointIndexType + setTessellationFactorFormat + setTessellationFactorScaleEnabled + setTessellationFactorStepFunction + setTessellationOutputWindingOrder + setTessellationPartitionMode + setVertexDescriptor + setVertexFunction + stencilAttachmentPixelFormat + supportIndirectCommandBuffers + tessellationControlPointIndexType + tessellationFactorFormat + tessellationFactorStepFunction + tessellationOutputWindingOrder + tessellationPartitionMode + vertexBuffers + vertexDescriptor + vertexFunction +*/ +@(objc_class="MTLRenderPipelineDescriptor") +RenderPipelineDescriptor :: struct { using _: NS.Copying(RenderPipelineDescriptor) } + +@(objc_type=RenderPipelineDescriptor, objc_class_name="alloc") +RenderPipelineDescriptor_alloc :: proc() -> ^RenderPipelineDescriptor { + return msgSend(^RenderPipelineDescriptor, RenderPipelineDescriptor, "alloc") +} +@(objc_type=RenderPipelineDescriptor, objc_name="init") +RenderPipelineDescriptor_init :: proc(self: ^RenderPipelineDescriptor) -> ^RenderPipelineDescriptor { + return msgSend(^RenderPipelineDescriptor, self, "init") +} +@(objc_type=RenderPipelineDescriptor, objc_name="binaryArchives") +RenderPipelineDescriptor_binaryArchives :: proc(self: ^RenderPipelineDescriptor) -> ^NS.Array { + return msgSend(^NS.Array, self, "binaryArchives") +} +@(objc_type=RenderPipelineDescriptor, objc_name="colorAttachments") +RenderPipelineDescriptor_colorAttachments :: proc(self: ^RenderPipelineDescriptor) -> ^RenderPipelineColorAttachmentDescriptorArray { + return msgSend(^RenderPipelineColorAttachmentDescriptorArray, self, "colorAttachments") +} +@(objc_type=RenderPipelineDescriptor, objc_name="depthAttachmentPixelFormat") +RenderPipelineDescriptor_depthAttachmentPixelFormat :: proc(self: ^RenderPipelineDescriptor) -> PixelFormat { + return msgSend(PixelFormat, self, "depthAttachmentPixelFormat") +} +@(objc_type=RenderPipelineDescriptor, objc_name="fragmentBuffers") +RenderPipelineDescriptor_fragmentBuffers :: proc(self: ^RenderPipelineDescriptor) -> ^PipelineBufferDescriptorArray { + return msgSend(^PipelineBufferDescriptorArray, self, "fragmentBuffers") +} +@(objc_type=RenderPipelineDescriptor, objc_name="fragmentFunction") +RenderPipelineDescriptor_fragmentFunction :: proc(self: ^RenderPipelineDescriptor) -> ^RenderPipelineDescriptor { + return msgSend(^RenderPipelineDescriptor, self, "fragmentFunction") +} +@(objc_type=RenderPipelineDescriptor, objc_name="inputPrimitiveTopology") +RenderPipelineDescriptor_inputPrimitiveTopology :: proc(self: ^RenderPipelineDescriptor) -> PrimitiveTopologyClass { + return msgSend(PrimitiveTopologyClass, self, "inputPrimitiveTopology") +} +@(objc_type=RenderPipelineDescriptor, objc_name="isAlphaToCoverageEnabled") +RenderPipelineDescriptor_isAlphaToCoverageEnabled :: proc(self: ^RenderPipelineDescriptor) -> BOOL { + return msgSend(BOOL, self, "isAlphaToCoverageEnabled") +} +@(objc_type=RenderPipelineDescriptor, objc_name="isAlphaToOneEnabled") +RenderPipelineDescriptor_isAlphaToOneEnabled :: proc(self: ^RenderPipelineDescriptor) -> BOOL { + return msgSend(BOOL, self, "isAlphaToOneEnabled") +} +@(objc_type=RenderPipelineDescriptor, objc_name="isRasterizationEnabled") +RenderPipelineDescriptor_isRasterizationEnabled :: proc(self: ^RenderPipelineDescriptor) -> BOOL { + return msgSend(BOOL, self, "isRasterizationEnabled") +} +@(objc_type=RenderPipelineDescriptor, objc_name="isTessellationFactorScaleEnabled") +RenderPipelineDescriptor_isTessellationFactorScaleEnabled :: proc(self: ^RenderPipelineDescriptor) -> BOOL { + return msgSend(BOOL, self, "isTessellationFactorScaleEnabled") +} +@(objc_type=RenderPipelineDescriptor, objc_name="label") +RenderPipelineDescriptor_label :: proc(self: ^RenderPipelineDescriptor) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=RenderPipelineDescriptor, objc_name="maxTessellationFactor") +RenderPipelineDescriptor_maxTessellationFactor :: proc(self: ^RenderPipelineDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "maxTessellationFactor") +} +@(objc_type=RenderPipelineDescriptor, objc_name="maxVertexAmplificationCount") +RenderPipelineDescriptor_maxVertexAmplificationCount :: proc(self: ^RenderPipelineDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "maxVertexAmplificationCount") +} +@(objc_type=RenderPipelineDescriptor, objc_name="rasterSampleCount") +RenderPipelineDescriptor_rasterSampleCount :: proc(self: ^RenderPipelineDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "rasterSampleCount") +} +@(objc_type=RenderPipelineDescriptor, objc_name="reset") +RenderPipelineDescriptor_reset :: proc(self: ^RenderPipelineDescriptor) { + msgSend(nil, self, "reset") +} +@(objc_type=RenderPipelineDescriptor, objc_name="sampleCount") +RenderPipelineDescriptor_sampleCount :: proc(self: ^RenderPipelineDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "sampleCount") +} +@(objc_type=RenderPipelineDescriptor, objc_name="setAlphaToCoverageEnabled") +RenderPipelineDescriptor_setAlphaToCoverageEnabled :: proc(self: ^RenderPipelineDescriptor, alphaToCoverageEnabled: BOOL) { + msgSend(nil, self, "setAlphaToCoverageEnabled:", alphaToCoverageEnabled) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setAlphaToOneEnabled") +RenderPipelineDescriptor_setAlphaToOneEnabled :: proc(self: ^RenderPipelineDescriptor, alphaToOneEnabled: BOOL) { + msgSend(nil, self, "setAlphaToOneEnabled:", alphaToOneEnabled) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setBinaryArchives") +RenderPipelineDescriptor_setBinaryArchives :: proc(self: ^RenderPipelineDescriptor, binaryArchives: ^NS.Array) { + msgSend(nil, self, "setBinaryArchives:", binaryArchives) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setDepthAttachmentPixelFormat") +RenderPipelineDescriptor_setDepthAttachmentPixelFormat :: proc(self: ^RenderPipelineDescriptor, depthAttachmentPixelFormat: PixelFormat) { + msgSend(nil, self, "setDepthAttachmentPixelFormat:", depthAttachmentPixelFormat) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setFragmentFunction") +RenderPipelineDescriptor_setFragmentFunction :: proc(self: ^RenderPipelineDescriptor, fragmentFunction: ^NS.Object) { + msgSend(nil, self, "setFragmentFunction:", fragmentFunction) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setInputPrimitiveTopology") +RenderPipelineDescriptor_setInputPrimitiveTopology :: proc(self: ^RenderPipelineDescriptor, inputPrimitiveTopology: PrimitiveTopologyClass) { + msgSend(nil, self, "setInputPrimitiveTopology:", inputPrimitiveTopology) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setLabel") +RenderPipelineDescriptor_setLabel :: proc(self: ^RenderPipelineDescriptor, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setMaxTessellationFactor") +RenderPipelineDescriptor_setMaxTessellationFactor :: proc(self: ^RenderPipelineDescriptor, maxTessellationFactor: NS.Integer) { + msgSend(nil, self, "setMaxTessellationFactor:", maxTessellationFactor) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setMaxVertexAmplificationCount") +RenderPipelineDescriptor_setMaxVertexAmplificationCount :: proc(self: ^RenderPipelineDescriptor, maxVertexAmplificationCount: NS.Integer) { + msgSend(nil, self, "setMaxVertexAmplificationCount:", maxVertexAmplificationCount) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setRasterSampleCount") +RenderPipelineDescriptor_setRasterSampleCount :: proc(self: ^RenderPipelineDescriptor, rasterSampleCount: NS.Integer) { + msgSend(nil, self, "setRasterSampleCount:", rasterSampleCount) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setRasterizationEnabled") +RenderPipelineDescriptor_setRasterizationEnabled :: proc(self: ^RenderPipelineDescriptor, rasterizationEnabled: BOOL) { + msgSend(nil, self, "setRasterizationEnabled:", rasterizationEnabled) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setSampleCount") +RenderPipelineDescriptor_setSampleCount :: proc(self: ^RenderPipelineDescriptor, sampleCount: NS.Integer) { + msgSend(nil, self, "setSampleCount:", sampleCount) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setStencilAttachmentPixelFormat") +RenderPipelineDescriptor_setStencilAttachmentPixelFormat :: proc(self: ^RenderPipelineDescriptor, stencilAttachmentPixelFormat: PixelFormat) { + msgSend(nil, self, "setStencilAttachmentPixelFormat:", stencilAttachmentPixelFormat) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setSupportIndirectCommandBuffers") +RenderPipelineDescriptor_setSupportIndirectCommandBuffers :: proc(self: ^RenderPipelineDescriptor, supportIndirectCommandBuffers: BOOL) { + msgSend(nil, self, "setSupportIndirectCommandBuffers:", supportIndirectCommandBuffers) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setTessellationControlPointIndexType") +RenderPipelineDescriptor_setTessellationControlPointIndexType :: proc(self: ^RenderPipelineDescriptor, tessellationControlPointIndexType: TessellationControlPointIndexType) { + msgSend(nil, self, "setTessellationControlPointIndexType:", tessellationControlPointIndexType) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setTessellationFactorFormat") +RenderPipelineDescriptor_setTessellationFactorFormat :: proc(self: ^RenderPipelineDescriptor, tessellationFactorFormat: TessellationFactorFormat) { + msgSend(nil, self, "setTessellationFactorFormat:", tessellationFactorFormat) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setTessellationFactorScaleEnabled") +RenderPipelineDescriptor_setTessellationFactorScaleEnabled :: proc(self: ^RenderPipelineDescriptor, tessellationFactorScaleEnabled: BOOL) { + msgSend(nil, self, "setTessellationFactorScaleEnabled:", tessellationFactorScaleEnabled) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setTessellationFactorStepFunction") +RenderPipelineDescriptor_setTessellationFactorStepFunction :: proc(self: ^RenderPipelineDescriptor, tessellationFactorStepFunction: TessellationFactorStepFunction) { + msgSend(nil, self, "setTessellationFactorStepFunction:", tessellationFactorStepFunction) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setTessellationOutputWindingOrder") +RenderPipelineDescriptor_setTessellationOutputWindingOrder :: proc(self: ^RenderPipelineDescriptor, tessellationOutputWindingOrder: Winding) { + msgSend(nil, self, "setTessellationOutputWindingOrder:", tessellationOutputWindingOrder) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setTessellationPartitionMode") +RenderPipelineDescriptor_setTessellationPartitionMode :: proc(self: ^RenderPipelineDescriptor, tessellationPartitionMode: TessellationPartitionMode) { + msgSend(nil, self, "setTessellationPartitionMode:", tessellationPartitionMode) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setVertexDescriptor") +RenderPipelineDescriptor_setVertexDescriptor :: proc(self: ^RenderPipelineDescriptor, vertexDescriptor: ^VertexDescriptor) { + msgSend(nil, self, "setVertexDescriptor:", vertexDescriptor) +} +@(objc_type=RenderPipelineDescriptor, objc_name="setVertexFunction") +RenderPipelineDescriptor_setVertexFunction :: proc(self: ^RenderPipelineDescriptor, vertexFunction: ^NS.Object) { + msgSend(nil, self, "setVertexFunction:", vertexFunction) +} +@(objc_type=RenderPipelineDescriptor, objc_name="stencilAttachmentPixelFormat") +RenderPipelineDescriptor_stencilAttachmentPixelFormat :: proc(self: ^RenderPipelineDescriptor) -> PixelFormat { + return msgSend(PixelFormat, self, "stencilAttachmentPixelFormat") +} +@(objc_type=RenderPipelineDescriptor, objc_name="supportIndirectCommandBuffers") +RenderPipelineDescriptor_supportIndirectCommandBuffers :: proc(self: ^RenderPipelineDescriptor) -> BOOL { + return msgSend(BOOL, self, "supportIndirectCommandBuffers") +} +@(objc_type=RenderPipelineDescriptor, objc_name="tessellationControlPointIndexType") +RenderPipelineDescriptor_tessellationControlPointIndexType :: proc(self: ^RenderPipelineDescriptor) -> TessellationControlPointIndexType { + return msgSend(TessellationControlPointIndexType, self, "tessellationControlPointIndexType") +} +@(objc_type=RenderPipelineDescriptor, objc_name="tessellationFactorFormat") +RenderPipelineDescriptor_tessellationFactorFormat :: proc(self: ^RenderPipelineDescriptor) -> TessellationFactorFormat { + return msgSend(TessellationFactorFormat, self, "tessellationFactorFormat") +} +@(objc_type=RenderPipelineDescriptor, objc_name="tessellationFactorStepFunction") +RenderPipelineDescriptor_tessellationFactorStepFunction :: proc(self: ^RenderPipelineDescriptor) -> TessellationFactorStepFunction { + return msgSend(TessellationFactorStepFunction, self, "tessellationFactorStepFunction") +} +@(objc_type=RenderPipelineDescriptor, objc_name="tessellationOutputWindingOrder") +RenderPipelineDescriptor_tessellationOutputWindingOrder :: proc(self: ^RenderPipelineDescriptor) -> Winding { + return msgSend(Winding, self, "tessellationOutputWindingOrder") +} +@(objc_type=RenderPipelineDescriptor, objc_name="tessellationPartitionMode") +RenderPipelineDescriptor_tessellationPartitionMode :: proc(self: ^RenderPipelineDescriptor) -> TessellationPartitionMode { + return msgSend(TessellationPartitionMode, self, "tessellationPartitionMode") +} +@(objc_type=RenderPipelineDescriptor, objc_name="vertexBuffers") +RenderPipelineDescriptor_vertexBuffers :: proc(self: ^RenderPipelineDescriptor) -> ^PipelineBufferDescriptorArray { + return msgSend(^PipelineBufferDescriptorArray, self, "vertexBuffers") +} +@(objc_type=RenderPipelineDescriptor, objc_name="vertexDescriptor") +RenderPipelineDescriptor_vertexDescriptor :: proc(self: ^RenderPipelineDescriptor) -> ^VertexDescriptor { + return msgSend(^VertexDescriptor, self, "vertexDescriptor") +} +@(objc_type=RenderPipelineDescriptor, objc_name="vertexFunction") +RenderPipelineDescriptor_vertexFunction :: proc(self: ^RenderPipelineDescriptor) -> ^RenderPipelineDescriptor { + return msgSend(^RenderPipelineDescriptor, self, "vertexFunction") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RenderPipelineReflection +Class Methods: + alloc +Methods: + init + fragmentArguments + tileArguments + vertexArguments +*/ +@(objc_class="MTLRenderPipelineReflection") +RenderPipelineReflection :: struct { using _: NS.Object } + +@(objc_type=RenderPipelineReflection, objc_class_name="alloc") +RenderPipelineReflection_alloc :: proc() -> ^RenderPipelineReflection { + return msgSend(^RenderPipelineReflection, RenderPipelineReflection, "alloc") +} +@(objc_type=RenderPipelineReflection, objc_name="init") +RenderPipelineReflection_init :: proc(self: ^RenderPipelineReflection) -> ^RenderPipelineReflection { + return msgSend(^RenderPipelineReflection, self, "init") +} +@(objc_type=RenderPipelineReflection, objc_name="fragmentArguments") +RenderPipelineReflection_fragmentArguments :: proc(self: ^RenderPipelineReflection) -> ^NS.Array { + return msgSend(^NS.Array, self, "fragmentArguments") +} +@(objc_type=RenderPipelineReflection, objc_name="tileArguments") +RenderPipelineReflection_tileArguments :: proc(self: ^RenderPipelineReflection) -> ^NS.Array { + return msgSend(^NS.Array, self, "tileArguments") +} +@(objc_type=RenderPipelineReflection, objc_name="vertexArguments") +RenderPipelineReflection_vertexArguments :: proc(self: ^RenderPipelineReflection) -> ^NS.Array { + return msgSend(^NS.Array, self, "vertexArguments") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + ResourceStatePassDescriptor +Class Methods: + alloc + resourceStatePassDescriptor +Methods: + init + sampleBufferAttachments +*/ +@(objc_class="MTLResourceStatePassDescriptor") +ResourceStatePassDescriptor :: struct { using _: NS.Copying(ResourceStatePassDescriptor) } + +@(objc_type=ResourceStatePassDescriptor, objc_class_name="alloc") +ResourceStatePassDescriptor_alloc :: proc() -> ^ResourceStatePassDescriptor { + return msgSend(^ResourceStatePassDescriptor, ResourceStatePassDescriptor, "alloc") +} +@(objc_type=ResourceStatePassDescriptor, objc_name="init") +ResourceStatePassDescriptor_init :: proc(self: ^ResourceStatePassDescriptor) -> ^ResourceStatePassDescriptor { + return msgSend(^ResourceStatePassDescriptor, self, "init") +} +@(objc_type=ResourceStatePassDescriptor, objc_class_name="resourceStatePassDescriptor") +ResourceStatePassDescriptor_resourceStatePassDescriptor :: proc() -> ^ResourceStatePassDescriptor { + return msgSend(^ResourceStatePassDescriptor, ResourceStatePassDescriptor, "resourceStatePassDescriptor") +} +@(objc_type=ResourceStatePassDescriptor, objc_name="sampleBufferAttachments") +ResourceStatePassDescriptor_sampleBufferAttachments :: proc(self: ^ResourceStatePassDescriptor) -> ^ResourceStatePassSampleBufferAttachmentDescriptorArray { + return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptorArray, self, "sampleBufferAttachments") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + ResourceStatePassSampleBufferAttachmentDescriptor +Class Methods: + alloc +Methods: + init + endOfEncoderSampleIndex + sampleBuffer + setEndOfEncoderSampleIndex + setSampleBuffer + setStartOfEncoderSampleIndex + startOfEncoderSampleIndex +*/ +@(objc_class="MTLResourceStatePassSampleBufferAttachmentDescriptor") +ResourceStatePassSampleBufferAttachmentDescriptor :: struct { using _: NS.Copying(ResourceStatePassSampleBufferAttachmentDescriptor) } + +@(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_class_name="alloc") +ResourceStatePassSampleBufferAttachmentDescriptor_alloc :: proc() -> ^ResourceStatePassSampleBufferAttachmentDescriptor { + return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptor, ResourceStatePassSampleBufferAttachmentDescriptor, "alloc") +} +@(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="init") +ResourceStatePassSampleBufferAttachmentDescriptor_init :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> ^ResourceStatePassSampleBufferAttachmentDescriptor { + return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptor, self, "init") +} +@(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="endOfEncoderSampleIndex") +ResourceStatePassSampleBufferAttachmentDescriptor_endOfEncoderSampleIndex :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "endOfEncoderSampleIndex") +} +@(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="sampleBuffer") +ResourceStatePassSampleBufferAttachmentDescriptor_sampleBuffer :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> ^ResourceStatePassSampleBufferAttachmentDescriptor { + return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptor, self, "sampleBuffer") +} +@(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="setEndOfEncoderSampleIndex") +ResourceStatePassSampleBufferAttachmentDescriptor_setEndOfEncoderSampleIndex :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor, endOfEncoderSampleIndex: NS.Integer) { + msgSend(nil, self, "setEndOfEncoderSampleIndex:", endOfEncoderSampleIndex) +} +@(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="setSampleBuffer") +ResourceStatePassSampleBufferAttachmentDescriptor_setSampleBuffer :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor, sampleBuffer: ^NS.Object) { + msgSend(nil, self, "setSampleBuffer:", sampleBuffer) +} +@(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="setStartOfEncoderSampleIndex") +ResourceStatePassSampleBufferAttachmentDescriptor_setStartOfEncoderSampleIndex :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor, startOfEncoderSampleIndex: NS.Integer) { + msgSend(nil, self, "setStartOfEncoderSampleIndex:", startOfEncoderSampleIndex) +} +@(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="startOfEncoderSampleIndex") +ResourceStatePassSampleBufferAttachmentDescriptor_startOfEncoderSampleIndex :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "startOfEncoderSampleIndex") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + ResourceStatePassSampleBufferAttachmentDescriptorArray +Class Methods: + alloc +Methods: + init + objectAtIndexedSubscript + setObject +*/ +@(objc_class="MTLResourceStatePassSampleBufferAttachmentDescriptorArray") +ResourceStatePassSampleBufferAttachmentDescriptorArray :: struct { using _: NS.Object } + +@(objc_type=ResourceStatePassSampleBufferAttachmentDescriptorArray, objc_class_name="alloc") +ResourceStatePassSampleBufferAttachmentDescriptorArray_alloc :: proc() -> ^ResourceStatePassSampleBufferAttachmentDescriptorArray { + return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptorArray, ResourceStatePassSampleBufferAttachmentDescriptorArray, "alloc") +} +@(objc_type=ResourceStatePassSampleBufferAttachmentDescriptorArray, objc_name="init") +ResourceStatePassSampleBufferAttachmentDescriptorArray_init :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptorArray) -> ^ResourceStatePassSampleBufferAttachmentDescriptorArray { + return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptorArray, self, "init") +} +@(objc_type=ResourceStatePassSampleBufferAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") +ResourceStatePassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^ResourceStatePassSampleBufferAttachmentDescriptor { + return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) +} +@(objc_type=ResourceStatePassSampleBufferAttachmentDescriptorArray, objc_name="setObject") +ResourceStatePassSampleBufferAttachmentDescriptorArray_setObject :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptorArray, attachment: ^ResourceStatePassSampleBufferAttachmentDescriptor, attachmentIndex: ^NS.Object) { + msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + SamplerDescriptor +Class Methods: + alloc +Methods: + init + borderColor + compareFunction + label + lodAverage + lodMaxClamp + lodMinClamp + magFilter + maxAnisotropy + minFilter + mipFilter + normalizedCoordinates + rAddressMode + sAddressMode + setBorderColor + setCompareFunction + setLabel + setLodAverage + setLodMaxClamp + setLodMinClamp + setMagFilter + setMaxAnisotropy + setMinFilter + setMipFilter + setNormalizedCoordinates + setRAddressMode + setSAddressMode + setSupportArgumentBuffers + setTAddressMode + supportArgumentBuffers + tAddressMode +*/ +@(objc_class="MTLSamplerDescriptor") +SamplerDescriptor :: struct { using _: NS.Copying(SamplerDescriptor) } + +@(objc_type=SamplerDescriptor, objc_class_name="alloc") +SamplerDescriptor_alloc :: proc() -> ^SamplerDescriptor { + return msgSend(^SamplerDescriptor, SamplerDescriptor, "alloc") +} +@(objc_type=SamplerDescriptor, objc_name="init") +SamplerDescriptor_init :: proc(self: ^SamplerDescriptor) -> ^SamplerDescriptor { + return msgSend(^SamplerDescriptor, self, "init") +} +@(objc_type=SamplerDescriptor, objc_name="borderColor") +SamplerDescriptor_borderColor :: proc(self: ^SamplerDescriptor) -> SamplerBorderColor { + return msgSend(SamplerBorderColor, self, "borderColor") +} +@(objc_type=SamplerDescriptor, objc_name="compareFunction") +SamplerDescriptor_compareFunction :: proc(self: ^SamplerDescriptor) -> CompareFunction { + return msgSend(CompareFunction, self, "compareFunction") +} +@(objc_type=SamplerDescriptor, objc_name="label") +SamplerDescriptor_label :: proc(self: ^SamplerDescriptor) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=SamplerDescriptor, objc_name="lodAverage") +SamplerDescriptor_lodAverage :: proc(self: ^SamplerDescriptor) -> BOOL { + return msgSend(BOOL, self, "lodAverage") +} +@(objc_type=SamplerDescriptor, objc_name="lodMaxClamp") +SamplerDescriptor_lodMaxClamp :: proc(self: ^SamplerDescriptor) -> f32 { + return msgSend(f32, self, "lodMaxClamp") +} +@(objc_type=SamplerDescriptor, objc_name="lodMinClamp") +SamplerDescriptor_lodMinClamp :: proc(self: ^SamplerDescriptor) -> f32 { + return msgSend(f32, self, "lodMinClamp") +} +@(objc_type=SamplerDescriptor, objc_name="magFilter") +SamplerDescriptor_magFilter :: proc(self: ^SamplerDescriptor) -> SamplerMinMagFilter { + return msgSend(SamplerMinMagFilter, self, "magFilter") +} +@(objc_type=SamplerDescriptor, objc_name="maxAnisotropy") +SamplerDescriptor_maxAnisotropy :: proc(self: ^SamplerDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "maxAnisotropy") +} +@(objc_type=SamplerDescriptor, objc_name="minFilter") +SamplerDescriptor_minFilter :: proc(self: ^SamplerDescriptor) -> SamplerMinMagFilter { + return msgSend(SamplerMinMagFilter, self, "minFilter") +} +@(objc_type=SamplerDescriptor, objc_name="mipFilter") +SamplerDescriptor_mipFilter :: proc(self: ^SamplerDescriptor) -> SamplerMipFilter { + return msgSend(SamplerMipFilter, self, "mipFilter") +} +@(objc_type=SamplerDescriptor, objc_name="normalizedCoordinates") +SamplerDescriptor_normalizedCoordinates :: proc(self: ^SamplerDescriptor) -> BOOL { + return msgSend(BOOL, self, "normalizedCoordinates") +} +@(objc_type=SamplerDescriptor, objc_name="rAddressMode") +SamplerDescriptor_rAddressMode :: proc(self: ^SamplerDescriptor) -> SamplerAddressMode { + return msgSend(SamplerAddressMode, self, "rAddressMode") +} +@(objc_type=SamplerDescriptor, objc_name="sAddressMode") +SamplerDescriptor_sAddressMode :: proc(self: ^SamplerDescriptor) -> SamplerAddressMode { + return msgSend(SamplerAddressMode, self, "sAddressMode") +} +@(objc_type=SamplerDescriptor, objc_name="setBorderColor") +SamplerDescriptor_setBorderColor :: proc(self: ^SamplerDescriptor, borderColor: SamplerBorderColor) { + msgSend(nil, self, "setBorderColor:", borderColor) +} +@(objc_type=SamplerDescriptor, objc_name="setCompareFunction") +SamplerDescriptor_setCompareFunction :: proc(self: ^SamplerDescriptor, compareFunction: CompareFunction) { + msgSend(nil, self, "setCompareFunction:", compareFunction) +} +@(objc_type=SamplerDescriptor, objc_name="setLabel") +SamplerDescriptor_setLabel :: proc(self: ^SamplerDescriptor, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} +@(objc_type=SamplerDescriptor, objc_name="setLodAverage") +SamplerDescriptor_setLodAverage :: proc(self: ^SamplerDescriptor, lodAverage: BOOL) { + msgSend(nil, self, "setLodAverage:", lodAverage) +} +@(objc_type=SamplerDescriptor, objc_name="setLodMaxClamp") +SamplerDescriptor_setLodMaxClamp :: proc(self: ^SamplerDescriptor, lodMaxClamp: f32) { + msgSend(nil, self, "setLodMaxClamp:", lodMaxClamp) +} +@(objc_type=SamplerDescriptor, objc_name="setLodMinClamp") +SamplerDescriptor_setLodMinClamp :: proc(self: ^SamplerDescriptor, lodMinClamp: f32) { + msgSend(nil, self, "setLodMinClamp:", lodMinClamp) +} +@(objc_type=SamplerDescriptor, objc_name="setMagFilter") +SamplerDescriptor_setMagFilter :: proc(self: ^SamplerDescriptor, magFilter: SamplerMinMagFilter) { + msgSend(nil, self, "setMagFilter:", magFilter) +} +@(objc_type=SamplerDescriptor, objc_name="setMaxAnisotropy") +SamplerDescriptor_setMaxAnisotropy :: proc(self: ^SamplerDescriptor, maxAnisotropy: NS.Integer) { + msgSend(nil, self, "setMaxAnisotropy:", maxAnisotropy) +} +@(objc_type=SamplerDescriptor, objc_name="setMinFilter") +SamplerDescriptor_setMinFilter :: proc(self: ^SamplerDescriptor, minFilter: SamplerMinMagFilter) { + msgSend(nil, self, "setMinFilter:", minFilter) +} +@(objc_type=SamplerDescriptor, objc_name="setMipFilter") +SamplerDescriptor_setMipFilter :: proc(self: ^SamplerDescriptor, mipFilter: SamplerMipFilter) { + msgSend(nil, self, "setMipFilter:", mipFilter) +} +@(objc_type=SamplerDescriptor, objc_name="setNormalizedCoordinates") +SamplerDescriptor_setNormalizedCoordinates :: proc(self: ^SamplerDescriptor, normalizedCoordinates: BOOL) { + msgSend(nil, self, "setNormalizedCoordinates:", normalizedCoordinates) +} +@(objc_type=SamplerDescriptor, objc_name="setRAddressMode") +SamplerDescriptor_setRAddressMode :: proc(self: ^SamplerDescriptor, rAddressMode: SamplerAddressMode) { + msgSend(nil, self, "setRAddressMode:", rAddressMode) +} +@(objc_type=SamplerDescriptor, objc_name="setSAddressMode") +SamplerDescriptor_setSAddressMode :: proc(self: ^SamplerDescriptor, sAddressMode: SamplerAddressMode) { + msgSend(nil, self, "setSAddressMode:", sAddressMode) +} +@(objc_type=SamplerDescriptor, objc_name="setSupportArgumentBuffers") +SamplerDescriptor_setSupportArgumentBuffers :: proc(self: ^SamplerDescriptor, supportArgumentBuffers: BOOL) { + msgSend(nil, self, "setSupportArgumentBuffers:", supportArgumentBuffers) +} +@(objc_type=SamplerDescriptor, objc_name="setTAddressMode") +SamplerDescriptor_setTAddressMode :: proc(self: ^SamplerDescriptor, tAddressMode: SamplerAddressMode) { + msgSend(nil, self, "setTAddressMode:", tAddressMode) +} +@(objc_type=SamplerDescriptor, objc_name="supportArgumentBuffers") +SamplerDescriptor_supportArgumentBuffers :: proc(self: ^SamplerDescriptor) -> BOOL { + return msgSend(BOOL, self, "supportArgumentBuffers") +} +@(objc_type=SamplerDescriptor, objc_name="tAddressMode") +SamplerDescriptor_tAddressMode :: proc(self: ^SamplerDescriptor) -> SamplerAddressMode { + return msgSend(SamplerAddressMode, self, "tAddressMode") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + SharedEventHandle +Class Methods: + alloc +Methods: + init + label +*/ +@(objc_class="MTLSharedEventHandle") +SharedEventHandle :: struct { using _: NS.Object } + +@(objc_type=SharedEventHandle, objc_class_name="alloc") +SharedEventHandle_alloc :: proc() -> ^SharedEventHandle { + return msgSend(^SharedEventHandle, SharedEventHandle, "alloc") +} +@(objc_type=SharedEventHandle, objc_name="init") +SharedEventHandle_init :: proc(self: ^SharedEventHandle) -> ^SharedEventHandle { + return msgSend(^SharedEventHandle, self, "init") +} +@(objc_type=SharedEventHandle, objc_name="label") +SharedEventHandle_label :: proc(self: ^SharedEventHandle) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + SharedEventListener +Class Methods: + alloc +Methods: + dispatchQueue + init + initWithDispatchQueue +*/ +@(objc_class="MTLSharedEventListener") +SharedEventListener :: struct { using _: NS.Object } + +@(objc_type=SharedEventListener, objc_class_name="alloc") +SharedEventListener_alloc :: proc() -> ^SharedEventListener { + return msgSend(^SharedEventListener, SharedEventListener, "alloc") +} +@(objc_type=SharedEventListener, objc_name="dispatchQueue") +SharedEventListener_dispatchQueue :: proc(self: ^SharedEventListener) -> NS.Integer { + return msgSend(NS.Integer, self, "dispatchQueue") +} +@(objc_type=SharedEventListener, objc_name="init") +SharedEventListener_init :: proc(self: ^SharedEventListener) -> ^SharedEventListener { + return msgSend(^SharedEventListener, self, "init") +} +@(objc_type=SharedEventListener, objc_name="initWithDispatchQueue") +SharedEventListener_initWithDispatchQueue :: proc(self: ^SharedEventListener, dispatchQueue: ^NS.Object) -> ^SharedEventListener { + return msgSend(^SharedEventListener, self, "initWithDispatchQueue:", dispatchQueue) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + SharedTextureHandle +Class Methods: + alloc +Methods: + init + device + label +*/ +@(objc_class="MTLSharedTextureHandle") +SharedTextureHandle :: struct { using _: NS.Object } + +@(objc_type=SharedTextureHandle, objc_class_name="alloc") +SharedTextureHandle_alloc :: proc() -> ^SharedTextureHandle { + return msgSend(^SharedTextureHandle, SharedTextureHandle, "alloc") +} +@(objc_type=SharedTextureHandle, objc_name="init") +SharedTextureHandle_init :: proc(self: ^SharedTextureHandle) -> ^SharedTextureHandle { + return msgSend(^SharedTextureHandle, self, "init") +} +@(objc_type=SharedTextureHandle, objc_name="device") +SharedTextureHandle_device :: proc(self: ^SharedTextureHandle) -> ^SharedTextureHandle { + return msgSend(^SharedTextureHandle, self, "device") +} +@(objc_type=SharedTextureHandle, objc_name="label") +SharedTextureHandle_label :: proc(self: ^SharedTextureHandle) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + StageInputOutputDescriptor +Class Methods: + alloc + stageInputOutputDescriptor +Methods: + init + attributes + indexBufferIndex + indexType + layouts + reset + setIndexBufferIndex + setIndexType +*/ +@(objc_class="MTLStageInputOutputDescriptor") +StageInputOutputDescriptor :: struct { using _: NS.Copying(StageInputOutputDescriptor) } + +@(objc_type=StageInputOutputDescriptor, objc_class_name="alloc") +StageInputOutputDescriptor_alloc :: proc() -> ^StageInputOutputDescriptor { + return msgSend(^StageInputOutputDescriptor, StageInputOutputDescriptor, "alloc") +} +@(objc_type=StageInputOutputDescriptor, objc_name="init") +StageInputOutputDescriptor_init :: proc(self: ^StageInputOutputDescriptor) -> ^StageInputOutputDescriptor { + return msgSend(^StageInputOutputDescriptor, self, "init") +} +@(objc_type=StageInputOutputDescriptor, objc_name="attributes") +StageInputOutputDescriptor_attributes :: proc(self: ^StageInputOutputDescriptor) -> ^AttributeDescriptorArray { + return msgSend(^AttributeDescriptorArray, self, "attributes") +} +@(objc_type=StageInputOutputDescriptor, objc_name="indexBufferIndex") +StageInputOutputDescriptor_indexBufferIndex :: proc(self: ^StageInputOutputDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "indexBufferIndex") +} +@(objc_type=StageInputOutputDescriptor, objc_name="indexType") +StageInputOutputDescriptor_indexType :: proc(self: ^StageInputOutputDescriptor) -> IndexType { + return msgSend(IndexType, self, "indexType") +} +@(objc_type=StageInputOutputDescriptor, objc_name="layouts") +StageInputOutputDescriptor_layouts :: proc(self: ^StageInputOutputDescriptor) -> ^BufferLayoutDescriptorArray { + return msgSend(^BufferLayoutDescriptorArray, self, "layouts") +} +@(objc_type=StageInputOutputDescriptor, objc_name="reset") +StageInputOutputDescriptor_reset :: proc(self: ^StageInputOutputDescriptor) { + msgSend(nil, self, "reset") +} +@(objc_type=StageInputOutputDescriptor, objc_name="setIndexBufferIndex") +StageInputOutputDescriptor_setIndexBufferIndex :: proc(self: ^StageInputOutputDescriptor, indexBufferIndex: NS.Integer) { + msgSend(nil, self, "setIndexBufferIndex:", indexBufferIndex) +} +@(objc_type=StageInputOutputDescriptor, objc_name="setIndexType") +StageInputOutputDescriptor_setIndexType :: proc(self: ^StageInputOutputDescriptor, indexType: IndexType) { + msgSend(nil, self, "setIndexType:", indexType) +} +@(objc_type=StageInputOutputDescriptor, objc_class_name="stageInputOutputDescriptor") +StageInputOutputDescriptor_stageInputOutputDescriptor :: proc() -> ^StageInputOutputDescriptor { + return msgSend(^StageInputOutputDescriptor, StageInputOutputDescriptor, "stageInputOutputDescriptor") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + StencilDescriptor +Class Methods: + alloc +Methods: + init + depthFailureOperation + depthStencilPassOperation + readMask + setDepthFailureOperation + setDepthStencilPassOperation + setReadMask + setStencilCompareFunction + setStencilFailureOperation + setWriteMask + stencilCompareFunction + stencilFailureOperation + writeMask +*/ +@(objc_class="MTLStencilDescriptor") +StencilDescriptor :: struct { using _: NS.Copying(StencilDescriptor) } + +@(objc_type=StencilDescriptor, objc_class_name="alloc") +StencilDescriptor_alloc :: proc() -> ^StencilDescriptor { + return msgSend(^StencilDescriptor, StencilDescriptor, "alloc") +} +@(objc_type=StencilDescriptor, objc_name="init") +StencilDescriptor_init :: proc(self: ^StencilDescriptor) -> ^StencilDescriptor { + return msgSend(^StencilDescriptor, self, "init") +} +@(objc_type=StencilDescriptor, objc_name="depthFailureOperation") +StencilDescriptor_depthFailureOperation :: proc(self: ^StencilDescriptor) -> StencilOperation { + return msgSend(StencilOperation, self, "depthFailureOperation") +} +@(objc_type=StencilDescriptor, objc_name="depthStencilPassOperation") +StencilDescriptor_depthStencilPassOperation :: proc(self: ^StencilDescriptor) -> StencilOperation { + return msgSend(StencilOperation, self, "depthStencilPassOperation") +} +@(objc_type=StencilDescriptor, objc_name="readMask") +StencilDescriptor_readMask :: proc(self: ^StencilDescriptor) -> u32 { + return msgSend(u32, self, "readMask") +} +@(objc_type=StencilDescriptor, objc_name="setDepthFailureOperation") +StencilDescriptor_setDepthFailureOperation :: proc(self: ^StencilDescriptor, depthFailureOperation: StencilOperation) { + msgSend(nil, self, "setDepthFailureOperation:", depthFailureOperation) +} +@(objc_type=StencilDescriptor, objc_name="setDepthStencilPassOperation") +StencilDescriptor_setDepthStencilPassOperation :: proc(self: ^StencilDescriptor, depthStencilPassOperation: StencilOperation) { + msgSend(nil, self, "setDepthStencilPassOperation:", depthStencilPassOperation) +} +@(objc_type=StencilDescriptor, objc_name="setReadMask") +StencilDescriptor_setReadMask :: proc(self: ^StencilDescriptor, readMask: u32) { + msgSend(nil, self, "setReadMask:", readMask) +} +@(objc_type=StencilDescriptor, objc_name="setStencilCompareFunction") +StencilDescriptor_setStencilCompareFunction :: proc(self: ^StencilDescriptor, stencilCompareFunction: CompareFunction) { + msgSend(nil, self, "setStencilCompareFunction:", stencilCompareFunction) +} +@(objc_type=StencilDescriptor, objc_name="setStencilFailureOperation") +StencilDescriptor_setStencilFailureOperation :: proc(self: ^StencilDescriptor, stencilFailureOperation: StencilOperation) { + msgSend(nil, self, "setStencilFailureOperation:", stencilFailureOperation) +} +@(objc_type=StencilDescriptor, objc_name="setWriteMask") +StencilDescriptor_setWriteMask :: proc(self: ^StencilDescriptor, writeMask: u32) { + msgSend(nil, self, "setWriteMask:", writeMask) +} +@(objc_type=StencilDescriptor, objc_name="stencilCompareFunction") +StencilDescriptor_stencilCompareFunction :: proc(self: ^StencilDescriptor) -> CompareFunction { + return msgSend(CompareFunction, self, "stencilCompareFunction") +} +@(objc_type=StencilDescriptor, objc_name="stencilFailureOperation") +StencilDescriptor_stencilFailureOperation :: proc(self: ^StencilDescriptor) -> StencilOperation { + return msgSend(StencilOperation, self, "stencilFailureOperation") +} +@(objc_type=StencilDescriptor, objc_name="writeMask") +StencilDescriptor_writeMask :: proc(self: ^StencilDescriptor) -> u32 { + return msgSend(u32, self, "writeMask") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + StructMember +Class Methods: + alloc +Methods: + init + argumentIndex + arrayType + dataType + name + offset + pointerType + structType + textureReferenceType +*/ +@(objc_class="MTLStructMember") +StructMember :: struct { using _: NS.Object } + +@(objc_type=StructMember, objc_class_name="alloc") +StructMember_alloc :: proc() -> ^StructMember { + return msgSend(^StructMember, StructMember, "alloc") +} +@(objc_type=StructMember, objc_name="init") +StructMember_init :: proc(self: ^StructMember) -> ^StructMember { + return msgSend(^StructMember, self, "init") +} +@(objc_type=StructMember, objc_name="argumentIndex") +StructMember_argumentIndex :: proc(self: ^StructMember) -> NS.Integer { + return msgSend(NS.Integer, self, "argumentIndex") +} +@(objc_type=StructMember, objc_name="arrayType") +StructMember_arrayType :: proc(self: ^StructMember) -> ^ArrayType { + return msgSend(^ArrayType, self, "arrayType") +} +@(objc_type=StructMember, objc_name="dataType") +StructMember_dataType :: proc(self: ^StructMember) -> DataType { + return msgSend(DataType, self, "dataType") +} +@(objc_type=StructMember, objc_name="name") +StructMember_name :: proc(self: ^StructMember) -> ^NS.String { + return msgSend(^NS.String, self, "name") +} +@(objc_type=StructMember, objc_name="offset") +StructMember_offset :: proc(self: ^StructMember) -> NS.Integer { + return msgSend(NS.Integer, self, "offset") +} +@(objc_type=StructMember, objc_name="pointerType") +StructMember_pointerType :: proc(self: ^StructMember) -> ^PointerType { + return msgSend(^PointerType, self, "pointerType") +} +@(objc_type=StructMember, objc_name="structType") +StructMember_structType :: proc(self: ^StructMember) -> ^StructType { + return msgSend(^StructType, self, "structType") +} +@(objc_type=StructMember, objc_name="textureReferenceType") +StructMember_textureReferenceType :: proc(self: ^StructMember) -> ^TextureReferenceType { + return msgSend(^TextureReferenceType, self, "textureReferenceType") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + StructType +Class Methods: + alloc +Methods: + init + memberByName + members +*/ +@(objc_class="MTLStructType") +StructType :: struct { using _: NS.Object } + +@(objc_type=StructType, objc_class_name="alloc") +StructType_alloc :: proc() -> ^StructType { + return msgSend(^StructType, StructType, "alloc") +} +@(objc_type=StructType, objc_name="init") +StructType_init :: proc(self: ^StructType) -> ^StructType { + return msgSend(^StructType, self, "init") +} +@(objc_type=StructType, objc_name="memberByName") +StructType_memberByName :: proc(self: ^StructType, name: ^NS.String) -> ^StructMember { + return msgSend(^StructMember, self, "memberByName:", name) +} +@(objc_type=StructType, objc_name="members") +StructType_members :: proc(self: ^StructType) -> ^NS.Array { + return msgSend(^NS.Array, self, "members") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + TextureDescriptor +Class Methods: + alloc + texture2DDescriptorWithPixelFormat + textureBufferDescriptorWithPixelFormat + textureCubeDescriptorWithPixelFormat +Methods: + init + allowGPUOptimizedContents + arrayLength + cpuCacheMode + depth + hazardTrackingMode + height + mipmapLevelCount + pixelFormat + resourceOptions + sampleCount + setAllowGPUOptimizedContents + setArrayLength + setCpuCacheMode + setDepth + setHazardTrackingMode + setHeight + setMipmapLevelCount + setPixelFormat + setResourceOptions + setSampleCount + setStorageMode + setSwizzle + setTextureType + setUsage + setWidth + storageMode + swizzle + textureType + usage + width +*/ +@(objc_class="MTLTextureDescriptor") +TextureDescriptor :: struct { using _: NS.Copying(TextureDescriptor) } + +@(objc_type=TextureDescriptor, objc_class_name="alloc") +TextureDescriptor_alloc :: proc() -> ^TextureDescriptor { + return msgSend(^TextureDescriptor, TextureDescriptor, "alloc") +} +@(objc_type=TextureDescriptor, objc_name="init") +TextureDescriptor_init :: proc(self: ^TextureDescriptor) -> ^TextureDescriptor { + return msgSend(^TextureDescriptor, self, "init") +} +@(objc_type=TextureDescriptor, objc_name="allowGPUOptimizedContents") +TextureDescriptor_allowGPUOptimizedContents :: proc(self: ^TextureDescriptor) -> BOOL { + return msgSend(BOOL, self, "allowGPUOptimizedContents") +} +@(objc_type=TextureDescriptor, objc_name="arrayLength") +TextureDescriptor_arrayLength :: proc(self: ^TextureDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "arrayLength") +} +@(objc_type=TextureDescriptor, objc_name="cpuCacheMode") +TextureDescriptor_cpuCacheMode :: proc(self: ^TextureDescriptor) -> CPUCacheMode { + return msgSend(CPUCacheMode, self, "cpuCacheMode") +} +@(objc_type=TextureDescriptor, objc_name="depth") +TextureDescriptor_depth :: proc(self: ^TextureDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "depth") +} +@(objc_type=TextureDescriptor, objc_name="hazardTrackingMode") +TextureDescriptor_hazardTrackingMode :: proc(self: ^TextureDescriptor) -> HazardTrackingMode { + return msgSend(HazardTrackingMode, self, "hazardTrackingMode") +} +@(objc_type=TextureDescriptor, objc_name="height") +TextureDescriptor_height :: proc(self: ^TextureDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "height") +} +@(objc_type=TextureDescriptor, objc_name="mipmapLevelCount") +TextureDescriptor_mipmapLevelCount :: proc(self: ^TextureDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "mipmapLevelCount") +} +@(objc_type=TextureDescriptor, objc_name="pixelFormat") +TextureDescriptor_pixelFormat :: proc(self: ^TextureDescriptor) -> PixelFormat { + return msgSend(PixelFormat, self, "pixelFormat") +} +@(objc_type=TextureDescriptor, objc_name="resourceOptions") +TextureDescriptor_resourceOptions :: proc(self: ^TextureDescriptor) -> ResourceOptions { + return msgSend(ResourceOptions, self, "resourceOptions") +} +@(objc_type=TextureDescriptor, objc_name="sampleCount") +TextureDescriptor_sampleCount :: proc(self: ^TextureDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "sampleCount") +} +@(objc_type=TextureDescriptor, objc_name="setAllowGPUOptimizedContents") +TextureDescriptor_setAllowGPUOptimizedContents :: proc(self: ^TextureDescriptor, allowGPUOptimizedContents: BOOL) { + msgSend(nil, self, "setAllowGPUOptimizedContents:", allowGPUOptimizedContents) +} +@(objc_type=TextureDescriptor, objc_name="setArrayLength") +TextureDescriptor_setArrayLength :: proc(self: ^TextureDescriptor, arrayLength: NS.Integer) { + msgSend(nil, self, "setArrayLength:", arrayLength) +} +@(objc_type=TextureDescriptor, objc_name="setCpuCacheMode") +TextureDescriptor_setCpuCacheMode :: proc(self: ^TextureDescriptor, cpuCacheMode: CPUCacheMode) { + msgSend(nil, self, "setCpuCacheMode:", cpuCacheMode) +} +@(objc_type=TextureDescriptor, objc_name="setDepth") +TextureDescriptor_setDepth :: proc(self: ^TextureDescriptor, depth: NS.Integer) { + msgSend(nil, self, "setDepth:", depth) +} +@(objc_type=TextureDescriptor, objc_name="setHazardTrackingMode") +TextureDescriptor_setHazardTrackingMode :: proc(self: ^TextureDescriptor, hazardTrackingMode: HazardTrackingMode) { + msgSend(nil, self, "setHazardTrackingMode:", hazardTrackingMode) +} +@(objc_type=TextureDescriptor, objc_name="setHeight") +TextureDescriptor_setHeight :: proc(self: ^TextureDescriptor, height: NS.Integer) { + msgSend(nil, self, "setHeight:", height) +} +@(objc_type=TextureDescriptor, objc_name="setMipmapLevelCount") +TextureDescriptor_setMipmapLevelCount :: proc(self: ^TextureDescriptor, mipmapLevelCount: NS.Integer) { + msgSend(nil, self, "setMipmapLevelCount:", mipmapLevelCount) +} +@(objc_type=TextureDescriptor, objc_name="setPixelFormat") +TextureDescriptor_setPixelFormat :: proc(self: ^TextureDescriptor, pixelFormat: PixelFormat) { + msgSend(nil, self, "setPixelFormat:", pixelFormat) +} +@(objc_type=TextureDescriptor, objc_name="setResourceOptions") +TextureDescriptor_setResourceOptions :: proc(self: ^TextureDescriptor, resourceOptions: ResourceOptions) { + msgSend(nil, self, "setResourceOptions:", resourceOptions) +} +@(objc_type=TextureDescriptor, objc_name="setSampleCount") +TextureDescriptor_setSampleCount :: proc(self: ^TextureDescriptor, sampleCount: NS.Integer) { + msgSend(nil, self, "setSampleCount:", sampleCount) +} +@(objc_type=TextureDescriptor, objc_name="setStorageMode") +TextureDescriptor_setStorageMode :: proc(self: ^TextureDescriptor, storageMode: StorageMode) { + msgSend(nil, self, "setStorageMode:", storageMode) +} +@(objc_type=TextureDescriptor, objc_name="setSwizzle") +TextureDescriptor_setSwizzle :: proc(self: ^TextureDescriptor, swizzle: TextureSwizzleChannels) { + msgSend(nil, self, "setSwizzle:", swizzle) +} +@(objc_type=TextureDescriptor, objc_name="setTextureType") +TextureDescriptor_setTextureType :: proc(self: ^TextureDescriptor, textureType: TextureType) { + msgSend(nil, self, "setTextureType:", textureType) +} +@(objc_type=TextureDescriptor, objc_name="setUsage") +TextureDescriptor_setUsage :: proc(self: ^TextureDescriptor, usage: TextureUsage) { + msgSend(nil, self, "setUsage:", usage) +} +@(objc_type=TextureDescriptor, objc_name="setWidth") +TextureDescriptor_setWidth :: proc(self: ^TextureDescriptor, width: NS.Integer) { + msgSend(nil, self, "setWidth:", width) +} +@(objc_type=TextureDescriptor, objc_name="storageMode") +TextureDescriptor_storageMode :: proc(self: ^TextureDescriptor) -> StorageMode { + return msgSend(StorageMode, self, "storageMode") +} +@(objc_type=TextureDescriptor, objc_name="swizzle") +TextureDescriptor_swizzle :: proc(self: ^TextureDescriptor) -> TextureSwizzleChannels { + return msgSend(TextureSwizzleChannels, self, "swizzle") +} +@(objc_type=TextureDescriptor, objc_class_name="texture2DDescriptorWithPixelFormat") +TextureDescriptor_texture2DDescriptorWithPixelFormat :: proc(pixelFormat: PixelFormat, width: ^NS.Object, height: ^NS.Object, mipmapped: BOOL) -> ^TextureDescriptor { + return msgSend(^TextureDescriptor, TextureDescriptor, "texture2DDescriptorWithPixelFormat:width:height:mipmapped:", pixelFormat, width, height, mipmapped) +} +@(objc_type=TextureDescriptor, objc_class_name="textureBufferDescriptorWithPixelFormat") +TextureDescriptor_textureBufferDescriptorWithPixelFormat :: proc(pixelFormat: PixelFormat, width: ^NS.Object, resourceOptions: ResourceOptions, usage: TextureUsage) -> ^TextureDescriptor { + return msgSend(^TextureDescriptor, TextureDescriptor, "textureBufferDescriptorWithPixelFormat:width:resourceOptions:usage:", pixelFormat, width, resourceOptions, usage) +} +@(objc_type=TextureDescriptor, objc_class_name="textureCubeDescriptorWithPixelFormat") +TextureDescriptor_textureCubeDescriptorWithPixelFormat :: proc(pixelFormat: PixelFormat, size: ^NS.Object, mipmapped: BOOL) -> ^TextureDescriptor { + return msgSend(^TextureDescriptor, TextureDescriptor, "textureCubeDescriptorWithPixelFormat:size:mipmapped:", pixelFormat, size, mipmapped) +} +@(objc_type=TextureDescriptor, objc_name="textureType") +TextureDescriptor_textureType :: proc(self: ^TextureDescriptor) -> TextureType { + return msgSend(TextureType, self, "textureType") +} +@(objc_type=TextureDescriptor, objc_name="usage") +TextureDescriptor_usage :: proc(self: ^TextureDescriptor) -> TextureUsage { + return msgSend(TextureUsage, self, "usage") +} +@(objc_type=TextureDescriptor, objc_name="width") +TextureDescriptor_width :: proc(self: ^TextureDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "width") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + TextureReferenceType +Class Methods: + alloc +Methods: + init + access + isDepthTexture + textureDataType + textureType +*/ +@(objc_class="MTLTextureReferenceType") +TextureReferenceType :: struct { using _: NS.Object } + +@(objc_type=TextureReferenceType, objc_class_name="alloc") +TextureReferenceType_alloc :: proc() -> ^TextureReferenceType { + return msgSend(^TextureReferenceType, TextureReferenceType, "alloc") +} +@(objc_type=TextureReferenceType, objc_name="init") +TextureReferenceType_init :: proc(self: ^TextureReferenceType) -> ^TextureReferenceType { + return msgSend(^TextureReferenceType, self, "init") +} +@(objc_type=TextureReferenceType, objc_name="access") +TextureReferenceType_access :: proc(self: ^TextureReferenceType) -> ArgumentAccess { + return msgSend(ArgumentAccess, self, "access") +} +@(objc_type=TextureReferenceType, objc_name="isDepthTexture") +TextureReferenceType_isDepthTexture :: proc(self: ^TextureReferenceType) -> BOOL { + return msgSend(BOOL, self, "isDepthTexture") +} +@(objc_type=TextureReferenceType, objc_name="textureDataType") +TextureReferenceType_textureDataType :: proc(self: ^TextureReferenceType) -> DataType { + return msgSend(DataType, self, "textureDataType") +} +@(objc_type=TextureReferenceType, objc_name="textureType") +TextureReferenceType_textureType :: proc(self: ^TextureReferenceType) -> TextureType { + return msgSend(TextureType, self, "textureType") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + TileRenderPipelineColorAttachmentDescriptor +Class Methods: + alloc +Methods: + init + pixelFormat + setPixelFormat +*/ +@(objc_class="MTLTileRenderPipelineColorAttachmentDescriptor") +TileRenderPipelineColorAttachmentDescriptor :: struct { using _: NS.Copying(TileRenderPipelineColorAttachmentDescriptor) } + +@(objc_type=TileRenderPipelineColorAttachmentDescriptor, objc_class_name="alloc") +TileRenderPipelineColorAttachmentDescriptor_alloc :: proc() -> ^TileRenderPipelineColorAttachmentDescriptor { + return msgSend(^TileRenderPipelineColorAttachmentDescriptor, TileRenderPipelineColorAttachmentDescriptor, "alloc") +} +@(objc_type=TileRenderPipelineColorAttachmentDescriptor, objc_name="init") +TileRenderPipelineColorAttachmentDescriptor_init :: proc(self: ^TileRenderPipelineColorAttachmentDescriptor) -> ^TileRenderPipelineColorAttachmentDescriptor { + return msgSend(^TileRenderPipelineColorAttachmentDescriptor, self, "init") +} +@(objc_type=TileRenderPipelineColorAttachmentDescriptor, objc_name="pixelFormat") +TileRenderPipelineColorAttachmentDescriptor_pixelFormat :: proc(self: ^TileRenderPipelineColorAttachmentDescriptor) -> PixelFormat { + return msgSend(PixelFormat, self, "pixelFormat") +} +@(objc_type=TileRenderPipelineColorAttachmentDescriptor, objc_name="setPixelFormat") +TileRenderPipelineColorAttachmentDescriptor_setPixelFormat :: proc(self: ^TileRenderPipelineColorAttachmentDescriptor, pixelFormat: PixelFormat) { + msgSend(nil, self, "setPixelFormat:", pixelFormat) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + TileRenderPipelineColorAttachmentDescriptorArray +Class Methods: + alloc +Methods: + init + objectAtIndexedSubscript + setObject +*/ +@(objc_class="MTLTileRenderPipelineColorAttachmentDescriptorArray") +TileRenderPipelineColorAttachmentDescriptorArray :: struct { using _: NS.Object } + +@(objc_type=TileRenderPipelineColorAttachmentDescriptorArray, objc_class_name="alloc") +TileRenderPipelineColorAttachmentDescriptorArray_alloc :: proc() -> ^TileRenderPipelineColorAttachmentDescriptorArray { + return msgSend(^TileRenderPipelineColorAttachmentDescriptorArray, TileRenderPipelineColorAttachmentDescriptorArray, "alloc") +} +@(objc_type=TileRenderPipelineColorAttachmentDescriptorArray, objc_name="init") +TileRenderPipelineColorAttachmentDescriptorArray_init :: proc(self: ^TileRenderPipelineColorAttachmentDescriptorArray) -> ^TileRenderPipelineColorAttachmentDescriptorArray { + return msgSend(^TileRenderPipelineColorAttachmentDescriptorArray, self, "init") +} +@(objc_type=TileRenderPipelineColorAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") +TileRenderPipelineColorAttachmentDescriptorArray_objectAtIndexedSubscript :: proc(self: ^TileRenderPipelineColorAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^TileRenderPipelineColorAttachmentDescriptor { + return msgSend(^TileRenderPipelineColorAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) +} +@(objc_type=TileRenderPipelineColorAttachmentDescriptorArray, objc_name="setObject") +TileRenderPipelineColorAttachmentDescriptorArray_setObject :: proc(self: ^TileRenderPipelineColorAttachmentDescriptorArray, attachment: ^TileRenderPipelineColorAttachmentDescriptor, attachmentIndex: ^NS.Object) { + msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + TileRenderPipelineDescriptor +Class Methods: + alloc +Methods: + init + binaryArchives + colorAttachments + label + maxTotalThreadsPerThreadgroup + rasterSampleCount + reset + setBinaryArchives + setLabel + setMaxTotalThreadsPerThreadgroup + setRasterSampleCount + setThreadgroupSizeMatchesTileSize + setTileFunction + threadgroupSizeMatchesTileSize + tileBuffers + tileFunction +*/ +@(objc_class="MTLTileRenderPipelineDescriptor") +TileRenderPipelineDescriptor :: struct { using _: NS.Copying(TileRenderPipelineDescriptor) } + +@(objc_type=TileRenderPipelineDescriptor, objc_class_name="alloc") +TileRenderPipelineDescriptor_alloc :: proc() -> ^TileRenderPipelineDescriptor { + return msgSend(^TileRenderPipelineDescriptor, TileRenderPipelineDescriptor, "alloc") +} +@(objc_type=TileRenderPipelineDescriptor, objc_name="init") +TileRenderPipelineDescriptor_init :: proc(self: ^TileRenderPipelineDescriptor) -> ^TileRenderPipelineDescriptor { + return msgSend(^TileRenderPipelineDescriptor, self, "init") +} +@(objc_type=TileRenderPipelineDescriptor, objc_name="binaryArchives") +TileRenderPipelineDescriptor_binaryArchives :: proc(self: ^TileRenderPipelineDescriptor) -> ^NS.Array { + return msgSend(^NS.Array, self, "binaryArchives") +} +@(objc_type=TileRenderPipelineDescriptor, objc_name="colorAttachments") +TileRenderPipelineDescriptor_colorAttachments :: proc(self: ^TileRenderPipelineDescriptor) -> ^TileRenderPipelineColorAttachmentDescriptorArray { + return msgSend(^TileRenderPipelineColorAttachmentDescriptorArray, self, "colorAttachments") +} +@(objc_type=TileRenderPipelineDescriptor, objc_name="label") +TileRenderPipelineDescriptor_label :: proc(self: ^TileRenderPipelineDescriptor) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=TileRenderPipelineDescriptor, objc_name="maxTotalThreadsPerThreadgroup") +TileRenderPipelineDescriptor_maxTotalThreadsPerThreadgroup :: proc(self: ^TileRenderPipelineDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "maxTotalThreadsPerThreadgroup") +} +@(objc_type=TileRenderPipelineDescriptor, objc_name="rasterSampleCount") +TileRenderPipelineDescriptor_rasterSampleCount :: proc(self: ^TileRenderPipelineDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "rasterSampleCount") +} +@(objc_type=TileRenderPipelineDescriptor, objc_name="reset") +TileRenderPipelineDescriptor_reset :: proc(self: ^TileRenderPipelineDescriptor) { + msgSend(nil, self, "reset") +} +@(objc_type=TileRenderPipelineDescriptor, objc_name="setBinaryArchives") +TileRenderPipelineDescriptor_setBinaryArchives :: proc(self: ^TileRenderPipelineDescriptor, binaryArchives: ^NS.Array) { + msgSend(nil, self, "setBinaryArchives:", binaryArchives) +} +@(objc_type=TileRenderPipelineDescriptor, objc_name="setLabel") +TileRenderPipelineDescriptor_setLabel :: proc(self: ^TileRenderPipelineDescriptor, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} +@(objc_type=TileRenderPipelineDescriptor, objc_name="setMaxTotalThreadsPerThreadgroup") +TileRenderPipelineDescriptor_setMaxTotalThreadsPerThreadgroup :: proc(self: ^TileRenderPipelineDescriptor, maxTotalThreadsPerThreadgroup: NS.Integer) { + msgSend(nil, self, "setMaxTotalThreadsPerThreadgroup:", maxTotalThreadsPerThreadgroup) +} +@(objc_type=TileRenderPipelineDescriptor, objc_name="setRasterSampleCount") +TileRenderPipelineDescriptor_setRasterSampleCount :: proc(self: ^TileRenderPipelineDescriptor, rasterSampleCount: NS.Integer) { + msgSend(nil, self, "setRasterSampleCount:", rasterSampleCount) +} +@(objc_type=TileRenderPipelineDescriptor, objc_name="setThreadgroupSizeMatchesTileSize") +TileRenderPipelineDescriptor_setThreadgroupSizeMatchesTileSize :: proc(self: ^TileRenderPipelineDescriptor, threadgroupSizeMatchesTileSize: BOOL) { + msgSend(nil, self, "setThreadgroupSizeMatchesTileSize:", threadgroupSizeMatchesTileSize) +} +@(objc_type=TileRenderPipelineDescriptor, objc_name="setTileFunction") +TileRenderPipelineDescriptor_setTileFunction :: proc(self: ^TileRenderPipelineDescriptor, tileFunction: ^NS.Object) { + msgSend(nil, self, "setTileFunction:", tileFunction) +} +@(objc_type=TileRenderPipelineDescriptor, objc_name="threadgroupSizeMatchesTileSize") +TileRenderPipelineDescriptor_threadgroupSizeMatchesTileSize :: proc(self: ^TileRenderPipelineDescriptor) -> BOOL { + return msgSend(BOOL, self, "threadgroupSizeMatchesTileSize") +} +@(objc_type=TileRenderPipelineDescriptor, objc_name="tileBuffers") +TileRenderPipelineDescriptor_tileBuffers :: proc(self: ^TileRenderPipelineDescriptor) -> ^PipelineBufferDescriptorArray { + return msgSend(^PipelineBufferDescriptorArray, self, "tileBuffers") +} +@(objc_type=TileRenderPipelineDescriptor, objc_name="tileFunction") +TileRenderPipelineDescriptor_tileFunction :: proc(self: ^TileRenderPipelineDescriptor) -> ^TileRenderPipelineDescriptor { + return msgSend(^TileRenderPipelineDescriptor, self, "tileFunction") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + Type +Class Methods: + alloc +Methods: + init + dataType +*/ +@(objc_class="MTLType") +Type :: struct { using _: NS.Object } + +@(objc_type=Type, objc_class_name="alloc") +Type_alloc :: proc() -> ^Type { + return msgSend(^Type, Type, "alloc") +} +@(objc_type=Type, objc_name="init") +Type_init :: proc(self: ^Type) -> ^Type { + return msgSend(^Type, self, "init") +} +@(objc_type=Type, objc_name="dataType") +Type_dataType :: proc(self: ^Type) -> DataType { + return msgSend(DataType, self, "dataType") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + VertexAttribute +Class Methods: + alloc +Methods: + init + attributeIndex + attributeType + isActive + isPatchControlPointData + isPatchData + name +*/ +@(objc_class="MTLVertexAttribute") +VertexAttribute :: struct { using _: NS.Object } + +@(objc_type=VertexAttribute, objc_class_name="alloc") +VertexAttribute_alloc :: proc() -> ^VertexAttribute { + return msgSend(^VertexAttribute, VertexAttribute, "alloc") +} +@(objc_type=VertexAttribute, objc_name="init") +VertexAttribute_init :: proc(self: ^VertexAttribute) -> ^VertexAttribute { + return msgSend(^VertexAttribute, self, "init") +} +@(objc_type=VertexAttribute, objc_name="attributeIndex") +VertexAttribute_attributeIndex :: proc(self: ^VertexAttribute) -> NS.Integer { + return msgSend(NS.Integer, self, "attributeIndex") +} +@(objc_type=VertexAttribute, objc_name="attributeType") +VertexAttribute_attributeType :: proc(self: ^VertexAttribute) -> DataType { + return msgSend(DataType, self, "attributeType") +} +@(objc_type=VertexAttribute, objc_name="isActive") +VertexAttribute_isActive :: proc(self: ^VertexAttribute) -> BOOL { + return msgSend(BOOL, self, "isActive") +} +@(objc_type=VertexAttribute, objc_name="isPatchControlPointData") +VertexAttribute_isPatchControlPointData :: proc(self: ^VertexAttribute) -> BOOL { + return msgSend(BOOL, self, "isPatchControlPointData") +} +@(objc_type=VertexAttribute, objc_name="isPatchData") +VertexAttribute_isPatchData :: proc(self: ^VertexAttribute) -> BOOL { + return msgSend(BOOL, self, "isPatchData") +} +@(objc_type=VertexAttribute, objc_name="name") +VertexAttribute_name :: proc(self: ^VertexAttribute) -> ^NS.String { + return msgSend(^NS.String, self, "name") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + VertexAttributeDescriptor +Class Methods: + alloc +Methods: + init + bufferIndex + format + offset + setBufferIndex + setFormat + setOffset +*/ +@(objc_class="MTLVertexAttributeDescriptor") +VertexAttributeDescriptor :: struct { using _: NS.Copying(VertexAttributeDescriptor) } + +@(objc_type=VertexAttributeDescriptor, objc_class_name="alloc") +VertexAttributeDescriptor_alloc :: proc() -> ^VertexAttributeDescriptor { + return msgSend(^VertexAttributeDescriptor, VertexAttributeDescriptor, "alloc") +} +@(objc_type=VertexAttributeDescriptor, objc_name="init") +VertexAttributeDescriptor_init :: proc(self: ^VertexAttributeDescriptor) -> ^VertexAttributeDescriptor { + return msgSend(^VertexAttributeDescriptor, self, "init") +} +@(objc_type=VertexAttributeDescriptor, objc_name="bufferIndex") +VertexAttributeDescriptor_bufferIndex :: proc(self: ^VertexAttributeDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "bufferIndex") +} +@(objc_type=VertexAttributeDescriptor, objc_name="format") +VertexAttributeDescriptor_format :: proc(self: ^VertexAttributeDescriptor) -> VertexFormat { + return msgSend(VertexFormat, self, "format") +} +@(objc_type=VertexAttributeDescriptor, objc_name="offset") +VertexAttributeDescriptor_offset :: proc(self: ^VertexAttributeDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "offset") +} +@(objc_type=VertexAttributeDescriptor, objc_name="setBufferIndex") +VertexAttributeDescriptor_setBufferIndex :: proc(self: ^VertexAttributeDescriptor, bufferIndex: NS.Integer) { + msgSend(nil, self, "setBufferIndex:", bufferIndex) +} +@(objc_type=VertexAttributeDescriptor, objc_name="setFormat") +VertexAttributeDescriptor_setFormat :: proc(self: ^VertexAttributeDescriptor, format: VertexFormat) { + msgSend(nil, self, "setFormat:", format) +} +@(objc_type=VertexAttributeDescriptor, objc_name="setOffset") +VertexAttributeDescriptor_setOffset :: proc(self: ^VertexAttributeDescriptor, offset: NS.Integer) { + msgSend(nil, self, "setOffset:", offset) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + VertexAttributeDescriptorArray +Class Methods: + alloc +Methods: + init + objectAtIndexedSubscript + setObject +*/ +@(objc_class="MTLVertexAttributeDescriptorArray") +VertexAttributeDescriptorArray :: struct { using _: NS.Object } + +@(objc_type=VertexAttributeDescriptorArray, objc_class_name="alloc") +VertexAttributeDescriptorArray_alloc :: proc() -> ^VertexAttributeDescriptorArray { + return msgSend(^VertexAttributeDescriptorArray, VertexAttributeDescriptorArray, "alloc") +} +@(objc_type=VertexAttributeDescriptorArray, objc_name="init") +VertexAttributeDescriptorArray_init :: proc(self: ^VertexAttributeDescriptorArray) -> ^VertexAttributeDescriptorArray { + return msgSend(^VertexAttributeDescriptorArray, self, "init") +} +@(objc_type=VertexAttributeDescriptorArray, objc_name="objectAtIndexedSubscript") +VertexAttributeDescriptorArray_objectAtIndexedSubscript :: proc(self: ^VertexAttributeDescriptorArray, index: ^NS.Object) -> ^VertexAttributeDescriptor { + return msgSend(^VertexAttributeDescriptor, self, "objectAtIndexedSubscript:", index) +} +@(objc_type=VertexAttributeDescriptorArray, objc_name="setObject") +VertexAttributeDescriptorArray_setObject :: proc(self: ^VertexAttributeDescriptorArray, attributeDesc: ^VertexAttributeDescriptor, index: ^NS.Object) { + msgSend(nil, self, "setObject:atIndexedSubscript:", attributeDesc, index) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + VertexBufferLayoutDescriptor +Class Methods: + alloc +Methods: + init + setStepFunction + setStepRate + setStride + stepFunction + stepRate + stride +*/ +@(objc_class="MTLVertexBufferLayoutDescriptor") +VertexBufferLayoutDescriptor :: struct { using _: NS.Copying(VertexBufferLayoutDescriptor) } + +@(objc_type=VertexBufferLayoutDescriptor, objc_class_name="alloc") +VertexBufferLayoutDescriptor_alloc :: proc() -> ^VertexBufferLayoutDescriptor { + return msgSend(^VertexBufferLayoutDescriptor, VertexBufferLayoutDescriptor, "alloc") +} +@(objc_type=VertexBufferLayoutDescriptor, objc_name="init") +VertexBufferLayoutDescriptor_init :: proc(self: ^VertexBufferLayoutDescriptor) -> ^VertexBufferLayoutDescriptor { + return msgSend(^VertexBufferLayoutDescriptor, self, "init") +} +@(objc_type=VertexBufferLayoutDescriptor, objc_name="setStepFunction") +VertexBufferLayoutDescriptor_setStepFunction :: proc(self: ^VertexBufferLayoutDescriptor, stepFunction: VertexStepFunction) { + msgSend(nil, self, "setStepFunction:", stepFunction) +} +@(objc_type=VertexBufferLayoutDescriptor, objc_name="setStepRate") +VertexBufferLayoutDescriptor_setStepRate :: proc(self: ^VertexBufferLayoutDescriptor, stepRate: NS.Integer) { + msgSend(nil, self, "setStepRate:", stepRate) +} +@(objc_type=VertexBufferLayoutDescriptor, objc_name="setStride") +VertexBufferLayoutDescriptor_setStride :: proc(self: ^VertexBufferLayoutDescriptor, stride: NS.Integer) { + msgSend(nil, self, "setStride:", stride) +} +@(objc_type=VertexBufferLayoutDescriptor, objc_name="stepFunction") +VertexBufferLayoutDescriptor_stepFunction :: proc(self: ^VertexBufferLayoutDescriptor) -> VertexStepFunction { + return msgSend(VertexStepFunction, self, "stepFunction") +} +@(objc_type=VertexBufferLayoutDescriptor, objc_name="stepRate") +VertexBufferLayoutDescriptor_stepRate :: proc(self: ^VertexBufferLayoutDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "stepRate") +} +@(objc_type=VertexBufferLayoutDescriptor, objc_name="stride") +VertexBufferLayoutDescriptor_stride :: proc(self: ^VertexBufferLayoutDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "stride") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + VertexBufferLayoutDescriptorArray +Class Methods: + alloc +Methods: + init + objectAtIndexedSubscript + setObject +*/ +@(objc_class="MTLVertexBufferLayoutDescriptorArray") +VertexBufferLayoutDescriptorArray :: struct { using _: NS.Object } + +@(objc_type=VertexBufferLayoutDescriptorArray, objc_class_name="alloc") +VertexBufferLayoutDescriptorArray_alloc :: proc() -> ^VertexBufferLayoutDescriptorArray { + return msgSend(^VertexBufferLayoutDescriptorArray, VertexBufferLayoutDescriptorArray, "alloc") +} +@(objc_type=VertexBufferLayoutDescriptorArray, objc_name="init") +VertexBufferLayoutDescriptorArray_init :: proc(self: ^VertexBufferLayoutDescriptorArray) -> ^VertexBufferLayoutDescriptorArray { + return msgSend(^VertexBufferLayoutDescriptorArray, self, "init") +} +@(objc_type=VertexBufferLayoutDescriptorArray, objc_name="objectAtIndexedSubscript") +VertexBufferLayoutDescriptorArray_objectAtIndexedSubscript :: proc(self: ^VertexBufferLayoutDescriptorArray, index: ^NS.Object) -> ^VertexBufferLayoutDescriptor { + return msgSend(^VertexBufferLayoutDescriptor, self, "objectAtIndexedSubscript:", index) +} +@(objc_type=VertexBufferLayoutDescriptorArray, objc_name="setObject") +VertexBufferLayoutDescriptorArray_setObject :: proc(self: ^VertexBufferLayoutDescriptorArray, bufferDesc: ^VertexBufferLayoutDescriptor, index: ^NS.Object) { + msgSend(nil, self, "setObject:atIndexedSubscript:", bufferDesc, index) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + VertexDescriptor +Class Methods: + alloc + vertexDescriptor +Methods: + init + attributes + layouts + reset +*/ +@(objc_class="MTLVertexDescriptor") +VertexDescriptor :: struct { using _: NS.Copying(VertexDescriptor) } + +@(objc_type=VertexDescriptor, objc_class_name="alloc") +VertexDescriptor_alloc :: proc() -> ^VertexDescriptor { + return msgSend(^VertexDescriptor, VertexDescriptor, "alloc") +} +@(objc_type=VertexDescriptor, objc_name="init") +VertexDescriptor_init :: proc(self: ^VertexDescriptor) -> ^VertexDescriptor { + return msgSend(^VertexDescriptor, self, "init") +} +@(objc_type=VertexDescriptor, objc_name="attributes") +VertexDescriptor_attributes :: proc(self: ^VertexDescriptor) -> ^VertexAttributeDescriptorArray { + return msgSend(^VertexAttributeDescriptorArray, self, "attributes") +} +@(objc_type=VertexDescriptor, objc_name="layouts") +VertexDescriptor_layouts :: proc(self: ^VertexDescriptor) -> ^VertexBufferLayoutDescriptorArray { + return msgSend(^VertexBufferLayoutDescriptorArray, self, "layouts") +} +@(objc_type=VertexDescriptor, objc_name="reset") +VertexDescriptor_reset :: proc(self: ^VertexDescriptor) { + msgSend(nil, self, "reset") +} +@(objc_type=VertexDescriptor, objc_class_name="vertexDescriptor") +VertexDescriptor_vertexDescriptor :: proc() -> ^VertexDescriptor { + return msgSend(^VertexDescriptor, VertexDescriptor, "vertexDescriptor") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + VisibleFunctionTableDescriptor +Class Methods: + alloc + visibleFunctionTableDescriptor +Methods: + init + functionCount + setFunctionCount +*/ +@(objc_class="MTLVisibleFunctionTableDescriptor") +VisibleFunctionTableDescriptor :: struct { using _: NS.Copying(VisibleFunctionTableDescriptor) } + +@(objc_type=VisibleFunctionTableDescriptor, objc_class_name="alloc") +VisibleFunctionTableDescriptor_alloc :: proc() -> ^VisibleFunctionTableDescriptor { + return msgSend(^VisibleFunctionTableDescriptor, VisibleFunctionTableDescriptor, "alloc") +} +@(objc_type=VisibleFunctionTableDescriptor, objc_name="init") +VisibleFunctionTableDescriptor_init :: proc(self: ^VisibleFunctionTableDescriptor) -> ^VisibleFunctionTableDescriptor { + return msgSend(^VisibleFunctionTableDescriptor, self, "init") +} +@(objc_type=VisibleFunctionTableDescriptor, objc_name="functionCount") +VisibleFunctionTableDescriptor_functionCount :: proc(self: ^VisibleFunctionTableDescriptor) -> NS.Integer { + return msgSend(NS.Integer, self, "functionCount") +} +@(objc_type=VisibleFunctionTableDescriptor, objc_name="setFunctionCount") +VisibleFunctionTableDescriptor_setFunctionCount :: proc(self: ^VisibleFunctionTableDescriptor, functionCount: NS.Integer) { + msgSend(nil, self, "setFunctionCount:", functionCount) +} +@(objc_type=VisibleFunctionTableDescriptor, objc_class_name="visibleFunctionTableDescriptor") +VisibleFunctionTableDescriptor_visibleFunctionTableDescriptor :: proc() -> ^VisibleFunctionTableDescriptor { + return msgSend(^VisibleFunctionTableDescriptor, VisibleFunctionTableDescriptor, "visibleFunctionTableDescriptor") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + AccelerationStructure +Class Methods: +Methods: + size +*/ +@(objc_class="MTLAccelerationStructure") +AccelerationStructure :: struct { using _: NS.Object } + +@(objc_type=AccelerationStructure, objc_name="size") +AccelerationStructure_size :: proc(self: ^AccelerationStructure) -> NS.Integer { + return msgSend(NS.Integer, self, "size") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + AccelerationStructureCommandEncoder +Class Methods: +Methods: + buildAccelerationStructure + copyAccelerationStructure + copyAndCompactAccelerationStructure + refitAccelerationStructure + sampleCountersInBuffer + updateFence + useHeap + useHeaps + useResource + useResources + waitForFence + writeCompactedAccelerationStructureSize +*/ +@(objc_class="MTLAccelerationStructureCommandEncoder") +AccelerationStructureCommandEncoder :: struct { using _: NS.Object } + +@(objc_type=AccelerationStructureCommandEncoder, objc_name="buildAccelerationStructure") +AccelerationStructureCommandEncoder_buildAccelerationStructure :: proc(self: ^AccelerationStructureCommandEncoder, accelerationStructure: ^NS.Object, descriptor: ^AccelerationStructureDescriptor, scratchBuffer: ^NS.Object, scratchBufferOffset: ^NS.Object) { + msgSend(nil, self, "buildAccelerationStructure:descriptor:scratchBuffer:scratchBufferOffset:", accelerationStructure, descriptor, scratchBuffer, scratchBufferOffset) +} +@(objc_type=AccelerationStructureCommandEncoder, objc_name="copyAccelerationStructure") +AccelerationStructureCommandEncoder_copyAccelerationStructure :: proc(self: ^AccelerationStructureCommandEncoder, sourceAccelerationStructure: ^NS.Object, destinationAccelerationStructure: ^NS.Object) { + msgSend(nil, self, "copyAccelerationStructure:toAccelerationStructure:", sourceAccelerationStructure, destinationAccelerationStructure) +} +@(objc_type=AccelerationStructureCommandEncoder, objc_name="copyAndCompactAccelerationStructure") +AccelerationStructureCommandEncoder_copyAndCompactAccelerationStructure :: proc(self: ^AccelerationStructureCommandEncoder, sourceAccelerationStructure: ^NS.Object, destinationAccelerationStructure: ^NS.Object) { + msgSend(nil, self, "copyAndCompactAccelerationStructure:toAccelerationStructure:", sourceAccelerationStructure, destinationAccelerationStructure) +} +@(objc_type=AccelerationStructureCommandEncoder, objc_name="refitAccelerationStructure") +AccelerationStructureCommandEncoder_refitAccelerationStructure :: proc(self: ^AccelerationStructureCommandEncoder, sourceAccelerationStructure: ^NS.Object, descriptor: ^AccelerationStructureDescriptor, destinationAccelerationStructure: ^NS.Object, scratchBuffer: ^NS.Object, scratchBufferOffset: ^NS.Object) { + msgSend(nil, self, "refitAccelerationStructure:descriptor:destination:scratchBuffer:scratchBufferOffset:", sourceAccelerationStructure, descriptor, destinationAccelerationStructure, scratchBuffer, scratchBufferOffset) +} +@(objc_type=AccelerationStructureCommandEncoder, objc_name="sampleCountersInBuffer") +AccelerationStructureCommandEncoder_sampleCountersInBuffer :: proc(self: ^AccelerationStructureCommandEncoder, sampleBuffer: ^NS.Object, sampleIndex: ^NS.Object, barrier: BOOL) { + msgSend(nil, self, "sampleCountersInBuffer:atSampleIndex:withBarrier:", sampleBuffer, sampleIndex, barrier) +} +@(objc_type=AccelerationStructureCommandEncoder, objc_name="updateFence") +AccelerationStructureCommandEncoder_updateFence :: proc(self: ^AccelerationStructureCommandEncoder, fence: ^NS.Object) { + msgSend(nil, self, "updateFence:", fence) +} +@(objc_type=AccelerationStructureCommandEncoder, objc_name="useHeap") +AccelerationStructureCommandEncoder_useHeap :: proc(self: ^AccelerationStructureCommandEncoder, heap: ^NS.Object) { + msgSend(nil, self, "useHeap:", heap) +} +@(objc_type=AccelerationStructureCommandEncoder, objc_name="useHeaps") +AccelerationStructureCommandEncoder_useHeaps :: proc(self: ^AccelerationStructureCommandEncoder, heaps: ^^NS.Object, count: ^NS.Object) { + msgSend(nil, self, "useHeaps:count:", heaps, count) +} +@(objc_type=AccelerationStructureCommandEncoder, objc_name="useResource") +AccelerationStructureCommandEncoder_useResource :: proc(self: ^AccelerationStructureCommandEncoder, resource: ^NS.Object, usage: ResourceUsage) { + msgSend(nil, self, "useResource:usage:", resource, usage) +} +@(objc_type=AccelerationStructureCommandEncoder, objc_name="useResources") +AccelerationStructureCommandEncoder_useResources :: proc(self: ^AccelerationStructureCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, usage: ResourceUsage) { + msgSend(nil, self, "useResources:count:usage:", resources, count, usage) +} +@(objc_type=AccelerationStructureCommandEncoder, objc_name="waitForFence") +AccelerationStructureCommandEncoder_waitForFence :: proc(self: ^AccelerationStructureCommandEncoder, fence: ^NS.Object) { + msgSend(nil, self, "waitForFence:", fence) +} +@(objc_type=AccelerationStructureCommandEncoder, objc_name="writeCompactedAccelerationStructureSize") +AccelerationStructureCommandEncoder_writeCompactedAccelerationStructureSize :: proc(self: ^AccelerationStructureCommandEncoder, accelerationStructure: ^NS.Object, buffer: ^NS.Object, offset: ^NS.Object) { + msgSend(nil, self, "writeCompactedAccelerationStructureSize:toBuffer:offset:", accelerationStructure, buffer, offset) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + ArgumentEncoder +Class Methods: +Methods: + alignment + constantDataAtIndex + device + encodedLength + label + newArgumentEncoderForBufferAtIndex + setAccelerationStructure + setArgumentBuffer + setArgumentBuffer + setBuffer + setBuffers + setComputePipelineState + setComputePipelineStates + setIndirectCommandBuffer + setIndirectCommandBuffers + setIntersectionFunctionTable + setIntersectionFunctionTables + setLabel + setRenderPipelineState + setRenderPipelineStates + setSamplerState + setSamplerStates + setTexture + setTextures + setVisibleFunctionTable + setVisibleFunctionTables +*/ +@(objc_class="MTLArgumentEncoder") +ArgumentEncoder :: struct { using _: NS.Object } + +@(objc_type=ArgumentEncoder, objc_name="alignment") +ArgumentEncoder_alignment :: proc(self: ^ArgumentEncoder) -> NS.Integer { + return msgSend(NS.Integer, self, "alignment") +} +@(objc_type=ArgumentEncoder, objc_name="constantDataAtIndex") +ArgumentEncoder_constantDataAtIndex :: proc(self: ^ArgumentEncoder, index: ^NS.Object) -> rawptr { + return msgSend(rawptr, self, "constantDataAtIndex:", index) +} +@(objc_type=ArgumentEncoder, objc_name="device") +ArgumentEncoder_device :: proc(self: ^ArgumentEncoder) -> ^ArgumentEncoder { + return msgSend(^ArgumentEncoder, self, "device") +} +@(objc_type=ArgumentEncoder, objc_name="encodedLength") +ArgumentEncoder_encodedLength :: proc(self: ^ArgumentEncoder) -> NS.Integer { + return msgSend(NS.Integer, self, "encodedLength") +} +@(objc_type=ArgumentEncoder, objc_name="label") +ArgumentEncoder_label :: proc(self: ^ArgumentEncoder) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=ArgumentEncoder, objc_name="newArgumentEncoderForBufferAtIndex") +ArgumentEncoder_newArgumentEncoderForBufferAtIndex :: proc(self: ^ArgumentEncoder, index: ^NS.Object) -> ^ArgumentEncoder { + return msgSend(^ArgumentEncoder, self, "newArgumentEncoderForBufferAtIndex:", index) +} +@(objc_type=ArgumentEncoder, objc_name="setAccelerationStructure") +ArgumentEncoder_setAccelerationStructure :: proc(self: ^ArgumentEncoder, accelerationStructure: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setAccelerationStructure:atIndex:", accelerationStructure, index) +} +@(objc_type=ArgumentEncoder, objc_name="setArgumentBuffer_offset_") +ArgumentEncoder_setArgumentBuffer_offset_ :: proc(self: ^ArgumentEncoder, argumentBuffer: ^NS.Object, offset: ^NS.Object) { + msgSend(nil, self, "setArgumentBuffer:offset:", argumentBuffer, offset) +} +@(objc_type=ArgumentEncoder, objc_name="setArgumentBuffer_startOffset_arrayElement_") +ArgumentEncoder_setArgumentBuffer_startOffset_arrayElement_ :: proc(self: ^ArgumentEncoder, argumentBuffer: ^NS.Object, startOffset: ^NS.Object, arrayElement: ^NS.Object) { + msgSend(nil, self, "setArgumentBuffer:startOffset:arrayElement:", argumentBuffer, startOffset, arrayElement) +} +@(objc_type=ArgumentEncoder, objc_name="setBuffer") +ArgumentEncoder_setBuffer :: proc(self: ^ArgumentEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setBuffer:offset:atIndex:", buffer, offset, index) +} +@(objc_type=ArgumentEncoder, objc_name="setBuffers") +ArgumentEncoder_setBuffers :: proc(self: ^ArgumentEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { + msgSend(nil, self, "setBuffers:offsets:withRange:", buffers, offsets, range) +} +@(objc_type=ArgumentEncoder, objc_name="setComputePipelineState") +ArgumentEncoder_setComputePipelineState :: proc(self: ^ArgumentEncoder, pipeline: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setComputePipelineState:atIndex:", pipeline, index) +} +@(objc_type=ArgumentEncoder, objc_name="setComputePipelineStates") +ArgumentEncoder_setComputePipelineStates :: proc(self: ^ArgumentEncoder, pipelines: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setComputePipelineStates:withRange:", pipelines, range) +} +@(objc_type=ArgumentEncoder, objc_name="setIndirectCommandBuffer") +ArgumentEncoder_setIndirectCommandBuffer :: proc(self: ^ArgumentEncoder, indirectCommandBuffer: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setIndirectCommandBuffer:atIndex:", indirectCommandBuffer, index) +} +@(objc_type=ArgumentEncoder, objc_name="setIndirectCommandBuffers") +ArgumentEncoder_setIndirectCommandBuffers :: proc(self: ^ArgumentEncoder, buffers: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setIndirectCommandBuffers:withRange:", buffers, range) +} +@(objc_type=ArgumentEncoder, objc_name="setIntersectionFunctionTable") +ArgumentEncoder_setIntersectionFunctionTable :: proc(self: ^ArgumentEncoder, intersectionFunctionTable: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setIntersectionFunctionTable:atIndex:", intersectionFunctionTable, index) +} +@(objc_type=ArgumentEncoder, objc_name="setIntersectionFunctionTables") +ArgumentEncoder_setIntersectionFunctionTables :: proc(self: ^ArgumentEncoder, intersectionFunctionTables: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setIntersectionFunctionTables:withRange:", intersectionFunctionTables, range) +} +@(objc_type=ArgumentEncoder, objc_name="setLabel") +ArgumentEncoder_setLabel :: proc(self: ^ArgumentEncoder, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} +@(objc_type=ArgumentEncoder, objc_name="setRenderPipelineState") +ArgumentEncoder_setRenderPipelineState :: proc(self: ^ArgumentEncoder, pipeline: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setRenderPipelineState:atIndex:", pipeline, index) +} +@(objc_type=ArgumentEncoder, objc_name="setRenderPipelineStates") +ArgumentEncoder_setRenderPipelineStates :: proc(self: ^ArgumentEncoder, pipelines: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setRenderPipelineStates:withRange:", pipelines, range) +} +@(objc_type=ArgumentEncoder, objc_name="setSamplerState") +ArgumentEncoder_setSamplerState :: proc(self: ^ArgumentEncoder, sampler: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setSamplerState:atIndex:", sampler, index) +} +@(objc_type=ArgumentEncoder, objc_name="setSamplerStates") +ArgumentEncoder_setSamplerStates :: proc(self: ^ArgumentEncoder, samplers: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setSamplerStates:withRange:", samplers, range) +} +@(objc_type=ArgumentEncoder, objc_name="setTexture") +ArgumentEncoder_setTexture :: proc(self: ^ArgumentEncoder, texture: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setTexture:atIndex:", texture, index) +} +@(objc_type=ArgumentEncoder, objc_name="setTextures") +ArgumentEncoder_setTextures :: proc(self: ^ArgumentEncoder, textures: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setTextures:withRange:", textures, range) +} +@(objc_type=ArgumentEncoder, objc_name="setVisibleFunctionTable") +ArgumentEncoder_setVisibleFunctionTable :: proc(self: ^ArgumentEncoder, visibleFunctionTable: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setVisibleFunctionTable:atIndex:", visibleFunctionTable, index) +} +@(objc_type=ArgumentEncoder, objc_name="setVisibleFunctionTables") +ArgumentEncoder_setVisibleFunctionTables :: proc(self: ^ArgumentEncoder, visibleFunctionTables: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setVisibleFunctionTables:withRange:", visibleFunctionTables, range) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + BinaryArchive +Class Methods: +Methods: + addComputePipelineFunctionsWithDescriptor + addRenderPipelineFunctionsWithDescriptor + addTileRenderPipelineFunctionsWithDescriptor + device + label + serializeToURL + setLabel +*/ +@(objc_class="MTLBinaryArchive") +BinaryArchive :: struct { using _: NS.Copying(BinaryArchive) } + +@(objc_type=BinaryArchive, objc_name="addComputePipelineFunctionsWithDescriptor") +BinaryArchive_addComputePipelineFunctionsWithDescriptor :: proc(self: ^BinaryArchive, descriptor: ^ComputePipelineDescriptor, error: ^^NS.Error ) -> BOOL { + return msgSend(BOOL, self, "addComputePipelineFunctionsWithDescriptor:error:", descriptor, error) +} +@(objc_type=BinaryArchive, objc_name="addRenderPipelineFunctionsWithDescriptor") +BinaryArchive_addRenderPipelineFunctionsWithDescriptor :: proc(self: ^BinaryArchive, descriptor: ^RenderPipelineDescriptor, error: ^^NS.Error ) -> BOOL { + return msgSend(BOOL, self, "addRenderPipelineFunctionsWithDescriptor:error:", descriptor, error) +} +@(objc_type=BinaryArchive, objc_name="addTileRenderPipelineFunctionsWithDescriptor") +BinaryArchive_addTileRenderPipelineFunctionsWithDescriptor :: proc(self: ^BinaryArchive, descriptor: ^TileRenderPipelineDescriptor, error: ^^NS.Error ) -> BOOL { + return msgSend(BOOL, self, "addTileRenderPipelineFunctionsWithDescriptor:error:", descriptor, error) +} +@(objc_type=BinaryArchive, objc_name="device") +BinaryArchive_device :: proc(self: ^BinaryArchive) -> ^BinaryArchive { + return msgSend(^BinaryArchive, self, "device") +} +@(objc_type=BinaryArchive, objc_name="label") +BinaryArchive_label :: proc(self: ^BinaryArchive) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=BinaryArchive, objc_name="serializeToURL") +BinaryArchive_serializeToURL :: proc(self: ^BinaryArchive, url: ^NS.URL, error: ^^NS.Error ) -> BOOL { + return msgSend(BOOL, self, "serializeToURL:error:", url, error) +} +@(objc_type=BinaryArchive, objc_name="setLabel") +BinaryArchive_setLabel :: proc(self: ^BinaryArchive, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + BlitCommandEncoder +Class Methods: +Methods: + copyFromBuffer + copyFromBuffer + copyFromBuffer + copyFromTexture + copyFromTexture + copyFromTexture + copyFromTexture + copyFromTexture + copyIndirectCommandBuffer + fillBuffer + generateMipmapsForTexture + getTextureAccessCounters + optimizeContentsForCPUAccess + optimizeContentsForCPUAccess + optimizeContentsForGPUAccess + optimizeContentsForGPUAccess + optimizeIndirectCommandBuffer + resetCommandsInBuffer + resetTextureAccessCounters + resolveCounters + sampleCountersInBuffer + synchronizeResource + synchronizeTexture + updateFence + waitForFence +*/ +@(objc_class="MTLBlitCommandEncoder") +BlitCommandEncoder :: struct { using _: NS.Object } + +@(objc_type=BlitCommandEncoder, objc_name="copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_") +BlitCommandEncoder_copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_ :: proc(self: ^BlitCommandEncoder, sourceBuffer: ^NS.Object, sourceOffset: ^NS.Object, sourceBytesPerRow: ^NS.Object, sourceBytesPerImage: ^NS.Object, sourceSize: Size, destinationTexture: ^NS.Object, destinationSlice: ^NS.Object, destinationLevel: ^NS.Object, destinationOrigin: Origin) { + msgSend(nil, self, "copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:", sourceBuffer, sourceOffset, sourceBytesPerRow, sourceBytesPerImage, sourceSize, destinationTexture, destinationSlice, destinationLevel, destinationOrigin) +} +@(objc_type=BlitCommandEncoder, objc_name="copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_options_") +BlitCommandEncoder_copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_options_ :: proc(self: ^BlitCommandEncoder, sourceBuffer: ^NS.Object, sourceOffset: ^NS.Object, sourceBytesPerRow: ^NS.Object, sourceBytesPerImage: ^NS.Object, sourceSize: Size, destinationTexture: ^NS.Object, destinationSlice: ^NS.Object, destinationLevel: ^NS.Object, destinationOrigin: Origin, options: BlitOption) { + msgSend(nil, self, "copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:options:", sourceBuffer, sourceOffset, sourceBytesPerRow, sourceBytesPerImage, sourceSize, destinationTexture, destinationSlice, destinationLevel, destinationOrigin, options) +} +@(objc_type=BlitCommandEncoder, objc_name="copyFromBuffer_sourceOffset_toBuffer_destinationOffset_size_") +BlitCommandEncoder_copyFromBuffer_sourceOffset_toBuffer_destinationOffset_size_ :: proc(self: ^BlitCommandEncoder, sourceBuffer: ^NS.Object, sourceOffset: ^NS.Object, destinationBuffer: ^NS.Object, destinationOffset: ^NS.Object, size: ^NS.Object) { + msgSend(nil, self, "copyFromBuffer:sourceOffset:toBuffer:destinationOffset:size:", sourceBuffer, sourceOffset, destinationBuffer, destinationOffset, size) +} +@(objc_type=BlitCommandEncoder, objc_name="copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_") +BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_ :: proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, sourceSlice: ^NS.Object, sourceLevel: ^NS.Object, sourceOrigin: Origin, sourceSize: Size, destinationBuffer: ^NS.Object, destinationOffset: ^NS.Object, destinationBytesPerRow: ^NS.Object, destinationBytesPerImage: ^NS.Object) { + msgSend(nil, self, "copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:", sourceTexture, sourceSlice, sourceLevel, sourceOrigin, sourceSize, destinationBuffer, destinationOffset, destinationBytesPerRow, destinationBytesPerImage) +} +@(objc_type=BlitCommandEncoder, objc_name="copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_options_") +BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_options_ :: proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, sourceSlice: ^NS.Object, sourceLevel: ^NS.Object, sourceOrigin: Origin, sourceSize: Size, destinationBuffer: ^NS.Object, destinationOffset: ^NS.Object, destinationBytesPerRow: ^NS.Object, destinationBytesPerImage: ^NS.Object, options: BlitOption) { + msgSend(nil, self, "copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:options:", sourceTexture, sourceSlice, sourceLevel, sourceOrigin, sourceSize, destinationBuffer, destinationOffset, destinationBytesPerRow, destinationBytesPerImage, options) +} +@(objc_type=BlitCommandEncoder, objc_name="copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_") +BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_ :: proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, sourceSlice: ^NS.Object, sourceLevel: ^NS.Object, sourceOrigin: Origin, sourceSize: Size, destinationTexture: ^NS.Object, destinationSlice: ^NS.Object, destinationLevel: ^NS.Object, destinationOrigin: Origin) { + msgSend(nil, self, "copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:", sourceTexture, sourceSlice, sourceLevel, sourceOrigin, sourceSize, destinationTexture, destinationSlice, destinationLevel, destinationOrigin) +} +@(objc_type=BlitCommandEncoder, objc_name="copyFromTexture_sourceSlice_sourceLevel_toTexture_destinationSlice_destinationLevel_sliceCount_levelCount_") +BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_toTexture_destinationSlice_destinationLevel_sliceCount_levelCount_ :: proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, sourceSlice: ^NS.Object, sourceLevel: ^NS.Object, destinationTexture: ^NS.Object, destinationSlice: ^NS.Object, destinationLevel: ^NS.Object, sliceCount: ^NS.Object, levelCount: ^NS.Object) { + msgSend(nil, self, "copyFromTexture:sourceSlice:sourceLevel:toTexture:destinationSlice:destinationLevel:sliceCount:levelCount:", sourceTexture, sourceSlice, sourceLevel, destinationTexture, destinationSlice, destinationLevel, sliceCount, levelCount) +} +@(objc_type=BlitCommandEncoder, objc_name="copyFromTexture_toTexture_") +BlitCommandEncoder_copyFromTexture_toTexture_ :: proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, destinationTexture: ^NS.Object) { + msgSend(nil, self, "copyFromTexture:toTexture:", sourceTexture, destinationTexture) +} +@(objc_type=BlitCommandEncoder, objc_name="copyIndirectCommandBuffer") +BlitCommandEncoder_copyIndirectCommandBuffer :: proc(self: ^BlitCommandEncoder, source: ^NS.Object, sourceRange: NS.Range, destination: ^NS.Object, destinationIndex: ^NS.Object) { + msgSend(nil, self, "copyIndirectCommandBuffer:sourceRange:destination:destinationIndex:", source, sourceRange, destination, destinationIndex) +} +@(objc_type=BlitCommandEncoder, objc_name="fillBuffer") +BlitCommandEncoder_fillBuffer :: proc(self: ^BlitCommandEncoder, buffer: ^NS.Object, range: NS.Range, value: u8) { + msgSend(nil, self, "fillBuffer:range:value:", buffer, range, value) +} +@(objc_type=BlitCommandEncoder, objc_name="generateMipmapsForTexture") +BlitCommandEncoder_generateMipmapsForTexture :: proc(self: ^BlitCommandEncoder, texture: ^NS.Object) { + msgSend(nil, self, "generateMipmapsForTexture:", texture) +} +@(objc_type=BlitCommandEncoder, objc_name="getTextureAccessCounters") +BlitCommandEncoder_getTextureAccessCounters :: proc(self: ^BlitCommandEncoder, texture: ^NS.Object, region: Region, mipLevel: ^NS.Object, slice: ^NS.Object, resetCounters: BOOL, countersBuffer: ^NS.Object, countersBufferOffset: ^NS.Object) { + msgSend(nil, self, "getTextureAccessCounters:region:mipLevel:slice:resetCounters:countersBuffer:countersBufferOffset:", texture, region, mipLevel, slice, resetCounters, countersBuffer, countersBufferOffset) +} +@(objc_type=BlitCommandEncoder, objc_name="optimizeContentsForCPUAccess") +BlitCommandEncoder_optimizeContentsForCPUAccess :: proc(self: ^BlitCommandEncoder, texture: ^NS.Object) { + msgSend(nil, self, "optimizeContentsForCPUAccess:", texture) +} +@(objc_type=BlitCommandEncoder, objc_name="optimizeContentsForCPUAccess_slice_level_") +BlitCommandEncoder_optimizeContentsForCPUAccess_slice_level_ :: proc(self: ^BlitCommandEncoder, texture: ^NS.Object, slice: ^NS.Object, level: ^NS.Object) { + msgSend(nil, self, "optimizeContentsForCPUAccess:slice:level:", texture, slice, level) +} +@(objc_type=BlitCommandEncoder, objc_name="optimizeContentsForGPUAccess") +BlitCommandEncoder_optimizeContentsForGPUAccess :: proc(self: ^BlitCommandEncoder, texture: ^NS.Object) { + msgSend(nil, self, "optimizeContentsForGPUAccess:", texture) +} +@(objc_type=BlitCommandEncoder, objc_name="optimizeContentsForGPUAccess_slice_level_") +BlitCommandEncoder_optimizeContentsForGPUAccess_slice_level_ :: proc(self: ^BlitCommandEncoder, texture: ^NS.Object, slice: ^NS.Object, level: ^NS.Object) { + msgSend(nil, self, "optimizeContentsForGPUAccess:slice:level:", texture, slice, level) +} +@(objc_type=BlitCommandEncoder, objc_name="optimizeIndirectCommandBuffer") +BlitCommandEncoder_optimizeIndirectCommandBuffer :: proc(self: ^BlitCommandEncoder, indirectCommandBuffer: ^NS.Object, range: NS.Range) { + msgSend(nil, self, "optimizeIndirectCommandBuffer:withRange:", indirectCommandBuffer, range) +} +@(objc_type=BlitCommandEncoder, objc_name="resetCommandsInBuffer") +BlitCommandEncoder_resetCommandsInBuffer :: proc(self: ^BlitCommandEncoder, buffer: ^NS.Object, range: NS.Range) { + msgSend(nil, self, "resetCommandsInBuffer:withRange:", buffer, range) +} +@(objc_type=BlitCommandEncoder, objc_name="resetTextureAccessCounters") +BlitCommandEncoder_resetTextureAccessCounters :: proc(self: ^BlitCommandEncoder, texture: ^NS.Object, region: Region, mipLevel: ^NS.Object, slice: ^NS.Object) { + msgSend(nil, self, "resetTextureAccessCounters:region:mipLevel:slice:", texture, region, mipLevel, slice) +} +@(objc_type=BlitCommandEncoder, objc_name="resolveCounters") +BlitCommandEncoder_resolveCounters :: proc(self: ^BlitCommandEncoder, sampleBuffer: ^NS.Object, range: NS.Range, destinationBuffer: ^NS.Object, destinationOffset: ^NS.Object) { + msgSend(nil, self, "resolveCounters:inRange:destinationBuffer:destinationOffset:", sampleBuffer, range, destinationBuffer, destinationOffset) +} +@(objc_type=BlitCommandEncoder, objc_name="sampleCountersInBuffer") +BlitCommandEncoder_sampleCountersInBuffer :: proc(self: ^BlitCommandEncoder, sampleBuffer: ^NS.Object, sampleIndex: ^NS.Object, barrier: BOOL) { + msgSend(nil, self, "sampleCountersInBuffer:atSampleIndex:withBarrier:", sampleBuffer, sampleIndex, barrier) +} +@(objc_type=BlitCommandEncoder, objc_name="synchronizeResource") +BlitCommandEncoder_synchronizeResource :: proc(self: ^BlitCommandEncoder, resource: ^NS.Object) { + msgSend(nil, self, "synchronizeResource:", resource) +} +@(objc_type=BlitCommandEncoder, objc_name="synchronizeTexture") +BlitCommandEncoder_synchronizeTexture :: proc(self: ^BlitCommandEncoder, texture: ^NS.Object, slice: ^NS.Object, level: ^NS.Object) { + msgSend(nil, self, "synchronizeTexture:slice:level:", texture, slice, level) +} +@(objc_type=BlitCommandEncoder, objc_name="updateFence") +BlitCommandEncoder_updateFence :: proc(self: ^BlitCommandEncoder, fence: ^NS.Object) { + msgSend(nil, self, "updateFence:", fence) +} +@(objc_type=BlitCommandEncoder, objc_name="waitForFence") +BlitCommandEncoder_waitForFence :: proc(self: ^BlitCommandEncoder, fence: ^NS.Object) { + msgSend(nil, self, "waitForFence:", fence) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + Buffer +Class Methods: +Methods: + addDebugMarker + contents + didModifyRange + length + newRemoteBufferViewForDevice + newTextureWithDescriptor + remoteStorageBuffer + removeAllDebugMarkers +*/ +@(objc_class="MTLBuffer") +Buffer :: struct { using _: NS.Object } + +@(objc_type=Buffer, objc_name="addDebugMarker") +Buffer_addDebugMarker :: proc(self: ^Buffer, marker: ^NS.String, range: NS.Range) { + msgSend(nil, self, "addDebugMarker:range:", marker, range) +} +@(objc_type=Buffer, objc_name="contents") +Buffer_contents :: proc(self: ^Buffer) -> rawptr { + return msgSend(rawptr, self, "contents") +} +@(objc_type=Buffer, objc_name="didModifyRange") +Buffer_didModifyRange :: proc(self: ^Buffer, range: NS.Range) { + msgSend(nil, self, "didModifyRange:", range) +} +@(objc_type=Buffer, objc_name="length") +Buffer_length :: proc(self: ^Buffer) -> NS.Integer { + return msgSend(NS.Integer, self, "length") +} +@(objc_type=Buffer, objc_name="newRemoteBufferViewForDevice") +Buffer_newRemoteBufferViewForDevice :: proc(self: ^Buffer, device: ^NS.Object) -> ^Buffer { + return msgSend(^Buffer, self, "newRemoteBufferViewForDevice:", device) +} +@(objc_type=Buffer, objc_name="newTextureWithDescriptor") +Buffer_newTextureWithDescriptor :: proc(self: ^Buffer, descriptor: ^TextureDescriptor, offset: ^NS.Object, bytesPerRow: ^NS.Object) -> ^Buffer { + return msgSend(^Buffer, self, "newTextureWithDescriptor:offset:bytesPerRow:", descriptor, offset, bytesPerRow) +} +@(objc_type=Buffer, objc_name="remoteStorageBuffer") +Buffer_remoteStorageBuffer :: proc(self: ^Buffer) -> ^Buffer { + return msgSend(^Buffer, self, "remoteStorageBuffer") +} +@(objc_type=Buffer, objc_name="removeAllDebugMarkers") +Buffer_removeAllDebugMarkers :: proc(self: ^Buffer) { + msgSend(nil, self, "removeAllDebugMarkers") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + CaptureScope +Class Methods: +Methods: + beginScope + commandQueue + device + endScope + label + setLabel +*/ +@(objc_class="MTLCaptureScope") +CaptureScope :: struct { using _: NS.Object } + +@(objc_type=CaptureScope, objc_name="beginScope") +CaptureScope_beginScope :: proc(self: ^CaptureScope) { + msgSend(nil, self, "beginScope") +} +@(objc_type=CaptureScope, objc_name="commandQueue") +CaptureScope_commandQueue :: proc(self: ^CaptureScope) -> ^CaptureScope { + return msgSend(^CaptureScope, self, "commandQueue") +} +@(objc_type=CaptureScope, objc_name="device") +CaptureScope_device :: proc(self: ^CaptureScope) -> ^CaptureScope { + return msgSend(^CaptureScope, self, "device") +} +@(objc_type=CaptureScope, objc_name="endScope") +CaptureScope_endScope :: proc(self: ^CaptureScope) { + msgSend(nil, self, "endScope") +} +@(objc_type=CaptureScope, objc_name="label") +CaptureScope_label :: proc(self: ^CaptureScope) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=CaptureScope, objc_name="setLabel") +CaptureScope_setLabel :: proc(self: ^CaptureScope, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + CommandBuffer +Class Methods: +Methods: + GPUEndTime + GPUStartTime + accelerationStructureCommandEncoder + addCompletedHandler + addScheduledHandler + blitCommandEncoder + blitCommandEncoderWithDescriptor + commandQueue + commit + computeCommandEncoder + computeCommandEncoderWithDescriptor + computeCommandEncoderWithDispatchType + device + encodeSignalEvent + encodeWaitForEvent + enqueue + error + errorOptions + kernelEndTime + kernelStartTime + label + logs + parallelRenderCommandEncoderWithDescriptor + popDebugGroup + presentDrawable + presentDrawable + presentDrawable + pushDebugGroup + renderCommandEncoderWithDescriptor + resourceStateCommandEncoder + resourceStateCommandEncoderWithDescriptor + retainedReferences + setLabel + status + waitUntilCompleted + waitUntilScheduled +*/ +@(objc_class="MTLCommandBuffer") +CommandBuffer :: struct { using _: NS.Object } + +@(objc_type=CommandBuffer, objc_name="GPUEndTime") +CommandBuffer_GPUEndTime :: proc(self: ^CommandBuffer) -> CFTimeInterval { + return msgSend(CFTimeInterval, self, "GPUEndTime") +} +@(objc_type=CommandBuffer, objc_name="GPUStartTime") +CommandBuffer_GPUStartTime :: proc(self: ^CommandBuffer) -> CFTimeInterval { + return msgSend(CFTimeInterval, self, "GPUStartTime") +} +@(objc_type=CommandBuffer, objc_name="accelerationStructureCommandEncoder") +CommandBuffer_accelerationStructureCommandEncoder :: proc(self: ^CommandBuffer) -> ^CommandBuffer { + return msgSend(^CommandBuffer, self, "accelerationStructureCommandEncoder") +} +@(objc_type=CommandBuffer, objc_name="addCompletedHandler") +CommandBuffer_addCompletedHandler :: proc(self: ^CommandBuffer, block: CommandBufferHandler) { + msgSend(nil, self, "addCompletedHandler:", block) +} +@(objc_type=CommandBuffer, objc_name="addScheduledHandler") +CommandBuffer_addScheduledHandler :: proc(self: ^CommandBuffer, block: CommandBufferHandler) { + msgSend(nil, self, "addScheduledHandler:", block) +} +@(objc_type=CommandBuffer, objc_name="blitCommandEncoder") +CommandBuffer_blitCommandEncoder :: proc(self: ^CommandBuffer) -> ^CommandBuffer { + return msgSend(^CommandBuffer, self, "blitCommandEncoder") +} +@(objc_type=CommandBuffer, objc_name="blitCommandEncoderWithDescriptor") +CommandBuffer_blitCommandEncoderWithDescriptor :: proc(self: ^CommandBuffer, blitPassDescriptor: ^BlitPassDescriptor) -> ^CommandBuffer { + return msgSend(^CommandBuffer, self, "blitCommandEncoderWithDescriptor:", blitPassDescriptor) +} +@(objc_type=CommandBuffer, objc_name="commandQueue") +CommandBuffer_commandQueue :: proc(self: ^CommandBuffer) -> ^CommandBuffer { + return msgSend(^CommandBuffer, self, "commandQueue") +} +@(objc_type=CommandBuffer, objc_name="commit") +CommandBuffer_commit :: proc(self: ^CommandBuffer) { + msgSend(nil, self, "commit") +} +@(objc_type=CommandBuffer, objc_name="computeCommandEncoder") +CommandBuffer_computeCommandEncoder :: proc(self: ^CommandBuffer) -> ^CommandBuffer { + return msgSend(^CommandBuffer, self, "computeCommandEncoder") +} +@(objc_type=CommandBuffer, objc_name="computeCommandEncoderWithDescriptor") +CommandBuffer_computeCommandEncoderWithDescriptor :: proc(self: ^CommandBuffer, computePassDescriptor: ^ComputePassDescriptor) -> ^CommandBuffer { + return msgSend(^CommandBuffer, self, "computeCommandEncoderWithDescriptor:", computePassDescriptor) +} +@(objc_type=CommandBuffer, objc_name="computeCommandEncoderWithDispatchType") +CommandBuffer_computeCommandEncoderWithDispatchType :: proc(self: ^CommandBuffer, dispatchType: DispatchType) -> ^CommandBuffer { + return msgSend(^CommandBuffer, self, "computeCommandEncoderWithDispatchType:", dispatchType) +} +@(objc_type=CommandBuffer, objc_name="device") +CommandBuffer_device :: proc(self: ^CommandBuffer) -> ^CommandBuffer { + return msgSend(^CommandBuffer, self, "device") +} +@(objc_type=CommandBuffer, objc_name="encodeSignalEvent") +CommandBuffer_encodeSignalEvent :: proc(self: ^CommandBuffer, event: ^NS.Object, value: u64) { + msgSend(nil, self, "encodeSignalEvent:value:", event, value) +} +@(objc_type=CommandBuffer, objc_name="encodeWaitForEvent") +CommandBuffer_encodeWaitForEvent :: proc(self: ^CommandBuffer, event: ^NS.Object, value: u64) { + msgSend(nil, self, "encodeWaitForEvent:value:", event, value) +} +@(objc_type=CommandBuffer, objc_name="enqueue") +CommandBuffer_enqueue :: proc(self: ^CommandBuffer) { + msgSend(nil, self, "enqueue") +} +@(objc_type=CommandBuffer, objc_name="error") +CommandBuffer_error :: proc(self: ^CommandBuffer) -> ^NS.Error { + return msgSend(^NS.Error, self, "error") +} +@(objc_type=CommandBuffer, objc_name="errorOptions") +CommandBuffer_errorOptions :: proc(self: ^CommandBuffer) -> CommandBufferErrorOption { + return msgSend(CommandBufferErrorOption, self, "errorOptions") +} +@(objc_type=CommandBuffer, objc_name="kernelEndTime") +CommandBuffer_kernelEndTime :: proc(self: ^CommandBuffer) -> CFTimeInterval { + return msgSend(CFTimeInterval, self, "kernelEndTime") +} +@(objc_type=CommandBuffer, objc_name="kernelStartTime") +CommandBuffer_kernelStartTime :: proc(self: ^CommandBuffer) -> CFTimeInterval { + return msgSend(CFTimeInterval, self, "kernelStartTime") +} +@(objc_type=CommandBuffer, objc_name="label") +CommandBuffer_label :: proc(self: ^CommandBuffer) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=CommandBuffer, objc_name="logs") +CommandBuffer_logs :: proc(self: ^CommandBuffer) -> ^CommandBuffer { + return msgSend(^CommandBuffer, self, "logs") +} +@(objc_type=CommandBuffer, objc_name="parallelRenderCommandEncoderWithDescriptor") +CommandBuffer_parallelRenderCommandEncoderWithDescriptor :: proc(self: ^CommandBuffer, renderPassDescriptor: ^RenderPassDescriptor) -> ^CommandBuffer { + return msgSend(^CommandBuffer, self, "parallelRenderCommandEncoderWithDescriptor:", renderPassDescriptor) +} +@(objc_type=CommandBuffer, objc_name="popDebugGroup") +CommandBuffer_popDebugGroup :: proc(self: ^CommandBuffer) { + msgSend(nil, self, "popDebugGroup") +} +@(objc_type=CommandBuffer, objc_name="presentDrawable") +CommandBuffer_presentDrawable :: proc(self: ^CommandBuffer, drawable: ^NS.Object) { + msgSend(nil, self, "presentDrawable:", drawable) +} +@(objc_type=CommandBuffer, objc_name="presentDrawable_afterMinimumDuration_") +CommandBuffer_presentDrawable_afterMinimumDuration_ :: proc(self: ^CommandBuffer, drawable: ^NS.Object, duration: CFTimeInterval) { + msgSend(nil, self, "presentDrawable:afterMinimumDuration:", drawable, duration) +} +@(objc_type=CommandBuffer, objc_name="presentDrawable_atTime_") +CommandBuffer_presentDrawable_atTime_ :: proc(self: ^CommandBuffer, drawable: ^NS.Object, presentationTime: CFTimeInterval) { + msgSend(nil, self, "presentDrawable:atTime:", drawable, presentationTime) +} +@(objc_type=CommandBuffer, objc_name="pushDebugGroup") +CommandBuffer_pushDebugGroup :: proc(self: ^CommandBuffer, string: ^NS.String) { + msgSend(nil, self, "pushDebugGroup:", string) +} +@(objc_type=CommandBuffer, objc_name="renderCommandEncoderWithDescriptor") +CommandBuffer_renderCommandEncoderWithDescriptor :: proc(self: ^CommandBuffer, renderPassDescriptor: ^RenderPassDescriptor) -> ^CommandBuffer { + return msgSend(^CommandBuffer, self, "renderCommandEncoderWithDescriptor:", renderPassDescriptor) +} +@(objc_type=CommandBuffer, objc_name="resourceStateCommandEncoder") +CommandBuffer_resourceStateCommandEncoder :: proc(self: ^CommandBuffer) -> ^CommandBuffer { + return msgSend(^CommandBuffer, self, "resourceStateCommandEncoder") +} +@(objc_type=CommandBuffer, objc_name="resourceStateCommandEncoderWithDescriptor") +CommandBuffer_resourceStateCommandEncoderWithDescriptor :: proc(self: ^CommandBuffer, resourceStatePassDescriptor: ^ResourceStatePassDescriptor) -> ^CommandBuffer { + return msgSend(^CommandBuffer, self, "resourceStateCommandEncoderWithDescriptor:", resourceStatePassDescriptor) +} +@(objc_type=CommandBuffer, objc_name="retainedReferences") +CommandBuffer_retainedReferences :: proc(self: ^CommandBuffer) -> BOOL { + return msgSend(BOOL, self, "retainedReferences") +} +@(objc_type=CommandBuffer, objc_name="setLabel") +CommandBuffer_setLabel :: proc(self: ^CommandBuffer, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} +@(objc_type=CommandBuffer, objc_name="status") +CommandBuffer_status :: proc(self: ^CommandBuffer) -> CommandBufferStatus { + return msgSend(CommandBufferStatus, self, "status") +} +@(objc_type=CommandBuffer, objc_name="waitUntilCompleted") +CommandBuffer_waitUntilCompleted :: proc(self: ^CommandBuffer) { + msgSend(nil, self, "waitUntilCompleted") +} +@(objc_type=CommandBuffer, objc_name="waitUntilScheduled") +CommandBuffer_waitUntilScheduled :: proc(self: ^CommandBuffer) { + msgSend(nil, self, "waitUntilScheduled") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + CommandBufferEncoderInfo +Class Methods: +Methods: + debugSignposts + errorState + label +*/ +@(objc_class="MTLCommandBufferEncoderInfo") +CommandBufferEncoderInfo :: struct { using _: NS.Object } + +@(objc_type=CommandBufferEncoderInfo, objc_name="debugSignposts") +CommandBufferEncoderInfo_debugSignposts :: proc(self: ^CommandBufferEncoderInfo) -> ^NS.Array { + return msgSend(^NS.Array, self, "debugSignposts") +} +@(objc_type=CommandBufferEncoderInfo, objc_name="errorState") +CommandBufferEncoderInfo_errorState :: proc(self: ^CommandBufferEncoderInfo) -> CommandEncoderErrorState { + return msgSend(CommandEncoderErrorState, self, "errorState") +} +@(objc_type=CommandBufferEncoderInfo, objc_name="label") +CommandBufferEncoderInfo_label :: proc(self: ^CommandBufferEncoderInfo) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + CommandEncoder +Class Methods: +Methods: + device + endEncoding + insertDebugSignpost + label + popDebugGroup + pushDebugGroup + setLabel +*/ +@(objc_class="MTLCommandEncoder") +CommandEncoder :: struct { using _: NS.Object } + +@(objc_type=CommandEncoder, objc_name="device") +CommandEncoder_device :: proc(self: ^CommandEncoder) -> ^CommandEncoder { + return msgSend(^CommandEncoder, self, "device") +} +@(objc_type=CommandEncoder, objc_name="endEncoding") +CommandEncoder_endEncoding :: proc(self: ^CommandEncoder) { + msgSend(nil, self, "endEncoding") +} +@(objc_type=CommandEncoder, objc_name="insertDebugSignpost") +CommandEncoder_insertDebugSignpost :: proc(self: ^CommandEncoder, string: ^NS.String) { + msgSend(nil, self, "insertDebugSignpost:", string) +} +@(objc_type=CommandEncoder, objc_name="label") +CommandEncoder_label :: proc(self: ^CommandEncoder) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=CommandEncoder, objc_name="popDebugGroup") +CommandEncoder_popDebugGroup :: proc(self: ^CommandEncoder) { + msgSend(nil, self, "popDebugGroup") +} +@(objc_type=CommandEncoder, objc_name="pushDebugGroup") +CommandEncoder_pushDebugGroup :: proc(self: ^CommandEncoder, string: ^NS.String) { + msgSend(nil, self, "pushDebugGroup:", string) +} +@(objc_type=CommandEncoder, objc_name="setLabel") +CommandEncoder_setLabel :: proc(self: ^CommandEncoder, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + CommandQueue +Class Methods: +Methods: + commandBuffer + commandBufferWithDescriptor + commandBufferWithUnretainedReferences + device + insertDebugCaptureBoundary + label + setLabel +*/ +@(objc_class="MTLCommandQueue") +CommandQueue :: struct { using _: NS.Object } + +@(objc_type=CommandQueue, objc_name="commandBuffer") +CommandQueue_commandBuffer :: proc(self: ^CommandQueue) -> ^CommandQueue { + return msgSend(^CommandQueue, self, "commandBuffer") +} +@(objc_type=CommandQueue, objc_name="commandBufferWithDescriptor") +CommandQueue_commandBufferWithDescriptor :: proc(self: ^CommandQueue, descriptor: ^CommandBufferDescriptor) -> ^CommandQueue { + return msgSend(^CommandQueue, self, "commandBufferWithDescriptor:", descriptor) +} +@(objc_type=CommandQueue, objc_name="commandBufferWithUnretainedReferences") +CommandQueue_commandBufferWithUnretainedReferences :: proc(self: ^CommandQueue) -> ^CommandQueue { + return msgSend(^CommandQueue, self, "commandBufferWithUnretainedReferences") +} +@(objc_type=CommandQueue, objc_name="device") +CommandQueue_device :: proc(self: ^CommandQueue) -> ^CommandQueue { + return msgSend(^CommandQueue, self, "device") +} +@(objc_type=CommandQueue, objc_name="insertDebugCaptureBoundary") +CommandQueue_insertDebugCaptureBoundary :: proc(self: ^CommandQueue) { + msgSend(nil, self, "insertDebugCaptureBoundary") +} +@(objc_type=CommandQueue, objc_name="label") +CommandQueue_label :: proc(self: ^CommandQueue) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=CommandQueue, objc_name="setLabel") +CommandQueue_setLabel :: proc(self: ^CommandQueue, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + ComputeCommandEncoder +Class Methods: +Methods: + dispatchThreadgroups + dispatchThreadgroupsWithIndirectBuffer + dispatchThreads + dispatchType + executeCommandsInBuffer + executeCommandsInBuffer + memoryBarrierWithResources + memoryBarrierWithScope + sampleCountersInBuffer + setAccelerationStructure + setBuffer + setBufferOffset + setBuffers + setBytes + setComputePipelineState + setImageblockWidth + setIntersectionFunctionTable + setIntersectionFunctionTables + setSamplerState + setSamplerState + setSamplerStates + setSamplerStates + setStageInRegion + setStageInRegionWithIndirectBuffer + setTexture + setTextures + setThreadgroupMemoryLength + setVisibleFunctionTable + setVisibleFunctionTables + updateFence + useHeap + useHeaps + useResource + useResources + waitForFence +*/ +@(objc_class="MTLComputeCommandEncoder") +ComputeCommandEncoder :: struct { using _: NS.Object } + +@(objc_type=ComputeCommandEncoder, objc_name="dispatchThreadgroups") +ComputeCommandEncoder_dispatchThreadgroups :: proc(self: ^ComputeCommandEncoder, threadgroupsPerGrid: Size, threadsPerThreadgroup: Size) { + msgSend(nil, self, "dispatchThreadgroups:threadsPerThreadgroup:", threadgroupsPerGrid, threadsPerThreadgroup) +} +@(objc_type=ComputeCommandEncoder, objc_name="dispatchThreadgroupsWithIndirectBuffer") +ComputeCommandEncoder_dispatchThreadgroupsWithIndirectBuffer :: proc(self: ^ComputeCommandEncoder, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object, threadsPerThreadgroup: Size) { + msgSend(nil, self, "dispatchThreadgroupsWithIndirectBuffer:indirectBufferOffset:threadsPerThreadgroup:", indirectBuffer, indirectBufferOffset, threadsPerThreadgroup) +} +@(objc_type=ComputeCommandEncoder, objc_name="dispatchThreads") +ComputeCommandEncoder_dispatchThreads :: proc(self: ^ComputeCommandEncoder, threadsPerGrid: Size, threadsPerThreadgroup: Size) { + msgSend(nil, self, "dispatchThreads:threadsPerThreadgroup:", threadsPerGrid, threadsPerThreadgroup) +} +@(objc_type=ComputeCommandEncoder, objc_name="dispatchType") +ComputeCommandEncoder_dispatchType :: proc(self: ^ComputeCommandEncoder) -> DispatchType { + return msgSend(DispatchType, self, "dispatchType") +} +@(objc_type=ComputeCommandEncoder, objc_name="executeCommandsInBuffer_indirectBuffer_indirectBufferOffset_") +ComputeCommandEncoder_executeCommandsInBuffer_indirectBuffer_indirectBufferOffset_ :: proc(self: ^ComputeCommandEncoder, indirectCommandbuffer: ^NS.Object, indirectRangeBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { + msgSend(nil, self, "executeCommandsInBuffer:indirectBuffer:indirectBufferOffset:", indirectCommandbuffer, indirectRangeBuffer, indirectBufferOffset) +} +@(objc_type=ComputeCommandEncoder, objc_name="executeCommandsInBuffer_withRange_") +ComputeCommandEncoder_executeCommandsInBuffer_withRange_ :: proc(self: ^ComputeCommandEncoder, indirectCommandBuffer: ^NS.Object, executionRange: NS.Range) { + msgSend(nil, self, "executeCommandsInBuffer:withRange:", indirectCommandBuffer, executionRange) +} +@(objc_type=ComputeCommandEncoder, objc_name="memoryBarrierWithResources") +ComputeCommandEncoder_memoryBarrierWithResources :: proc(self: ^ComputeCommandEncoder, resources: ^^NS.Object, count: ^NS.Object) { + msgSend(nil, self, "memoryBarrierWithResources:count:", resources, count) +} +@(objc_type=ComputeCommandEncoder, objc_name="memoryBarrierWithScope") +ComputeCommandEncoder_memoryBarrierWithScope :: proc(self: ^ComputeCommandEncoder, scope: BarrierScope) { + msgSend(nil, self, "memoryBarrierWithScope:", scope) +} +@(objc_type=ComputeCommandEncoder, objc_name="sampleCountersInBuffer") +ComputeCommandEncoder_sampleCountersInBuffer :: proc(self: ^ComputeCommandEncoder, sampleBuffer: ^NS.Object, sampleIndex: ^NS.Object, barrier: BOOL) { + msgSend(nil, self, "sampleCountersInBuffer:atSampleIndex:withBarrier:", sampleBuffer, sampleIndex, barrier) +} +@(objc_type=ComputeCommandEncoder, objc_name="setAccelerationStructure") +ComputeCommandEncoder_setAccelerationStructure :: proc(self: ^ComputeCommandEncoder, accelerationStructure: ^NS.Object, bufferIndex: ^NS.Object) { + msgSend(nil, self, "setAccelerationStructure:atBufferIndex:", accelerationStructure, bufferIndex) +} +@(objc_type=ComputeCommandEncoder, objc_name="setBuffer") +ComputeCommandEncoder_setBuffer :: proc(self: ^ComputeCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setBuffer:offset:atIndex:", buffer, offset, index) +} +@(objc_type=ComputeCommandEncoder, objc_name="setBufferOffset") +ComputeCommandEncoder_setBufferOffset :: proc(self: ^ComputeCommandEncoder, offset: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setBufferOffset:atIndex:", offset, index) +} +@(objc_type=ComputeCommandEncoder, objc_name="setBuffers") +ComputeCommandEncoder_setBuffers :: proc(self: ^ComputeCommandEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { + msgSend(nil, self, "setBuffers:offsets:withRange:", buffers, offsets, range) +} +@(objc_type=ComputeCommandEncoder, objc_name="setBytes") +ComputeCommandEncoder_setBytes :: proc(self: ^ComputeCommandEncoder, bytes: rawptr, length: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setBytes:length:atIndex:", bytes, length, index) +} +@(objc_type=ComputeCommandEncoder, objc_name="setComputePipelineState") +ComputeCommandEncoder_setComputePipelineState :: proc(self: ^ComputeCommandEncoder, pipelineState: ^NS.Object) { + msgSend(nil, self, "setComputePipelineState:", pipelineState) +} +@(objc_type=ComputeCommandEncoder, objc_name="setImageblockWidth") +ComputeCommandEncoder_setImageblockWidth :: proc(self: ^ComputeCommandEncoder, width: ^NS.Object, height: ^NS.Object) { + msgSend(nil, self, "setImageblockWidth:height:", width, height) +} +@(objc_type=ComputeCommandEncoder, objc_name="setIntersectionFunctionTable") +ComputeCommandEncoder_setIntersectionFunctionTable :: proc(self: ^ComputeCommandEncoder, intersectionFunctionTable: ^NS.Object, bufferIndex: ^NS.Object) { + msgSend(nil, self, "setIntersectionFunctionTable:atBufferIndex:", intersectionFunctionTable, bufferIndex) +} +@(objc_type=ComputeCommandEncoder, objc_name="setIntersectionFunctionTables") +ComputeCommandEncoder_setIntersectionFunctionTables :: proc(self: ^ComputeCommandEncoder, intersectionFunctionTables: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setIntersectionFunctionTables:withBufferRange:", intersectionFunctionTables, range) +} +@(objc_type=ComputeCommandEncoder, objc_name="setSamplerState_atIndex_") +ComputeCommandEncoder_setSamplerState_atIndex_ :: proc(self: ^ComputeCommandEncoder, sampler: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setSamplerState:atIndex:", sampler, index) +} +@(objc_type=ComputeCommandEncoder, objc_name="setSamplerState_lodMinClamp_lodMaxClamp_atIndex_") +ComputeCommandEncoder_setSamplerState_lodMinClamp_lodMaxClamp_atIndex_ :: proc(self: ^ComputeCommandEncoder, sampler: ^NS.Object, lodMinClamp: f32, lodMaxClamp: f32, index: ^NS.Object) { + msgSend(nil, self, "setSamplerState:lodMinClamp:lodMaxClamp:atIndex:", sampler, lodMinClamp, lodMaxClamp, index) +} +@(objc_type=ComputeCommandEncoder, objc_name="setSamplerStates_lodMinClamps_lodMaxClamps_withRange_") +ComputeCommandEncoder_setSamplerStates_lodMinClamps_lodMaxClamps_withRange_ :: proc(self: ^ComputeCommandEncoder, samplers: ^^NS.Object, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { + msgSend(nil, self, "setSamplerStates:lodMinClamps:lodMaxClamps:withRange:", samplers, lodMinClamps, lodMaxClamps, range) +} +@(objc_type=ComputeCommandEncoder, objc_name="setSamplerStates_withRange_") +ComputeCommandEncoder_setSamplerStates_withRange_ :: proc(self: ^ComputeCommandEncoder, samplers: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setSamplerStates:withRange:", samplers, range) +} +@(objc_type=ComputeCommandEncoder, objc_name="setStageInRegion") +ComputeCommandEncoder_setStageInRegion :: proc(self: ^ComputeCommandEncoder, region: Region) { + msgSend(nil, self, "setStageInRegion:", region) +} +@(objc_type=ComputeCommandEncoder, objc_name="setStageInRegionWithIndirectBuffer") +ComputeCommandEncoder_setStageInRegionWithIndirectBuffer :: proc(self: ^ComputeCommandEncoder, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { + msgSend(nil, self, "setStageInRegionWithIndirectBuffer:indirectBufferOffset:", indirectBuffer, indirectBufferOffset) +} +@(objc_type=ComputeCommandEncoder, objc_name="setTexture") +ComputeCommandEncoder_setTexture :: proc(self: ^ComputeCommandEncoder, texture: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setTexture:atIndex:", texture, index) +} +@(objc_type=ComputeCommandEncoder, objc_name="setTextures") +ComputeCommandEncoder_setTextures :: proc(self: ^ComputeCommandEncoder, textures: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setTextures:withRange:", textures, range) +} +@(objc_type=ComputeCommandEncoder, objc_name="setThreadgroupMemoryLength") +ComputeCommandEncoder_setThreadgroupMemoryLength :: proc(self: ^ComputeCommandEncoder, length: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setThreadgroupMemoryLength:atIndex:", length, index) +} +@(objc_type=ComputeCommandEncoder, objc_name="setVisibleFunctionTable") +ComputeCommandEncoder_setVisibleFunctionTable :: proc(self: ^ComputeCommandEncoder, visibleFunctionTable: ^NS.Object, bufferIndex: ^NS.Object) { + msgSend(nil, self, "setVisibleFunctionTable:atBufferIndex:", visibleFunctionTable, bufferIndex) +} +@(objc_type=ComputeCommandEncoder, objc_name="setVisibleFunctionTables") +ComputeCommandEncoder_setVisibleFunctionTables :: proc(self: ^ComputeCommandEncoder, visibleFunctionTables: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setVisibleFunctionTables:withBufferRange:", visibleFunctionTables, range) +} +@(objc_type=ComputeCommandEncoder, objc_name="updateFence") +ComputeCommandEncoder_updateFence :: proc(self: ^ComputeCommandEncoder, fence: ^NS.Object) { + msgSend(nil, self, "updateFence:", fence) +} +@(objc_type=ComputeCommandEncoder, objc_name="useHeap") +ComputeCommandEncoder_useHeap :: proc(self: ^ComputeCommandEncoder, heap: ^NS.Object) { + msgSend(nil, self, "useHeap:", heap) +} +@(objc_type=ComputeCommandEncoder, objc_name="useHeaps") +ComputeCommandEncoder_useHeaps :: proc(self: ^ComputeCommandEncoder, heaps: ^^NS.Object, count: ^NS.Object) { + msgSend(nil, self, "useHeaps:count:", heaps, count) +} +@(objc_type=ComputeCommandEncoder, objc_name="useResource") +ComputeCommandEncoder_useResource :: proc(self: ^ComputeCommandEncoder, resource: ^NS.Object, usage: ResourceUsage) { + msgSend(nil, self, "useResource:usage:", resource, usage) +} +@(objc_type=ComputeCommandEncoder, objc_name="useResources") +ComputeCommandEncoder_useResources :: proc(self: ^ComputeCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, usage: ResourceUsage) { + msgSend(nil, self, "useResources:count:usage:", resources, count, usage) +} +@(objc_type=ComputeCommandEncoder, objc_name="waitForFence") +ComputeCommandEncoder_waitForFence :: proc(self: ^ComputeCommandEncoder, fence: ^NS.Object) { + msgSend(nil, self, "waitForFence:", fence) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + ComputePipelineState +Class Methods: +Methods: + device + functionHandleWithFunction + imageblockMemoryLengthForDimensions + label + maxTotalThreadsPerThreadgroup + newComputePipelineStateWithAdditionalBinaryFunctions + newIntersectionFunctionTableWithDescriptor + newVisibleFunctionTableWithDescriptor + staticThreadgroupMemoryLength + supportIndirectCommandBuffers + threadExecutionWidth +*/ +@(objc_class="MTLComputePipelineState") +ComputePipelineState :: struct { using _: NS.Object } + +@(objc_type=ComputePipelineState, objc_name="device") +ComputePipelineState_device :: proc(self: ^ComputePipelineState) -> ^ComputePipelineState { + return msgSend(^ComputePipelineState, self, "device") +} +@(objc_type=ComputePipelineState, objc_name="functionHandleWithFunction") +ComputePipelineState_functionHandleWithFunction :: proc(self: ^ComputePipelineState, function: ^NS.Object) -> ^ComputePipelineState { + return msgSend(^ComputePipelineState, self, "functionHandleWithFunction:", function) +} +@(objc_type=ComputePipelineState, objc_name="imageblockMemoryLengthForDimensions") +ComputePipelineState_imageblockMemoryLengthForDimensions :: proc(self: ^ComputePipelineState, imageblockDimensions: Size) -> ^ComputePipelineState { + return msgSend(^ComputePipelineState, self, "imageblockMemoryLengthForDimensions:", imageblockDimensions) +} +@(objc_type=ComputePipelineState, objc_name="label") +ComputePipelineState_label :: proc(self: ^ComputePipelineState) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=ComputePipelineState, objc_name="maxTotalThreadsPerThreadgroup") +ComputePipelineState_maxTotalThreadsPerThreadgroup :: proc(self: ^ComputePipelineState) -> NS.Integer { + return msgSend(NS.Integer, self, "maxTotalThreadsPerThreadgroup") +} +@(objc_type=ComputePipelineState, objc_name="newComputePipelineStateWithAdditionalBinaryFunctions") +ComputePipelineState_newComputePipelineStateWithAdditionalBinaryFunctions :: proc(self: ^ComputePipelineState, functions: ^NS.Array, error: ^^NS.Error ) -> ^ComputePipelineState { + return msgSend(^ComputePipelineState, self, "newComputePipelineStateWithAdditionalBinaryFunctions:error:", functions, error) +} +@(objc_type=ComputePipelineState, objc_name="newIntersectionFunctionTableWithDescriptor") +ComputePipelineState_newIntersectionFunctionTableWithDescriptor :: proc(self: ^ComputePipelineState, descriptor: ^IntersectionFunctionTableDescriptor) -> ^ComputePipelineState { + return msgSend(^ComputePipelineState, self, "newIntersectionFunctionTableWithDescriptor:", descriptor) +} +@(objc_type=ComputePipelineState, objc_name="newVisibleFunctionTableWithDescriptor") +ComputePipelineState_newVisibleFunctionTableWithDescriptor :: proc(self: ^ComputePipelineState, descriptor: ^VisibleFunctionTableDescriptor) -> ^ComputePipelineState { + return msgSend(^ComputePipelineState, self, "newVisibleFunctionTableWithDescriptor:", descriptor) +} +@(objc_type=ComputePipelineState, objc_name="staticThreadgroupMemoryLength") +ComputePipelineState_staticThreadgroupMemoryLength :: proc(self: ^ComputePipelineState) -> NS.Integer { + return msgSend(NS.Integer, self, "staticThreadgroupMemoryLength") +} +@(objc_type=ComputePipelineState, objc_name="supportIndirectCommandBuffers") +ComputePipelineState_supportIndirectCommandBuffers :: proc(self: ^ComputePipelineState) -> BOOL { + return msgSend(BOOL, self, "supportIndirectCommandBuffers") +} +@(objc_type=ComputePipelineState, objc_name="threadExecutionWidth") +ComputePipelineState_threadExecutionWidth :: proc(self: ^ComputePipelineState) -> NS.Integer { + return msgSend(NS.Integer, self, "threadExecutionWidth") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + Counter +Class Methods: +Methods: + name +*/ +@(objc_class="MTLCounter") +Counter :: struct { using _: NS.Object } + +@(objc_type=Counter, objc_name="name") +Counter_name :: proc(self: ^Counter) -> ^NS.String { + return msgSend(^NS.String, self, "name") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + CounterSampleBuffer +Class Methods: +Methods: + device + label + resolveCounterRange + sampleCount +*/ +@(objc_class="MTLCounterSampleBuffer") +CounterSampleBuffer :: struct { using _: NS.Object } + +@(objc_type=CounterSampleBuffer, objc_name="device") +CounterSampleBuffer_device :: proc(self: ^CounterSampleBuffer) -> ^CounterSampleBuffer { + return msgSend(^CounterSampleBuffer, self, "device") +} +@(objc_type=CounterSampleBuffer, objc_name="label") +CounterSampleBuffer_label :: proc(self: ^CounterSampleBuffer) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=CounterSampleBuffer, objc_name="resolveCounterRange") +CounterSampleBuffer_resolveCounterRange :: proc(self: ^CounterSampleBuffer, range: NS.Range) -> ^NS.Data { + return msgSend(^NS.Data, self, "resolveCounterRange:", range) +} +@(objc_type=CounterSampleBuffer, objc_name="sampleCount") +CounterSampleBuffer_sampleCount :: proc(self: ^CounterSampleBuffer) -> NS.Integer { + return msgSend(NS.Integer, self, "sampleCount") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + CounterSet +Class Methods: +Methods: + counters + name +*/ +@(objc_class="MTLCounterSet") +CounterSet :: struct { using _: NS.Object } + +@(objc_type=CounterSet, objc_name="counters") +CounterSet_counters :: proc(self: ^CounterSet) -> ^NS.Array { + return msgSend(^NS.Array, self, "counters") +} +@(objc_type=CounterSet, objc_name="name") +CounterSet_name :: proc(self: ^CounterSet) -> ^NS.String { + return msgSend(^NS.String, self, "name") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + DepthStencilState +Class Methods: +Methods: + device + label +*/ +@(objc_class="MTLDepthStencilState") +DepthStencilState :: struct { using _: NS.Object } + +@(objc_type=DepthStencilState, objc_name="device") +DepthStencilState_device :: proc(self: ^DepthStencilState) -> ^DepthStencilState { + return msgSend(^DepthStencilState, self, "device") +} +@(objc_type=DepthStencilState, objc_name="label") +DepthStencilState_label :: proc(self: ^DepthStencilState) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + Device +Class Methods: +Methods: + accelerationStructureSizesWithDescriptor + areBarycentricCoordsSupported + areProgrammableSamplePositionsSupported + areRasterOrderGroupsSupported + argumentBuffersSupport + convertSparsePixelRegions + convertSparseTileRegions + counterSets + currentAllocatedSize + getDefaultSamplePositions + hasUnifiedMemory + heapBufferSizeAndAlignWithLength + heapTextureSizeAndAlignWithDescriptor + isDepth24Stencil8PixelFormatSupported + isHeadless + isLowPower + isRemovable + location + locationNumber + maxArgumentBufferSamplerCount + maxBufferLength + maxThreadgroupMemoryLength + maxThreadsPerThreadgroup + maxTransferRate + minimumLinearTextureAlignmentForPixelFormat + minimumTextureBufferAlignmentForPixelFormat + name + newAccelerationStructureWithDescriptor + newAccelerationStructureWithSize + newArgumentEncoderWithArguments + newBinaryArchiveWithDescriptor + newBufferWithBytes + newBufferWithBytesNoCopy + newBufferWithLength + newCommandQueue + newCommandQueueWithMaxCommandBufferCount + newComputePipelineStateWithDescriptor + newComputePipelineStateWithDescriptor + newComputePipelineStateWithFunction + newComputePipelineStateWithFunction + newComputePipelineStateWithFunction + newComputePipelineStateWithFunction + newCounterSampleBufferWithDescriptor + newDefaultLibrary + newDefaultLibraryWithBundle + newDepthStencilStateWithDescriptor + newDynamicLibrary + newDynamicLibraryWithURL + newEvent + newFence + newHeapWithDescriptor + newIndirectCommandBufferWithDescriptor + newLibraryWithData + newLibraryWithFile + newLibraryWithSource + newLibraryWithSource + newLibraryWithURL + newRasterizationRateMapWithDescriptor + newRenderPipelineStateWithDescriptor + newRenderPipelineStateWithDescriptor + newRenderPipelineStateWithDescriptor + newRenderPipelineStateWithDescriptor + newRenderPipelineStateWithTileDescriptor + newRenderPipelineStateWithTileDescriptor + newSamplerStateWithDescriptor + newSharedEvent + newSharedEventWithHandle + newSharedTextureWithDescriptor + newSharedTextureWithHandle + newTextureWithDescriptor + newTextureWithDescriptor + peerCount + peerGroupID + peerIndex + readWriteTextureSupport + recommendedMaxWorkingSetSize + registryID + sampleTimestamps + sparseTileSizeInBytes + sparseTileSizeWithTextureType + supports32BitFloatFiltering + supports32BitMSAA + supportsBCTextureCompression + supportsCounterSampling + supportsDynamicLibraries + supportsFamily + supportsFeatureSet + supportsFunctionPointers + supportsPullModelInterpolation + supportsQueryTextureLOD + supportsRasterizationRateMapWithLayerCount + supportsRaytracing + supportsShaderBarycentricCoordinates + supportsTextureSampleCount + supportsVertexAmplificationCount +*/ +@(objc_class="MTLDevice") +Device :: struct { using _: NS.Object } + +@(objc_type=Device, objc_name="accelerationStructureSizesWithDescriptor") +Device_accelerationStructureSizesWithDescriptor :: proc(self: ^Device, descriptor: ^AccelerationStructureDescriptor) -> AccelerationStructureSizes { + return msgSend(AccelerationStructureSizes, self, "accelerationStructureSizesWithDescriptor:", descriptor) +} +@(objc_type=Device, objc_name="areBarycentricCoordsSupported") +Device_areBarycentricCoordsSupported :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "areBarycentricCoordsSupported") +} +@(objc_type=Device, objc_name="areProgrammableSamplePositionsSupported") +Device_areProgrammableSamplePositionsSupported :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "areProgrammableSamplePositionsSupported") +} +@(objc_type=Device, objc_name="areRasterOrderGroupsSupported") +Device_areRasterOrderGroupsSupported :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "areRasterOrderGroupsSupported") +} +@(objc_type=Device, objc_name="argumentBuffersSupport") +Device_argumentBuffersSupport :: proc(self: ^Device) -> ArgumentBuffersTier { + return msgSend(ArgumentBuffersTier, self, "argumentBuffersSupport") +} +@(objc_type=Device, objc_name="convertSparsePixelRegions") +Device_convertSparsePixelRegions :: proc(self: ^Device, pixelRegions: ^Region, tileRegions: ^Region, tileSize: Size, mode: SparseTextureRegionAlignmentMode, numRegions: ^NS.Object) { + msgSend(nil, self, "convertSparsePixelRegions:toTileRegions:withTileSize:alignmentMode:numRegions:", pixelRegions, tileRegions, tileSize, mode, numRegions) +} +@(objc_type=Device, objc_name="convertSparseTileRegions") +Device_convertSparseTileRegions :: proc(self: ^Device, tileRegions: ^Region, pixelRegions: ^Region, tileSize: Size, numRegions: ^NS.Object) { + msgSend(nil, self, "convertSparseTileRegions:toPixelRegions:withTileSize:numRegions:", tileRegions, pixelRegions, tileSize, numRegions) +} +@(objc_type=Device, objc_name="counterSets") +Device_counterSets :: proc(self: ^Device) -> ^NS.Array { + return msgSend(^NS.Array, self, "counterSets") +} +@(objc_type=Device, objc_name="currentAllocatedSize") +Device_currentAllocatedSize :: proc(self: ^Device) -> NS.Integer { + return msgSend(NS.Integer, self, "currentAllocatedSize") +} +@(objc_type=Device, objc_name="getDefaultSamplePositions") +Device_getDefaultSamplePositions :: proc(self: ^Device, positions: ^SamplePosition, count: ^NS.Object) { + msgSend(nil, self, "getDefaultSamplePositions:count:", positions, count) +} +@(objc_type=Device, objc_name="hasUnifiedMemory") +Device_hasUnifiedMemory :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "hasUnifiedMemory") +} +@(objc_type=Device, objc_name="heapBufferSizeAndAlignWithLength") +Device_heapBufferSizeAndAlignWithLength :: proc(self: ^Device, length: ^NS.Object, options: ResourceOptions) -> SizeAndAlign { + return msgSend(SizeAndAlign, self, "heapBufferSizeAndAlignWithLength:options:", length, options) +} +@(objc_type=Device, objc_name="heapTextureSizeAndAlignWithDescriptor") +Device_heapTextureSizeAndAlignWithDescriptor :: proc(self: ^Device, desc: ^TextureDescriptor) -> SizeAndAlign { + return msgSend(SizeAndAlign, self, "heapTextureSizeAndAlignWithDescriptor:", desc) +} +@(objc_type=Device, objc_name="isDepth24Stencil8PixelFormatSupported") +Device_isDepth24Stencil8PixelFormatSupported :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "isDepth24Stencil8PixelFormatSupported") +} +@(objc_type=Device, objc_name="isHeadless") +Device_isHeadless :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "isHeadless") +} +@(objc_type=Device, objc_name="isLowPower") +Device_isLowPower :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "isLowPower") +} +@(objc_type=Device, objc_name="isRemovable") +Device_isRemovable :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "isRemovable") +} +@(objc_type=Device, objc_name="location") +Device_location :: proc(self: ^Device) -> DeviceLocation { + return msgSend(DeviceLocation, self, "location") +} +@(objc_type=Device, objc_name="locationNumber") +Device_locationNumber :: proc(self: ^Device) -> NS.Integer { + return msgSend(NS.Integer, self, "locationNumber") +} +@(objc_type=Device, objc_name="maxArgumentBufferSamplerCount") +Device_maxArgumentBufferSamplerCount :: proc(self: ^Device) -> NS.Integer { + return msgSend(NS.Integer, self, "maxArgumentBufferSamplerCount") +} +@(objc_type=Device, objc_name="maxBufferLength") +Device_maxBufferLength :: proc(self: ^Device) -> NS.Integer { + return msgSend(NS.Integer, self, "maxBufferLength") +} +@(objc_type=Device, objc_name="maxThreadgroupMemoryLength") +Device_maxThreadgroupMemoryLength :: proc(self: ^Device) -> NS.Integer { + return msgSend(NS.Integer, self, "maxThreadgroupMemoryLength") +} +@(objc_type=Device, objc_name="maxThreadsPerThreadgroup") +Device_maxThreadsPerThreadgroup :: proc(self: ^Device) -> Size { + return msgSend(Size, self, "maxThreadsPerThreadgroup") +} +@(objc_type=Device, objc_name="maxTransferRate") +Device_maxTransferRate :: proc(self: ^Device) -> u64 { + return msgSend(u64, self, "maxTransferRate") +} +@(objc_type=Device, objc_name="minimumLinearTextureAlignmentForPixelFormat") +Device_minimumLinearTextureAlignmentForPixelFormat :: proc(self: ^Device, format: PixelFormat) -> ^Device { + return msgSend(^Device, self, "minimumLinearTextureAlignmentForPixelFormat:", format) +} +@(objc_type=Device, objc_name="minimumTextureBufferAlignmentForPixelFormat") +Device_minimumTextureBufferAlignmentForPixelFormat :: proc(self: ^Device, format: PixelFormat) -> ^Device { + return msgSend(^Device, self, "minimumTextureBufferAlignmentForPixelFormat:", format) +} +@(objc_type=Device, objc_name="name") +Device_name :: proc(self: ^Device) -> ^NS.String { + return msgSend(^NS.String, self, "name") +} +@(objc_type=Device, objc_name="newAccelerationStructureWithDescriptor") +Device_newAccelerationStructureWithDescriptor :: proc(self: ^Device, descriptor: ^AccelerationStructureDescriptor) -> ^Device { + return msgSend(^Device, self, "newAccelerationStructureWithDescriptor:", descriptor) +} +@(objc_type=Device, objc_name="newAccelerationStructureWithSize") +Device_newAccelerationStructureWithSize :: proc(self: ^Device, size: ^NS.Object) -> ^Device { + return msgSend(^Device, self, "newAccelerationStructureWithSize:", size) +} +@(objc_type=Device, objc_name="newArgumentEncoderWithArguments") +Device_newArgumentEncoderWithArguments :: proc(self: ^Device, arguments: ^NS.Array) -> ^Device { + return msgSend(^Device, self, "newArgumentEncoderWithArguments:", arguments) +} +@(objc_type=Device, objc_name="newBinaryArchiveWithDescriptor") +Device_newBinaryArchiveWithDescriptor :: proc(self: ^Device, descriptor: ^BinaryArchiveDescriptor, error: ^^NS.Error ) -> ^Device { + return msgSend(^Device, self, "newBinaryArchiveWithDescriptor:error:", descriptor, error) +} +@(objc_type=Device, objc_name="newBufferWithBytes") +Device_newBufferWithBytes :: proc(self: ^Device, pointer: rawptr, length: ^NS.Object, options: ResourceOptions) -> ^Device { + return msgSend(^Device, self, "newBufferWithBytes:length:options:", pointer, length, options) +} +@(objc_type=Device, objc_name="newBufferWithBytesNoCopy") +Device_newBufferWithBytesNoCopy :: proc(self: ^Device, pointer: rawptr, length: ^NS.Object, options: ResourceOptions, deallocator: rawptr) -> ^Device { + return msgSend(^Device, self, "newBufferWithBytesNoCopy:length:options:deallocator:", pointer, length, options, deallocator) +} +@(objc_type=Device, objc_name="newBufferWithLength") +Device_newBufferWithLength :: proc(self: ^Device, length: ^NS.Object, options: ResourceOptions) -> ^Device { + return msgSend(^Device, self, "newBufferWithLength:options:", length, options) +} +@(objc_type=Device, objc_name="newCommandQueue") +Device_newCommandQueue :: proc(self: ^Device) -> ^Device { + return msgSend(^Device, self, "newCommandQueue") +} +@(objc_type=Device, objc_name="newCommandQueueWithMaxCommandBufferCount") +Device_newCommandQueueWithMaxCommandBufferCount :: proc(self: ^Device, maxCommandBufferCount: ^NS.Object) -> ^Device { + return msgSend(^Device, self, "newCommandQueueWithMaxCommandBufferCount:", maxCommandBufferCount) +} +@(objc_type=Device, objc_name="newComputePipelineStateWithDescriptor_options_completionHandler_") +Device_newComputePipelineStateWithDescriptor_options_completionHandler_ :: proc(self: ^Device, descriptor: ^ComputePipelineDescriptor, options: PipelineOption, completionHandler: NewComputePipelineStateWithReflectionCompletionHandler) { + msgSend(nil, self, "newComputePipelineStateWithDescriptor:options:completionHandler:", descriptor, options, completionHandler) +} +@(objc_type=Device, objc_name="newComputePipelineStateWithDescriptor_options_reflection_error_") +Device_newComputePipelineStateWithDescriptor_options_reflection_error_ :: proc(self: ^Device, descriptor: ^ComputePipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedComputePipelineReflection, error: ^^NS.Error ) -> ^Device { + return msgSend(^Device, self, "newComputePipelineStateWithDescriptor:options:reflection:error:", descriptor, options, reflection, error) +} +@(objc_type=Device, objc_name="newComputePipelineStateWithFunction_completionHandler_") +Device_newComputePipelineStateWithFunction_completionHandler_ :: proc(self: ^Device, computeFunction: ^NS.Object, completionHandler: NewComputePipelineStateCompletionHandler) { + msgSend(nil, self, "newComputePipelineStateWithFunction:completionHandler:", computeFunction, completionHandler) +} +@(objc_type=Device, objc_name="newComputePipelineStateWithFunction_error_") +Device_newComputePipelineStateWithFunction_error_ :: proc(self: ^Device, computeFunction: ^NS.Object, error: ^^NS.Error ) -> ^Device { + return msgSend(^Device, self, "newComputePipelineStateWithFunction:error:", computeFunction, error) +} +@(objc_type=Device, objc_name="newComputePipelineStateWithFunction_options_completionHandler_") +Device_newComputePipelineStateWithFunction_options_completionHandler_ :: proc(self: ^Device, computeFunction: ^NS.Object, options: PipelineOption, completionHandler: NewComputePipelineStateWithReflectionCompletionHandler) { + msgSend(nil, self, "newComputePipelineStateWithFunction:options:completionHandler:", computeFunction, options, completionHandler) +} +@(objc_type=Device, objc_name="newComputePipelineStateWithFunction_options_reflection_error_") +Device_newComputePipelineStateWithFunction_options_reflection_error_ :: proc(self: ^Device, computeFunction: ^NS.Object, options: PipelineOption, reflection: ^AutoreleasedComputePipelineReflection, error: ^^NS.Error ) -> ^Device { + return msgSend(^Device, self, "newComputePipelineStateWithFunction:options:reflection:error:", computeFunction, options, reflection, error) +} +@(objc_type=Device, objc_name="newCounterSampleBufferWithDescriptor") +Device_newCounterSampleBufferWithDescriptor :: proc(self: ^Device, descriptor: ^CounterSampleBufferDescriptor, error: ^^NS.Error ) -> ^Device { + return msgSend(^Device, self, "newCounterSampleBufferWithDescriptor:error:", descriptor, error) +} +@(objc_type=Device, objc_name="newDefaultLibrary") +Device_newDefaultLibrary :: proc(self: ^Device) -> ^Device { + return msgSend(^Device, self, "newDefaultLibrary") +} +@(objc_type=Device, objc_name="newDefaultLibraryWithBundle") +Device_newDefaultLibraryWithBundle :: proc(self: ^Device, bundle: ^NS.Bundle, error: ^^NS.Error ) -> ^Device { + return msgSend(^Device, self, "newDefaultLibraryWithBundle:error:", bundle, error) +} +@(objc_type=Device, objc_name="newDepthStencilStateWithDescriptor") +Device_newDepthStencilStateWithDescriptor :: proc(self: ^Device, descriptor: ^DepthStencilDescriptor) -> ^Device { + return msgSend(^Device, self, "newDepthStencilStateWithDescriptor:", descriptor) +} +@(objc_type=Device, objc_name="newDynamicLibrary") +Device_newDynamicLibrary :: proc(self: ^Device, library: ^NS.Object, error: ^^NS.Error ) -> ^Device { + return msgSend(^Device, self, "newDynamicLibrary:error:", library, error) +} +@(objc_type=Device, objc_name="newDynamicLibraryWithURL") +Device_newDynamicLibraryWithURL :: proc(self: ^Device, url: ^NS.URL, error: ^^NS.Error ) -> ^Device { + return msgSend(^Device, self, "newDynamicLibraryWithURL:error:", url, error) +} +@(objc_type=Device, objc_name="newEvent") +Device_newEvent :: proc(self: ^Device) -> ^Device { + return msgSend(^Device, self, "newEvent") +} +@(objc_type=Device, objc_name="newFence") +Device_newFence :: proc(self: ^Device) -> ^Device { + return msgSend(^Device, self, "newFence") +} +@(objc_type=Device, objc_name="newHeapWithDescriptor") +Device_newHeapWithDescriptor :: proc(self: ^Device, descriptor: ^HeapDescriptor) -> ^Device { + return msgSend(^Device, self, "newHeapWithDescriptor:", descriptor) +} +@(objc_type=Device, objc_name="newIndirectCommandBufferWithDescriptor") +Device_newIndirectCommandBufferWithDescriptor :: proc(self: ^Device, descriptor: ^IndirectCommandBufferDescriptor, maxCount: ^NS.Object, options: ResourceOptions) -> ^Device { + return msgSend(^Device, self, "newIndirectCommandBufferWithDescriptor:maxCommandCount:options:", descriptor, maxCount, options) +} +@(objc_type=Device, objc_name="newLibraryWithData") +Device_newLibraryWithData :: proc(self: ^Device, data: ^NS.Object, error: ^^NS.Error ) -> ^Device { + return msgSend(^Device, self, "newLibraryWithData:error:", data, error) +} +@(objc_type=Device, objc_name="newLibraryWithFile") +Device_newLibraryWithFile :: proc(self: ^Device, filepath: ^NS.String, error: ^^NS.Error ) -> ^Device { + return msgSend(^Device, self, "newLibraryWithFile:error:", filepath, error) +} +@(objc_type=Device, objc_name="newLibraryWithSource_options_completionHandler_") +Device_newLibraryWithSource_options_completionHandler_ :: proc(self: ^Device, source: ^NS.String, options: ^CompileOptions, completionHandler: NewLibraryCompletionHandler) { + msgSend(nil, self, "newLibraryWithSource:options:completionHandler:", source, options, completionHandler) +} +@(objc_type=Device, objc_name="newLibraryWithSource_options_error_") +Device_newLibraryWithSource_options_error_ :: proc(self: ^Device, source: ^NS.String, options: ^CompileOptions, error: ^^NS.Error ) -> ^Device { + return msgSend(^Device, self, "newLibraryWithSource:options:error:", source, options, error) +} +@(objc_type=Device, objc_name="newLibraryWithURL") +Device_newLibraryWithURL :: proc(self: ^Device, url: ^NS.URL, error: ^^NS.Error ) -> ^Device { + return msgSend(^Device, self, "newLibraryWithURL:error:", url, error) +} +@(objc_type=Device, objc_name="newRasterizationRateMapWithDescriptor") +Device_newRasterizationRateMapWithDescriptor :: proc(self: ^Device, descriptor: ^RasterizationRateMapDescriptor) -> ^Device { + return msgSend(^Device, self, "newRasterizationRateMapWithDescriptor:", descriptor) +} +@(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptor_completionHandler_") +Device_newRenderPipelineStateWithDescriptor_completionHandler_ :: proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, completionHandler: NewRenderPipelineStateCompletionHandler) { + msgSend(nil, self, "newRenderPipelineStateWithDescriptor:completionHandler:", descriptor, completionHandler) +} +@(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptor_error_") +Device_newRenderPipelineStateWithDescriptor_error_ :: proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, error: ^^NS.Error ) -> ^Device { + return msgSend(^Device, self, "newRenderPipelineStateWithDescriptor:error:", descriptor, error) +} +@(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptor_options_completionHandler_") +Device_newRenderPipelineStateWithDescriptor_options_completionHandler_ :: proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, options: PipelineOption, completionHandler: NewRenderPipelineStateWithReflectionCompletionHandler) { + msgSend(nil, self, "newRenderPipelineStateWithDescriptor:options:completionHandler:", descriptor, options, completionHandler) +} +@(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptor_options_reflection_error_") +Device_newRenderPipelineStateWithDescriptor_options_reflection_error_ :: proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedRenderPipelineReflection, error: ^^NS.Error ) -> ^Device { + return msgSend(^Device, self, "newRenderPipelineStateWithDescriptor:options:reflection:error:", descriptor, options, reflection, error) +} +@(objc_type=Device, objc_name="newRenderPipelineStateWithTileDescriptor_options_completionHandler_") +Device_newRenderPipelineStateWithTileDescriptor_options_completionHandler_ :: proc(self: ^Device, descriptor: ^TileRenderPipelineDescriptor, options: PipelineOption, completionHandler: NewRenderPipelineStateWithReflectionCompletionHandler) { + msgSend(nil, self, "newRenderPipelineStateWithTileDescriptor:options:completionHandler:", descriptor, options, completionHandler) +} +@(objc_type=Device, objc_name="newRenderPipelineStateWithTileDescriptor_options_reflection_error_") +Device_newRenderPipelineStateWithTileDescriptor_options_reflection_error_ :: proc(self: ^Device, descriptor: ^TileRenderPipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedRenderPipelineReflection, error: ^^NS.Error ) -> ^Device { + return msgSend(^Device, self, "newRenderPipelineStateWithTileDescriptor:options:reflection:error:", descriptor, options, reflection, error) +} +@(objc_type=Device, objc_name="newSamplerStateWithDescriptor") +Device_newSamplerStateWithDescriptor :: proc(self: ^Device, descriptor: ^SamplerDescriptor) -> ^Device { + return msgSend(^Device, self, "newSamplerStateWithDescriptor:", descriptor) +} +@(objc_type=Device, objc_name="newSharedEvent") +Device_newSharedEvent :: proc(self: ^Device) -> ^Device { + return msgSend(^Device, self, "newSharedEvent") +} +@(objc_type=Device, objc_name="newSharedEventWithHandle") +Device_newSharedEventWithHandle :: proc(self: ^Device, sharedEventHandle: ^SharedEventHandle) -> ^Device { + return msgSend(^Device, self, "newSharedEventWithHandle:", sharedEventHandle) +} +@(objc_type=Device, objc_name="newSharedTextureWithDescriptor") +Device_newSharedTextureWithDescriptor :: proc(self: ^Device, descriptor: ^TextureDescriptor) -> ^Device { + return msgSend(^Device, self, "newSharedTextureWithDescriptor:", descriptor) +} +@(objc_type=Device, objc_name="newSharedTextureWithHandle") +Device_newSharedTextureWithHandle :: proc(self: ^Device, sharedHandle: ^SharedTextureHandle) -> ^Device { + return msgSend(^Device, self, "newSharedTextureWithHandle:", sharedHandle) +} +@(objc_type=Device, objc_name="newTextureWithDescriptor") +Device_newTextureWithDescriptor :: proc(self: ^Device, desc: ^TextureDescriptor) -> ^Device { + return msgSend(^Device, self, "newTextureWithDescriptor:", desc) +} +@(objc_type=Device, objc_name="newTextureWithDescriptor_iosurface_plane_") +Device_newTextureWithDescriptor_iosurface_plane_ :: proc(self: ^Device, descriptor: ^TextureDescriptor, iosurface: IOSurfaceRef, plane: ^NS.Object) -> ^Device { + return msgSend(^Device, self, "newTextureWithDescriptor:iosurface:plane:", descriptor, iosurface, plane) +} +@(objc_type=Device, objc_name="peerCount") +Device_peerCount :: proc(self: ^Device) -> u32 { + return msgSend(u32, self, "peerCount") +} +@(objc_type=Device, objc_name="peerGroupID") +Device_peerGroupID :: proc(self: ^Device) -> u64 { + return msgSend(u64, self, "peerGroupID") +} +@(objc_type=Device, objc_name="peerIndex") +Device_peerIndex :: proc(self: ^Device) -> u32 { + return msgSend(u32, self, "peerIndex") +} +@(objc_type=Device, objc_name="readWriteTextureSupport") +Device_readWriteTextureSupport :: proc(self: ^Device) -> ReadWriteTextureTier { + return msgSend(ReadWriteTextureTier, self, "readWriteTextureSupport") +} +@(objc_type=Device, objc_name="recommendedMaxWorkingSetSize") +Device_recommendedMaxWorkingSetSize :: proc(self: ^Device) -> u64 { + return msgSend(u64, self, "recommendedMaxWorkingSetSize") +} +@(objc_type=Device, objc_name="registryID") +Device_registryID :: proc(self: ^Device) -> u64 { + return msgSend(u64, self, "registryID") +} +@(objc_type=Device, objc_name="sampleTimestamps") +Device_sampleTimestamps :: proc(self: ^Device, cpuTimestamp: ^Timestamp, gpuTimestamp: ^Timestamp) { + msgSend(nil, self, "sampleTimestamps:gpuTimestamp:", cpuTimestamp, gpuTimestamp) +} +@(objc_type=Device, objc_name="sparseTileSizeInBytes") +Device_sparseTileSizeInBytes :: proc(self: ^Device) -> NS.Integer { + return msgSend(NS.Integer, self, "sparseTileSizeInBytes") +} +@(objc_type=Device, objc_name="sparseTileSizeWithTextureType") +Device_sparseTileSizeWithTextureType :: proc(self: ^Device, textureType: TextureType, pixelFormat: PixelFormat, sampleCount: ^NS.Object) -> Size { + return msgSend(Size, self, "sparseTileSizeWithTextureType:pixelFormat:sampleCount:", textureType, pixelFormat, sampleCount) +} +@(objc_type=Device, objc_name="supports32BitFloatFiltering") +Device_supports32BitFloatFiltering :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "supports32BitFloatFiltering") +} +@(objc_type=Device, objc_name="supports32BitMSAA") +Device_supports32BitMSAA :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "supports32BitMSAA") +} +@(objc_type=Device, objc_name="supportsBCTextureCompression") +Device_supportsBCTextureCompression :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "supportsBCTextureCompression") +} +@(objc_type=Device, objc_name="supportsCounterSampling") +Device_supportsCounterSampling :: proc(self: ^Device, samplingPoint: CounterSamplingPoint) -> BOOL { + return msgSend(BOOL, self, "supportsCounterSampling:", samplingPoint) +} +@(objc_type=Device, objc_name="supportsDynamicLibraries") +Device_supportsDynamicLibraries :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "supportsDynamicLibraries") +} +@(objc_type=Device, objc_name="supportsFamily") +Device_supportsFamily :: proc(self: ^Device, gpuFamily: GPUFamily) -> BOOL { + return msgSend(BOOL, self, "supportsFamily:", gpuFamily) +} +@(objc_type=Device, objc_name="supportsFeatureSet") +Device_supportsFeatureSet :: proc(self: ^Device, featureSet: FeatureSet) -> BOOL { + return msgSend(BOOL, self, "supportsFeatureSet:", featureSet) +} +@(objc_type=Device, objc_name="supportsFunctionPointers") +Device_supportsFunctionPointers :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "supportsFunctionPointers") +} +@(objc_type=Device, objc_name="supportsPullModelInterpolation") +Device_supportsPullModelInterpolation :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "supportsPullModelInterpolation") +} +@(objc_type=Device, objc_name="supportsQueryTextureLOD") +Device_supportsQueryTextureLOD :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "supportsQueryTextureLOD") +} +@(objc_type=Device, objc_name="supportsRasterizationRateMapWithLayerCount") +Device_supportsRasterizationRateMapWithLayerCount :: proc(self: ^Device, layerCount: ^NS.Object) -> BOOL { + return msgSend(BOOL, self, "supportsRasterizationRateMapWithLayerCount:", layerCount) +} +@(objc_type=Device, objc_name="supportsRaytracing") +Device_supportsRaytracing :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "supportsRaytracing") +} +@(objc_type=Device, objc_name="supportsShaderBarycentricCoordinates") +Device_supportsShaderBarycentricCoordinates :: proc(self: ^Device) -> BOOL { + return msgSend(BOOL, self, "supportsShaderBarycentricCoordinates") +} +@(objc_type=Device, objc_name="supportsTextureSampleCount") +Device_supportsTextureSampleCount :: proc(self: ^Device, sampleCount: ^NS.Object) -> BOOL { + return msgSend(BOOL, self, "supportsTextureSampleCount:", sampleCount) +} +@(objc_type=Device, objc_name="supportsVertexAmplificationCount") +Device_supportsVertexAmplificationCount :: proc(self: ^Device, count: ^NS.Object) -> BOOL { + return msgSend(BOOL, self, "supportsVertexAmplificationCount:", count) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + Drawable +Class Methods: +Methods: + addPresentedHandler + drawableID + present + presentAfterMinimumDuration + presentAtTime + presentedTime +*/ +@(objc_class="MTLDrawable") +Drawable :: struct { using _: NS.Object } + +@(objc_type=Drawable, objc_name="addPresentedHandler") +Drawable_addPresentedHandler :: proc(self: ^Drawable, block: DrawablePresentedHandler) { + msgSend(nil, self, "addPresentedHandler:", block) +} +@(objc_type=Drawable, objc_name="drawableID") +Drawable_drawableID :: proc(self: ^Drawable) -> NS.Integer { + return msgSend(NS.Integer, self, "drawableID") +} +@(objc_type=Drawable, objc_name="present") +Drawable_present :: proc(self: ^Drawable) { + msgSend(nil, self, "present") +} +@(objc_type=Drawable, objc_name="presentAfterMinimumDuration") +Drawable_presentAfterMinimumDuration :: proc(self: ^Drawable, duration: CFTimeInterval) { + msgSend(nil, self, "presentAfterMinimumDuration:", duration) +} +@(objc_type=Drawable, objc_name="presentAtTime") +Drawable_presentAtTime :: proc(self: ^Drawable, presentationTime: CFTimeInterval) { + msgSend(nil, self, "presentAtTime:", presentationTime) +} +@(objc_type=Drawable, objc_name="presentedTime") +Drawable_presentedTime :: proc(self: ^Drawable) -> CFTimeInterval { + return msgSend(CFTimeInterval, self, "presentedTime") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + DynamicLibrary +Class Methods: +Methods: + device + installName + label + serializeToURL + setLabel +*/ +@(objc_class="MTLDynamicLibrary") +DynamicLibrary :: struct { using _: NS.Object } + +@(objc_type=DynamicLibrary, objc_name="device") +DynamicLibrary_device :: proc(self: ^DynamicLibrary) -> ^DynamicLibrary { + return msgSend(^DynamicLibrary, self, "device") +} +@(objc_type=DynamicLibrary, objc_name="installName") +DynamicLibrary_installName :: proc(self: ^DynamicLibrary) -> ^NS.String { + return msgSend(^NS.String, self, "installName") +} +@(objc_type=DynamicLibrary, objc_name="label") +DynamicLibrary_label :: proc(self: ^DynamicLibrary) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=DynamicLibrary, objc_name="serializeToURL") +DynamicLibrary_serializeToURL :: proc(self: ^DynamicLibrary, url: ^NS.URL, error: ^^NS.Error ) -> BOOL { + return msgSend(BOOL, self, "serializeToURL:error:", url, error) +} +@(objc_type=DynamicLibrary, objc_name="setLabel") +DynamicLibrary_setLabel :: proc(self: ^DynamicLibrary, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + Event +Class Methods: +Methods: + device + label + setLabel +*/ +@(objc_class="MTLEvent") +Event :: struct { using _: NS.Object } + +@(objc_type=Event, objc_name="device") +Event_device :: proc(self: ^Event) -> ^Event { + return msgSend(^Event, self, "device") +} +@(objc_type=Event, objc_name="label") +Event_label :: proc(self: ^Event) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=Event, objc_name="setLabel") +Event_setLabel :: proc(self: ^Event, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + Fence +Class Methods: +Methods: + device + label + setLabel +*/ +@(objc_class="MTLFence") +Fence :: struct { using _: NS.Object } + +@(objc_type=Fence, objc_name="device") +Fence_device :: proc(self: ^Fence) -> ^Fence { + return msgSend(^Fence, self, "device") +} +@(objc_type=Fence, objc_name="label") +Fence_label :: proc(self: ^Fence) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=Fence, objc_name="setLabel") +Fence_setLabel :: proc(self: ^Fence, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + Function +Class Methods: +Methods: + device + functionConstantsDictionary + functionType + label + name + newArgumentEncoderWithBufferIndex + newArgumentEncoderWithBufferIndex + options + patchControlPointCount + patchType + setLabel + stageInputAttributes + vertexAttributes +*/ +@(objc_class="MTLFunction") +Function :: struct { using _: NS.Object } + +@(objc_type=Function, objc_name="device") +Function_device :: proc(self: ^Function) -> ^Function { + return msgSend(^Function, self, "device") +} +@(objc_type=Function, objc_name="functionConstantsDictionary") +Function_functionConstantsDictionary :: proc(self: ^Function) -> ^NS.Dictionary { + return msgSend(^NS.Dictionary, self, "functionConstantsDictionary") +} +@(objc_type=Function, objc_name="functionType") +Function_functionType :: proc(self: ^Function) -> FunctionType { + return msgSend(FunctionType, self, "functionType") +} +@(objc_type=Function, objc_name="label") +Function_label :: proc(self: ^Function) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=Function, objc_name="name") +Function_name :: proc(self: ^Function) -> ^NS.String { + return msgSend(^NS.String, self, "name") +} +@(objc_type=Function, objc_name="newArgumentEncoderWithBufferIndex") +Function_newArgumentEncoderWithBufferIndex :: proc(self: ^Function, bufferIndex: ^NS.Object) -> ^Function { + return msgSend(^Function, self, "newArgumentEncoderWithBufferIndex:", bufferIndex) +} +@(objc_type=Function, objc_name="newArgumentEncoderWithBufferIndex_reflection_") +Function_newArgumentEncoderWithBufferIndex_reflection_ :: proc(self: ^Function, bufferIndex: ^NS.Object, reflection: ^AutoreleasedArgument) -> ^Function { + return msgSend(^Function, self, "newArgumentEncoderWithBufferIndex:reflection:", bufferIndex, reflection) +} +@(objc_type=Function, objc_name="options") +Function_options :: proc(self: ^Function) -> FunctionOptions { + return msgSend(FunctionOptions, self, "options") +} +@(objc_type=Function, objc_name="patchControlPointCount") +Function_patchControlPointCount :: proc(self: ^Function) -> NS.Integer { + return msgSend(NS.Integer, self, "patchControlPointCount") +} +@(objc_type=Function, objc_name="patchType") +Function_patchType :: proc(self: ^Function) -> PatchType { + return msgSend(PatchType, self, "patchType") +} +@(objc_type=Function, objc_name="setLabel") +Function_setLabel :: proc(self: ^Function, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} +@(objc_type=Function, objc_name="stageInputAttributes") +Function_stageInputAttributes :: proc(self: ^Function) -> ^NS.Array { + return msgSend(^NS.Array, self, "stageInputAttributes") +} +@(objc_type=Function, objc_name="vertexAttributes") +Function_vertexAttributes :: proc(self: ^Function) -> ^NS.Array { + return msgSend(^NS.Array, self, "vertexAttributes") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + FunctionHandle +Class Methods: +Methods: + device + functionType + name +*/ +@(objc_class="MTLFunctionHandle") +FunctionHandle :: struct { using _: NS.Object } + +@(objc_type=FunctionHandle, objc_name="device") +FunctionHandle_device :: proc(self: ^FunctionHandle) -> ^FunctionHandle { + return msgSend(^FunctionHandle, self, "device") +} +@(objc_type=FunctionHandle, objc_name="functionType") +FunctionHandle_functionType :: proc(self: ^FunctionHandle) -> FunctionType { + return msgSend(FunctionType, self, "functionType") +} +@(objc_type=FunctionHandle, objc_name="name") +FunctionHandle_name :: proc(self: ^FunctionHandle) -> ^NS.String { + return msgSend(^NS.String, self, "name") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + FunctionLog +Class Methods: +Methods: + debugLocation + encoderLabel + function + type +*/ +@(objc_class="MTLFunctionLog") +FunctionLog :: struct { using _: NS.Object } + +@(objc_type=FunctionLog, objc_name="debugLocation") +FunctionLog_debugLocation :: proc(self: ^FunctionLog) -> ^FunctionLog { + return msgSend(^FunctionLog, self, "debugLocation") +} +@(objc_type=FunctionLog, objc_name="encoderLabel") +FunctionLog_encoderLabel :: proc(self: ^FunctionLog) -> ^NS.String { + return msgSend(^NS.String, self, "encoderLabel") +} +@(objc_type=FunctionLog, objc_name="function") +FunctionLog_function :: proc(self: ^FunctionLog) -> ^FunctionLog { + return msgSend(^FunctionLog, self, "function") +} +@(objc_type=FunctionLog, objc_name="type") +FunctionLog_type :: proc(self: ^FunctionLog) -> FunctionLogType { + return msgSend(FunctionLogType, self, "type") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + FunctionLogDebugLocation +Class Methods: +Methods: + URL + column + functionName + line +*/ +@(objc_class="MTLFunctionLogDebugLocation") +FunctionLogDebugLocation :: struct { using _: NS.Object } + +@(objc_type=FunctionLogDebugLocation, objc_name="URL") +FunctionLogDebugLocation_URL :: proc(self: ^FunctionLogDebugLocation) -> ^NS.URL { + return msgSend(^NS.URL, self, "URL") +} +@(objc_type=FunctionLogDebugLocation, objc_name="column") +FunctionLogDebugLocation_column :: proc(self: ^FunctionLogDebugLocation) -> NS.Integer { + return msgSend(NS.Integer, self, "column") +} +@(objc_type=FunctionLogDebugLocation, objc_name="functionName") +FunctionLogDebugLocation_functionName :: proc(self: ^FunctionLogDebugLocation) -> ^NS.String { + return msgSend(^NS.String, self, "functionName") +} +@(objc_type=FunctionLogDebugLocation, objc_name="line") +FunctionLogDebugLocation_line :: proc(self: ^FunctionLogDebugLocation) -> NS.Integer { + return msgSend(NS.Integer, self, "line") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + Heap +Class Methods: +Methods: + cpuCacheMode + currentAllocatedSize + device + hazardTrackingMode + label + maxAvailableSizeWithAlignment + newBufferWithLength + newBufferWithLength + newTextureWithDescriptor + newTextureWithDescriptor + resourceOptions + setLabel + setPurgeableState + size + storageMode + type + usedSize +*/ +@(objc_class="MTLHeap") +Heap :: struct { using _: NS.Object } + +@(objc_type=Heap, objc_name="cpuCacheMode") +Heap_cpuCacheMode :: proc(self: ^Heap) -> CPUCacheMode { + return msgSend(CPUCacheMode, self, "cpuCacheMode") +} +@(objc_type=Heap, objc_name="currentAllocatedSize") +Heap_currentAllocatedSize :: proc(self: ^Heap) -> NS.Integer { + return msgSend(NS.Integer, self, "currentAllocatedSize") +} +@(objc_type=Heap, objc_name="device") +Heap_device :: proc(self: ^Heap) -> ^Heap { + return msgSend(^Heap, self, "device") +} +@(objc_type=Heap, objc_name="hazardTrackingMode") +Heap_hazardTrackingMode :: proc(self: ^Heap) -> HazardTrackingMode { + return msgSend(HazardTrackingMode, self, "hazardTrackingMode") +} +@(objc_type=Heap, objc_name="label") +Heap_label :: proc(self: ^Heap) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=Heap, objc_name="maxAvailableSizeWithAlignment") +Heap_maxAvailableSizeWithAlignment :: proc(self: ^Heap, alignment: ^NS.Object) -> ^Heap { + return msgSend(^Heap, self, "maxAvailableSizeWithAlignment:", alignment) +} +@(objc_type=Heap, objc_name="newBufferWithLength") +Heap_newBufferWithLength :: proc(self: ^Heap, length: ^NS.Object, options: ResourceOptions) -> ^Heap { + return msgSend(^Heap, self, "newBufferWithLength:options:", length, options) +} +@(objc_type=Heap, objc_name="newBufferWithLength_options_offset_") +Heap_newBufferWithLength_options_offset_ :: proc(self: ^Heap, length: ^NS.Object, options: ResourceOptions, offset: ^NS.Object) -> ^Heap { + return msgSend(^Heap, self, "newBufferWithLength:options:offset:", length, options, offset) +} +@(objc_type=Heap, objc_name="newTextureWithDescriptor") +Heap_newTextureWithDescriptor :: proc(self: ^Heap, desc: ^TextureDescriptor) -> ^Heap { + return msgSend(^Heap, self, "newTextureWithDescriptor:", desc) +} +@(objc_type=Heap, objc_name="newTextureWithDescriptor_offset_") +Heap_newTextureWithDescriptor_offset_ :: proc(self: ^Heap, descriptor: ^TextureDescriptor, offset: ^NS.Object) -> ^Heap { + return msgSend(^Heap, self, "newTextureWithDescriptor:offset:", descriptor, offset) +} +@(objc_type=Heap, objc_name="resourceOptions") +Heap_resourceOptions :: proc(self: ^Heap) -> ResourceOptions { + return msgSend(ResourceOptions, self, "resourceOptions") +} +@(objc_type=Heap, objc_name="setLabel") +Heap_setLabel :: proc(self: ^Heap, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} +@(objc_type=Heap, objc_name="setPurgeableState") +Heap_setPurgeableState :: proc(self: ^Heap, state: PurgeableState) -> PurgeableState { + return msgSend(PurgeableState, self, "setPurgeableState:", state) +} +@(objc_type=Heap, objc_name="size") +Heap_size :: proc(self: ^Heap) -> NS.Integer { + return msgSend(NS.Integer, self, "size") +} +@(objc_type=Heap, objc_name="storageMode") +Heap_storageMode :: proc(self: ^Heap) -> StorageMode { + return msgSend(StorageMode, self, "storageMode") +} +@(objc_type=Heap, objc_name="type") +Heap_type :: proc(self: ^Heap) -> FunctionLogType { + return msgSend(FunctionLogType, self, "type") +} +@(objc_type=Heap, objc_name="usedSize") +Heap_usedSize :: proc(self: ^Heap) -> NS.Integer { + return msgSend(NS.Integer, self, "usedSize") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + IndirectCommandBuffer +Class Methods: +Methods: + indirectComputeCommandAtIndex + indirectRenderCommandAtIndex + resetWithRange + size +*/ +@(objc_class="MTLIndirectCommandBuffer") +IndirectCommandBuffer :: struct { using _: NS.Object } + +@(objc_type=IndirectCommandBuffer, objc_name="indirectComputeCommandAtIndex") +IndirectCommandBuffer_indirectComputeCommandAtIndex :: proc(self: ^IndirectCommandBuffer, commandIndex: ^NS.Object) -> ^IndirectCommandBuffer { + return msgSend(^IndirectCommandBuffer, self, "indirectComputeCommandAtIndex:", commandIndex) +} +@(objc_type=IndirectCommandBuffer, objc_name="indirectRenderCommandAtIndex") +IndirectCommandBuffer_indirectRenderCommandAtIndex :: proc(self: ^IndirectCommandBuffer, commandIndex: ^NS.Object) -> ^IndirectCommandBuffer { + return msgSend(^IndirectCommandBuffer, self, "indirectRenderCommandAtIndex:", commandIndex) +} +@(objc_type=IndirectCommandBuffer, objc_name="resetWithRange") +IndirectCommandBuffer_resetWithRange :: proc(self: ^IndirectCommandBuffer, range: NS.Range) { + msgSend(nil, self, "resetWithRange:", range) +} +@(objc_type=IndirectCommandBuffer, objc_name="size") +IndirectCommandBuffer_size :: proc(self: ^IndirectCommandBuffer) -> NS.Integer { + return msgSend(NS.Integer, self, "size") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + IndirectComputeCommand +Class Methods: +Methods: + clearBarrier + concurrentDispatchThreadgroups + concurrentDispatchThreads + reset + setBarrier + setComputePipelineState + setImageblockWidth + setKernelBuffer + setStageInRegion + setThreadgroupMemoryLength +*/ +@(objc_class="MTLIndirectComputeCommand") +IndirectComputeCommand :: struct { using _: NS.Object } + +@(objc_type=IndirectComputeCommand, objc_name="clearBarrier") +IndirectComputeCommand_clearBarrier :: proc(self: ^IndirectComputeCommand) { + msgSend(nil, self, "clearBarrier") +} +@(objc_type=IndirectComputeCommand, objc_name="concurrentDispatchThreadgroups") +IndirectComputeCommand_concurrentDispatchThreadgroups :: proc(self: ^IndirectComputeCommand, threadgroupsPerGrid: Size, threadsPerThreadgroup: Size) { + msgSend(nil, self, "concurrentDispatchThreadgroups:threadsPerThreadgroup:", threadgroupsPerGrid, threadsPerThreadgroup) +} +@(objc_type=IndirectComputeCommand, objc_name="concurrentDispatchThreads") +IndirectComputeCommand_concurrentDispatchThreads :: proc(self: ^IndirectComputeCommand, threadsPerGrid: Size, threadsPerThreadgroup: Size) { + msgSend(nil, self, "concurrentDispatchThreads:threadsPerThreadgroup:", threadsPerGrid, threadsPerThreadgroup) +} +@(objc_type=IndirectComputeCommand, objc_name="reset") +IndirectComputeCommand_reset :: proc(self: ^IndirectComputeCommand) { + msgSend(nil, self, "reset") +} +@(objc_type=IndirectComputeCommand, objc_name="setBarrier") +IndirectComputeCommand_setBarrier :: proc(self: ^IndirectComputeCommand) { + msgSend(nil, self, "setBarrier") +} +@(objc_type=IndirectComputeCommand, objc_name="setComputePipelineState") +IndirectComputeCommand_setComputePipelineState :: proc(self: ^IndirectComputeCommand, pipelineState: ^NS.Object) { + msgSend(nil, self, "setComputePipelineState:", pipelineState) +} +@(objc_type=IndirectComputeCommand, objc_name="setImageblockWidth") +IndirectComputeCommand_setImageblockWidth :: proc(self: ^IndirectComputeCommand, width: ^NS.Object, height: ^NS.Object) { + msgSend(nil, self, "setImageblockWidth:height:", width, height) +} +@(objc_type=IndirectComputeCommand, objc_name="setKernelBuffer") +IndirectComputeCommand_setKernelBuffer :: proc(self: ^IndirectComputeCommand, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setKernelBuffer:offset:atIndex:", buffer, offset, index) +} +@(objc_type=IndirectComputeCommand, objc_name="setStageInRegion") +IndirectComputeCommand_setStageInRegion :: proc(self: ^IndirectComputeCommand, region: Region) { + msgSend(nil, self, "setStageInRegion:", region) +} +@(objc_type=IndirectComputeCommand, objc_name="setThreadgroupMemoryLength") +IndirectComputeCommand_setThreadgroupMemoryLength :: proc(self: ^IndirectComputeCommand, length: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setThreadgroupMemoryLength:atIndex:", length, index) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + IndirectRenderCommand +Class Methods: +Methods: + drawIndexedPatches + drawIndexedPrimitives + drawPatches + drawPrimitives + reset + setFragmentBuffer + setRenderPipelineState + setVertexBuffer +*/ +@(objc_class="MTLIndirectRenderCommand") +IndirectRenderCommand :: struct { using _: NS.Object } + +@(objc_type=IndirectRenderCommand, objc_name="drawIndexedPatches") +IndirectRenderCommand_drawIndexedPatches :: proc(self: ^IndirectRenderCommand, numberOfPatchControlPoints: ^NS.Object, patchStart: ^NS.Object, patchCount: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, controlPointIndexBuffer: ^NS.Object, controlPointIndexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object, buffer: ^NS.Object, offset: ^NS.Object, instanceStride: ^NS.Object) { + msgSend(nil, self, "drawIndexedPatches:patchStart:patchCount:patchIndexBuffer:patchIndexBufferOffset:controlPointIndexBuffer:controlPointIndexBufferOffset:instanceCount:baseInstance:tessellationFactorBuffer:tessellationFactorBufferOffset:tessellationFactorBufferInstanceStride:", numberOfPatchControlPoints, patchStart, patchCount, patchIndexBuffer, patchIndexBufferOffset, controlPointIndexBuffer, controlPointIndexBufferOffset, instanceCount, baseInstance, buffer, offset, instanceStride) +} +@(objc_type=IndirectRenderCommand, objc_name="drawIndexedPrimitives") +IndirectRenderCommand_drawIndexedPrimitives :: proc(self: ^IndirectRenderCommand, primitiveType: PrimitiveType, indexCount: ^NS.Object, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseVertex: ^NS.Object, baseInstance: ^NS.Object) { + msgSend(nil, self, "drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:instanceCount:baseVertex:baseInstance:", primitiveType, indexCount, indexType, indexBuffer, indexBufferOffset, instanceCount, baseVertex, baseInstance) +} +@(objc_type=IndirectRenderCommand, objc_name="drawPatches") +IndirectRenderCommand_drawPatches :: proc(self: ^IndirectRenderCommand, numberOfPatchControlPoints: ^NS.Object, patchStart: ^NS.Object, patchCount: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object, buffer: ^NS.Object, offset: ^NS.Object, instanceStride: ^NS.Object) { + msgSend(nil, self, "drawPatches:patchStart:patchCount:patchIndexBuffer:patchIndexBufferOffset:instanceCount:baseInstance:tessellationFactorBuffer:tessellationFactorBufferOffset:tessellationFactorBufferInstanceStride:", numberOfPatchControlPoints, patchStart, patchCount, patchIndexBuffer, patchIndexBufferOffset, instanceCount, baseInstance, buffer, offset, instanceStride) +} +@(objc_type=IndirectRenderCommand, objc_name="drawPrimitives") +IndirectRenderCommand_drawPrimitives :: proc(self: ^IndirectRenderCommand, primitiveType: PrimitiveType, vertexStart: ^NS.Object, vertexCount: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object) { + msgSend(nil, self, "drawPrimitives:vertexStart:vertexCount:instanceCount:baseInstance:", primitiveType, vertexStart, vertexCount, instanceCount, baseInstance) +} +@(objc_type=IndirectRenderCommand, objc_name="reset") +IndirectRenderCommand_reset :: proc(self: ^IndirectRenderCommand) { + msgSend(nil, self, "reset") +} +@(objc_type=IndirectRenderCommand, objc_name="setFragmentBuffer") +IndirectRenderCommand_setFragmentBuffer :: proc(self: ^IndirectRenderCommand, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setFragmentBuffer:offset:atIndex:", buffer, offset, index) +} +@(objc_type=IndirectRenderCommand, objc_name="setRenderPipelineState") +IndirectRenderCommand_setRenderPipelineState :: proc(self: ^IndirectRenderCommand, pipelineState: ^NS.Object) { + msgSend(nil, self, "setRenderPipelineState:", pipelineState) +} +@(objc_type=IndirectRenderCommand, objc_name="setVertexBuffer") +IndirectRenderCommand_setVertexBuffer :: proc(self: ^IndirectRenderCommand, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setVertexBuffer:offset:atIndex:", buffer, offset, index) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + IntersectionFunctionTable +Class Methods: +Methods: + setBuffer + setBuffers + setFunction + setFunctions + setOpaqueTriangleIntersectionFunctionWithSignature + setOpaqueTriangleIntersectionFunctionWithSignature + setVisibleFunctionTable + setVisibleFunctionTables +*/ +@(objc_class="MTLIntersectionFunctionTable") +IntersectionFunctionTable :: struct { using _: NS.Object } + +@(objc_type=IntersectionFunctionTable, objc_name="setBuffer") +IntersectionFunctionTable_setBuffer :: proc(self: ^IntersectionFunctionTable, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setBuffer:offset:atIndex:", buffer, offset, index) +} +@(objc_type=IntersectionFunctionTable, objc_name="setBuffers") +IntersectionFunctionTable_setBuffers :: proc(self: ^IntersectionFunctionTable, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { + msgSend(nil, self, "setBuffers:offsets:withRange:", buffers, offsets, range) +} +@(objc_type=IntersectionFunctionTable, objc_name="setFunction") +IntersectionFunctionTable_setFunction :: proc(self: ^IntersectionFunctionTable, function: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setFunction:atIndex:", function, index) +} +@(objc_type=IntersectionFunctionTable, objc_name="setFunctions") +IntersectionFunctionTable_setFunctions :: proc(self: ^IntersectionFunctionTable, functions: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setFunctions:withRange:", functions, range) +} +@(objc_type=IntersectionFunctionTable, objc_name="setOpaqueTriangleIntersectionFunctionWithSignature_atIndex_") +IntersectionFunctionTable_setOpaqueTriangleIntersectionFunctionWithSignature_atIndex_ :: proc(self: ^IntersectionFunctionTable, signature: IntersectionFunctionSignature, index: ^NS.Object) { + msgSend(nil, self, "setOpaqueTriangleIntersectionFunctionWithSignature:atIndex:", signature, index) +} +@(objc_type=IntersectionFunctionTable, objc_name="setOpaqueTriangleIntersectionFunctionWithSignature_withRange_") +IntersectionFunctionTable_setOpaqueTriangleIntersectionFunctionWithSignature_withRange_ :: proc(self: ^IntersectionFunctionTable, signature: IntersectionFunctionSignature, range: NS.Range) { + msgSend(nil, self, "setOpaqueTriangleIntersectionFunctionWithSignature:withRange:", signature, range) +} +@(objc_type=IntersectionFunctionTable, objc_name="setVisibleFunctionTable") +IntersectionFunctionTable_setVisibleFunctionTable :: proc(self: ^IntersectionFunctionTable, visibleFunctionTable: ^NS.Object, bufferIndex: ^NS.Object) { + msgSend(nil, self, "setVisibleFunctionTable:atBufferIndex:", visibleFunctionTable, bufferIndex) +} +@(objc_type=IntersectionFunctionTable, objc_name="setVisibleFunctionTables") +IntersectionFunctionTable_setVisibleFunctionTables :: proc(self: ^IntersectionFunctionTable, visibleFunctionTables: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setVisibleFunctionTables:withBufferRange:", visibleFunctionTables, range) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + Library +Class Methods: +Methods: + device + functionNames + installName + label + newFunctionWithDescriptor + newFunctionWithDescriptor + newFunctionWithName + newFunctionWithName + newFunctionWithName + newIntersectionFunctionWithDescriptor + newIntersectionFunctionWithDescriptor + setLabel + type +*/ +@(objc_class="MTLLibrary") +Library :: struct { using _: NS.Object } + +@(objc_type=Library, objc_name="device") +Library_device :: proc(self: ^Library) -> ^Library { + return msgSend(^Library, self, "device") +} +@(objc_type=Library, objc_name="functionNames") +Library_functionNames :: proc(self: ^Library) -> ^NS.Array { + return msgSend(^NS.Array, self, "functionNames") +} +@(objc_type=Library, objc_name="installName") +Library_installName :: proc(self: ^Library) -> ^NS.String { + return msgSend(^NS.String, self, "installName") +} +@(objc_type=Library, objc_name="label") +Library_label :: proc(self: ^Library) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=Library, objc_name="newFunctionWithDescriptor_completionHandler_") +Library_newFunctionWithDescriptor_completionHandler_ :: proc(self: ^Library, descriptor: ^FunctionDescriptor, completionHandler: rawptr) { + msgSend(nil, self, "newFunctionWithDescriptor:completionHandler:", descriptor, completionHandler) +} +@(objc_type=Library, objc_name="newFunctionWithDescriptor_error_") +Library_newFunctionWithDescriptor_error_ :: proc(self: ^Library, descriptor: ^FunctionDescriptor, error: ^^NS.Error ) -> ^Library { + return msgSend(^Library, self, "newFunctionWithDescriptor:error:", descriptor, error) +} +@(objc_type=Library, objc_name="newFunctionWithName") +Library_newFunctionWithName :: proc(self: ^Library, functionName: ^NS.String) -> ^Library { + return msgSend(^Library, self, "newFunctionWithName:", functionName) +} +@(objc_type=Library, objc_name="newFunctionWithName_constantValues_completionHandler_") +Library_newFunctionWithName_constantValues_completionHandler_ :: proc(self: ^Library, name: ^NS.String, constantValues: ^FunctionConstantValues, completionHandler: rawptr) { + msgSend(nil, self, "newFunctionWithName:constantValues:completionHandler:", name, constantValues, completionHandler) +} +@(objc_type=Library, objc_name="newFunctionWithName_constantValues_error_") +Library_newFunctionWithName_constantValues_error_ :: proc(self: ^Library, name: ^NS.String, constantValues: ^FunctionConstantValues, error: ^^NS.Error ) -> ^Library { + return msgSend(^Library, self, "newFunctionWithName:constantValues:error:", name, constantValues, error) +} +@(objc_type=Library, objc_name="newIntersectionFunctionWithDescriptor_completionHandler_") +Library_newIntersectionFunctionWithDescriptor_completionHandler_ :: proc(self: ^Library, descriptor: ^IntersectionFunctionDescriptor, completionHandler: rawptr) { + msgSend(nil, self, "newIntersectionFunctionWithDescriptor:completionHandler:", descriptor, completionHandler) +} +@(objc_type=Library, objc_name="newIntersectionFunctionWithDescriptor_error_") +Library_newIntersectionFunctionWithDescriptor_error_ :: proc(self: ^Library, descriptor: ^IntersectionFunctionDescriptor, error: ^^NS.Error ) -> ^Library { + return msgSend(^Library, self, "newIntersectionFunctionWithDescriptor:error:", descriptor, error) +} +@(objc_type=Library, objc_name="setLabel") +Library_setLabel :: proc(self: ^Library, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} +@(objc_type=Library, objc_name="type") +Library_type :: proc(self: ^Library) -> LibraryType { + return msgSend(LibraryType, self, "type") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + ParallelRenderCommandEncoder +Class Methods: +Methods: + renderCommandEncoder + setColorStoreAction + setColorStoreActionOptions + setDepthStoreAction + setDepthStoreActionOptions + setStencilStoreAction + setStencilStoreActionOptions +*/ +@(objc_class="MTLParallelRenderCommandEncoder") +ParallelRenderCommandEncoder :: struct { using _: NS.Object } + +@(objc_type=ParallelRenderCommandEncoder, objc_name="renderCommandEncoder") +ParallelRenderCommandEncoder_renderCommandEncoder :: proc(self: ^ParallelRenderCommandEncoder) -> ^ParallelRenderCommandEncoder { + return msgSend(^ParallelRenderCommandEncoder, self, "renderCommandEncoder") +} +@(objc_type=ParallelRenderCommandEncoder, objc_name="setColorStoreAction") +ParallelRenderCommandEncoder_setColorStoreAction :: proc(self: ^ParallelRenderCommandEncoder, storeAction: StoreAction, colorAttachmentIndex: ^NS.Object) { + msgSend(nil, self, "setColorStoreAction:atIndex:", storeAction, colorAttachmentIndex) +} +@(objc_type=ParallelRenderCommandEncoder, objc_name="setColorStoreActionOptions") +ParallelRenderCommandEncoder_setColorStoreActionOptions :: proc(self: ^ParallelRenderCommandEncoder, storeActionOptions: StoreActionOptions, colorAttachmentIndex: ^NS.Object) { + msgSend(nil, self, "setColorStoreActionOptions:atIndex:", storeActionOptions, colorAttachmentIndex) +} +@(objc_type=ParallelRenderCommandEncoder, objc_name="setDepthStoreAction") +ParallelRenderCommandEncoder_setDepthStoreAction :: proc(self: ^ParallelRenderCommandEncoder, storeAction: StoreAction) { + msgSend(nil, self, "setDepthStoreAction:", storeAction) +} +@(objc_type=ParallelRenderCommandEncoder, objc_name="setDepthStoreActionOptions") +ParallelRenderCommandEncoder_setDepthStoreActionOptions :: proc(self: ^ParallelRenderCommandEncoder, storeActionOptions: StoreActionOptions) { + msgSend(nil, self, "setDepthStoreActionOptions:", storeActionOptions) +} +@(objc_type=ParallelRenderCommandEncoder, objc_name="setStencilStoreAction") +ParallelRenderCommandEncoder_setStencilStoreAction :: proc(self: ^ParallelRenderCommandEncoder, storeAction: StoreAction) { + msgSend(nil, self, "setStencilStoreAction:", storeAction) +} +@(objc_type=ParallelRenderCommandEncoder, objc_name="setStencilStoreActionOptions") +ParallelRenderCommandEncoder_setStencilStoreActionOptions :: proc(self: ^ParallelRenderCommandEncoder, storeActionOptions: StoreActionOptions) { + msgSend(nil, self, "setStencilStoreActionOptions:", storeActionOptions) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RasterizationRateMap +Class Methods: +Methods: + copyParameterDataToBuffer + device + label + layerCount + mapPhysicalToScreenCoordinates + mapScreenToPhysicalCoordinates + parameterBufferSizeAndAlign + physicalGranularity + physicalSizeForLayer + screenSize +*/ +@(objc_class="MTLRasterizationRateMap") +RasterizationRateMap :: struct { using _: NS.Object } + +@(objc_type=RasterizationRateMap, objc_name="copyParameterDataToBuffer") +RasterizationRateMap_copyParameterDataToBuffer :: proc(self: ^RasterizationRateMap, buffer: ^NS.Object, offset: ^NS.Object) { + msgSend(nil, self, "copyParameterDataToBuffer:offset:", buffer, offset) +} +@(objc_type=RasterizationRateMap, objc_name="device") +RasterizationRateMap_device :: proc(self: ^RasterizationRateMap) -> ^RasterizationRateMap { + return msgSend(^RasterizationRateMap, self, "device") +} +@(objc_type=RasterizationRateMap, objc_name="label") +RasterizationRateMap_label :: proc(self: ^RasterizationRateMap) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=RasterizationRateMap, objc_name="layerCount") +RasterizationRateMap_layerCount :: proc(self: ^RasterizationRateMap) -> NS.Integer { + return msgSend(NS.Integer, self, "layerCount") +} +@(objc_type=RasterizationRateMap, objc_name="mapPhysicalToScreenCoordinates") +RasterizationRateMap_mapPhysicalToScreenCoordinates :: proc(self: ^RasterizationRateMap, physicalCoordinates: Coordinate2D, layerIndex: ^NS.Object) -> Coordinate2D { + return msgSend(Coordinate2D, self, "mapPhysicalToScreenCoordinates:forLayer:", physicalCoordinates, layerIndex) +} +@(objc_type=RasterizationRateMap, objc_name="mapScreenToPhysicalCoordinates") +RasterizationRateMap_mapScreenToPhysicalCoordinates :: proc(self: ^RasterizationRateMap, screenCoordinates: Coordinate2D, layerIndex: ^NS.Object) -> Coordinate2D { + return msgSend(Coordinate2D, self, "mapScreenToPhysicalCoordinates:forLayer:", screenCoordinates, layerIndex) +} +@(objc_type=RasterizationRateMap, objc_name="parameterBufferSizeAndAlign") +RasterizationRateMap_parameterBufferSizeAndAlign :: proc(self: ^RasterizationRateMap) -> SizeAndAlign { + return msgSend(SizeAndAlign, self, "parameterBufferSizeAndAlign") +} +@(objc_type=RasterizationRateMap, objc_name="physicalGranularity") +RasterizationRateMap_physicalGranularity :: proc(self: ^RasterizationRateMap) -> Size { + return msgSend(Size, self, "physicalGranularity") +} +@(objc_type=RasterizationRateMap, objc_name="physicalSizeForLayer") +RasterizationRateMap_physicalSizeForLayer :: proc(self: ^RasterizationRateMap, layerIndex: ^NS.Object) -> Size { + return msgSend(Size, self, "physicalSizeForLayer:", layerIndex) +} +@(objc_type=RasterizationRateMap, objc_name="screenSize") +RasterizationRateMap_screenSize :: proc(self: ^RasterizationRateMap) -> Size { + return msgSend(Size, self, "screenSize") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RenderCommandEncoder +Class Methods: +Methods: + dispatchThreadsPerTile + drawIndexedPatches + drawIndexedPatches + drawIndexedPrimitives + drawIndexedPrimitives + drawIndexedPrimitives + drawIndexedPrimitives + drawPatches + drawPatches + drawPrimitives + drawPrimitives + drawPrimitives + drawPrimitives + executeCommandsInBuffer + executeCommandsInBuffer + memoryBarrierWithResources + memoryBarrierWithScope + sampleCountersInBuffer + setBlendColorRed + setColorStoreAction + setColorStoreActionOptions + setCullMode + setDepthBias + setDepthClipMode + setDepthStencilState + setDepthStoreAction + setDepthStoreActionOptions + setFragmentBuffer + setFragmentBufferOffset + setFragmentBuffers + setFragmentBytes + setFragmentSamplerState + setFragmentSamplerState + setFragmentSamplerStates + setFragmentSamplerStates + setFragmentTexture + setFragmentTextures + setFrontFacingWinding + setRenderPipelineState + setScissorRect + setScissorRects + setStencilFrontReferenceValue + setStencilReferenceValue + setStencilStoreAction + setStencilStoreActionOptions + setTessellationFactorBuffer + setTessellationFactorScale + setThreadgroupMemoryLength + setTileBuffer + setTileBufferOffset + setTileBuffers + setTileBytes + setTileSamplerState + setTileSamplerState + setTileSamplerStates + setTileSamplerStates + setTileTexture + setTileTextures + setTriangleFillMode + setVertexAmplificationCount + setVertexBuffer + setVertexBufferOffset + setVertexBuffers + setVertexBytes + setVertexSamplerState + setVertexSamplerState + setVertexSamplerStates + setVertexSamplerStates + setVertexTexture + setVertexTextures + setViewport + setViewports + setVisibilityResultMode + textureBarrier + tileHeight + tileWidth + updateFence + useHeap + useHeap + useHeaps + useHeaps + useResource + useResource + useResources + useResources + waitForFence +*/ +@(objc_class="MTLRenderCommandEncoder") +RenderCommandEncoder :: struct { using _: NS.Object } + +@(objc_type=RenderCommandEncoder, objc_name="dispatchThreadsPerTile") +RenderCommandEncoder_dispatchThreadsPerTile :: proc(self: ^RenderCommandEncoder, threadsPerTile: Size) { + msgSend(nil, self, "dispatchThreadsPerTile:", threadsPerTile) +} +@(objc_type=RenderCommandEncoder, objc_name="drawIndexedPatches_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_indirectBuffer_indirectBufferOffset_") +RenderCommandEncoder_drawIndexedPatches_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_indirectBuffer_indirectBufferOffset_ :: proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, controlPointIndexBuffer: ^NS.Object, controlPointIndexBufferOffset: ^NS.Object, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { + msgSend(nil, self, "drawIndexedPatches:patchIndexBuffer:patchIndexBufferOffset:controlPointIndexBuffer:controlPointIndexBufferOffset:indirectBuffer:indirectBufferOffset:", numberOfPatchControlPoints, patchIndexBuffer, patchIndexBufferOffset, controlPointIndexBuffer, controlPointIndexBufferOffset, indirectBuffer, indirectBufferOffset) +} +@(objc_type=RenderCommandEncoder, objc_name="drawIndexedPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_instanceCount_baseInstance_") +RenderCommandEncoder_drawIndexedPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_instanceCount_baseInstance_ :: proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: ^NS.Object, patchStart: ^NS.Object, patchCount: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, controlPointIndexBuffer: ^NS.Object, controlPointIndexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object) { + msgSend(nil, self, "drawIndexedPatches:patchStart:patchCount:patchIndexBuffer:patchIndexBufferOffset:controlPointIndexBuffer:controlPointIndexBufferOffset:instanceCount:baseInstance:", numberOfPatchControlPoints, patchStart, patchCount, patchIndexBuffer, patchIndexBufferOffset, controlPointIndexBuffer, controlPointIndexBufferOffset, instanceCount, baseInstance) +} +@(objc_type=RenderCommandEncoder, objc_name="drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_") +RenderCommandEncoder_drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_ :: proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexCount: ^NS.Object, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object) { + msgSend(nil, self, "drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:", primitiveType, indexCount, indexType, indexBuffer, indexBufferOffset) +} +@(objc_type=RenderCommandEncoder, objc_name="drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_") +RenderCommandEncoder_drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_ :: proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexCount: ^NS.Object, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object, instanceCount: ^NS.Object) { + msgSend(nil, self, "drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:instanceCount:", primitiveType, indexCount, indexType, indexBuffer, indexBufferOffset, instanceCount) +} +@(objc_type=RenderCommandEncoder, objc_name="drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_baseVertex_baseInstance_") +RenderCommandEncoder_drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_baseVertex_baseInstance_ :: proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexCount: ^NS.Object, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseVertex: ^NS.Object, baseInstance: ^NS.Object) { + msgSend(nil, self, "drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:instanceCount:baseVertex:baseInstance:", primitiveType, indexCount, indexType, indexBuffer, indexBufferOffset, instanceCount, baseVertex, baseInstance) +} +@(objc_type=RenderCommandEncoder, objc_name="drawIndexedPrimitives_indexType_indexBuffer_indexBufferOffset_indirectBuffer_indirectBufferOffset_") +RenderCommandEncoder_drawIndexedPrimitives_indexType_indexBuffer_indexBufferOffset_indirectBuffer_indirectBufferOffset_ :: proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { + msgSend(nil, self, "drawIndexedPrimitives:indexType:indexBuffer:indexBufferOffset:indirectBuffer:indirectBufferOffset:", primitiveType, indexType, indexBuffer, indexBufferOffset, indirectBuffer, indirectBufferOffset) +} +@(objc_type=RenderCommandEncoder, objc_name="drawPatches_patchIndexBuffer_patchIndexBufferOffset_indirectBuffer_indirectBufferOffset_") +RenderCommandEncoder_drawPatches_patchIndexBuffer_patchIndexBufferOffset_indirectBuffer_indirectBufferOffset_ :: proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { + msgSend(nil, self, "drawPatches:patchIndexBuffer:patchIndexBufferOffset:indirectBuffer:indirectBufferOffset:", numberOfPatchControlPoints, patchIndexBuffer, patchIndexBufferOffset, indirectBuffer, indirectBufferOffset) +} +@(objc_type=RenderCommandEncoder, objc_name="drawPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_instanceCount_baseInstance_") +RenderCommandEncoder_drawPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_instanceCount_baseInstance_ :: proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: ^NS.Object, patchStart: ^NS.Object, patchCount: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object) { + msgSend(nil, self, "drawPatches:patchStart:patchCount:patchIndexBuffer:patchIndexBufferOffset:instanceCount:baseInstance:", numberOfPatchControlPoints, patchStart, patchCount, patchIndexBuffer, patchIndexBufferOffset, instanceCount, baseInstance) +} +@(objc_type=RenderCommandEncoder, objc_name="drawPrimitives_indirectBuffer_indirectBufferOffset_") +RenderCommandEncoder_drawPrimitives_indirectBuffer_indirectBufferOffset_ :: proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { + msgSend(nil, self, "drawPrimitives:indirectBuffer:indirectBufferOffset:", primitiveType, indirectBuffer, indirectBufferOffset) +} +@(objc_type=RenderCommandEncoder, objc_name="drawPrimitives_vertexStart_vertexCount_") +RenderCommandEncoder_drawPrimitives_vertexStart_vertexCount_ :: proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, vertexStart: ^NS.Object, vertexCount: ^NS.Object) { + msgSend(nil, self, "drawPrimitives:vertexStart:vertexCount:", primitiveType, vertexStart, vertexCount) +} +@(objc_type=RenderCommandEncoder, objc_name="drawPrimitives_vertexStart_vertexCount_instanceCount_") +RenderCommandEncoder_drawPrimitives_vertexStart_vertexCount_instanceCount_ :: proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, vertexStart: ^NS.Object, vertexCount: ^NS.Object, instanceCount: ^NS.Object) { + msgSend(nil, self, "drawPrimitives:vertexStart:vertexCount:instanceCount:", primitiveType, vertexStart, vertexCount, instanceCount) +} +@(objc_type=RenderCommandEncoder, objc_name="drawPrimitives_vertexStart_vertexCount_instanceCount_baseInstance_") +RenderCommandEncoder_drawPrimitives_vertexStart_vertexCount_instanceCount_baseInstance_ :: proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, vertexStart: ^NS.Object, vertexCount: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object) { + msgSend(nil, self, "drawPrimitives:vertexStart:vertexCount:instanceCount:baseInstance:", primitiveType, vertexStart, vertexCount, instanceCount, baseInstance) +} +@(objc_type=RenderCommandEncoder, objc_name="executeCommandsInBuffer_indirectBuffer_indirectBufferOffset_") +RenderCommandEncoder_executeCommandsInBuffer_indirectBuffer_indirectBufferOffset_ :: proc(self: ^RenderCommandEncoder, indirectCommandbuffer: ^NS.Object, indirectRangeBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { + msgSend(nil, self, "executeCommandsInBuffer:indirectBuffer:indirectBufferOffset:", indirectCommandbuffer, indirectRangeBuffer, indirectBufferOffset) +} +@(objc_type=RenderCommandEncoder, objc_name="executeCommandsInBuffer_withRange_") +RenderCommandEncoder_executeCommandsInBuffer_withRange_ :: proc(self: ^RenderCommandEncoder, indirectCommandBuffer: ^NS.Object, executionRange: NS.Range) { + msgSend(nil, self, "executeCommandsInBuffer:withRange:", indirectCommandBuffer, executionRange) +} +@(objc_type=RenderCommandEncoder, objc_name="memoryBarrierWithResources") +RenderCommandEncoder_memoryBarrierWithResources :: proc(self: ^RenderCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, after: RenderStages, before: RenderStages) { + msgSend(nil, self, "memoryBarrierWithResources:count:afterStages:beforeStages:", resources, count, after, before) +} +@(objc_type=RenderCommandEncoder, objc_name="memoryBarrierWithScope") +RenderCommandEncoder_memoryBarrierWithScope :: proc(self: ^RenderCommandEncoder, scope: BarrierScope, after: RenderStages, before: RenderStages) { + msgSend(nil, self, "memoryBarrierWithScope:afterStages:beforeStages:", scope, after, before) +} +@(objc_type=RenderCommandEncoder, objc_name="sampleCountersInBuffer") +RenderCommandEncoder_sampleCountersInBuffer :: proc(self: ^RenderCommandEncoder, sampleBuffer: ^NS.Object, sampleIndex: ^NS.Object, barrier: BOOL) { + msgSend(nil, self, "sampleCountersInBuffer:atSampleIndex:withBarrier:", sampleBuffer, sampleIndex, barrier) +} +@(objc_type=RenderCommandEncoder, objc_name="setBlendColorRed") +RenderCommandEncoder_setBlendColorRed :: proc(self: ^RenderCommandEncoder, red: f32, green: f32, blue: f32, alpha: f32) { + msgSend(nil, self, "setBlendColorRed:green:blue:alpha:", red, green, blue, alpha) +} +@(objc_type=RenderCommandEncoder, objc_name="setColorStoreAction") +RenderCommandEncoder_setColorStoreAction :: proc(self: ^RenderCommandEncoder, storeAction: StoreAction, colorAttachmentIndex: ^NS.Object) { + msgSend(nil, self, "setColorStoreAction:atIndex:", storeAction, colorAttachmentIndex) +} +@(objc_type=RenderCommandEncoder, objc_name="setColorStoreActionOptions") +RenderCommandEncoder_setColorStoreActionOptions :: proc(self: ^RenderCommandEncoder, storeActionOptions: StoreActionOptions, colorAttachmentIndex: ^NS.Object) { + msgSend(nil, self, "setColorStoreActionOptions:atIndex:", storeActionOptions, colorAttachmentIndex) +} +@(objc_type=RenderCommandEncoder, objc_name="setCullMode") +RenderCommandEncoder_setCullMode :: proc(self: ^RenderCommandEncoder, cullMode: CullMode) { + msgSend(nil, self, "setCullMode:", cullMode) +} +@(objc_type=RenderCommandEncoder, objc_name="setDepthBias") +RenderCommandEncoder_setDepthBias :: proc(self: ^RenderCommandEncoder, depthBias: f32, slopeScale: f32, clamp: f32) { + msgSend(nil, self, "setDepthBias:slopeScale:clamp:", depthBias, slopeScale, clamp) +} +@(objc_type=RenderCommandEncoder, objc_name="setDepthClipMode") +RenderCommandEncoder_setDepthClipMode :: proc(self: ^RenderCommandEncoder, depthClipMode: DepthClipMode) { + msgSend(nil, self, "setDepthClipMode:", depthClipMode) +} +@(objc_type=RenderCommandEncoder, objc_name="setDepthStencilState") +RenderCommandEncoder_setDepthStencilState :: proc(self: ^RenderCommandEncoder, depthStencilState: ^NS.Object) { + msgSend(nil, self, "setDepthStencilState:", depthStencilState) +} +@(objc_type=RenderCommandEncoder, objc_name="setDepthStoreAction") +RenderCommandEncoder_setDepthStoreAction :: proc(self: ^RenderCommandEncoder, storeAction: StoreAction) { + msgSend(nil, self, "setDepthStoreAction:", storeAction) +} +@(objc_type=RenderCommandEncoder, objc_name="setDepthStoreActionOptions") +RenderCommandEncoder_setDepthStoreActionOptions :: proc(self: ^RenderCommandEncoder, storeActionOptions: StoreActionOptions) { + msgSend(nil, self, "setDepthStoreActionOptions:", storeActionOptions) +} +@(objc_type=RenderCommandEncoder, objc_name="setFragmentBuffer") +RenderCommandEncoder_setFragmentBuffer :: proc(self: ^RenderCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setFragmentBuffer:offset:atIndex:", buffer, offset, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setFragmentBufferOffset") +RenderCommandEncoder_setFragmentBufferOffset :: proc(self: ^RenderCommandEncoder, offset: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setFragmentBufferOffset:atIndex:", offset, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setFragmentBuffers") +RenderCommandEncoder_setFragmentBuffers :: proc(self: ^RenderCommandEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { + msgSend(nil, self, "setFragmentBuffers:offsets:withRange:", buffers, offsets, range) +} +@(objc_type=RenderCommandEncoder, objc_name="setFragmentBytes") +RenderCommandEncoder_setFragmentBytes :: proc(self: ^RenderCommandEncoder, bytes: rawptr, length: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setFragmentBytes:length:atIndex:", bytes, length, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setFragmentSamplerState_atIndex_") +RenderCommandEncoder_setFragmentSamplerState_atIndex_ :: proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setFragmentSamplerState:atIndex:", sampler, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setFragmentSamplerState_lodMinClamp_lodMaxClamp_atIndex_") +RenderCommandEncoder_setFragmentSamplerState_lodMinClamp_lodMaxClamp_atIndex_ :: proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, lodMinClamp: f32, lodMaxClamp: f32, index: ^NS.Object) { + msgSend(nil, self, "setFragmentSamplerState:lodMinClamp:lodMaxClamp:atIndex:", sampler, lodMinClamp, lodMaxClamp, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setFragmentSamplerStates_lodMinClamps_lodMaxClamps_withRange_") +RenderCommandEncoder_setFragmentSamplerStates_lodMinClamps_lodMaxClamps_withRange_ :: proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { + msgSend(nil, self, "setFragmentSamplerStates:lodMinClamps:lodMaxClamps:withRange:", samplers, lodMinClamps, lodMaxClamps, range) +} +@(objc_type=RenderCommandEncoder, objc_name="setFragmentSamplerStates_withRange_") +RenderCommandEncoder_setFragmentSamplerStates_withRange_ :: proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setFragmentSamplerStates:withRange:", samplers, range) +} +@(objc_type=RenderCommandEncoder, objc_name="setFragmentTexture") +RenderCommandEncoder_setFragmentTexture :: proc(self: ^RenderCommandEncoder, texture: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setFragmentTexture:atIndex:", texture, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setFragmentTextures") +RenderCommandEncoder_setFragmentTextures :: proc(self: ^RenderCommandEncoder, textures: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setFragmentTextures:withRange:", textures, range) +} +@(objc_type=RenderCommandEncoder, objc_name="setFrontFacingWinding") +RenderCommandEncoder_setFrontFacingWinding :: proc(self: ^RenderCommandEncoder, frontFacingWinding: Winding) { + msgSend(nil, self, "setFrontFacingWinding:", frontFacingWinding) +} +@(objc_type=RenderCommandEncoder, objc_name="setRenderPipelineState") +RenderCommandEncoder_setRenderPipelineState :: proc(self: ^RenderCommandEncoder, pipelineState: ^NS.Object) { + msgSend(nil, self, "setRenderPipelineState:", pipelineState) +} +@(objc_type=RenderCommandEncoder, objc_name="setScissorRect") +RenderCommandEncoder_setScissorRect :: proc(self: ^RenderCommandEncoder, rect: ScissorRect) { + msgSend(nil, self, "setScissorRect:", rect) +} +@(objc_type=RenderCommandEncoder, objc_name="setScissorRects") +RenderCommandEncoder_setScissorRects :: proc(self: ^RenderCommandEncoder, scissorRects: ^ScissorRect, count: ^NS.Object) { + msgSend(nil, self, "setScissorRects:count:", scissorRects, count) +} +@(objc_type=RenderCommandEncoder, objc_name="setStencilFrontReferenceValue") +RenderCommandEncoder_setStencilFrontReferenceValue :: proc(self: ^RenderCommandEncoder, frontReferenceValue: u32, backReferenceValue: u32) { + msgSend(nil, self, "setStencilFrontReferenceValue:backReferenceValue:", frontReferenceValue, backReferenceValue) +} +@(objc_type=RenderCommandEncoder, objc_name="setStencilReferenceValue") +RenderCommandEncoder_setStencilReferenceValue :: proc(self: ^RenderCommandEncoder, referenceValue: u32) { + msgSend(nil, self, "setStencilReferenceValue:", referenceValue) +} +@(objc_type=RenderCommandEncoder, objc_name="setStencilStoreAction") +RenderCommandEncoder_setStencilStoreAction :: proc(self: ^RenderCommandEncoder, storeAction: StoreAction) { + msgSend(nil, self, "setStencilStoreAction:", storeAction) +} +@(objc_type=RenderCommandEncoder, objc_name="setStencilStoreActionOptions") +RenderCommandEncoder_setStencilStoreActionOptions :: proc(self: ^RenderCommandEncoder, storeActionOptions: StoreActionOptions) { + msgSend(nil, self, "setStencilStoreActionOptions:", storeActionOptions) +} +@(objc_type=RenderCommandEncoder, objc_name="setTessellationFactorBuffer") +RenderCommandEncoder_setTessellationFactorBuffer :: proc(self: ^RenderCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, instanceStride: ^NS.Object) { + msgSend(nil, self, "setTessellationFactorBuffer:offset:instanceStride:", buffer, offset, instanceStride) +} +@(objc_type=RenderCommandEncoder, objc_name="setTessellationFactorScale") +RenderCommandEncoder_setTessellationFactorScale :: proc(self: ^RenderCommandEncoder, scale: f32) { + msgSend(nil, self, "setTessellationFactorScale:", scale) +} +@(objc_type=RenderCommandEncoder, objc_name="setThreadgroupMemoryLength") +RenderCommandEncoder_setThreadgroupMemoryLength :: proc(self: ^RenderCommandEncoder, length: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setThreadgroupMemoryLength:offset:atIndex:", length, offset, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setTileBuffer") +RenderCommandEncoder_setTileBuffer :: proc(self: ^RenderCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setTileBuffer:offset:atIndex:", buffer, offset, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setTileBufferOffset") +RenderCommandEncoder_setTileBufferOffset :: proc(self: ^RenderCommandEncoder, offset: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setTileBufferOffset:atIndex:", offset, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setTileBuffers") +RenderCommandEncoder_setTileBuffers :: proc(self: ^RenderCommandEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { + msgSend(nil, self, "setTileBuffers:offsets:withRange:", buffers, offsets, range) +} +@(objc_type=RenderCommandEncoder, objc_name="setTileBytes") +RenderCommandEncoder_setTileBytes :: proc(self: ^RenderCommandEncoder, bytes: rawptr, length: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setTileBytes:length:atIndex:", bytes, length, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setTileSamplerState_atIndex_") +RenderCommandEncoder_setTileSamplerState_atIndex_ :: proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setTileSamplerState:atIndex:", sampler, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setTileSamplerState_lodMinClamp_lodMaxClamp_atIndex_") +RenderCommandEncoder_setTileSamplerState_lodMinClamp_lodMaxClamp_atIndex_ :: proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, lodMinClamp: f32, lodMaxClamp: f32, index: ^NS.Object) { + msgSend(nil, self, "setTileSamplerState:lodMinClamp:lodMaxClamp:atIndex:", sampler, lodMinClamp, lodMaxClamp, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setTileSamplerStates_lodMinClamps_lodMaxClamps_withRange_") +RenderCommandEncoder_setTileSamplerStates_lodMinClamps_lodMaxClamps_withRange_ :: proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { + msgSend(nil, self, "setTileSamplerStates:lodMinClamps:lodMaxClamps:withRange:", samplers, lodMinClamps, lodMaxClamps, range) +} +@(objc_type=RenderCommandEncoder, objc_name="setTileSamplerStates_withRange_") +RenderCommandEncoder_setTileSamplerStates_withRange_ :: proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setTileSamplerStates:withRange:", samplers, range) +} +@(objc_type=RenderCommandEncoder, objc_name="setTileTexture") +RenderCommandEncoder_setTileTexture :: proc(self: ^RenderCommandEncoder, texture: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setTileTexture:atIndex:", texture, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setTileTextures") +RenderCommandEncoder_setTileTextures :: proc(self: ^RenderCommandEncoder, textures: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setTileTextures:withRange:", textures, range) +} +@(objc_type=RenderCommandEncoder, objc_name="setTriangleFillMode") +RenderCommandEncoder_setTriangleFillMode :: proc(self: ^RenderCommandEncoder, fillMode: TriangleFillMode) { + msgSend(nil, self, "setTriangleFillMode:", fillMode) +} +@(objc_type=RenderCommandEncoder, objc_name="setVertexAmplificationCount") +RenderCommandEncoder_setVertexAmplificationCount :: proc(self: ^RenderCommandEncoder, count: ^NS.Object, viewMappings: ^VertexAmplificationViewMapping) { + msgSend(nil, self, "setVertexAmplificationCount:viewMappings:", count, viewMappings) +} +@(objc_type=RenderCommandEncoder, objc_name="setVertexBuffer") +RenderCommandEncoder_setVertexBuffer :: proc(self: ^RenderCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setVertexBuffer:offset:atIndex:", buffer, offset, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setVertexBufferOffset") +RenderCommandEncoder_setVertexBufferOffset :: proc(self: ^RenderCommandEncoder, offset: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setVertexBufferOffset:atIndex:", offset, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setVertexBuffers") +RenderCommandEncoder_setVertexBuffers :: proc(self: ^RenderCommandEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { + msgSend(nil, self, "setVertexBuffers:offsets:withRange:", buffers, offsets, range) +} +@(objc_type=RenderCommandEncoder, objc_name="setVertexBytes") +RenderCommandEncoder_setVertexBytes :: proc(self: ^RenderCommandEncoder, bytes: rawptr, length: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setVertexBytes:length:atIndex:", bytes, length, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setVertexSamplerState_atIndex_") +RenderCommandEncoder_setVertexSamplerState_atIndex_ :: proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setVertexSamplerState:atIndex:", sampler, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setVertexSamplerState_lodMinClamp_lodMaxClamp_atIndex_") +RenderCommandEncoder_setVertexSamplerState_lodMinClamp_lodMaxClamp_atIndex_ :: proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, lodMinClamp: f32, lodMaxClamp: f32, index: ^NS.Object) { + msgSend(nil, self, "setVertexSamplerState:lodMinClamp:lodMaxClamp:atIndex:", sampler, lodMinClamp, lodMaxClamp, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setVertexSamplerStates_lodMinClamps_lodMaxClamps_withRange_") +RenderCommandEncoder_setVertexSamplerStates_lodMinClamps_lodMaxClamps_withRange_ :: proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { + msgSend(nil, self, "setVertexSamplerStates:lodMinClamps:lodMaxClamps:withRange:", samplers, lodMinClamps, lodMaxClamps, range) +} +@(objc_type=RenderCommandEncoder, objc_name="setVertexSamplerStates_withRange_") +RenderCommandEncoder_setVertexSamplerStates_withRange_ :: proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setVertexSamplerStates:withRange:", samplers, range) +} +@(objc_type=RenderCommandEncoder, objc_name="setVertexTexture") +RenderCommandEncoder_setVertexTexture :: proc(self: ^RenderCommandEncoder, texture: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setVertexTexture:atIndex:", texture, index) +} +@(objc_type=RenderCommandEncoder, objc_name="setVertexTextures") +RenderCommandEncoder_setVertexTextures :: proc(self: ^RenderCommandEncoder, textures: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setVertexTextures:withRange:", textures, range) +} +@(objc_type=RenderCommandEncoder, objc_name="setViewport") +RenderCommandEncoder_setViewport :: proc(self: ^RenderCommandEncoder, viewport: Viewport) { + msgSend(nil, self, "setViewport:", viewport) +} +@(objc_type=RenderCommandEncoder, objc_name="setViewports") +RenderCommandEncoder_setViewports :: proc(self: ^RenderCommandEncoder, viewports: ^Viewport, count: ^NS.Object) { + msgSend(nil, self, "setViewports:count:", viewports, count) +} +@(objc_type=RenderCommandEncoder, objc_name="setVisibilityResultMode") +RenderCommandEncoder_setVisibilityResultMode :: proc(self: ^RenderCommandEncoder, mode: VisibilityResultMode, offset: ^NS.Object) { + msgSend(nil, self, "setVisibilityResultMode:offset:", mode, offset) +} +@(objc_type=RenderCommandEncoder, objc_name="textureBarrier") +RenderCommandEncoder_textureBarrier :: proc(self: ^RenderCommandEncoder) { + msgSend(nil, self, "textureBarrier") +} +@(objc_type=RenderCommandEncoder, objc_name="tileHeight") +RenderCommandEncoder_tileHeight :: proc(self: ^RenderCommandEncoder) -> NS.Integer { + return msgSend(NS.Integer, self, "tileHeight") +} +@(objc_type=RenderCommandEncoder, objc_name="tileWidth") +RenderCommandEncoder_tileWidth :: proc(self: ^RenderCommandEncoder) -> NS.Integer { + return msgSend(NS.Integer, self, "tileWidth") +} +@(objc_type=RenderCommandEncoder, objc_name="updateFence") +RenderCommandEncoder_updateFence :: proc(self: ^RenderCommandEncoder, fence: ^NS.Object, stages: RenderStages) { + msgSend(nil, self, "updateFence:afterStages:", fence, stages) +} +@(objc_type=RenderCommandEncoder, objc_name="useHeap") +RenderCommandEncoder_useHeap :: proc(self: ^RenderCommandEncoder, heap: ^NS.Object) { + msgSend(nil, self, "useHeap:", heap) +} +@(objc_type=RenderCommandEncoder, objc_name="useHeap_stages_") +RenderCommandEncoder_useHeap_stages_ :: proc(self: ^RenderCommandEncoder, heap: ^NS.Object, stages: RenderStages) { + msgSend(nil, self, "useHeap:stages:", heap, stages) +} +@(objc_type=RenderCommandEncoder, objc_name="useHeaps") +RenderCommandEncoder_useHeaps :: proc(self: ^RenderCommandEncoder, heaps: ^^NS.Object, count: ^NS.Object) { + msgSend(nil, self, "useHeaps:count:", heaps, count) +} +@(objc_type=RenderCommandEncoder, objc_name="useHeaps_count_stages_") +RenderCommandEncoder_useHeaps_count_stages_ :: proc(self: ^RenderCommandEncoder, heaps: ^^NS.Object, count: ^NS.Object, stages: RenderStages) { + msgSend(nil, self, "useHeaps:count:stages:", heaps, count, stages) +} +@(objc_type=RenderCommandEncoder, objc_name="useResource") +RenderCommandEncoder_useResource :: proc(self: ^RenderCommandEncoder, resource: ^NS.Object, usage: ResourceUsage) { + msgSend(nil, self, "useResource:usage:", resource, usage) +} +@(objc_type=RenderCommandEncoder, objc_name="useResource_usage_stages_") +RenderCommandEncoder_useResource_usage_stages_ :: proc(self: ^RenderCommandEncoder, resource: ^NS.Object, usage: ResourceUsage, stages: RenderStages) { + msgSend(nil, self, "useResource:usage:stages:", resource, usage, stages) +} +@(objc_type=RenderCommandEncoder, objc_name="useResources") +RenderCommandEncoder_useResources :: proc(self: ^RenderCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, usage: ResourceUsage) { + msgSend(nil, self, "useResources:count:usage:", resources, count, usage) +} +@(objc_type=RenderCommandEncoder, objc_name="useResources_count_usage_stages_") +RenderCommandEncoder_useResources_count_usage_stages_ :: proc(self: ^RenderCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, usage: ResourceUsage, stages: RenderStages) { + msgSend(nil, self, "useResources:count:usage:stages:", resources, count, usage, stages) +} +@(objc_type=RenderCommandEncoder, objc_name="waitForFence") +RenderCommandEncoder_waitForFence :: proc(self: ^RenderCommandEncoder, fence: ^NS.Object, stages: RenderStages) { + msgSend(nil, self, "waitForFence:beforeStages:", fence, stages) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + RenderPipelineState +Class Methods: +Methods: + device + imageblockMemoryLengthForDimensions + imageblockSampleLength + label + maxTotalThreadsPerThreadgroup + supportIndirectCommandBuffers + threadgroupSizeMatchesTileSize +*/ +@(objc_class="MTLRenderPipelineState") +RenderPipelineState :: struct { using _: NS.Object } + +@(objc_type=RenderPipelineState, objc_name="device") +RenderPipelineState_device :: proc(self: ^RenderPipelineState) -> ^RenderPipelineState { + return msgSend(^RenderPipelineState, self, "device") +} +@(objc_type=RenderPipelineState, objc_name="imageblockMemoryLengthForDimensions") +RenderPipelineState_imageblockMemoryLengthForDimensions :: proc(self: ^RenderPipelineState, imageblockDimensions: Size) -> ^RenderPipelineState { + return msgSend(^RenderPipelineState, self, "imageblockMemoryLengthForDimensions:", imageblockDimensions) +} +@(objc_type=RenderPipelineState, objc_name="imageblockSampleLength") +RenderPipelineState_imageblockSampleLength :: proc(self: ^RenderPipelineState) -> NS.Integer { + return msgSend(NS.Integer, self, "imageblockSampleLength") +} +@(objc_type=RenderPipelineState, objc_name="label") +RenderPipelineState_label :: proc(self: ^RenderPipelineState) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=RenderPipelineState, objc_name="maxTotalThreadsPerThreadgroup") +RenderPipelineState_maxTotalThreadsPerThreadgroup :: proc(self: ^RenderPipelineState) -> NS.Integer { + return msgSend(NS.Integer, self, "maxTotalThreadsPerThreadgroup") +} +@(objc_type=RenderPipelineState, objc_name="supportIndirectCommandBuffers") +RenderPipelineState_supportIndirectCommandBuffers :: proc(self: ^RenderPipelineState) -> BOOL { + return msgSend(BOOL, self, "supportIndirectCommandBuffers") +} +@(objc_type=RenderPipelineState, objc_name="threadgroupSizeMatchesTileSize") +RenderPipelineState_threadgroupSizeMatchesTileSize :: proc(self: ^RenderPipelineState) -> BOOL { + return msgSend(BOOL, self, "threadgroupSizeMatchesTileSize") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + Resource +Class Methods: +Methods: + allocatedSize + cpuCacheMode + device + hazardTrackingMode + heap + heapOffset + isAliasable + label + makeAliasable + resourceOptions + setLabel + setPurgeableState + storageMode +*/ +@(objc_class="MTLResource") +Resource :: struct { using _: NS.Object } + +@(objc_type=Resource, objc_name="allocatedSize") +Resource_allocatedSize :: proc(self: ^Resource) -> NS.Integer { + return msgSend(NS.Integer, self, "allocatedSize") +} +@(objc_type=Resource, objc_name="cpuCacheMode") +Resource_cpuCacheMode :: proc(self: ^Resource) -> CPUCacheMode { + return msgSend(CPUCacheMode, self, "cpuCacheMode") +} +@(objc_type=Resource, objc_name="device") +Resource_device :: proc(self: ^Resource) -> ^Resource { + return msgSend(^Resource, self, "device") +} +@(objc_type=Resource, objc_name="hazardTrackingMode") +Resource_hazardTrackingMode :: proc(self: ^Resource) -> HazardTrackingMode { + return msgSend(HazardTrackingMode, self, "hazardTrackingMode") +} +@(objc_type=Resource, objc_name="heap") +Resource_heap :: proc(self: ^Resource) -> ^Resource { + return msgSend(^Resource, self, "heap") +} +@(objc_type=Resource, objc_name="heapOffset") +Resource_heapOffset :: proc(self: ^Resource) -> NS.Integer { + return msgSend(NS.Integer, self, "heapOffset") +} +@(objc_type=Resource, objc_name="isAliasable") +Resource_isAliasable :: proc(self: ^Resource) -> BOOL { + return msgSend(BOOL, self, "isAliasable") +} +@(objc_type=Resource, objc_name="label") +Resource_label :: proc(self: ^Resource) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} +@(objc_type=Resource, objc_name="makeAliasable") +Resource_makeAliasable :: proc(self: ^Resource) { + msgSend(nil, self, "makeAliasable") +} +@(objc_type=Resource, objc_name="resourceOptions") +Resource_resourceOptions :: proc(self: ^Resource) -> ResourceOptions { + return msgSend(ResourceOptions, self, "resourceOptions") +} +@(objc_type=Resource, objc_name="setLabel") +Resource_setLabel :: proc(self: ^Resource, label: ^NS.String) { + msgSend(nil, self, "setLabel:", label) +} +@(objc_type=Resource, objc_name="setPurgeableState") +Resource_setPurgeableState :: proc(self: ^Resource, state: PurgeableState) -> PurgeableState { + return msgSend(PurgeableState, self, "setPurgeableState:", state) +} +@(objc_type=Resource, objc_name="storageMode") +Resource_storageMode :: proc(self: ^Resource) -> StorageMode { + return msgSend(StorageMode, self, "storageMode") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + ResourceStateCommandEncoder +Class Methods: +Methods: + updateFence + updateTextureMapping + updateTextureMapping + updateTextureMappings + waitForFence +*/ +@(objc_class="MTLResourceStateCommandEncoder") +ResourceStateCommandEncoder :: struct { using _: NS.Object } + +@(objc_type=ResourceStateCommandEncoder, objc_name="updateFence") +ResourceStateCommandEncoder_updateFence :: proc(self: ^ResourceStateCommandEncoder, fence: ^NS.Object) { + msgSend(nil, self, "updateFence:", fence) +} +@(objc_type=ResourceStateCommandEncoder, objc_name="updateTextureMapping_mode_indirectBuffer_indirectBufferOffset_") +ResourceStateCommandEncoder_updateTextureMapping_mode_indirectBuffer_indirectBufferOffset_ :: proc(self: ^ResourceStateCommandEncoder, texture: ^NS.Object, mode: SparseTextureMappingMode, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { + msgSend(nil, self, "updateTextureMapping:mode:indirectBuffer:indirectBufferOffset:", texture, mode, indirectBuffer, indirectBufferOffset) +} +@(objc_type=ResourceStateCommandEncoder, objc_name="updateTextureMapping_mode_region_mipLevel_slice_") +ResourceStateCommandEncoder_updateTextureMapping_mode_region_mipLevel_slice_ :: proc(self: ^ResourceStateCommandEncoder, texture: ^NS.Object, mode: SparseTextureMappingMode, region: Region, mipLevel: NS.Integer, slice: NS.Integer) { + msgSend(nil, self, "updateTextureMapping:mode:region:mipLevel:slice:", texture, mode, region, mipLevel, slice) +} +@(objc_type=ResourceStateCommandEncoder, objc_name="updateTextureMappings") +ResourceStateCommandEncoder_updateTextureMappings :: proc(self: ^ResourceStateCommandEncoder, texture: ^NS.Object, mode: SparseTextureMappingMode, regions: ^Region, mipLevels: NS.Integer, slices: NS.Integer, numRegions: ^NS.Object) { + msgSend(nil, self, "updateTextureMappings:mode:regions:mipLevels:slices:numRegions:", texture, mode, regions, mipLevels, slices, numRegions) +} +@(objc_type=ResourceStateCommandEncoder, objc_name="waitForFence") +ResourceStateCommandEncoder_waitForFence :: proc(self: ^ResourceStateCommandEncoder, fence: ^NS.Object) { + msgSend(nil, self, "waitForFence:", fence) +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + SamplerState +Class Methods: +Methods: + device + label +*/ +@(objc_class="MTLSamplerState") +SamplerState :: struct { using _: NS.Object } + +@(objc_type=SamplerState, objc_name="device") +SamplerState_device :: proc(self: ^SamplerState) -> ^SamplerState { + return msgSend(^SamplerState, self, "device") +} +@(objc_type=SamplerState, objc_name="label") +SamplerState_label :: proc(self: ^SamplerState) -> ^NS.String { + return msgSend(^NS.String, self, "label") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + SharedEvent +Class Methods: +Methods: + newSharedEventHandle + notifyListener + setSignaledValue + signaledValue +*/ +@(objc_class="MTLSharedEvent") +SharedEvent :: struct { using _: NS.Object } + +@(objc_type=SharedEvent, objc_name="newSharedEventHandle") +SharedEvent_newSharedEventHandle :: proc(self: ^SharedEvent) -> ^SharedEventHandle { + return msgSend(^SharedEventHandle, self, "newSharedEventHandle") +} +@(objc_type=SharedEvent, objc_name="notifyListener") +SharedEvent_notifyListener :: proc(self: ^SharedEvent, listener: ^SharedEventListener, value: u64, block: SharedEventNotificationBlock) { + msgSend(nil, self, "notifyListener:atValue:block:", listener, value, block) +} +@(objc_type=SharedEvent, objc_name="setSignaledValue") +SharedEvent_setSignaledValue :: proc(self: ^SharedEvent, signaledValue: u64) { + msgSend(nil, self, "setSignaledValue:", signaledValue) +} +@(objc_type=SharedEvent, objc_name="signaledValue") +SharedEvent_signaledValue :: proc(self: ^SharedEvent) -> u64 { + return msgSend(u64, self, "signaledValue") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + Texture +Class Methods: +Methods: + allowGPUOptimizedContents + arrayLength + buffer + bufferBytesPerRow + bufferOffset + depth + firstMipmapInTail + getBytes + getBytes + height + iosurface + iosurfacePlane + isFramebufferOnly + isShareable + isSparse + mipmapLevelCount + newRemoteTextureViewForDevice + newSharedTextureHandle + newTextureViewWithPixelFormat + newTextureViewWithPixelFormat + newTextureViewWithPixelFormat + parentRelativeLevel + parentRelativeSlice + parentTexture + pixelFormat + remoteStorageTexture + replaceRegion + replaceRegion + rootResource + sampleCount + swizzle + tailSizeInBytes + textureType + usage + width +*/ +@(objc_class="MTLTexture") +Texture :: struct { using _: NS.Object } + +@(objc_type=Texture, objc_name="allowGPUOptimizedContents") +Texture_allowGPUOptimizedContents :: proc(self: ^Texture) -> BOOL { + return msgSend(BOOL, self, "allowGPUOptimizedContents") +} +@(objc_type=Texture, objc_name="arrayLength") +Texture_arrayLength :: proc(self: ^Texture) -> NS.Integer { + return msgSend(NS.Integer, self, "arrayLength") +} +@(objc_type=Texture, objc_name="buffer") +Texture_buffer :: proc(self: ^Texture) -> ^Texture { + return msgSend(^Texture, self, "buffer") +} +@(objc_type=Texture, objc_name="bufferBytesPerRow") +Texture_bufferBytesPerRow :: proc(self: ^Texture) -> NS.Integer { + return msgSend(NS.Integer, self, "bufferBytesPerRow") +} +@(objc_type=Texture, objc_name="bufferOffset") +Texture_bufferOffset :: proc(self: ^Texture) -> NS.Integer { + return msgSend(NS.Integer, self, "bufferOffset") +} +@(objc_type=Texture, objc_name="depth") +Texture_depth :: proc(self: ^Texture) -> NS.Integer { + return msgSend(NS.Integer, self, "depth") +} +@(objc_type=Texture, objc_name="firstMipmapInTail") +Texture_firstMipmapInTail :: proc(self: ^Texture) -> NS.Integer { + return msgSend(NS.Integer, self, "firstMipmapInTail") +} +@(objc_type=Texture, objc_name="getBytes_bytesPerRow_bytesPerImage_fromRegion_mipmapLevel_slice_") +Texture_getBytes_bytesPerRow_bytesPerImage_fromRegion_mipmapLevel_slice_ :: proc(self: ^Texture, pixelBytes: rawptr, bytesPerRow: ^NS.Object, bytesPerImage: ^NS.Object, region: Region, level: ^NS.Object, slice: ^NS.Object) { + msgSend(nil, self, "getBytes:bytesPerRow:bytesPerImage:fromRegion:mipmapLevel:slice:", pixelBytes, bytesPerRow, bytesPerImage, region, level, slice) +} +@(objc_type=Texture, objc_name="getBytes_bytesPerRow_fromRegion_mipmapLevel_") +Texture_getBytes_bytesPerRow_fromRegion_mipmapLevel_ :: proc(self: ^Texture, pixelBytes: rawptr, bytesPerRow: ^NS.Object, region: Region, level: ^NS.Object) { + msgSend(nil, self, "getBytes:bytesPerRow:fromRegion:mipmapLevel:", pixelBytes, bytesPerRow, region, level) +} +@(objc_type=Texture, objc_name="height") +Texture_height :: proc(self: ^Texture) -> NS.Integer { + return msgSend(NS.Integer, self, "height") +} +@(objc_type=Texture, objc_name="iosurface") +Texture_iosurface :: proc(self: ^Texture) -> IOSurfaceRef { + return msgSend(IOSurfaceRef, self, "iosurface") +} +@(objc_type=Texture, objc_name="iosurfacePlane") +Texture_iosurfacePlane :: proc(self: ^Texture) -> NS.Integer { + return msgSend(NS.Integer, self, "iosurfacePlane") +} +@(objc_type=Texture, objc_name="isFramebufferOnly") +Texture_isFramebufferOnly :: proc(self: ^Texture) -> BOOL { + return msgSend(BOOL, self, "isFramebufferOnly") +} +@(objc_type=Texture, objc_name="isShareable") +Texture_isShareable :: proc(self: ^Texture) -> BOOL { + return msgSend(BOOL, self, "isShareable") +} +@(objc_type=Texture, objc_name="isSparse") +Texture_isSparse :: proc(self: ^Texture) -> BOOL { + return msgSend(BOOL, self, "isSparse") +} +@(objc_type=Texture, objc_name="mipmapLevelCount") +Texture_mipmapLevelCount :: proc(self: ^Texture) -> NS.Integer { + return msgSend(NS.Integer, self, "mipmapLevelCount") +} +@(objc_type=Texture, objc_name="newRemoteTextureViewForDevice") +Texture_newRemoteTextureViewForDevice :: proc(self: ^Texture, device: ^NS.Object) -> ^Texture { + return msgSend(^Texture, self, "newRemoteTextureViewForDevice:", device) +} +@(objc_type=Texture, objc_name="newSharedTextureHandle") +Texture_newSharedTextureHandle :: proc(self: ^Texture) -> ^SharedTextureHandle { + return msgSend(^SharedTextureHandle, self, "newSharedTextureHandle") +} +@(objc_type=Texture, objc_name="newTextureViewWithPixelFormat") +Texture_newTextureViewWithPixelFormat :: proc(self: ^Texture, pixelFormat: PixelFormat) -> ^Texture { + return msgSend(^Texture, self, "newTextureViewWithPixelFormat:", pixelFormat) +} +@(objc_type=Texture, objc_name="newTextureViewWithPixelFormat_textureType_levels_slices_") +Texture_newTextureViewWithPixelFormat_textureType_levels_slices_ :: proc(self: ^Texture, pixelFormat: PixelFormat, textureType: TextureType, levelRange: NS.Range, sliceRange: NS.Range) -> ^Texture { + return msgSend(^Texture, self, "newTextureViewWithPixelFormat:textureType:levels:slices:", pixelFormat, textureType, levelRange, sliceRange) +} +@(objc_type=Texture, objc_name="newTextureViewWithPixelFormat_textureType_levels_slices_swizzle_") +Texture_newTextureViewWithPixelFormat_textureType_levels_slices_swizzle_ :: proc(self: ^Texture, pixelFormat: PixelFormat, textureType: TextureType, levelRange: NS.Range, sliceRange: NS.Range, swizzle: TextureSwizzleChannels) -> ^Texture { + return msgSend(^Texture, self, "newTextureViewWithPixelFormat:textureType:levels:slices:swizzle:", pixelFormat, textureType, levelRange, sliceRange, swizzle) +} +@(objc_type=Texture, objc_name="parentRelativeLevel") +Texture_parentRelativeLevel :: proc(self: ^Texture) -> NS.Integer { + return msgSend(NS.Integer, self, "parentRelativeLevel") +} +@(objc_type=Texture, objc_name="parentRelativeSlice") +Texture_parentRelativeSlice :: proc(self: ^Texture) -> NS.Integer { + return msgSend(NS.Integer, self, "parentRelativeSlice") +} +@(objc_type=Texture, objc_name="parentTexture") +Texture_parentTexture :: proc(self: ^Texture) -> ^Texture { + return msgSend(^Texture, self, "parentTexture") +} +@(objc_type=Texture, objc_name="pixelFormat") +Texture_pixelFormat :: proc(self: ^Texture) -> PixelFormat { + return msgSend(PixelFormat, self, "pixelFormat") +} +@(objc_type=Texture, objc_name="remoteStorageTexture") +Texture_remoteStorageTexture :: proc(self: ^Texture) -> ^Texture { + return msgSend(^Texture, self, "remoteStorageTexture") +} +@(objc_type=Texture, objc_name="replaceRegion_mipmapLevel_slice_withBytes_bytesPerRow_bytesPerImage_") +Texture_replaceRegion_mipmapLevel_slice_withBytes_bytesPerRow_bytesPerImage_ :: proc(self: ^Texture, region: Region, level: ^NS.Object, slice: ^NS.Object, pixelBytes: rawptr, bytesPerRow: ^NS.Object, bytesPerImage: ^NS.Object) { + msgSend(nil, self, "replaceRegion:mipmapLevel:slice:withBytes:bytesPerRow:bytesPerImage:", region, level, slice, pixelBytes, bytesPerRow, bytesPerImage) +} +@(objc_type=Texture, objc_name="replaceRegion_mipmapLevel_withBytes_bytesPerRow_") +Texture_replaceRegion_mipmapLevel_withBytes_bytesPerRow_ :: proc(self: ^Texture, region: Region, level: ^NS.Object, pixelBytes: rawptr, bytesPerRow: ^NS.Object) { + msgSend(nil, self, "replaceRegion:mipmapLevel:withBytes:bytesPerRow:", region, level, pixelBytes, bytesPerRow) +} +@(objc_type=Texture, objc_name="rootResource") +Texture_rootResource :: proc(self: ^Texture) -> ^Texture { + return msgSend(^Texture, self, "rootResource") +} +@(objc_type=Texture, objc_name="sampleCount") +Texture_sampleCount :: proc(self: ^Texture) -> NS.Integer { + return msgSend(NS.Integer, self, "sampleCount") +} +@(objc_type=Texture, objc_name="swizzle") +Texture_swizzle :: proc(self: ^Texture) -> TextureSwizzleChannels { + return msgSend(TextureSwizzleChannels, self, "swizzle") +} +@(objc_type=Texture, objc_name="tailSizeInBytes") +Texture_tailSizeInBytes :: proc(self: ^Texture) -> NS.Integer { + return msgSend(NS.Integer, self, "tailSizeInBytes") +} +@(objc_type=Texture, objc_name="textureType") +Texture_textureType :: proc(self: ^Texture) -> TextureType { + return msgSend(TextureType, self, "textureType") +} +@(objc_type=Texture, objc_name="usage") +Texture_usage :: proc(self: ^Texture) -> TextureUsage { + return msgSend(TextureUsage, self, "usage") +} +@(objc_type=Texture, objc_name="width") +Texture_width :: proc(self: ^Texture) -> NS.Integer { + return msgSend(NS.Integer, self, "width") +} + +//////////////////////////////////////////////////////////////////////////////// + +/* +Class: + VisibleFunctionTable +Class Methods: +Methods: + setFunction + setFunctions +*/ +@(objc_class="MTLVisibleFunctionTable") +VisibleFunctionTable :: struct { using _: NS.Object } + +@(objc_type=VisibleFunctionTable, objc_name="setFunction") +VisibleFunctionTable_setFunction :: proc(self: ^VisibleFunctionTable, function: ^NS.Object, index: ^NS.Object) { + msgSend(nil, self, "setFunction:atIndex:", function, index) +} +@(objc_type=VisibleFunctionTable, objc_name="setFunctions") +VisibleFunctionTable_setFunctions :: proc(self: ^VisibleFunctionTable, functions: ^^NS.Object, range: NS.Range) { + msgSend(nil, self, "setFunctions:withRange:", functions, range) +} diff --git a/vendor/Metal/MetalEnums.odin b/vendor/Metal/MetalEnums.odin new file mode 100644 index 000000000..a0bd7b970 --- /dev/null +++ b/vendor/Metal/MetalEnums.odin @@ -0,0 +1,961 @@ +package objc_Metal + +import NS "core:sys/darwin/Foundation" + +AccelerationStructureUsage :: distinct bit_set[AccelerationStructureUsageFlag; NS.UInteger] +AccelerationStructureUsageFlag :: enum NS.UInteger { + Refit = 0, + PreferFastBuild = 1, + ExtendedLimits = 2, +} + +AccelerationStructureInstanceOptions :: distinct bit_set[AccelerationStructureInstanceOption; u32] +AccelerationStructureInstanceOption :: enum u32 { + DisableTriangleCulling = 0, + TriangleFrontFacingWindingCounterClockwise = 1, + Opaque = 2, + NonOpaque = 3, +} + + +DataType :: enum NS.UInteger { + None = 0, + Struct = 1, + Array = 2, + Float = 3, + Float2 = 4, + Float3 = 5, + Float4 = 6, + Float2x2 = 7, + Float2x3 = 8, + Float2x4 = 9, + Float3x2 = 10, + Float3x3 = 11, + Float3x4 = 12, + Float4x2 = 13, + Float4x3 = 14, + Float4x4 = 15, + Half = 16, + Half2 = 17, + Half3 = 18, + Half4 = 19, + Half2x2 = 20, + Half2x3 = 21, + Half2x4 = 22, + Half3x2 = 23, + Half3x3 = 24, + Half3x4 = 25, + Half4x2 = 26, + Half4x3 = 27, + Half4x4 = 28, + Int = 29, + Int2 = 30, + Int3 = 31, + Int4 = 32, + UInt = 33, + UInt2 = 34, + UInt3 = 35, + UInt4 = 36, + Short = 37, + Short2 = 38, + Short3 = 39, + Short4 = 40, + UShort = 41, + UShort2 = 42, + UShort3 = 43, + UShort4 = 44, + Char = 45, + Char2 = 46, + Char3 = 47, + Char4 = 48, + UChar = 49, + UChar2 = 50, + UChar3 = 51, + UChar4 = 52, + Bool = 53, + Bool2 = 54, + Bool3 = 55, + Bool4 = 56, + Texture = 58, + Sampler = 59, + Pointer = 60, + R8Unorm = 62, + R8Snorm = 63, + R16Unorm = 64, + R16Snorm = 65, + RG8Unorm = 66, + RG8Snorm = 67, + RG16Unorm = 68, + RG16Snorm = 69, + RGBA8Unorm = 70, + RGBA8Unorm_sRGB = 71, + RGBA8Snorm = 72, + RGBA16Unorm = 73, + RGBA16Snorm = 74, + RGB10A2Unorm = 75, + RG11B10Float = 76, + RGB9E5Float = 77, + RenderPipeline = 78, + ComputePipeline = 79, + IndirectCommandBuffer = 80, + Long = 81, + Long2 = 82, + Long3 = 83, + Long4 = 84, + ULong = 85, + ULong2 = 86, + ULong3 = 87, + ULong4 = 88, + VisibleFunctionTable = 115, + IntersectionFunctionTable = 116, + PrimitiveAccelerationStructure = 117, + InstanceAccelerationStructure = 118, +} + +ArgumentType :: enum NS.UInteger { + Buffer = 0, + ThreadgroupMemory = 1, + Texture = 2, + Sampler = 3, + ImageblockData = 16, + Imageblock = 17, + VisibleFunctionTable = 24, + PrimitiveAccelerationStructure = 25, + InstanceAccelerationStructure = 26, + IntersectionFunctionTable = 27, +} + +ArgumentAccess :: enum NS.UInteger { + ReadOnly = 0, + ReadWrite = 1, + WriteOnly = 2, +} + + +BinaryArchiveError :: enum NS.UInteger { + None = 0, + InvalidFile = 1, + UnexpectedElement = 2, + CompilationFailure = 3, +} + +BlitOptionFlag :: enum NS.UInteger { + DepthFromDepthStencil = 0, + StencilFromDepthStencil = 1, + RowLinearPVRTC = 2, +} +BlitOption :: distinct bit_set[BlitOptionFlag; NS.UInteger] + +CaptureError :: enum NS.Integer { + NotSupported = 1, + AlreadyCapturing = 2, + InvalidDescriptor = 3, +} + +CaptureDestination :: enum NS.Integer { + DeveloperTools = 1, + GPUTraceDocument = 2, +} + + +CommandBufferStatus :: enum NS.UInteger { + NotEnqueued = 0, + Enqueued = 1, + Committed = 2, + Scheduled = 3, + Completed = 4, + Error = 5, +} + +CommandBufferError :: enum NS.UInteger { + None = 0, + Timeout = 2, + PageFault = 3, + AccessRevoked = 4, + Blacklisted = 4, + NotPermitted = 7, + OutOfMemory = 8, + InvalidResource = 9, + Memoryless = 10, + DeviceRemoved = 11, + StackOverflow = 12, +} + +CommandBufferErrorOptionFlag :: enum NS.UInteger { + EncoderExecutionStatus = 0, +} +CommandBufferErrorOption :: distinct bit_set[CommandBufferErrorOptionFlag; NS.UInteger] + +CommandEncoderErrorState :: enum NS.Integer { + Unknown = 0, + Completed = 1, + Affected = 2, + Pending = 3, + Faulted = 4, +} + +CommandBufferHandler :: distinct rawptr + +DispatchType :: enum NS.UInteger { + Serial = 0, + Concurrent = 1, +} + +ResourceUsageFlag :: enum NS.UInteger { + Read = 0, + Write = 1, + Sample = 2, +} +ResourceUsage :: distinct bit_set[ResourceUsageFlag; NS.UInteger] + + +BarrierScopeFlag :: enum NS.UInteger { + Buffers = 0, + Textures = 1, + RenderTargets = 2, +} +BarrierScope :: distinct bit_set[BarrierScopeFlag; NS.UInteger] + + + +CounterSampleBufferError :: enum NS.Integer { + OutOfMemory = 0, + Invalid = 1, +} + +CompareFunction :: enum NS.UInteger { + Never = 0, + Less = 1, + Equal = 2, + LessEqual = 3, + Greater = 4, + NotEqual = 5, + GreaterEqual = 6, + Always = 7, +} + +StencilOperation :: enum NS.UInteger { + Keep = 0, + Zero = 1, + Replace = 2, + IncrementClamp = 3, + DecrementClamp = 4, + Invert = 5, + IncrementWrap = 6, + DecrementWrap = 7, +} + +FeatureSet :: enum NS.UInteger { + iOS_GPUFamily1_v1 = 0, + iOS_GPUFamily2_v1 = 1, + iOS_GPUFamily1_v2 = 2, + iOS_GPUFamily2_v2 = 3, + iOS_GPUFamily3_v1 = 4, + iOS_GPUFamily1_v3 = 5, + iOS_GPUFamily2_v3 = 6, + iOS_GPUFamily3_v2 = 7, + iOS_GPUFamily1_v4 = 8, + iOS_GPUFamily2_v4 = 9, + iOS_GPUFamily3_v3 = 10, + iOS_GPUFamily4_v1 = 11, + iOS_GPUFamily1_v5 = 12, + iOS_GPUFamily2_v5 = 13, + iOS_GPUFamily3_v4 = 14, + iOS_GPUFamily4_v2 = 15, + iOS_GPUFamily5_v1 = 16, + macOS_GPUFamily1_v1 = 10000, + OSX_GPUFamily1_v1 = 10000, + macOS_GPUFamily1_v2 = 10001, + OSX_GPUFamily1_v2 = 10001, + OSX_ReadWriteTextureTier2 = 10002, + macOS_ReadWriteTextureTier2 = 10002, + macOS_GPUFamily1_v3 = 10003, + macOS_GPUFamily1_v4 = 10004, + macOS_GPUFamily2_v1 = 10005, + watchOS_GPUFamily1_v1 = 20000, + WatchOS_GPUFamily1_v1 = 20000, + watchOS_GPUFamily2_v1 = 20001, + WatchOS_GPUFamily2_v1 = 20001, + tvOS_GPUFamily1_v1 = 30000, + TVOS_GPUFamily1_v1 = 30000, + tvOS_GPUFamily1_v2 = 30001, + tvOS_GPUFamily1_v3 = 30002, + tvOS_GPUFamily2_v1 = 30003, + tvOS_GPUFamily1_v4 = 30004, + tvOS_GPUFamily2_v2 = 30005, +} + +GPUFamily :: enum NS.Integer { + Apple1 = 1001, + Apple2 = 1002, + Apple3 = 1003, + Apple4 = 1004, + Apple5 = 1005, + Apple6 = 1006, + Apple7 = 1007, + Apple8 = 1008, + Mac1 = 2001, + Mac2 = 2002, + Common1 = 3001, + Common2 = 3002, + Common3 = 3003, + MacCatalyst1 = 4001, + MacCatalyst2 = 4002, +} + +DeviceLocation :: enum NS.UInteger { + BuiltIn = 0, + Slot = 1, + External = 2, + Unspecified = NS.UIntegerMax, +} + +PipelineOptionFlag :: enum NS.UInteger { + ArgumentInfo = 0, + BufferTypeInfo = 1, + FailOnBinaryArchiveMiss = 2, +} +PipelineOption :: distinct bit_set[PipelineOptionFlag; NS.UInteger] + +ReadWriteTextureTier :: enum NS.UInteger { + TierNone = 0, + Tier1 = 1, + Tier2 = 2, +} + +ArgumentBuffersTier :: enum NS.UInteger { + Tier1 = 0, + Tier2 = 1, +} + +SparseTextureRegionAlignmentMode :: enum NS.UInteger { + Outward = 0, + Inward = 1, +} + +CounterSamplingPoint :: enum NS.UInteger { + AtStageBoundary = 0, + AtDrawBoundary = 1, + AtDispatchBoundary = 2, + AtTileDispatchBoundary = 3, + AtBlitBoundary = 4, +} + +DynamicLibraryError :: enum NS.UInteger { + None = 0, + InvalidFile = 1, + CompilationFailure = 2, + UnresolvedInstallName = 3, + DependencyLoadFailure = 4, + Unsupported = 5, +} + +FunctionOption :: enum NS.UInteger { + CompileToBinary = 0, +} +FunctionOptions :: distinct bit_set[FunctionOption; NS.UInteger] + + +FunctionLogType :: enum NS.UInteger { + Validation = 0, +} + +HeapType :: enum NS.Integer { + Automatic = 0, + Placement = 1, + Sparse = 2, +} + +IndirectCommandTypeFlag :: enum NS.UInteger { + Draw = 0, + DrawIndexed = 1, + DrawPatches = 2, + DrawIndexedPatches = 3, + ConcurrentDispatch = 5, + ConcurrentDispatchThreads = 6, +} +IndirectCommandType :: distinct bit_set[IndirectCommandTypeFlag; NS.UInteger] + +IntersectionFunctionSignatureFlag :: enum NS.UInteger { + Instancing = 0, + TriangleData = 1, + WorldSpaceData = 2, + InstanceMotion = 3, + PrimitiveMotion = 4, + ExtendedLimits = 5, +} +IntersectionFunctionSignature :: distinct bit_set[IntersectionFunctionSignatureFlag; NS.UInteger] + +PatchType :: enum NS.UInteger { + None = 0, + Triangle = 1, + Quad = 2, +} + +FunctionType :: enum NS.UInteger { + Vertex = 1, + Fragment = 2, + Kernel = 3, + Visible = 5, + Intersection = 6, +} + + +LanguageVersion :: enum NS.UInteger { + Version1_0 = 65536, + Version1_1 = 65537, + Version1_2 = 65538, + Version2_0 = 131072, + Version2_1 = 131073, + Version2_2 = 131074, + Version2_3 = 131075, + Version2_4 = 131076, +} + +LibraryType :: enum NS.Integer { + Executable = 0, + Dynamic = 1, +} + +LibraryError :: enum NS.UInteger { + Unsupported = 1, + CompileFailure = 3, + CompileWarning = 4, + FunctionNotFound = 5, + FileNotFound = 6, +} + +Mutability :: enum NS.UInteger { + Default = 0, + Mutable = 1, + Immutable = 2, +} + +PixelFormat :: enum NS.UInteger { + Invalid = 0, + A8Unorm = 1, + R8Unorm = 10, + R8Unorm_sRGB = 11, + R8Snorm = 12, + R8Uint = 13, + R8Sint = 14, + R16Unorm = 20, + R16Snorm = 22, + R16Uint = 23, + R16Sint = 24, + R16Float = 25, + RG8Unorm = 30, + RG8Unorm_sRGB = 31, + RG8Snorm = 32, + RG8Uint = 33, + RG8Sint = 34, + B5G6R5Unorm = 40, + A1BGR5Unorm = 41, + ABGR4Unorm = 42, + BGR5A1Unorm = 43, + R32Uint = 53, + R32Sint = 54, + R32Float = 55, + RG16Unorm = 60, + RG16Snorm = 62, + RG16Uint = 63, + RG16Sint = 64, + RG16Float = 65, + RGBA8Unorm = 70, + RGBA8Unorm_sRGB = 71, + RGBA8Snorm = 72, + RGBA8Uint = 73, + RGBA8Sint = 74, + BGRA8Unorm = 80, + BGRA8Unorm_sRGB = 81, + RGB10A2Unorm = 90, + RGB10A2Uint = 91, + RG11B10Float = 92, + RGB9E5Float = 93, + BGR10A2Unorm = 94, + RG32Uint = 103, + RG32Sint = 104, + RG32Float = 105, + RGBA16Unorm = 110, + RGBA16Snorm = 112, + RGBA16Uint = 113, + RGBA16Sint = 114, + RGBA16Float = 115, + RGBA32Uint = 123, + RGBA32Sint = 124, + RGBA32Float = 125, + BC1_RGBA = 130, + BC1_RGBA_sRGB = 131, + BC2_RGBA = 132, + BC2_RGBA_sRGB = 133, + BC3_RGBA = 134, + BC3_RGBA_sRGB = 135, + BC4_RUnorm = 140, + BC4_RSnorm = 141, + BC5_RGUnorm = 142, + BC5_RGSnorm = 143, + BC6H_RGBFloat = 150, + BC6H_RGBUfloat = 151, + BC7_RGBAUnorm = 152, + BC7_RGBAUnorm_sRGB = 153, + PVRTC_RGB_2BPP = 160, + PVRTC_RGB_2BPP_sRGB = 161, + PVRTC_RGB_4BPP = 162, + PVRTC_RGB_4BPP_sRGB = 163, + PVRTC_RGBA_2BPP = 164, + PVRTC_RGBA_2BPP_sRGB = 165, + PVRTC_RGBA_4BPP = 166, + PVRTC_RGBA_4BPP_sRGB = 167, + EAC_R11Unorm = 170, + EAC_R11Snorm = 172, + EAC_RG11Unorm = 174, + EAC_RG11Snorm = 176, + EAC_RGBA8 = 178, + EAC_RGBA8_sRGB = 179, + ETC2_RGB8 = 180, + ETC2_RGB8_sRGB = 181, + ETC2_RGB8A1 = 182, + ETC2_RGB8A1_sRGB = 183, + ASTC_4x4_sRGB = 186, + ASTC_5x4_sRGB = 187, + ASTC_5x5_sRGB = 188, + ASTC_6x5_sRGB = 189, + ASTC_6x6_sRGB = 190, + ASTC_8x5_sRGB = 192, + ASTC_8x6_sRGB = 193, + ASTC_8x8_sRGB = 194, + ASTC_10x5_sRGB = 195, + ASTC_10x6_sRGB = 196, + ASTC_10x8_sRGB = 197, + ASTC_10x10_sRGB = 198, + ASTC_12x10_sRGB = 199, + ASTC_12x12_sRGB = 200, + ASTC_4x4_LDR = 204, + ASTC_5x4_LDR = 205, + ASTC_5x5_LDR = 206, + ASTC_6x5_LDR = 207, + ASTC_6x6_LDR = 208, + ASTC_8x5_LDR = 210, + ASTC_8x6_LDR = 211, + ASTC_8x8_LDR = 212, + ASTC_10x5_LDR = 213, + ASTC_10x6_LDR = 214, + ASTC_10x8_LDR = 215, + ASTC_10x10_LDR = 216, + ASTC_12x10_LDR = 217, + ASTC_12x12_LDR = 218, + ASTC_4x4_HDR = 222, + ASTC_5x4_HDR = 223, + ASTC_5x5_HDR = 224, + ASTC_6x5_HDR = 225, + ASTC_6x6_HDR = 226, + ASTC_8x5_HDR = 228, + ASTC_8x6_HDR = 229, + ASTC_8x8_HDR = 230, + ASTC_10x5_HDR = 231, + ASTC_10x6_HDR = 232, + ASTC_10x8_HDR = 233, + ASTC_10x10_HDR = 234, + ASTC_12x10_HDR = 235, + ASTC_12x12_HDR = 236, + GBGR422 = 240, + BGRG422 = 241, + Depth16Unorm = 250, + Depth32Float = 252, + Stencil8 = 253, + Depth24Unorm_Stencil8 = 255, + Depth32Float_Stencil8 = 260, + X32_Stencil8 = 261, + X24_Stencil8 = 262, + BGRA10_XR = 552, + BGRA10_XR_sRGB = 553, + BGR10_XR = 554, + BGR10_XR_sRGB = 555, +} + + +PrimitiveType :: enum NS.UInteger { + Point = 0, + Line = 1, + LineStrip = 2, + Triangle = 3, + TriangleStrip = 4, +} + +VisibilityResultMode :: enum NS.UInteger { + Disabled = 0, + Boolean = 1, + Counting = 2, +} + +CullMode :: enum NS.UInteger { + None = 0, + Front = 1, + Back = 2, +} + +Winding :: enum NS.UInteger { + Clockwise = 0, + CounterClockwise = 1, +} + +DepthClipMode :: enum NS.UInteger { + Clip = 0, + Clamp = 1, +} + +TriangleFillMode :: enum NS.UInteger { + Fill = 0, + Lines = 1, +} + +RenderStage :: enum NS.UInteger { + Vertex = 0, + Fragment = 1, + Tile = 2, +} +RenderStages :: distinct bit_set[RenderStage; NS.UInteger] + + +LoadAction :: enum NS.UInteger { + DontCare = 0, + Load = 1, + Clear = 2, +} + +StoreAction :: enum NS.UInteger { + DontCare = 0, + Store = 1, + MultisampleResolve = 2, + StoreAndMultisampleResolve = 3, + Unknown = 4, + CustomSampleDepthStore = 5, +} + +StoreActionOption :: enum NS.UInteger { + CustomSamplePositions = 1, +} +StoreActionOptions :: distinct bit_set[StoreActionOption; NS.UInteger] + +MultisampleDepthResolveFilter :: enum NS.UInteger { + Sample0 = 0, + Min = 1, + Max = 2, +} + +MultisampleStencilResolveFilter :: enum NS.UInteger { + Sample0 = 0, + DepthResolvedSample = 1, +} + +BlendFactor :: enum NS.UInteger { + Zero = 0, + One = 1, + SourceColor = 2, + OneMinusSourceColor = 3, + SourceAlpha = 4, + OneMinusSourceAlpha = 5, + DestinationColor = 6, + OneMinusDestinationColor = 7, + DestinationAlpha = 8, + OneMinusDestinationAlpha = 9, + SourceAlphaSaturated = 10, + BlendColor = 11, + OneMinusBlendColor = 12, + BlendAlpha = 13, + OneMinusBlendAlpha = 14, + Source1Color = 15, + OneMinusSource1Color = 16, + Source1Alpha = 17, + OneMinusSource1Alpha = 18, +} + +BlendOperation :: enum NS.UInteger { + Add = 0, + Subtract = 1, + ReverseSubtract = 2, + Min = 3, + Max = 4, +} + +ColorWriteMaskFlag :: enum NS.UInteger { + Alpha = 0, + Blue = 1, + Green = 2, + Red = 3, +} +ColorWriteMask :: distinct bit_set[ColorWriteMaskFlag; NS.UInteger] +ColorWriteMaskAll :: ColorWriteMask{.Alpha, .Blue, .Green, .Red} + +PrimitiveTopologyClass :: enum NS.UInteger { + Unspecified = 0, + Point = 1, + Line = 2, + Triangle = 3, +} + +TessellationPartitionMode :: enum NS.UInteger { + Pow2 = 0, + Integer = 1, + FractionalOdd = 2, + FractionalEven = 3, +} + +TessellationFactorStepFunction :: enum NS.UInteger { + Constant = 0, + PerPatch = 1, + PerInstance = 2, + PerPatchAndPerInstance = 3, +} + +TessellationFactorFormat :: enum NS.UInteger { + Half = 0, +} + +TessellationControlPointIndexType :: enum NS.UInteger { + None = 0, + UInt16 = 1, + UInt32 = 2, +} + +PurgeableState :: enum NS.UInteger { + KeepCurrent = 1, + NonVolatile = 2, + Volatile = 3, + Empty = 4, +} + +CPUCacheMode :: enum NS.UInteger { + DefaultCache = 0, + WriteCombined = 1, +} + +StorageMode :: enum NS.UInteger { + Shared = 0, + Managed = 1, + Private = 2, + Memoryless = 3, +} + +HazardTrackingMode :: enum NS.UInteger { + Default = 0, + Untracked = 1, + Tracked = 2, +} + +ResourceOption :: enum NS.UInteger { + CPUCacheModeWriteCombined = 0, + StorageModeManaged = 4, + StorageModePrivate = 5, + HazardTrackingModeUntracked = 8, + HazardTrackingModeTracked = 9, +} +ResourceOptions :: distinct bit_set[ResourceOption; NS.UInteger] + +ResourceStorageModeShared :: ResourceOptions{} +ResourceHazardTrackingModeDefault :: ResourceOptions{} +ResourceCPUCacheModeDefaultCache :: ResourceOptions{} +ResourceOptionCPUCacheModeDefault :: ResourceOptions{} +ResourceStorageModeMemoryless :: ResourceOptions{.StorageModeManaged, .StorageModePrivate} + +SparseTextureMappingMode :: enum NS.UInteger { + Map = 0, + Unmap = 1, +} + +SamplerMinMagFilter :: enum NS.UInteger { + Nearest = 0, + Linear = 1, +} + +SamplerMipFilter :: enum NS.UInteger { + NotMipmapped = 0, + Nearest = 1, + Linear = 2, +} + +SamplerAddressMode :: enum NS.UInteger { + ClampToEdge = 0, + MirrorClampToEdge = 1, + Repeat = 2, + MirrorRepeat = 3, + ClampToZero = 4, + ClampToBorderColor = 5, +} + +SamplerBorderColor :: enum NS.UInteger { + TransparentBlack = 0, + OpaqueBlack = 1, + OpaqueWhite = 2, +} + + +AttributeFormat :: enum NS.UInteger { + Invalid = 0, + UChar2 = 1, + UChar3 = 2, + UChar4 = 3, + Char2 = 4, + Char3 = 5, + Char4 = 6, + UChar2Normalized = 7, + UChar3Normalized = 8, + UChar4Normalized = 9, + Char2Normalized = 10, + Char3Normalized = 11, + Char4Normalized = 12, + UShort2 = 13, + UShort3 = 14, + UShort4 = 15, + Short2 = 16, + Short3 = 17, + Short4 = 18, + UShort2Normalized = 19, + UShort3Normalized = 20, + UShort4Normalized = 21, + Short2Normalized = 22, + Short3Normalized = 23, + Short4Normalized = 24, + Half2 = 25, + Half3 = 26, + Half4 = 27, + Float = 28, + Float2 = 29, + Float3 = 30, + Float4 = 31, + Int = 32, + Int2 = 33, + Int3 = 34, + Int4 = 35, + UInt = 36, + UInt2 = 37, + UInt3 = 38, + UInt4 = 39, + Int1010102Normalized = 40, + UInt1010102Normalized = 41, + UChar4Normalized_BGRA = 42, + UChar = 45, + Char = 46, + UCharNormalized = 47, + CharNormalized = 48, + UShort = 49, + Short = 50, + UShortNormalized = 51, + ShortNormalized = 52, + Half = 53, +} + +IndexType :: enum NS.UInteger { + UInt16 = 0, + UInt32 = 1, +} + +StepFunction :: enum NS.UInteger { + Constant = 0, + PerVertex = 1, + PerInstance = 2, + PerPatch = 3, + PerPatchControlPoint = 4, + ThreadPositionInGridX = 5, + ThreadPositionInGridY = 6, + ThreadPositionInGridXIndexed = 7, + ThreadPositionInGridYIndexed = 8, +} + +TextureType :: enum NS.UInteger { + Type1D = 0, + Type1DArray = 1, + Type2D = 2, + Type2DArray = 3, + Type2DMultisample = 4, + TypeCube = 5, + TypeCubeArray = 6, + Type3D = 7, + Type2DMultisampleArray = 8, + TypeTextureBuffer = 9, +} + +TextureSwizzle :: enum u8 { + Zero = 0, + One = 1, + Red = 2, + Green = 3, + Blue = 4, + Alpha = 5, +} + +TextureUsageFlag :: enum NS.UInteger { + ShaderRead = 0, + ShaderWrite = 1, + RenderTarget = 2, + PixelFormatView = 4, +} +TextureUsage :: distinct bit_set[TextureUsageFlag; NS.UInteger] + +TextureCompressionType :: enum NS.Integer { + Lossless = 0, + Lossy = 1, +} + +VertexFormat :: enum NS.UInteger { + Invalid = 0, + UChar2 = 1, + UChar3 = 2, + UChar4 = 3, + Char2 = 4, + Char3 = 5, + Char4 = 6, + UChar2Normalized = 7, + UChar3Normalized = 8, + UChar4Normalized = 9, + Char2Normalized = 10, + Char3Normalized = 11, + Char4Normalized = 12, + UShort2 = 13, + UShort3 = 14, + UShort4 = 15, + Short2 = 16, + Short3 = 17, + Short4 = 18, + UShort2Normalized = 19, + UShort3Normalized = 20, + UShort4Normalized = 21, + Short2Normalized = 22, + Short3Normalized = 23, + Short4Normalized = 24, + Half2 = 25, + Half3 = 26, + Half4 = 27, + Float = 28, + Float2 = 29, + Float3 = 30, + Float4 = 31, + Int = 32, + Int2 = 33, + Int3 = 34, + Int4 = 35, + UInt = 36, + UInt2 = 37, + UInt3 = 38, + UInt4 = 39, + Int1010102Normalized = 40, + UInt1010102Normalized = 41, + UChar4Normalized_BGRA = 42, + UChar = 45, + Char = 46, + UCharNormalized = 47, + CharNormalized = 48, + UShort = 49, + Short = 50, + UShortNormalized = 51, + ShortNormalized = 52, + Half = 53, +} + +VertexStepFunction :: enum NS.UInteger { + Constant = 0, + PerVertex = 1, + PerInstance = 2, + PerPatch = 3, + PerPatchControlPoint = 4, +} diff --git a/vendor/Metal/MetalErrors.odin b/vendor/Metal/MetalErrors.odin new file mode 100644 index 000000000..5909b35e4 --- /dev/null +++ b/vendor/Metal/MetalErrors.odin @@ -0,0 +1,39 @@ +package objc_Metal + +import NS "core:sys/darwin/Foundation" + +foreign import "system:Metal.framework" + +CommonCounter :: ^NS.String +CommonCounterSet :: ^NS.String +DeviceNotificationName :: ^NS.String + +foreign Metal { + @(linkage="weak") CommonCounterTimestamp: CommonCounter + @(linkage="weak") CommonCounterTessellationInputPatches: CommonCounter + @(linkage="weak") CommonCounterVertexInvocations: CommonCounter + @(linkage="weak") CommonCounterPostTessellationVertexInvocations: CommonCounter + @(linkage="weak") CommonCounterClipperInvocations: CommonCounter + @(linkage="weak") CommonCounterClipperPrimitivesOut: CommonCounter + @(linkage="weak") CommonCounterFragmentInvocations: CommonCounter + @(linkage="weak") CommonCounterFragmentsPassed: CommonCounter + @(linkage="weak") CommonCounterComputeKernelInvocations: CommonCounter + @(linkage="weak") CommonCounterTotalCycles: CommonCounter + @(linkage="weak") CommonCounterVertexCycles: CommonCounter + @(linkage="weak") CommonCounterTessellationCycles: CommonCounter + @(linkage="weak") CommonCounterPostTessellationVertexCycles: CommonCounter + @(linkage="weak") CommonCounterFragmentCycles: CommonCounter + @(linkage="weak") CommonCounterRenderTargetWriteCycles: CommonCounter +} + +foreign Metal { + @(linkage="weak") CommonCounterSetTimestamp: CommonCounterSet + @(linkage="weak") CommonCounterSetStageUtilization: CommonCounterSet + @(linkage="weak") CommonCounterSetStatistic: CommonCounterSet +} + +foreign Metal { + @(linkage="weak") DeviceWasAddedNotification: DeviceNotificationName + @(linkage="weak") DeviceRemovalRequestedNotification: DeviceNotificationName + @(linkage="weak") DeviceWasRemovedNotification: DeviceNotificationName +} \ No newline at end of file diff --git a/vendor/Metal/MetalTypes.odin b/vendor/Metal/MetalTypes.odin new file mode 100644 index 000000000..c8c02e5f2 --- /dev/null +++ b/vendor/Metal/MetalTypes.odin @@ -0,0 +1,198 @@ +package objc_Metal + +import NS "core:sys/darwin/Foundation" +import "core:intrinsics" + +BOOL :: NS.BOOL + +CFTimeInterval :: NS.TimeInterval + +IOSurfaceRef :: distinct rawptr + +@(private) +msgSend :: intrinsics.objc_send + +AccelerationStructureInstanceDescriptor :: struct { + transformationMatrix: PackedFloat4x3, + options: AccelerationStructureInstanceOptions, + mask: u32, + intersectionFunctionTableOffset: u32, + accelerationStructureIndex: u32, +} + +AccelerationStructureSizes :: struct { + accelerationStructureSize: NS.Integer, + buildScratchBufferSize: NS.Integer, + refitScratchBufferSize: NS.Integer, +} + +AxisAlignedBoundingBox :: struct { + min: PackedFloat3, + max: PackedFloat3, +} + +ClearColor :: struct { + red: f64, + green: f64, + blue: f64, + alpha: f64, +} + +Coordinate2D :: struct { + x: f32, + y: f32, +} + +CounterResultStageUtilization :: struct { + totalCycles: u64, + vertexCycles: u64, + tessellationCycles: u64, + postTessellationVertexCycles: u64, + fragmentCycles: u64, + renderTargetCycles: u64, +} + +CounterResultStatistic :: struct { + tessellationInputPatches: u64, + vertexInvocations: u64, + postTessellationVertexInvocations: u64, + clipperInvocations: u64, + clipperPrimitivesOut: u64, + fragmentInvocations: u64, + fragmentsPassed: u64, + computeKernelInvocations: u64, +} + +CounterResultTimestamp :: struct { + timestamp: u64, +} + +DispatchThreadgroupsIndirectArguments :: struct { + threadgroupsPerGrid: [3]u32, +} + +DrawIndexedPrimitivesIndirectArguments :: struct { + indexCount: u32, + instanceCount: u32, + indexStart: u32, + baseVertex: i32, + baseInstance: u32, +} + +DrawPatchIndirectArguments :: struct { + patchCount: u32, + instanceCount: u32, + patchStart: u32, + baseInstance: u32, +} + +DrawPrimitivesIndirectArguments :: struct { + vertexCount: u32, + instanceCount: u32, + vertexStart: u32, + baseInstance: u32, +} + +IndirectCommandBufferExecutionRange :: struct { + location: u32, + length: u32, +} + +MapIndirectArguments :: struct { + regionOriginX: u32, + regionOriginY: u32, + regionOriginZ: u32, + regionSizeWidth: u32, + regionSizeHeight: u32, + regionSizeDepth: u32, + mipMapLevel: u32, + sliceId: u32, +} + +Origin :: distinct [3]NS.Integer + +PackedFloat3 :: distinct [3]f32 + +PackedFloat4x3 :: struct { + columns: [4]PackedFloat3, +} + +QuadTessellationFactorsHalf :: struct { + edgeTessellationFactor: [4]u16, + insideTessellationFactor: [2]u16, +} + +Region :: struct { + origin: Origin, + size: Size, +} + +SamplePosition :: struct { + x: f32, + y: f32, +} + +ScissorRect :: struct { + x: NS.Integer, + y: NS.Integer, + width: NS.Integer, + height: NS.Integer, +} + +Size :: struct { + width: NS.Integer, + height: NS.Integer, + depth: NS.Integer, +} + +SizeAndAlign :: struct { + size: NS.Integer, + align: NS.Integer, +} + +StageInRegionIndirectArguments :: struct { + stageInOrigin: [3]u32, + stageInSize: [3]u32, +} + +TextureSwizzleChannels :: struct { + red: TextureSwizzle, + green: TextureSwizzle, + blue: TextureSwizzle, + alpha: TextureSwizzle, +} + +TriangleTessellationFactorsHalf :: struct { + edgeTessellationFactor: [3]u16, + insideTessellationFactor: u16, +} + +VertexAmplificationViewMapping :: struct { + viewportArrayIndexOffset: u32, + renderTargetArrayIndexOffset: u32, +} + +Viewport :: struct { + originX: f64, + originY: f64, + width: f64, + height: f64, + znear: f64, + zfar: f64, +} + +Timestamp :: distinct u64 + +DeviceNotificationHandler :: distinct rawptr +AutoreleasedComputePipelineReflection :: ^ComputePipelineReflection +AutoreleasedRenderPipelineReflection :: ^RenderPipelineReflection +NewLibraryCompletionHandler :: distinct rawptr +NewRenderPipelineStateCompletionHandler :: distinct rawptr +NewRenderPipelineStateWithReflectionCompletionHandler :: distinct rawptr +NewComputePipelineStateCompletionHandler :: distinct rawptr +NewComputePipelineStateWithReflectionCompletionHandler :: distinct rawptr +SharedEventNotificationBlock :: distinct rawptr + +DrawablePresentedHandler :: distinct rawptr + +AutoreleasedArgument :: ^Argument \ No newline at end of file diff --git a/vendor/Metal/NSBuffer.odin b/vendor/Metal/NSBuffer.odin deleted file mode 100644 index 9f7a83c1a..000000000 --- a/vendor/Metal/NSBuffer.odin +++ /dev/null @@ -1,5 +0,0 @@ -package objc_Metal - -import NS "core:sys/darwin/Foundation" - -Buffer :: struct { using _: Resource } \ No newline at end of file diff --git a/vendor/Metal/NSResource.odin b/vendor/Metal/NSResource.odin deleted file mode 100644 index 34bc0267c..000000000 --- a/vendor/Metal/NSResource.odin +++ /dev/null @@ -1,5 +0,0 @@ -package objc_Metal - -import NS "core:sys/darwin/Foundation" - -Resource :: struct { using _: NS.Object } \ No newline at end of file From ae3b95b194bffc9e9f77e70d4e2b6f33373e39aa Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 12 Feb 2022 17:46:19 +0000 Subject: [PATCH 035/190] `#force_inline` procedures and move foreign procedures to a separate file --- vendor/Metal/MetalClasses.odin | 2652 ++++++++++++++--------------- vendor/Metal/MetalProcedures.odin | 14 + 2 files changed, 1333 insertions(+), 1333 deletions(-) create mode 100644 vendor/Metal/MetalProcedures.odin diff --git a/vendor/Metal/MetalClasses.odin b/vendor/Metal/MetalClasses.odin index 138677d0d..4f788cb55 100644 --- a/vendor/Metal/MetalClasses.odin +++ b/vendor/Metal/MetalClasses.odin @@ -2,20 +2,6 @@ package objc_Metal import NS "core:sys/darwin/Foundation" -foreign import "system:Metal.framework" - -@(default_calling_convention="c", link_prefix="MTL") -foreign Metal { - CopyAllDevices :: proc() -> ^NS.Array --- - CopyAllDevicesWithObserver :: proc(observer: ^^NS.Object, handler: DeviceNotificationHandler) -> ^NS.Array --- - CreateSystemDefaultDevice :: proc() -> ^NS.Object --- - RemoveDeviceObserver :: proc(observer: ^NS.Object) --- -} - - - - - //////////////////////////////////////////////////////////////////////////////// /* @@ -39,47 +25,47 @@ Methods: AccelerationStructureBoundingBoxGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureBoundingBoxGeometryDescriptor) } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_class_name="alloc") -AccelerationStructureBoundingBoxGeometryDescriptor_alloc :: proc() -> ^AccelerationStructureBoundingBoxGeometryDescriptor { +AccelerationStructureBoundingBoxGeometryDescriptor_alloc :: #force_inline proc() -> ^AccelerationStructureBoundingBoxGeometryDescriptor { return msgSend(^AccelerationStructureBoundingBoxGeometryDescriptor, AccelerationStructureBoundingBoxGeometryDescriptor, "alloc") } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="init") -AccelerationStructureBoundingBoxGeometryDescriptor_init :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> ^AccelerationStructureBoundingBoxGeometryDescriptor { +AccelerationStructureBoundingBoxGeometryDescriptor_init :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> ^AccelerationStructureBoundingBoxGeometryDescriptor { return msgSend(^AccelerationStructureBoundingBoxGeometryDescriptor, self, "init") } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="boundingBoxBuffer") -AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxBuffer :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> ^AccelerationStructureBoundingBoxGeometryDescriptor { +AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxBuffer :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> ^AccelerationStructureBoundingBoxGeometryDescriptor { return msgSend(^AccelerationStructureBoundingBoxGeometryDescriptor, self, "boundingBoxBuffer") } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="boundingBoxBufferOffset") -AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxBufferOffset :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.Integer { +AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxBufferOffset :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "boundingBoxBufferOffset") } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="boundingBoxCount") -AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxCount :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.Integer { +AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxCount :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "boundingBoxCount") } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="boundingBoxStride") -AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxStride :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.Integer { +AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxStride :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "boundingBoxStride") } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_class_name="descriptor") -AccelerationStructureBoundingBoxGeometryDescriptor_descriptor :: proc() -> ^AccelerationStructureBoundingBoxGeometryDescriptor { +AccelerationStructureBoundingBoxGeometryDescriptor_descriptor :: #force_inline proc() -> ^AccelerationStructureBoundingBoxGeometryDescriptor { return msgSend(^AccelerationStructureBoundingBoxGeometryDescriptor, AccelerationStructureBoundingBoxGeometryDescriptor, "descriptor") } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="setBoundingBoxBuffer") -AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxBuffer :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxBuffer: ^NS.Object) { +AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxBuffer :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxBuffer: ^NS.Object) { msgSend(nil, self, "setBoundingBoxBuffer:", boundingBoxBuffer) } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="setBoundingBoxBufferOffset") -AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxBufferOffset :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxBufferOffset: NS.Integer) { +AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxBufferOffset :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxBufferOffset: NS.Integer) { msgSend(nil, self, "setBoundingBoxBufferOffset:", boundingBoxBufferOffset) } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="setBoundingBoxCount") -AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxCount :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxCount: NS.Integer) { +AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxCount :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxCount: NS.Integer) { msgSend(nil, self, "setBoundingBoxCount:", boundingBoxCount) } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="setBoundingBoxStride") -AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxStride :: proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxStride: NS.Integer) { +AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxStride :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxStride: NS.Integer) { msgSend(nil, self, "setBoundingBoxStride:", boundingBoxStride) } @@ -99,19 +85,19 @@ Methods: AccelerationStructureDescriptor :: struct { using _: NS.Copying(AccelerationStructureDescriptor) } @(objc_type=AccelerationStructureDescriptor, objc_class_name="alloc") -AccelerationStructureDescriptor_alloc :: proc() -> ^AccelerationStructureDescriptor { +AccelerationStructureDescriptor_alloc :: #force_inline proc() -> ^AccelerationStructureDescriptor { return msgSend(^AccelerationStructureDescriptor, AccelerationStructureDescriptor, "alloc") } @(objc_type=AccelerationStructureDescriptor, objc_name="init") -AccelerationStructureDescriptor_init :: proc(self: ^AccelerationStructureDescriptor) -> ^AccelerationStructureDescriptor { +AccelerationStructureDescriptor_init :: #force_inline proc(self: ^AccelerationStructureDescriptor) -> ^AccelerationStructureDescriptor { return msgSend(^AccelerationStructureDescriptor, self, "init") } @(objc_type=AccelerationStructureDescriptor, objc_name="setUsage") -AccelerationStructureDescriptor_setUsage :: proc(self: ^AccelerationStructureDescriptor, usage: AccelerationStructureUsage) { +AccelerationStructureDescriptor_setUsage :: #force_inline proc(self: ^AccelerationStructureDescriptor, usage: AccelerationStructureUsage) { msgSend(nil, self, "setUsage:", usage) } @(objc_type=AccelerationStructureDescriptor, objc_name="usage") -AccelerationStructureDescriptor_usage :: proc(self: ^AccelerationStructureDescriptor) -> AccelerationStructureUsage { +AccelerationStructureDescriptor_usage :: #force_inline proc(self: ^AccelerationStructureDescriptor) -> AccelerationStructureUsage { return msgSend(AccelerationStructureUsage, self, "usage") } @@ -135,35 +121,35 @@ Methods: AccelerationStructureGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureGeometryDescriptor) } @(objc_type=AccelerationStructureGeometryDescriptor, objc_class_name="alloc") -AccelerationStructureGeometryDescriptor_alloc :: proc() -> ^AccelerationStructureGeometryDescriptor { +AccelerationStructureGeometryDescriptor_alloc :: #force_inline proc() -> ^AccelerationStructureGeometryDescriptor { return msgSend(^AccelerationStructureGeometryDescriptor, AccelerationStructureGeometryDescriptor, "alloc") } @(objc_type=AccelerationStructureGeometryDescriptor, objc_name="init") -AccelerationStructureGeometryDescriptor_init :: proc(self: ^AccelerationStructureGeometryDescriptor) -> ^AccelerationStructureGeometryDescriptor { +AccelerationStructureGeometryDescriptor_init :: #force_inline proc(self: ^AccelerationStructureGeometryDescriptor) -> ^AccelerationStructureGeometryDescriptor { return msgSend(^AccelerationStructureGeometryDescriptor, self, "init") } @(objc_type=AccelerationStructureGeometryDescriptor, objc_name="allowDuplicateIntersectionFunctionInvocation") -AccelerationStructureGeometryDescriptor_allowDuplicateIntersectionFunctionInvocation :: proc(self: ^AccelerationStructureGeometryDescriptor) -> BOOL { +AccelerationStructureGeometryDescriptor_allowDuplicateIntersectionFunctionInvocation :: #force_inline proc(self: ^AccelerationStructureGeometryDescriptor) -> BOOL { return msgSend(BOOL, self, "allowDuplicateIntersectionFunctionInvocation") } @(objc_type=AccelerationStructureGeometryDescriptor, objc_name="intersectionFunctionTableOffset") -AccelerationStructureGeometryDescriptor_intersectionFunctionTableOffset :: proc(self: ^AccelerationStructureGeometryDescriptor) -> NS.Integer { +AccelerationStructureGeometryDescriptor_intersectionFunctionTableOffset :: #force_inline proc(self: ^AccelerationStructureGeometryDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "intersectionFunctionTableOffset") } @(objc_type=AccelerationStructureGeometryDescriptor, objc_name="opaque") -AccelerationStructureGeometryDescriptor_opaque :: proc(self: ^AccelerationStructureGeometryDescriptor) -> BOOL { +AccelerationStructureGeometryDescriptor_opaque :: #force_inline proc(self: ^AccelerationStructureGeometryDescriptor) -> BOOL { return msgSend(BOOL, self, "opaque") } @(objc_type=AccelerationStructureGeometryDescriptor, objc_name="setAllowDuplicateIntersectionFunctionInvocation") -AccelerationStructureGeometryDescriptor_setAllowDuplicateIntersectionFunctionInvocation :: proc(self: ^AccelerationStructureGeometryDescriptor, allowDuplicateIntersectionFunctionInvocation: BOOL) { +AccelerationStructureGeometryDescriptor_setAllowDuplicateIntersectionFunctionInvocation :: #force_inline proc(self: ^AccelerationStructureGeometryDescriptor, allowDuplicateIntersectionFunctionInvocation: BOOL) { msgSend(nil, self, "setAllowDuplicateIntersectionFunctionInvocation:", allowDuplicateIntersectionFunctionInvocation) } @(objc_type=AccelerationStructureGeometryDescriptor, objc_name="setIntersectionFunctionTableOffset") -AccelerationStructureGeometryDescriptor_setIntersectionFunctionTableOffset :: proc(self: ^AccelerationStructureGeometryDescriptor, intersectionFunctionTableOffset: NS.Integer) { +AccelerationStructureGeometryDescriptor_setIntersectionFunctionTableOffset :: #force_inline proc(self: ^AccelerationStructureGeometryDescriptor, intersectionFunctionTableOffset: NS.Integer) { msgSend(nil, self, "setIntersectionFunctionTableOffset:", intersectionFunctionTableOffset) } @(objc_type=AccelerationStructureGeometryDescriptor, objc_name="setOpaque") -AccelerationStructureGeometryDescriptor_setOpaque :: proc(self: ^AccelerationStructureGeometryDescriptor, opaque: BOOL) { +AccelerationStructureGeometryDescriptor_setOpaque :: #force_inline proc(self: ^AccelerationStructureGeometryDescriptor, opaque: BOOL) { msgSend(nil, self, "setOpaque:", opaque) } @@ -196,71 +182,71 @@ Methods: AccelerationStructureTriangleGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureTriangleGeometryDescriptor) } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_class_name="alloc") -AccelerationStructureTriangleGeometryDescriptor_alloc :: proc() -> ^AccelerationStructureTriangleGeometryDescriptor { +AccelerationStructureTriangleGeometryDescriptor_alloc :: #force_inline proc() -> ^AccelerationStructureTriangleGeometryDescriptor { return msgSend(^AccelerationStructureTriangleGeometryDescriptor, AccelerationStructureTriangleGeometryDescriptor, "alloc") } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="init") -AccelerationStructureTriangleGeometryDescriptor_init :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> ^AccelerationStructureTriangleGeometryDescriptor { +AccelerationStructureTriangleGeometryDescriptor_init :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> ^AccelerationStructureTriangleGeometryDescriptor { return msgSend(^AccelerationStructureTriangleGeometryDescriptor, self, "init") } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_class_name="descriptor") -AccelerationStructureTriangleGeometryDescriptor_descriptor :: proc() -> ^AccelerationStructureTriangleGeometryDescriptor { +AccelerationStructureTriangleGeometryDescriptor_descriptor :: #force_inline proc() -> ^AccelerationStructureTriangleGeometryDescriptor { return msgSend(^AccelerationStructureTriangleGeometryDescriptor, AccelerationStructureTriangleGeometryDescriptor, "descriptor") } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="indexBuffer") -AccelerationStructureTriangleGeometryDescriptor_indexBuffer :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> ^AccelerationStructureTriangleGeometryDescriptor { +AccelerationStructureTriangleGeometryDescriptor_indexBuffer :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> ^AccelerationStructureTriangleGeometryDescriptor { return msgSend(^AccelerationStructureTriangleGeometryDescriptor, self, "indexBuffer") } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="indexBufferOffset") -AccelerationStructureTriangleGeometryDescriptor_indexBufferOffset :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.Integer { +AccelerationStructureTriangleGeometryDescriptor_indexBufferOffset :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "indexBufferOffset") } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="indexType") -AccelerationStructureTriangleGeometryDescriptor_indexType :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> IndexType { +AccelerationStructureTriangleGeometryDescriptor_indexType :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> IndexType { return msgSend(IndexType, self, "indexType") } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setIndexBuffer") -AccelerationStructureTriangleGeometryDescriptor_setIndexBuffer :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indexBuffer: ^NS.Object) { +AccelerationStructureTriangleGeometryDescriptor_setIndexBuffer :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indexBuffer: ^NS.Object) { msgSend(nil, self, "setIndexBuffer:", indexBuffer) } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setIndexBufferOffset") -AccelerationStructureTriangleGeometryDescriptor_setIndexBufferOffset :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indexBufferOffset: NS.Integer) { +AccelerationStructureTriangleGeometryDescriptor_setIndexBufferOffset :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indexBufferOffset: NS.Integer) { msgSend(nil, self, "setIndexBufferOffset:", indexBufferOffset) } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setIndexType") -AccelerationStructureTriangleGeometryDescriptor_setIndexType :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indexType: IndexType) { +AccelerationStructureTriangleGeometryDescriptor_setIndexType :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indexType: IndexType) { msgSend(nil, self, "setIndexType:", indexType) } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setTriangleCount") -AccelerationStructureTriangleGeometryDescriptor_setTriangleCount :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, triangleCount: NS.Integer) { +AccelerationStructureTriangleGeometryDescriptor_setTriangleCount :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, triangleCount: NS.Integer) { msgSend(nil, self, "setTriangleCount:", triangleCount) } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setVertexBuffer") -AccelerationStructureTriangleGeometryDescriptor_setVertexBuffer :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexBuffer: ^NS.Object) { +AccelerationStructureTriangleGeometryDescriptor_setVertexBuffer :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexBuffer: ^NS.Object) { msgSend(nil, self, "setVertexBuffer:", vertexBuffer) } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setVertexBufferOffset") -AccelerationStructureTriangleGeometryDescriptor_setVertexBufferOffset :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexBufferOffset: NS.Integer) { +AccelerationStructureTriangleGeometryDescriptor_setVertexBufferOffset :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexBufferOffset: NS.Integer) { msgSend(nil, self, "setVertexBufferOffset:", vertexBufferOffset) } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setVertexStride") -AccelerationStructureTriangleGeometryDescriptor_setVertexStride :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexStride: NS.Integer) { +AccelerationStructureTriangleGeometryDescriptor_setVertexStride :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexStride: NS.Integer) { msgSend(nil, self, "setVertexStride:", vertexStride) } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="triangleCount") -AccelerationStructureTriangleGeometryDescriptor_triangleCount :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.Integer { +AccelerationStructureTriangleGeometryDescriptor_triangleCount :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "triangleCount") } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="vertexBuffer") -AccelerationStructureTriangleGeometryDescriptor_vertexBuffer :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> ^AccelerationStructureTriangleGeometryDescriptor { +AccelerationStructureTriangleGeometryDescriptor_vertexBuffer :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> ^AccelerationStructureTriangleGeometryDescriptor { return msgSend(^AccelerationStructureTriangleGeometryDescriptor, self, "vertexBuffer") } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="vertexBufferOffset") -AccelerationStructureTriangleGeometryDescriptor_vertexBufferOffset :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.Integer { +AccelerationStructureTriangleGeometryDescriptor_vertexBufferOffset :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "vertexBufferOffset") } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="vertexStride") -AccelerationStructureTriangleGeometryDescriptor_vertexStride :: proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.Integer { +AccelerationStructureTriangleGeometryDescriptor_vertexStride :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "vertexStride") } @@ -294,75 +280,75 @@ Methods: Argument :: struct { using _: NS.Object } @(objc_type=Argument, objc_class_name="alloc") -Argument_alloc :: proc() -> ^Argument { +Argument_alloc :: #force_inline proc() -> ^Argument { return msgSend(^Argument, Argument, "alloc") } @(objc_type=Argument, objc_name="init") -Argument_init :: proc(self: ^Argument) -> ^Argument { +Argument_init :: #force_inline proc(self: ^Argument) -> ^Argument { return msgSend(^Argument, self, "init") } @(objc_type=Argument, objc_name="access") -Argument_access :: proc(self: ^Argument) -> ArgumentAccess { +Argument_access :: #force_inline proc(self: ^Argument) -> ArgumentAccess { return msgSend(ArgumentAccess, self, "access") } @(objc_type=Argument, objc_name="arrayLength") -Argument_arrayLength :: proc(self: ^Argument) -> NS.Integer { +Argument_arrayLength :: #force_inline proc(self: ^Argument) -> NS.Integer { return msgSend(NS.Integer, self, "arrayLength") } @(objc_type=Argument, objc_name="bufferAlignment") -Argument_bufferAlignment :: proc(self: ^Argument) -> NS.Integer { +Argument_bufferAlignment :: #force_inline proc(self: ^Argument) -> NS.Integer { return msgSend(NS.Integer, self, "bufferAlignment") } @(objc_type=Argument, objc_name="bufferDataSize") -Argument_bufferDataSize :: proc(self: ^Argument) -> NS.Integer { +Argument_bufferDataSize :: #force_inline proc(self: ^Argument) -> NS.Integer { return msgSend(NS.Integer, self, "bufferDataSize") } @(objc_type=Argument, objc_name="bufferDataType") -Argument_bufferDataType :: proc(self: ^Argument) -> DataType { +Argument_bufferDataType :: #force_inline proc(self: ^Argument) -> DataType { return msgSend(DataType, self, "bufferDataType") } @(objc_type=Argument, objc_name="bufferPointerType") -Argument_bufferPointerType :: proc(self: ^Argument) -> ^PointerType { +Argument_bufferPointerType :: #force_inline proc(self: ^Argument) -> ^PointerType { return msgSend(^PointerType, self, "bufferPointerType") } @(objc_type=Argument, objc_name="bufferStructType") -Argument_bufferStructType :: proc(self: ^Argument) -> ^StructType { +Argument_bufferStructType :: #force_inline proc(self: ^Argument) -> ^StructType { return msgSend(^StructType, self, "bufferStructType") } @(objc_type=Argument, objc_name="index") -Argument_index :: proc(self: ^Argument) -> NS.Integer { +Argument_index :: #force_inline proc(self: ^Argument) -> NS.Integer { return msgSend(NS.Integer, self, "index") } @(objc_type=Argument, objc_name="isActive") -Argument_isActive :: proc(self: ^Argument) -> BOOL { +Argument_isActive :: #force_inline proc(self: ^Argument) -> BOOL { return msgSend(BOOL, self, "isActive") } @(objc_type=Argument, objc_name="isDepthTexture") -Argument_isDepthTexture :: proc(self: ^Argument) -> BOOL { +Argument_isDepthTexture :: #force_inline proc(self: ^Argument) -> BOOL { return msgSend(BOOL, self, "isDepthTexture") } @(objc_type=Argument, objc_name="name") -Argument_name :: proc(self: ^Argument) -> ^NS.String { +Argument_name :: #force_inline proc(self: ^Argument) -> ^NS.String { return msgSend(^NS.String, self, "name") } @(objc_type=Argument, objc_name="textureDataType") -Argument_textureDataType :: proc(self: ^Argument) -> DataType { +Argument_textureDataType :: #force_inline proc(self: ^Argument) -> DataType { return msgSend(DataType, self, "textureDataType") } @(objc_type=Argument, objc_name="textureType") -Argument_textureType :: proc(self: ^Argument) -> TextureType { +Argument_textureType :: #force_inline proc(self: ^Argument) -> TextureType { return msgSend(TextureType, self, "textureType") } @(objc_type=Argument, objc_name="threadgroupMemoryAlignment") -Argument_threadgroupMemoryAlignment :: proc(self: ^Argument) -> NS.Integer { +Argument_threadgroupMemoryAlignment :: #force_inline proc(self: ^Argument) -> NS.Integer { return msgSend(NS.Integer, self, "threadgroupMemoryAlignment") } @(objc_type=Argument, objc_name="threadgroupMemoryDataSize") -Argument_threadgroupMemoryDataSize :: proc(self: ^Argument) -> NS.Integer { +Argument_threadgroupMemoryDataSize :: #force_inline proc(self: ^Argument) -> NS.Integer { return msgSend(NS.Integer, self, "threadgroupMemoryDataSize") } @(objc_type=Argument, objc_name="type") -Argument_type :: proc(self: ^Argument) -> ArgumentType { +Argument_type :: #force_inline proc(self: ^Argument) -> ArgumentType { return msgSend(ArgumentType, self, "type") } @@ -393,63 +379,63 @@ Methods: ArgumentDescriptor :: struct { using _: NS.Copying(ArgumentDescriptor) } @(objc_type=ArgumentDescriptor, objc_class_name="alloc") -ArgumentDescriptor_alloc :: proc() -> ^ArgumentDescriptor { +ArgumentDescriptor_alloc :: #force_inline proc() -> ^ArgumentDescriptor { return msgSend(^ArgumentDescriptor, ArgumentDescriptor, "alloc") } @(objc_type=ArgumentDescriptor, objc_name="init") -ArgumentDescriptor_init :: proc(self: ^ArgumentDescriptor) -> ^ArgumentDescriptor { +ArgumentDescriptor_init :: #force_inline proc(self: ^ArgumentDescriptor) -> ^ArgumentDescriptor { return msgSend(^ArgumentDescriptor, self, "init") } @(objc_type=ArgumentDescriptor, objc_name="access") -ArgumentDescriptor_access :: proc(self: ^ArgumentDescriptor) -> ArgumentAccess { +ArgumentDescriptor_access :: #force_inline proc(self: ^ArgumentDescriptor) -> ArgumentAccess { return msgSend(ArgumentAccess, self, "access") } @(objc_type=ArgumentDescriptor, objc_class_name="argumentDescriptor") -ArgumentDescriptor_argumentDescriptor :: proc() -> ^ArgumentDescriptor { +ArgumentDescriptor_argumentDescriptor :: #force_inline proc() -> ^ArgumentDescriptor { return msgSend(^ArgumentDescriptor, ArgumentDescriptor, "argumentDescriptor") } @(objc_type=ArgumentDescriptor, objc_name="arrayLength") -ArgumentDescriptor_arrayLength :: proc(self: ^ArgumentDescriptor) -> NS.Integer { +ArgumentDescriptor_arrayLength :: #force_inline proc(self: ^ArgumentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "arrayLength") } @(objc_type=ArgumentDescriptor, objc_name="constantBlockAlignment") -ArgumentDescriptor_constantBlockAlignment :: proc(self: ^ArgumentDescriptor) -> NS.Integer { +ArgumentDescriptor_constantBlockAlignment :: #force_inline proc(self: ^ArgumentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "constantBlockAlignment") } @(objc_type=ArgumentDescriptor, objc_name="dataType") -ArgumentDescriptor_dataType :: proc(self: ^ArgumentDescriptor) -> DataType { +ArgumentDescriptor_dataType :: #force_inline proc(self: ^ArgumentDescriptor) -> DataType { return msgSend(DataType, self, "dataType") } @(objc_type=ArgumentDescriptor, objc_name="index") -ArgumentDescriptor_index :: proc(self: ^ArgumentDescriptor) -> NS.Integer { +ArgumentDescriptor_index :: #force_inline proc(self: ^ArgumentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "index") } @(objc_type=ArgumentDescriptor, objc_name="setAccess") -ArgumentDescriptor_setAccess :: proc(self: ^ArgumentDescriptor, access: ArgumentAccess) { +ArgumentDescriptor_setAccess :: #force_inline proc(self: ^ArgumentDescriptor, access: ArgumentAccess) { msgSend(nil, self, "setAccess:", access) } @(objc_type=ArgumentDescriptor, objc_name="setArrayLength") -ArgumentDescriptor_setArrayLength :: proc(self: ^ArgumentDescriptor, arrayLength: NS.Integer) { +ArgumentDescriptor_setArrayLength :: #force_inline proc(self: ^ArgumentDescriptor, arrayLength: NS.Integer) { msgSend(nil, self, "setArrayLength:", arrayLength) } @(objc_type=ArgumentDescriptor, objc_name="setConstantBlockAlignment") -ArgumentDescriptor_setConstantBlockAlignment :: proc(self: ^ArgumentDescriptor, constantBlockAlignment: NS.Integer) { +ArgumentDescriptor_setConstantBlockAlignment :: #force_inline proc(self: ^ArgumentDescriptor, constantBlockAlignment: NS.Integer) { msgSend(nil, self, "setConstantBlockAlignment:", constantBlockAlignment) } @(objc_type=ArgumentDescriptor, objc_name="setDataType") -ArgumentDescriptor_setDataType :: proc(self: ^ArgumentDescriptor, dataType: DataType) { +ArgumentDescriptor_setDataType :: #force_inline proc(self: ^ArgumentDescriptor, dataType: DataType) { msgSend(nil, self, "setDataType:", dataType) } @(objc_type=ArgumentDescriptor, objc_name="setIndex") -ArgumentDescriptor_setIndex :: proc(self: ^ArgumentDescriptor, index: NS.Integer) { +ArgumentDescriptor_setIndex :: #force_inline proc(self: ^ArgumentDescriptor, index: NS.Integer) { msgSend(nil, self, "setIndex:", index) } @(objc_type=ArgumentDescriptor, objc_name="setTextureType") -ArgumentDescriptor_setTextureType :: proc(self: ^ArgumentDescriptor, textureType: TextureType) { +ArgumentDescriptor_setTextureType :: #force_inline proc(self: ^ArgumentDescriptor, textureType: TextureType) { msgSend(nil, self, "setTextureType:", textureType) } @(objc_type=ArgumentDescriptor, objc_name="textureType") -ArgumentDescriptor_textureType :: proc(self: ^ArgumentDescriptor) -> TextureType { +ArgumentDescriptor_textureType :: #force_inline proc(self: ^ArgumentDescriptor) -> TextureType { return msgSend(TextureType, self, "textureType") } @@ -475,43 +461,43 @@ Methods: ArrayType :: struct { using _: NS.Object } @(objc_type=ArrayType, objc_class_name="alloc") -ArrayType_alloc :: proc() -> ^ArrayType { +ArrayType_alloc :: #force_inline proc() -> ^ArrayType { return msgSend(^ArrayType, ArrayType, "alloc") } @(objc_type=ArrayType, objc_name="init") -ArrayType_init :: proc(self: ^ArrayType) -> ^ArrayType { +ArrayType_init :: #force_inline proc(self: ^ArrayType) -> ^ArrayType { return msgSend(^ArrayType, self, "init") } @(objc_type=ArrayType, objc_name="argumentIndexStride") -ArrayType_argumentIndexStride :: proc(self: ^ArrayType) -> NS.Integer { +ArrayType_argumentIndexStride :: #force_inline proc(self: ^ArrayType) -> NS.Integer { return msgSend(NS.Integer, self, "argumentIndexStride") } @(objc_type=ArrayType, objc_name="arrayLength") -ArrayType_arrayLength :: proc(self: ^ArrayType) -> NS.Integer { +ArrayType_arrayLength :: #force_inline proc(self: ^ArrayType) -> NS.Integer { return msgSend(NS.Integer, self, "arrayLength") } @(objc_type=ArrayType, objc_name="elementArrayType") -ArrayType_elementArrayType :: proc(self: ^ArrayType) -> ^ArrayType { +ArrayType_elementArrayType :: #force_inline proc(self: ^ArrayType) -> ^ArrayType { return msgSend(^ArrayType, self, "elementArrayType") } @(objc_type=ArrayType, objc_name="elementPointerType") -ArrayType_elementPointerType :: proc(self: ^ArrayType) -> ^PointerType { +ArrayType_elementPointerType :: #force_inline proc(self: ^ArrayType) -> ^PointerType { return msgSend(^PointerType, self, "elementPointerType") } @(objc_type=ArrayType, objc_name="elementStructType") -ArrayType_elementStructType :: proc(self: ^ArrayType) -> ^StructType { +ArrayType_elementStructType :: #force_inline proc(self: ^ArrayType) -> ^StructType { return msgSend(^StructType, self, "elementStructType") } @(objc_type=ArrayType, objc_name="elementTextureReferenceType") -ArrayType_elementTextureReferenceType :: proc(self: ^ArrayType) -> ^TextureReferenceType { +ArrayType_elementTextureReferenceType :: #force_inline proc(self: ^ArrayType) -> ^TextureReferenceType { return msgSend(^TextureReferenceType, self, "elementTextureReferenceType") } @(objc_type=ArrayType, objc_name="elementType") -ArrayType_elementType :: proc(self: ^ArrayType) -> DataType { +ArrayType_elementType :: #force_inline proc(self: ^ArrayType) -> DataType { return msgSend(DataType, self, "elementType") } @(objc_type=ArrayType, objc_name="stride") -ArrayType_stride :: proc(self: ^ArrayType) -> NS.Integer { +ArrayType_stride :: #force_inline proc(self: ^ArrayType) -> NS.Integer { return msgSend(NS.Integer, self, "stride") } @@ -535,35 +521,35 @@ Methods: Attribute :: struct { using _: NS.Object } @(objc_type=Attribute, objc_class_name="alloc") -Attribute_alloc :: proc() -> ^Attribute { +Attribute_alloc :: #force_inline proc() -> ^Attribute { return msgSend(^Attribute, Attribute, "alloc") } @(objc_type=Attribute, objc_name="init") -Attribute_init :: proc(self: ^Attribute) -> ^Attribute { +Attribute_init :: #force_inline proc(self: ^Attribute) -> ^Attribute { return msgSend(^Attribute, self, "init") } @(objc_type=Attribute, objc_name="attributeIndex") -Attribute_attributeIndex :: proc(self: ^Attribute) -> NS.Integer { +Attribute_attributeIndex :: #force_inline proc(self: ^Attribute) -> NS.Integer { return msgSend(NS.Integer, self, "attributeIndex") } @(objc_type=Attribute, objc_name="attributeType") -Attribute_attributeType :: proc(self: ^Attribute) -> DataType { +Attribute_attributeType :: #force_inline proc(self: ^Attribute) -> DataType { return msgSend(DataType, self, "attributeType") } @(objc_type=Attribute, objc_name="isActive") -Attribute_isActive :: proc(self: ^Attribute) -> BOOL { +Attribute_isActive :: #force_inline proc(self: ^Attribute) -> BOOL { return msgSend(BOOL, self, "isActive") } @(objc_type=Attribute, objc_name="isPatchControlPointData") -Attribute_isPatchControlPointData :: proc(self: ^Attribute) -> BOOL { +Attribute_isPatchControlPointData :: #force_inline proc(self: ^Attribute) -> BOOL { return msgSend(BOOL, self, "isPatchControlPointData") } @(objc_type=Attribute, objc_name="isPatchData") -Attribute_isPatchData :: proc(self: ^Attribute) -> BOOL { +Attribute_isPatchData :: #force_inline proc(self: ^Attribute) -> BOOL { return msgSend(BOOL, self, "isPatchData") } @(objc_type=Attribute, objc_name="name") -Attribute_name :: proc(self: ^Attribute) -> ^NS.String { +Attribute_name :: #force_inline proc(self: ^Attribute) -> ^NS.String { return msgSend(^NS.String, self, "name") } @@ -587,35 +573,35 @@ Methods: AttributeDescriptor :: struct { using _: NS.Copying(AttributeDescriptor) } @(objc_type=AttributeDescriptor, objc_class_name="alloc") -AttributeDescriptor_alloc :: proc() -> ^AttributeDescriptor { +AttributeDescriptor_alloc :: #force_inline proc() -> ^AttributeDescriptor { return msgSend(^AttributeDescriptor, AttributeDescriptor, "alloc") } @(objc_type=AttributeDescriptor, objc_name="init") -AttributeDescriptor_init :: proc(self: ^AttributeDescriptor) -> ^AttributeDescriptor { +AttributeDescriptor_init :: #force_inline proc(self: ^AttributeDescriptor) -> ^AttributeDescriptor { return msgSend(^AttributeDescriptor, self, "init") } @(objc_type=AttributeDescriptor, objc_name="bufferIndex") -AttributeDescriptor_bufferIndex :: proc(self: ^AttributeDescriptor) -> NS.Integer { +AttributeDescriptor_bufferIndex :: #force_inline proc(self: ^AttributeDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "bufferIndex") } @(objc_type=AttributeDescriptor, objc_name="format") -AttributeDescriptor_format :: proc(self: ^AttributeDescriptor) -> AttributeFormat { +AttributeDescriptor_format :: #force_inline proc(self: ^AttributeDescriptor) -> AttributeFormat { return msgSend(AttributeFormat, self, "format") } @(objc_type=AttributeDescriptor, objc_name="offset") -AttributeDescriptor_offset :: proc(self: ^AttributeDescriptor) -> NS.Integer { +AttributeDescriptor_offset :: #force_inline proc(self: ^AttributeDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "offset") } @(objc_type=AttributeDescriptor, objc_name="setBufferIndex") -AttributeDescriptor_setBufferIndex :: proc(self: ^AttributeDescriptor, bufferIndex: NS.Integer) { +AttributeDescriptor_setBufferIndex :: #force_inline proc(self: ^AttributeDescriptor, bufferIndex: NS.Integer) { msgSend(nil, self, "setBufferIndex:", bufferIndex) } @(objc_type=AttributeDescriptor, objc_name="setFormat") -AttributeDescriptor_setFormat :: proc(self: ^AttributeDescriptor, format: AttributeFormat) { +AttributeDescriptor_setFormat :: #force_inline proc(self: ^AttributeDescriptor, format: AttributeFormat) { msgSend(nil, self, "setFormat:", format) } @(objc_type=AttributeDescriptor, objc_name="setOffset") -AttributeDescriptor_setOffset :: proc(self: ^AttributeDescriptor, offset: NS.Integer) { +AttributeDescriptor_setOffset :: #force_inline proc(self: ^AttributeDescriptor, offset: NS.Integer) { msgSend(nil, self, "setOffset:", offset) } @@ -635,19 +621,19 @@ Methods: AttributeDescriptorArray :: struct { using _: NS.Object } @(objc_type=AttributeDescriptorArray, objc_class_name="alloc") -AttributeDescriptorArray_alloc :: proc() -> ^AttributeDescriptorArray { +AttributeDescriptorArray_alloc :: #force_inline proc() -> ^AttributeDescriptorArray { return msgSend(^AttributeDescriptorArray, AttributeDescriptorArray, "alloc") } @(objc_type=AttributeDescriptorArray, objc_name="init") -AttributeDescriptorArray_init :: proc(self: ^AttributeDescriptorArray) -> ^AttributeDescriptorArray { +AttributeDescriptorArray_init :: #force_inline proc(self: ^AttributeDescriptorArray) -> ^AttributeDescriptorArray { return msgSend(^AttributeDescriptorArray, self, "init") } @(objc_type=AttributeDescriptorArray, objc_name="objectAtIndexedSubscript") -AttributeDescriptorArray_objectAtIndexedSubscript :: proc(self: ^AttributeDescriptorArray, index: ^NS.Object) -> ^AttributeDescriptor { +AttributeDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^AttributeDescriptorArray, index: ^NS.Object) -> ^AttributeDescriptor { return msgSend(^AttributeDescriptor, self, "objectAtIndexedSubscript:", index) } @(objc_type=AttributeDescriptorArray, objc_name="setObject") -AttributeDescriptorArray_setObject :: proc(self: ^AttributeDescriptorArray, attributeDesc: ^AttributeDescriptor, index: ^NS.Object) { +AttributeDescriptorArray_setObject :: #force_inline proc(self: ^AttributeDescriptorArray, attributeDesc: ^AttributeDescriptor, index: ^NS.Object) { msgSend(nil, self, "setObject:atIndexedSubscript:", attributeDesc, index) } @@ -667,19 +653,19 @@ Methods: BinaryArchiveDescriptor :: struct { using _: NS.Copying(BinaryArchiveDescriptor) } @(objc_type=BinaryArchiveDescriptor, objc_class_name="alloc") -BinaryArchiveDescriptor_alloc :: proc() -> ^BinaryArchiveDescriptor { +BinaryArchiveDescriptor_alloc :: #force_inline proc() -> ^BinaryArchiveDescriptor { return msgSend(^BinaryArchiveDescriptor, BinaryArchiveDescriptor, "alloc") } @(objc_type=BinaryArchiveDescriptor, objc_name="init") -BinaryArchiveDescriptor_init :: proc(self: ^BinaryArchiveDescriptor) -> ^BinaryArchiveDescriptor { +BinaryArchiveDescriptor_init :: #force_inline proc(self: ^BinaryArchiveDescriptor) -> ^BinaryArchiveDescriptor { return msgSend(^BinaryArchiveDescriptor, self, "init") } @(objc_type=BinaryArchiveDescriptor, objc_name="setUrl") -BinaryArchiveDescriptor_setUrl :: proc(self: ^BinaryArchiveDescriptor, url: ^NS.URL) { +BinaryArchiveDescriptor_setUrl :: #force_inline proc(self: ^BinaryArchiveDescriptor, url: ^NS.URL) { msgSend(nil, self, "setUrl:", url) } @(objc_type=BinaryArchiveDescriptor, objc_name="url") -BinaryArchiveDescriptor_url :: proc(self: ^BinaryArchiveDescriptor) -> ^NS.URL { +BinaryArchiveDescriptor_url :: #force_inline proc(self: ^BinaryArchiveDescriptor) -> ^NS.URL { return msgSend(^NS.URL, self, "url") } @@ -699,19 +685,19 @@ Methods: BlitPassDescriptor :: struct { using _: NS.Copying(BlitPassDescriptor) } @(objc_type=BlitPassDescriptor, objc_class_name="alloc") -BlitPassDescriptor_alloc :: proc() -> ^BlitPassDescriptor { +BlitPassDescriptor_alloc :: #force_inline proc() -> ^BlitPassDescriptor { return msgSend(^BlitPassDescriptor, BlitPassDescriptor, "alloc") } @(objc_type=BlitPassDescriptor, objc_name="init") -BlitPassDescriptor_init :: proc(self: ^BlitPassDescriptor) -> ^BlitPassDescriptor { +BlitPassDescriptor_init :: #force_inline proc(self: ^BlitPassDescriptor) -> ^BlitPassDescriptor { return msgSend(^BlitPassDescriptor, self, "init") } @(objc_type=BlitPassDescriptor, objc_class_name="blitPassDescriptor") -BlitPassDescriptor_blitPassDescriptor :: proc() -> ^BlitPassDescriptor { +BlitPassDescriptor_blitPassDescriptor :: #force_inline proc() -> ^BlitPassDescriptor { return msgSend(^BlitPassDescriptor, BlitPassDescriptor, "blitPassDescriptor") } @(objc_type=BlitPassDescriptor, objc_name="sampleBufferAttachments") -BlitPassDescriptor_sampleBufferAttachments :: proc(self: ^BlitPassDescriptor) -> ^BlitPassSampleBufferAttachmentDescriptorArray { +BlitPassDescriptor_sampleBufferAttachments :: #force_inline proc(self: ^BlitPassDescriptor) -> ^BlitPassSampleBufferAttachmentDescriptorArray { return msgSend(^BlitPassSampleBufferAttachmentDescriptorArray, self, "sampleBufferAttachments") } @@ -735,35 +721,35 @@ Methods: BlitPassSampleBufferAttachmentDescriptor :: struct { using _: NS.Copying(BlitPassSampleBufferAttachmentDescriptor) } @(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_class_name="alloc") -BlitPassSampleBufferAttachmentDescriptor_alloc :: proc() -> ^BlitPassSampleBufferAttachmentDescriptor { +BlitPassSampleBufferAttachmentDescriptor_alloc :: #force_inline proc() -> ^BlitPassSampleBufferAttachmentDescriptor { return msgSend(^BlitPassSampleBufferAttachmentDescriptor, BlitPassSampleBufferAttachmentDescriptor, "alloc") } @(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="init") -BlitPassSampleBufferAttachmentDescriptor_init :: proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> ^BlitPassSampleBufferAttachmentDescriptor { +BlitPassSampleBufferAttachmentDescriptor_init :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> ^BlitPassSampleBufferAttachmentDescriptor { return msgSend(^BlitPassSampleBufferAttachmentDescriptor, self, "init") } @(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="endOfEncoderSampleIndex") -BlitPassSampleBufferAttachmentDescriptor_endOfEncoderSampleIndex :: proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> NS.Integer { +BlitPassSampleBufferAttachmentDescriptor_endOfEncoderSampleIndex :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "endOfEncoderSampleIndex") } @(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="sampleBuffer") -BlitPassSampleBufferAttachmentDescriptor_sampleBuffer :: proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> ^BlitPassSampleBufferAttachmentDescriptor { +BlitPassSampleBufferAttachmentDescriptor_sampleBuffer :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> ^BlitPassSampleBufferAttachmentDescriptor { return msgSend(^BlitPassSampleBufferAttachmentDescriptor, self, "sampleBuffer") } @(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="setEndOfEncoderSampleIndex") -BlitPassSampleBufferAttachmentDescriptor_setEndOfEncoderSampleIndex :: proc(self: ^BlitPassSampleBufferAttachmentDescriptor, endOfEncoderSampleIndex: NS.Integer) { +BlitPassSampleBufferAttachmentDescriptor_setEndOfEncoderSampleIndex :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor, endOfEncoderSampleIndex: NS.Integer) { msgSend(nil, self, "setEndOfEncoderSampleIndex:", endOfEncoderSampleIndex) } @(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="setSampleBuffer") -BlitPassSampleBufferAttachmentDescriptor_setSampleBuffer :: proc(self: ^BlitPassSampleBufferAttachmentDescriptor, sampleBuffer: ^NS.Object) { +BlitPassSampleBufferAttachmentDescriptor_setSampleBuffer :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor, sampleBuffer: ^NS.Object) { msgSend(nil, self, "setSampleBuffer:", sampleBuffer) } @(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="setStartOfEncoderSampleIndex") -BlitPassSampleBufferAttachmentDescriptor_setStartOfEncoderSampleIndex :: proc(self: ^BlitPassSampleBufferAttachmentDescriptor, startOfEncoderSampleIndex: NS.Integer) { +BlitPassSampleBufferAttachmentDescriptor_setStartOfEncoderSampleIndex :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor, startOfEncoderSampleIndex: NS.Integer) { msgSend(nil, self, "setStartOfEncoderSampleIndex:", startOfEncoderSampleIndex) } @(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="startOfEncoderSampleIndex") -BlitPassSampleBufferAttachmentDescriptor_startOfEncoderSampleIndex :: proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> NS.Integer { +BlitPassSampleBufferAttachmentDescriptor_startOfEncoderSampleIndex :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "startOfEncoderSampleIndex") } @@ -783,19 +769,19 @@ Methods: BlitPassSampleBufferAttachmentDescriptorArray :: struct { using _: NS.Object } @(objc_type=BlitPassSampleBufferAttachmentDescriptorArray, objc_class_name="alloc") -BlitPassSampleBufferAttachmentDescriptorArray_alloc :: proc() -> ^BlitPassSampleBufferAttachmentDescriptorArray { +BlitPassSampleBufferAttachmentDescriptorArray_alloc :: #force_inline proc() -> ^BlitPassSampleBufferAttachmentDescriptorArray { return msgSend(^BlitPassSampleBufferAttachmentDescriptorArray, BlitPassSampleBufferAttachmentDescriptorArray, "alloc") } @(objc_type=BlitPassSampleBufferAttachmentDescriptorArray, objc_name="init") -BlitPassSampleBufferAttachmentDescriptorArray_init :: proc(self: ^BlitPassSampleBufferAttachmentDescriptorArray) -> ^BlitPassSampleBufferAttachmentDescriptorArray { +BlitPassSampleBufferAttachmentDescriptorArray_init :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptorArray) -> ^BlitPassSampleBufferAttachmentDescriptorArray { return msgSend(^BlitPassSampleBufferAttachmentDescriptorArray, self, "init") } @(objc_type=BlitPassSampleBufferAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") -BlitPassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: proc(self: ^BlitPassSampleBufferAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^BlitPassSampleBufferAttachmentDescriptor { +BlitPassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^BlitPassSampleBufferAttachmentDescriptor { return msgSend(^BlitPassSampleBufferAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) } @(objc_type=BlitPassSampleBufferAttachmentDescriptorArray, objc_name="setObject") -BlitPassSampleBufferAttachmentDescriptorArray_setObject :: proc(self: ^BlitPassSampleBufferAttachmentDescriptorArray, attachment: ^BlitPassSampleBufferAttachmentDescriptor, attachmentIndex: ^NS.Object) { +BlitPassSampleBufferAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptorArray, attachment: ^BlitPassSampleBufferAttachmentDescriptor, attachmentIndex: ^NS.Object) { msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) } @@ -819,35 +805,35 @@ Methods: BufferLayoutDescriptor :: struct { using _: NS.Copying(BufferLayoutDescriptor) } @(objc_type=BufferLayoutDescriptor, objc_class_name="alloc") -BufferLayoutDescriptor_alloc :: proc() -> ^BufferLayoutDescriptor { +BufferLayoutDescriptor_alloc :: #force_inline proc() -> ^BufferLayoutDescriptor { return msgSend(^BufferLayoutDescriptor, BufferLayoutDescriptor, "alloc") } @(objc_type=BufferLayoutDescriptor, objc_name="init") -BufferLayoutDescriptor_init :: proc(self: ^BufferLayoutDescriptor) -> ^BufferLayoutDescriptor { +BufferLayoutDescriptor_init :: #force_inline proc(self: ^BufferLayoutDescriptor) -> ^BufferLayoutDescriptor { return msgSend(^BufferLayoutDescriptor, self, "init") } @(objc_type=BufferLayoutDescriptor, objc_name="setStepFunction") -BufferLayoutDescriptor_setStepFunction :: proc(self: ^BufferLayoutDescriptor, stepFunction: StepFunction) { +BufferLayoutDescriptor_setStepFunction :: #force_inline proc(self: ^BufferLayoutDescriptor, stepFunction: StepFunction) { msgSend(nil, self, "setStepFunction:", stepFunction) } @(objc_type=BufferLayoutDescriptor, objc_name="setStepRate") -BufferLayoutDescriptor_setStepRate :: proc(self: ^BufferLayoutDescriptor, stepRate: NS.Integer) { +BufferLayoutDescriptor_setStepRate :: #force_inline proc(self: ^BufferLayoutDescriptor, stepRate: NS.Integer) { msgSend(nil, self, "setStepRate:", stepRate) } @(objc_type=BufferLayoutDescriptor, objc_name="setStride") -BufferLayoutDescriptor_setStride :: proc(self: ^BufferLayoutDescriptor, stride: NS.Integer) { +BufferLayoutDescriptor_setStride :: #force_inline proc(self: ^BufferLayoutDescriptor, stride: NS.Integer) { msgSend(nil, self, "setStride:", stride) } @(objc_type=BufferLayoutDescriptor, objc_name="stepFunction") -BufferLayoutDescriptor_stepFunction :: proc(self: ^BufferLayoutDescriptor) -> StepFunction { +BufferLayoutDescriptor_stepFunction :: #force_inline proc(self: ^BufferLayoutDescriptor) -> StepFunction { return msgSend(StepFunction, self, "stepFunction") } @(objc_type=BufferLayoutDescriptor, objc_name="stepRate") -BufferLayoutDescriptor_stepRate :: proc(self: ^BufferLayoutDescriptor) -> NS.Integer { +BufferLayoutDescriptor_stepRate :: #force_inline proc(self: ^BufferLayoutDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "stepRate") } @(objc_type=BufferLayoutDescriptor, objc_name="stride") -BufferLayoutDescriptor_stride :: proc(self: ^BufferLayoutDescriptor) -> NS.Integer { +BufferLayoutDescriptor_stride :: #force_inline proc(self: ^BufferLayoutDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "stride") } @@ -867,19 +853,19 @@ Methods: BufferLayoutDescriptorArray :: struct { using _: NS.Object } @(objc_type=BufferLayoutDescriptorArray, objc_class_name="alloc") -BufferLayoutDescriptorArray_alloc :: proc() -> ^BufferLayoutDescriptorArray { +BufferLayoutDescriptorArray_alloc :: #force_inline proc() -> ^BufferLayoutDescriptorArray { return msgSend(^BufferLayoutDescriptorArray, BufferLayoutDescriptorArray, "alloc") } @(objc_type=BufferLayoutDescriptorArray, objc_name="init") -BufferLayoutDescriptorArray_init :: proc(self: ^BufferLayoutDescriptorArray) -> ^BufferLayoutDescriptorArray { +BufferLayoutDescriptorArray_init :: #force_inline proc(self: ^BufferLayoutDescriptorArray) -> ^BufferLayoutDescriptorArray { return msgSend(^BufferLayoutDescriptorArray, self, "init") } @(objc_type=BufferLayoutDescriptorArray, objc_name="objectAtIndexedSubscript") -BufferLayoutDescriptorArray_objectAtIndexedSubscript :: proc(self: ^BufferLayoutDescriptorArray, index: ^NS.Object) -> ^BufferLayoutDescriptor { +BufferLayoutDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^BufferLayoutDescriptorArray, index: ^NS.Object) -> ^BufferLayoutDescriptor { return msgSend(^BufferLayoutDescriptor, self, "objectAtIndexedSubscript:", index) } @(objc_type=BufferLayoutDescriptorArray, objc_name="setObject") -BufferLayoutDescriptorArray_setObject :: proc(self: ^BufferLayoutDescriptorArray, bufferDesc: ^BufferLayoutDescriptor, index: ^NS.Object) { +BufferLayoutDescriptorArray_setObject :: #force_inline proc(self: ^BufferLayoutDescriptorArray, bufferDesc: ^BufferLayoutDescriptor, index: ^NS.Object) { msgSend(nil, self, "setObject:atIndexedSubscript:", bufferDesc, index) } @@ -903,35 +889,35 @@ Methods: CaptureDescriptor :: struct { using _: NS.Copying(CaptureDescriptor) } @(objc_type=CaptureDescriptor, objc_class_name="alloc") -CaptureDescriptor_alloc :: proc() -> ^CaptureDescriptor { +CaptureDescriptor_alloc :: #force_inline proc() -> ^CaptureDescriptor { return msgSend(^CaptureDescriptor, CaptureDescriptor, "alloc") } @(objc_type=CaptureDescriptor, objc_name="init") -CaptureDescriptor_init :: proc(self: ^CaptureDescriptor) -> ^CaptureDescriptor { +CaptureDescriptor_init :: #force_inline proc(self: ^CaptureDescriptor) -> ^CaptureDescriptor { return msgSend(^CaptureDescriptor, self, "init") } @(objc_type=CaptureDescriptor, objc_name="captureObject") -CaptureDescriptor_captureObject :: proc(self: ^CaptureDescriptor) -> ^CaptureDescriptor { +CaptureDescriptor_captureObject :: #force_inline proc(self: ^CaptureDescriptor) -> ^CaptureDescriptor { return msgSend(^CaptureDescriptor, self, "captureObject") } @(objc_type=CaptureDescriptor, objc_name="destination") -CaptureDescriptor_destination :: proc(self: ^CaptureDescriptor) -> CaptureDestination { +CaptureDescriptor_destination :: #force_inline proc(self: ^CaptureDescriptor) -> CaptureDestination { return msgSend(CaptureDestination, self, "destination") } @(objc_type=CaptureDescriptor, objc_name="outputURL") -CaptureDescriptor_outputURL :: proc(self: ^CaptureDescriptor) -> ^NS.URL { +CaptureDescriptor_outputURL :: #force_inline proc(self: ^CaptureDescriptor) -> ^NS.URL { return msgSend(^NS.URL, self, "outputURL") } @(objc_type=CaptureDescriptor, objc_name="setCaptureObject") -CaptureDescriptor_setCaptureObject :: proc(self: ^CaptureDescriptor, captureObject: ^NS.Object) { +CaptureDescriptor_setCaptureObject :: #force_inline proc(self: ^CaptureDescriptor, captureObject: ^NS.Object) { msgSend(nil, self, "setCaptureObject:", captureObject) } @(objc_type=CaptureDescriptor, objc_name="setDestination") -CaptureDescriptor_setDestination :: proc(self: ^CaptureDescriptor, destination: CaptureDestination) { +CaptureDescriptor_setDestination :: #force_inline proc(self: ^CaptureDescriptor, destination: CaptureDestination) { msgSend(nil, self, "setDestination:", destination) } @(objc_type=CaptureDescriptor, objc_name="setOutputURL") -CaptureDescriptor_setOutputURL :: proc(self: ^CaptureDescriptor, outputURL: ^NS.URL) { +CaptureDescriptor_setOutputURL :: #force_inline proc(self: ^CaptureDescriptor, outputURL: ^NS.URL) { msgSend(nil, self, "setOutputURL:", outputURL) } @@ -961,59 +947,59 @@ Methods: CaptureManager :: struct { using _: NS.Object } @(objc_type=CaptureManager, objc_class_name="alloc") -CaptureManager_alloc :: proc() -> ^CaptureManager { +CaptureManager_alloc :: #force_inline proc() -> ^CaptureManager { return msgSend(^CaptureManager, CaptureManager, "alloc") } @(objc_type=CaptureManager, objc_name="defaultCaptureScope") -CaptureManager_defaultCaptureScope :: proc(self: ^CaptureManager) -> ^CaptureManager { +CaptureManager_defaultCaptureScope :: #force_inline proc(self: ^CaptureManager) -> ^CaptureManager { return msgSend(^CaptureManager, self, "defaultCaptureScope") } @(objc_type=CaptureManager, objc_name="init") -CaptureManager_init :: proc(self: ^CaptureManager) -> ^CaptureManager { +CaptureManager_init :: #force_inline proc(self: ^CaptureManager) -> ^CaptureManager { return msgSend(^CaptureManager, self, "init") } @(objc_type=CaptureManager, objc_name="isCapturing") -CaptureManager_isCapturing :: proc(self: ^CaptureManager) -> BOOL { +CaptureManager_isCapturing :: #force_inline proc(self: ^CaptureManager) -> BOOL { return msgSend(BOOL, self, "isCapturing") } @(objc_type=CaptureManager, objc_name="newCaptureScopeWithCommandQueue") -CaptureManager_newCaptureScopeWithCommandQueue :: proc(self: ^CaptureManager, commandQueue: ^NS.Object) -> ^CaptureManager { +CaptureManager_newCaptureScopeWithCommandQueue :: #force_inline proc(self: ^CaptureManager, commandQueue: ^NS.Object) -> ^CaptureManager { return msgSend(^CaptureManager, self, "newCaptureScopeWithCommandQueue:", commandQueue) } @(objc_type=CaptureManager, objc_name="newCaptureScopeWithDevice") -CaptureManager_newCaptureScopeWithDevice :: proc(self: ^CaptureManager, device: ^NS.Object) -> ^CaptureManager { +CaptureManager_newCaptureScopeWithDevice :: #force_inline proc(self: ^CaptureManager, device: ^NS.Object) -> ^CaptureManager { return msgSend(^CaptureManager, self, "newCaptureScopeWithDevice:", device) } @(objc_type=CaptureManager, objc_name="setDefaultCaptureScope") -CaptureManager_setDefaultCaptureScope :: proc(self: ^CaptureManager, defaultCaptureScope: ^NS.Object) { +CaptureManager_setDefaultCaptureScope :: #force_inline proc(self: ^CaptureManager, defaultCaptureScope: ^NS.Object) { msgSend(nil, self, "setDefaultCaptureScope:", defaultCaptureScope) } @(objc_type=CaptureManager, objc_class_name="sharedCaptureManager") -CaptureManager_sharedCaptureManager :: proc() -> ^CaptureManager { +CaptureManager_sharedCaptureManager :: #force_inline proc() -> ^CaptureManager { return msgSend(^CaptureManager, CaptureManager, "sharedCaptureManager") } @(objc_type=CaptureManager, objc_name="startCaptureWithCommandQueue") -CaptureManager_startCaptureWithCommandQueue :: proc(self: ^CaptureManager, commandQueue: ^NS.Object) { +CaptureManager_startCaptureWithCommandQueue :: #force_inline proc(self: ^CaptureManager, commandQueue: ^NS.Object) { msgSend(nil, self, "startCaptureWithCommandQueue:", commandQueue) } @(objc_type=CaptureManager, objc_name="startCaptureWithDescriptor") -CaptureManager_startCaptureWithDescriptor :: proc(self: ^CaptureManager, descriptor: ^CaptureDescriptor, error: ^^NS.Error ) -> BOOL { +CaptureManager_startCaptureWithDescriptor :: #force_inline proc(self: ^CaptureManager, descriptor: ^CaptureDescriptor, error: ^^NS.Error ) -> BOOL { return msgSend(BOOL, self, "startCaptureWithDescriptor:error:", descriptor, error) } @(objc_type=CaptureManager, objc_name="startCaptureWithDevice") -CaptureManager_startCaptureWithDevice :: proc(self: ^CaptureManager, device: ^NS.Object) { +CaptureManager_startCaptureWithDevice :: #force_inline proc(self: ^CaptureManager, device: ^NS.Object) { msgSend(nil, self, "startCaptureWithDevice:", device) } @(objc_type=CaptureManager, objc_name="startCaptureWithScope") -CaptureManager_startCaptureWithScope :: proc(self: ^CaptureManager, captureScope: ^NS.Object) { +CaptureManager_startCaptureWithScope :: #force_inline proc(self: ^CaptureManager, captureScope: ^NS.Object) { msgSend(nil, self, "startCaptureWithScope:", captureScope) } @(objc_type=CaptureManager, objc_name="stopCapture") -CaptureManager_stopCapture :: proc(self: ^CaptureManager) { +CaptureManager_stopCapture :: #force_inline proc(self: ^CaptureManager) { msgSend(nil, self, "stopCapture") } @(objc_type=CaptureManager, objc_name="supportsDestination") -CaptureManager_supportsDestination :: proc(self: ^CaptureManager, destination: CaptureDestination) -> BOOL { +CaptureManager_supportsDestination :: #force_inline proc(self: ^CaptureManager, destination: CaptureDestination) -> BOOL { return msgSend(BOOL, self, "supportsDestination:", destination) } @@ -1035,27 +1021,27 @@ Methods: CommandBufferDescriptor :: struct { using _: NS.Copying(CommandBufferDescriptor) } @(objc_type=CommandBufferDescriptor, objc_class_name="alloc") -CommandBufferDescriptor_alloc :: proc() -> ^CommandBufferDescriptor { +CommandBufferDescriptor_alloc :: #force_inline proc() -> ^CommandBufferDescriptor { return msgSend(^CommandBufferDescriptor, CommandBufferDescriptor, "alloc") } @(objc_type=CommandBufferDescriptor, objc_name="init") -CommandBufferDescriptor_init :: proc(self: ^CommandBufferDescriptor) -> ^CommandBufferDescriptor { +CommandBufferDescriptor_init :: #force_inline proc(self: ^CommandBufferDescriptor) -> ^CommandBufferDescriptor { return msgSend(^CommandBufferDescriptor, self, "init") } @(objc_type=CommandBufferDescriptor, objc_name="errorOptions") -CommandBufferDescriptor_errorOptions :: proc(self: ^CommandBufferDescriptor) -> CommandBufferErrorOption { +CommandBufferDescriptor_errorOptions :: #force_inline proc(self: ^CommandBufferDescriptor) -> CommandBufferErrorOption { return msgSend(CommandBufferErrorOption, self, "errorOptions") } @(objc_type=CommandBufferDescriptor, objc_name="retainedReferences") -CommandBufferDescriptor_retainedReferences :: proc(self: ^CommandBufferDescriptor) -> BOOL { +CommandBufferDescriptor_retainedReferences :: #force_inline proc(self: ^CommandBufferDescriptor) -> BOOL { return msgSend(BOOL, self, "retainedReferences") } @(objc_type=CommandBufferDescriptor, objc_name="setErrorOptions") -CommandBufferDescriptor_setErrorOptions :: proc(self: ^CommandBufferDescriptor, errorOptions: CommandBufferErrorOption) { +CommandBufferDescriptor_setErrorOptions :: #force_inline proc(self: ^CommandBufferDescriptor, errorOptions: CommandBufferErrorOption) { msgSend(nil, self, "setErrorOptions:", errorOptions) } @(objc_type=CommandBufferDescriptor, objc_name="setRetainedReferences") -CommandBufferDescriptor_setRetainedReferences :: proc(self: ^CommandBufferDescriptor, retainedReferences: BOOL) { +CommandBufferDescriptor_setRetainedReferences :: #force_inline proc(self: ^CommandBufferDescriptor, retainedReferences: BOOL) { msgSend(nil, self, "setRetainedReferences:", retainedReferences) } @@ -1087,67 +1073,67 @@ Methods: CompileOptions :: struct { using _: NS.Copying(CompileOptions) } @(objc_type=CompileOptions, objc_class_name="alloc") -CompileOptions_alloc :: proc() -> ^CompileOptions { +CompileOptions_alloc :: #force_inline proc() -> ^CompileOptions { return msgSend(^CompileOptions, CompileOptions, "alloc") } @(objc_type=CompileOptions, objc_name="init") -CompileOptions_init :: proc(self: ^CompileOptions) -> ^CompileOptions { +CompileOptions_init :: #force_inline proc(self: ^CompileOptions) -> ^CompileOptions { return msgSend(^CompileOptions, self, "init") } @(objc_type=CompileOptions, objc_name="fastMathEnabled") -CompileOptions_fastMathEnabled :: proc(self: ^CompileOptions) -> BOOL { +CompileOptions_fastMathEnabled :: #force_inline proc(self: ^CompileOptions) -> BOOL { return msgSend(BOOL, self, "fastMathEnabled") } @(objc_type=CompileOptions, objc_name="installName") -CompileOptions_installName :: proc(self: ^CompileOptions) -> ^NS.String { +CompileOptions_installName :: #force_inline proc(self: ^CompileOptions) -> ^NS.String { return msgSend(^NS.String, self, "installName") } @(objc_type=CompileOptions, objc_name="languageVersion") -CompileOptions_languageVersion :: proc(self: ^CompileOptions) -> LanguageVersion { +CompileOptions_languageVersion :: #force_inline proc(self: ^CompileOptions) -> LanguageVersion { return msgSend(LanguageVersion, self, "languageVersion") } @(objc_type=CompileOptions, objc_name="libraries") -CompileOptions_libraries :: proc(self: ^CompileOptions) -> ^NS.Array { +CompileOptions_libraries :: #force_inline proc(self: ^CompileOptions) -> ^NS.Array { return msgSend(^NS.Array, self, "libraries") } @(objc_type=CompileOptions, objc_name="libraryType") -CompileOptions_libraryType :: proc(self: ^CompileOptions) -> LibraryType { +CompileOptions_libraryType :: #force_inline proc(self: ^CompileOptions) -> LibraryType { return msgSend(LibraryType, self, "libraryType") } @(objc_type=CompileOptions, objc_name="preprocessorMacros") -CompileOptions_preprocessorMacros :: proc(self: ^CompileOptions) -> ^NS.Dictionary { +CompileOptions_preprocessorMacros :: #force_inline proc(self: ^CompileOptions) -> ^NS.Dictionary { return msgSend(^NS.Dictionary, self, "preprocessorMacros") } @(objc_type=CompileOptions, objc_name="preserveInvariance") -CompileOptions_preserveInvariance :: proc(self: ^CompileOptions) -> BOOL { +CompileOptions_preserveInvariance :: #force_inline proc(self: ^CompileOptions) -> BOOL { return msgSend(BOOL, self, "preserveInvariance") } @(objc_type=CompileOptions, objc_name="setFastMathEnabled") -CompileOptions_setFastMathEnabled :: proc(self: ^CompileOptions, fastMathEnabled: BOOL) { +CompileOptions_setFastMathEnabled :: #force_inline proc(self: ^CompileOptions, fastMathEnabled: BOOL) { msgSend(nil, self, "setFastMathEnabled:", fastMathEnabled) } @(objc_type=CompileOptions, objc_name="setInstallName") -CompileOptions_setInstallName :: proc(self: ^CompileOptions, installName: ^NS.String) { +CompileOptions_setInstallName :: #force_inline proc(self: ^CompileOptions, installName: ^NS.String) { msgSend(nil, self, "setInstallName:", installName) } @(objc_type=CompileOptions, objc_name="setLanguageVersion") -CompileOptions_setLanguageVersion :: proc(self: ^CompileOptions, languageVersion: LanguageVersion) { +CompileOptions_setLanguageVersion :: #force_inline proc(self: ^CompileOptions, languageVersion: LanguageVersion) { msgSend(nil, self, "setLanguageVersion:", languageVersion) } @(objc_type=CompileOptions, objc_name="setLibraries") -CompileOptions_setLibraries :: proc(self: ^CompileOptions, libraries: ^NS.Array) { +CompileOptions_setLibraries :: #force_inline proc(self: ^CompileOptions, libraries: ^NS.Array) { msgSend(nil, self, "setLibraries:", libraries) } @(objc_type=CompileOptions, objc_name="setLibraryType") -CompileOptions_setLibraryType :: proc(self: ^CompileOptions, libraryType: LibraryType) { +CompileOptions_setLibraryType :: #force_inline proc(self: ^CompileOptions, libraryType: LibraryType) { msgSend(nil, self, "setLibraryType:", libraryType) } @(objc_type=CompileOptions, objc_name="setPreprocessorMacros") -CompileOptions_setPreprocessorMacros :: proc(self: ^CompileOptions, preprocessorMacros: ^NS.Dictionary) { +CompileOptions_setPreprocessorMacros :: #force_inline proc(self: ^CompileOptions, preprocessorMacros: ^NS.Dictionary) { msgSend(nil, self, "setPreprocessorMacros:", preprocessorMacros) } @(objc_type=CompileOptions, objc_name="setPreserveInvariance") -CompileOptions_setPreserveInvariance :: proc(self: ^CompileOptions, preserveInvariance: BOOL) { +CompileOptions_setPreserveInvariance :: #force_inline proc(self: ^CompileOptions, preserveInvariance: BOOL) { msgSend(nil, self, "setPreserveInvariance:", preserveInvariance) } @@ -1169,27 +1155,27 @@ Methods: ComputePassDescriptor :: struct { using _: NS.Copying(ComputePassDescriptor) } @(objc_type=ComputePassDescriptor, objc_class_name="alloc") -ComputePassDescriptor_alloc :: proc() -> ^ComputePassDescriptor { +ComputePassDescriptor_alloc :: #force_inline proc() -> ^ComputePassDescriptor { return msgSend(^ComputePassDescriptor, ComputePassDescriptor, "alloc") } @(objc_type=ComputePassDescriptor, objc_name="init") -ComputePassDescriptor_init :: proc(self: ^ComputePassDescriptor) -> ^ComputePassDescriptor { +ComputePassDescriptor_init :: #force_inline proc(self: ^ComputePassDescriptor) -> ^ComputePassDescriptor { return msgSend(^ComputePassDescriptor, self, "init") } @(objc_type=ComputePassDescriptor, objc_class_name="computePassDescriptor") -ComputePassDescriptor_computePassDescriptor :: proc() -> ^ComputePassDescriptor { +ComputePassDescriptor_computePassDescriptor :: #force_inline proc() -> ^ComputePassDescriptor { return msgSend(^ComputePassDescriptor, ComputePassDescriptor, "computePassDescriptor") } @(objc_type=ComputePassDescriptor, objc_name="dispatchType") -ComputePassDescriptor_dispatchType :: proc(self: ^ComputePassDescriptor) -> DispatchType { +ComputePassDescriptor_dispatchType :: #force_inline proc(self: ^ComputePassDescriptor) -> DispatchType { return msgSend(DispatchType, self, "dispatchType") } @(objc_type=ComputePassDescriptor, objc_name="sampleBufferAttachments") -ComputePassDescriptor_sampleBufferAttachments :: proc(self: ^ComputePassDescriptor) -> ^ComputePassSampleBufferAttachmentDescriptorArray { +ComputePassDescriptor_sampleBufferAttachments :: #force_inline proc(self: ^ComputePassDescriptor) -> ^ComputePassSampleBufferAttachmentDescriptorArray { return msgSend(^ComputePassSampleBufferAttachmentDescriptorArray, self, "sampleBufferAttachments") } @(objc_type=ComputePassDescriptor, objc_name="setDispatchType") -ComputePassDescriptor_setDispatchType :: proc(self: ^ComputePassDescriptor, dispatchType: DispatchType) { +ComputePassDescriptor_setDispatchType :: #force_inline proc(self: ^ComputePassDescriptor, dispatchType: DispatchType) { msgSend(nil, self, "setDispatchType:", dispatchType) } @@ -1213,35 +1199,35 @@ Methods: ComputePassSampleBufferAttachmentDescriptor :: struct { using _: NS.Copying(ComputePassSampleBufferAttachmentDescriptor) } @(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_class_name="alloc") -ComputePassSampleBufferAttachmentDescriptor_alloc :: proc() -> ^ComputePassSampleBufferAttachmentDescriptor { +ComputePassSampleBufferAttachmentDescriptor_alloc :: #force_inline proc() -> ^ComputePassSampleBufferAttachmentDescriptor { return msgSend(^ComputePassSampleBufferAttachmentDescriptor, ComputePassSampleBufferAttachmentDescriptor, "alloc") } @(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="init") -ComputePassSampleBufferAttachmentDescriptor_init :: proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> ^ComputePassSampleBufferAttachmentDescriptor { +ComputePassSampleBufferAttachmentDescriptor_init :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> ^ComputePassSampleBufferAttachmentDescriptor { return msgSend(^ComputePassSampleBufferAttachmentDescriptor, self, "init") } @(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="endOfEncoderSampleIndex") -ComputePassSampleBufferAttachmentDescriptor_endOfEncoderSampleIndex :: proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> NS.Integer { +ComputePassSampleBufferAttachmentDescriptor_endOfEncoderSampleIndex :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "endOfEncoderSampleIndex") } @(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="sampleBuffer") -ComputePassSampleBufferAttachmentDescriptor_sampleBuffer :: proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> ^ComputePassSampleBufferAttachmentDescriptor { +ComputePassSampleBufferAttachmentDescriptor_sampleBuffer :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> ^ComputePassSampleBufferAttachmentDescriptor { return msgSend(^ComputePassSampleBufferAttachmentDescriptor, self, "sampleBuffer") } @(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="setEndOfEncoderSampleIndex") -ComputePassSampleBufferAttachmentDescriptor_setEndOfEncoderSampleIndex :: proc(self: ^ComputePassSampleBufferAttachmentDescriptor, endOfEncoderSampleIndex: NS.Integer) { +ComputePassSampleBufferAttachmentDescriptor_setEndOfEncoderSampleIndex :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor, endOfEncoderSampleIndex: NS.Integer) { msgSend(nil, self, "setEndOfEncoderSampleIndex:", endOfEncoderSampleIndex) } @(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="setSampleBuffer") -ComputePassSampleBufferAttachmentDescriptor_setSampleBuffer :: proc(self: ^ComputePassSampleBufferAttachmentDescriptor, sampleBuffer: ^NS.Object) { +ComputePassSampleBufferAttachmentDescriptor_setSampleBuffer :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor, sampleBuffer: ^NS.Object) { msgSend(nil, self, "setSampleBuffer:", sampleBuffer) } @(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="setStartOfEncoderSampleIndex") -ComputePassSampleBufferAttachmentDescriptor_setStartOfEncoderSampleIndex :: proc(self: ^ComputePassSampleBufferAttachmentDescriptor, startOfEncoderSampleIndex: NS.Integer) { +ComputePassSampleBufferAttachmentDescriptor_setStartOfEncoderSampleIndex :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor, startOfEncoderSampleIndex: NS.Integer) { msgSend(nil, self, "setStartOfEncoderSampleIndex:", startOfEncoderSampleIndex) } @(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="startOfEncoderSampleIndex") -ComputePassSampleBufferAttachmentDescriptor_startOfEncoderSampleIndex :: proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> NS.Integer { +ComputePassSampleBufferAttachmentDescriptor_startOfEncoderSampleIndex :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "startOfEncoderSampleIndex") } @@ -1261,19 +1247,19 @@ Methods: ComputePassSampleBufferAttachmentDescriptorArray :: struct { using _: NS.Object } @(objc_type=ComputePassSampleBufferAttachmentDescriptorArray, objc_class_name="alloc") -ComputePassSampleBufferAttachmentDescriptorArray_alloc :: proc() -> ^ComputePassSampleBufferAttachmentDescriptorArray { +ComputePassSampleBufferAttachmentDescriptorArray_alloc :: #force_inline proc() -> ^ComputePassSampleBufferAttachmentDescriptorArray { return msgSend(^ComputePassSampleBufferAttachmentDescriptorArray, ComputePassSampleBufferAttachmentDescriptorArray, "alloc") } @(objc_type=ComputePassSampleBufferAttachmentDescriptorArray, objc_name="init") -ComputePassSampleBufferAttachmentDescriptorArray_init :: proc(self: ^ComputePassSampleBufferAttachmentDescriptorArray) -> ^ComputePassSampleBufferAttachmentDescriptorArray { +ComputePassSampleBufferAttachmentDescriptorArray_init :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptorArray) -> ^ComputePassSampleBufferAttachmentDescriptorArray { return msgSend(^ComputePassSampleBufferAttachmentDescriptorArray, self, "init") } @(objc_type=ComputePassSampleBufferAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") -ComputePassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: proc(self: ^ComputePassSampleBufferAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^ComputePassSampleBufferAttachmentDescriptor { +ComputePassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^ComputePassSampleBufferAttachmentDescriptor { return msgSend(^ComputePassSampleBufferAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) } @(objc_type=ComputePassSampleBufferAttachmentDescriptorArray, objc_name="setObject") -ComputePassSampleBufferAttachmentDescriptorArray_setObject :: proc(self: ^ComputePassSampleBufferAttachmentDescriptorArray, attachment: ^ComputePassSampleBufferAttachmentDescriptor, attachmentIndex: ^NS.Object) { +ComputePassSampleBufferAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptorArray, attachment: ^ComputePassSampleBufferAttachmentDescriptor, attachmentIndex: ^NS.Object) { msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) } @@ -1315,107 +1301,107 @@ Methods: ComputePipelineDescriptor :: struct { using _: NS.Copying(ComputePipelineDescriptor) } @(objc_type=ComputePipelineDescriptor, objc_class_name="alloc") -ComputePipelineDescriptor_alloc :: proc() -> ^ComputePipelineDescriptor { +ComputePipelineDescriptor_alloc :: #force_inline proc() -> ^ComputePipelineDescriptor { return msgSend(^ComputePipelineDescriptor, ComputePipelineDescriptor, "alloc") } @(objc_type=ComputePipelineDescriptor, objc_name="init") -ComputePipelineDescriptor_init :: proc(self: ^ComputePipelineDescriptor) -> ^ComputePipelineDescriptor { +ComputePipelineDescriptor_init :: #force_inline proc(self: ^ComputePipelineDescriptor) -> ^ComputePipelineDescriptor { return msgSend(^ComputePipelineDescriptor, self, "init") } @(objc_type=ComputePipelineDescriptor, objc_name="binaryArchives") -ComputePipelineDescriptor_binaryArchives :: proc(self: ^ComputePipelineDescriptor) -> ^NS.Array { +ComputePipelineDescriptor_binaryArchives :: #force_inline proc(self: ^ComputePipelineDescriptor) -> ^NS.Array { return msgSend(^NS.Array, self, "binaryArchives") } @(objc_type=ComputePipelineDescriptor, objc_name="buffers") -ComputePipelineDescriptor_buffers :: proc(self: ^ComputePipelineDescriptor) -> ^PipelineBufferDescriptorArray { +ComputePipelineDescriptor_buffers :: #force_inline proc(self: ^ComputePipelineDescriptor) -> ^PipelineBufferDescriptorArray { return msgSend(^PipelineBufferDescriptorArray, self, "buffers") } @(objc_type=ComputePipelineDescriptor, objc_name="computeFunction") -ComputePipelineDescriptor_computeFunction :: proc(self: ^ComputePipelineDescriptor) -> ^ComputePipelineDescriptor { +ComputePipelineDescriptor_computeFunction :: #force_inline proc(self: ^ComputePipelineDescriptor) -> ^ComputePipelineDescriptor { return msgSend(^ComputePipelineDescriptor, self, "computeFunction") } @(objc_type=ComputePipelineDescriptor, objc_name="insertLibraries") -ComputePipelineDescriptor_insertLibraries :: proc(self: ^ComputePipelineDescriptor) -> ^NS.Array { +ComputePipelineDescriptor_insertLibraries :: #force_inline proc(self: ^ComputePipelineDescriptor) -> ^NS.Array { return msgSend(^NS.Array, self, "insertLibraries") } @(objc_type=ComputePipelineDescriptor, objc_name="label") -ComputePipelineDescriptor_label :: proc(self: ^ComputePipelineDescriptor) -> ^NS.String { +ComputePipelineDescriptor_label :: #force_inline proc(self: ^ComputePipelineDescriptor) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=ComputePipelineDescriptor, objc_name="linkedFunctions") -ComputePipelineDescriptor_linkedFunctions :: proc(self: ^ComputePipelineDescriptor) -> ^LinkedFunctions { +ComputePipelineDescriptor_linkedFunctions :: #force_inline proc(self: ^ComputePipelineDescriptor) -> ^LinkedFunctions { return msgSend(^LinkedFunctions, self, "linkedFunctions") } @(objc_type=ComputePipelineDescriptor, objc_name="maxCallStackDepth") -ComputePipelineDescriptor_maxCallStackDepth :: proc(self: ^ComputePipelineDescriptor) -> NS.Integer { +ComputePipelineDescriptor_maxCallStackDepth :: #force_inline proc(self: ^ComputePipelineDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "maxCallStackDepth") } @(objc_type=ComputePipelineDescriptor, objc_name="maxTotalThreadsPerThreadgroup") -ComputePipelineDescriptor_maxTotalThreadsPerThreadgroup :: proc(self: ^ComputePipelineDescriptor) -> NS.Integer { +ComputePipelineDescriptor_maxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^ComputePipelineDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "maxTotalThreadsPerThreadgroup") } @(objc_type=ComputePipelineDescriptor, objc_name="reset") -ComputePipelineDescriptor_reset :: proc(self: ^ComputePipelineDescriptor) { +ComputePipelineDescriptor_reset :: #force_inline proc(self: ^ComputePipelineDescriptor) { msgSend(nil, self, "reset") } @(objc_type=ComputePipelineDescriptor, objc_name="setBinaryArchives") -ComputePipelineDescriptor_setBinaryArchives :: proc(self: ^ComputePipelineDescriptor, binaryArchives: ^NS.Array) { +ComputePipelineDescriptor_setBinaryArchives :: #force_inline proc(self: ^ComputePipelineDescriptor, binaryArchives: ^NS.Array) { msgSend(nil, self, "setBinaryArchives:", binaryArchives) } @(objc_type=ComputePipelineDescriptor, objc_name="setComputeFunction") -ComputePipelineDescriptor_setComputeFunction :: proc(self: ^ComputePipelineDescriptor, computeFunction: ^NS.Object) { +ComputePipelineDescriptor_setComputeFunction :: #force_inline proc(self: ^ComputePipelineDescriptor, computeFunction: ^NS.Object) { msgSend(nil, self, "setComputeFunction:", computeFunction) } @(objc_type=ComputePipelineDescriptor, objc_name="setInsertLibraries") -ComputePipelineDescriptor_setInsertLibraries :: proc(self: ^ComputePipelineDescriptor, insertLibraries: ^NS.Array) { +ComputePipelineDescriptor_setInsertLibraries :: #force_inline proc(self: ^ComputePipelineDescriptor, insertLibraries: ^NS.Array) { msgSend(nil, self, "setInsertLibraries:", insertLibraries) } @(objc_type=ComputePipelineDescriptor, objc_name="setLabel") -ComputePipelineDescriptor_setLabel :: proc(self: ^ComputePipelineDescriptor, label: ^NS.String) { +ComputePipelineDescriptor_setLabel :: #force_inline proc(self: ^ComputePipelineDescriptor, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @(objc_type=ComputePipelineDescriptor, objc_name="setLinkedFunctions") -ComputePipelineDescriptor_setLinkedFunctions :: proc(self: ^ComputePipelineDescriptor, linkedFunctions: ^LinkedFunctions) { +ComputePipelineDescriptor_setLinkedFunctions :: #force_inline proc(self: ^ComputePipelineDescriptor, linkedFunctions: ^LinkedFunctions) { msgSend(nil, self, "setLinkedFunctions:", linkedFunctions) } @(objc_type=ComputePipelineDescriptor, objc_name="setMaxCallStackDepth") -ComputePipelineDescriptor_setMaxCallStackDepth :: proc(self: ^ComputePipelineDescriptor, maxCallStackDepth: NS.Integer) { +ComputePipelineDescriptor_setMaxCallStackDepth :: #force_inline proc(self: ^ComputePipelineDescriptor, maxCallStackDepth: NS.Integer) { msgSend(nil, self, "setMaxCallStackDepth:", maxCallStackDepth) } @(objc_type=ComputePipelineDescriptor, objc_name="setMaxTotalThreadsPerThreadgroup") -ComputePipelineDescriptor_setMaxTotalThreadsPerThreadgroup :: proc(self: ^ComputePipelineDescriptor, maxTotalThreadsPerThreadgroup: NS.Integer) { +ComputePipelineDescriptor_setMaxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^ComputePipelineDescriptor, maxTotalThreadsPerThreadgroup: NS.Integer) { msgSend(nil, self, "setMaxTotalThreadsPerThreadgroup:", maxTotalThreadsPerThreadgroup) } @(objc_type=ComputePipelineDescriptor, objc_name="setStageInputDescriptor") -ComputePipelineDescriptor_setStageInputDescriptor :: proc(self: ^ComputePipelineDescriptor, stageInputDescriptor: ^StageInputOutputDescriptor) { +ComputePipelineDescriptor_setStageInputDescriptor :: #force_inline proc(self: ^ComputePipelineDescriptor, stageInputDescriptor: ^StageInputOutputDescriptor) { msgSend(nil, self, "setStageInputDescriptor:", stageInputDescriptor) } @(objc_type=ComputePipelineDescriptor, objc_name="setSupportAddingBinaryFunctions") -ComputePipelineDescriptor_setSupportAddingBinaryFunctions :: proc(self: ^ComputePipelineDescriptor, supportAddingBinaryFunctions: BOOL) { +ComputePipelineDescriptor_setSupportAddingBinaryFunctions :: #force_inline proc(self: ^ComputePipelineDescriptor, supportAddingBinaryFunctions: BOOL) { msgSend(nil, self, "setSupportAddingBinaryFunctions:", supportAddingBinaryFunctions) } @(objc_type=ComputePipelineDescriptor, objc_name="setSupportIndirectCommandBuffers") -ComputePipelineDescriptor_setSupportIndirectCommandBuffers :: proc(self: ^ComputePipelineDescriptor, supportIndirectCommandBuffers: BOOL) { +ComputePipelineDescriptor_setSupportIndirectCommandBuffers :: #force_inline proc(self: ^ComputePipelineDescriptor, supportIndirectCommandBuffers: BOOL) { msgSend(nil, self, "setSupportIndirectCommandBuffers:", supportIndirectCommandBuffers) } @(objc_type=ComputePipelineDescriptor, objc_name="setThreadGroupSizeIsMultipleOfThreadExecutionWidth") -ComputePipelineDescriptor_setThreadGroupSizeIsMultipleOfThreadExecutionWidth :: proc(self: ^ComputePipelineDescriptor, threadGroupSizeIsMultipleOfThreadExecutionWidth: BOOL) { +ComputePipelineDescriptor_setThreadGroupSizeIsMultipleOfThreadExecutionWidth :: #force_inline proc(self: ^ComputePipelineDescriptor, threadGroupSizeIsMultipleOfThreadExecutionWidth: BOOL) { msgSend(nil, self, "setThreadGroupSizeIsMultipleOfThreadExecutionWidth:", threadGroupSizeIsMultipleOfThreadExecutionWidth) } @(objc_type=ComputePipelineDescriptor, objc_name="stageInputDescriptor") -ComputePipelineDescriptor_stageInputDescriptor :: proc(self: ^ComputePipelineDescriptor) -> ^StageInputOutputDescriptor { +ComputePipelineDescriptor_stageInputDescriptor :: #force_inline proc(self: ^ComputePipelineDescriptor) -> ^StageInputOutputDescriptor { return msgSend(^StageInputOutputDescriptor, self, "stageInputDescriptor") } @(objc_type=ComputePipelineDescriptor, objc_name="supportAddingBinaryFunctions") -ComputePipelineDescriptor_supportAddingBinaryFunctions :: proc(self: ^ComputePipelineDescriptor) -> BOOL { +ComputePipelineDescriptor_supportAddingBinaryFunctions :: #force_inline proc(self: ^ComputePipelineDescriptor) -> BOOL { return msgSend(BOOL, self, "supportAddingBinaryFunctions") } @(objc_type=ComputePipelineDescriptor, objc_name="supportIndirectCommandBuffers") -ComputePipelineDescriptor_supportIndirectCommandBuffers :: proc(self: ^ComputePipelineDescriptor) -> BOOL { +ComputePipelineDescriptor_supportIndirectCommandBuffers :: #force_inline proc(self: ^ComputePipelineDescriptor) -> BOOL { return msgSend(BOOL, self, "supportIndirectCommandBuffers") } @(objc_type=ComputePipelineDescriptor, objc_name="threadGroupSizeIsMultipleOfThreadExecutionWidth") -ComputePipelineDescriptor_threadGroupSizeIsMultipleOfThreadExecutionWidth :: proc(self: ^ComputePipelineDescriptor) -> BOOL { +ComputePipelineDescriptor_threadGroupSizeIsMultipleOfThreadExecutionWidth :: #force_inline proc(self: ^ComputePipelineDescriptor) -> BOOL { return msgSend(BOOL, self, "threadGroupSizeIsMultipleOfThreadExecutionWidth") } @@ -1434,15 +1420,15 @@ Methods: ComputePipelineReflection :: struct { using _: NS.Object } @(objc_type=ComputePipelineReflection, objc_class_name="alloc") -ComputePipelineReflection_alloc :: proc() -> ^ComputePipelineReflection { +ComputePipelineReflection_alloc :: #force_inline proc() -> ^ComputePipelineReflection { return msgSend(^ComputePipelineReflection, ComputePipelineReflection, "alloc") } @(objc_type=ComputePipelineReflection, objc_name="init") -ComputePipelineReflection_init :: proc(self: ^ComputePipelineReflection) -> ^ComputePipelineReflection { +ComputePipelineReflection_init :: #force_inline proc(self: ^ComputePipelineReflection) -> ^ComputePipelineReflection { return msgSend(^ComputePipelineReflection, self, "init") } @(objc_type=ComputePipelineReflection, objc_name="arguments") -ComputePipelineReflection_arguments :: proc(self: ^ComputePipelineReflection) -> ^NS.Array { +ComputePipelineReflection_arguments :: #force_inline proc(self: ^ComputePipelineReflection) -> ^NS.Array { return msgSend(^NS.Array, self, "arguments") } @@ -1468,43 +1454,43 @@ Methods: CounterSampleBufferDescriptor :: struct { using _: NS.Copying(CounterSampleBufferDescriptor) } @(objc_type=CounterSampleBufferDescriptor, objc_class_name="alloc") -CounterSampleBufferDescriptor_alloc :: proc() -> ^CounterSampleBufferDescriptor { +CounterSampleBufferDescriptor_alloc :: #force_inline proc() -> ^CounterSampleBufferDescriptor { return msgSend(^CounterSampleBufferDescriptor, CounterSampleBufferDescriptor, "alloc") } @(objc_type=CounterSampleBufferDescriptor, objc_name="init") -CounterSampleBufferDescriptor_init :: proc(self: ^CounterSampleBufferDescriptor) -> ^CounterSampleBufferDescriptor { +CounterSampleBufferDescriptor_init :: #force_inline proc(self: ^CounterSampleBufferDescriptor) -> ^CounterSampleBufferDescriptor { return msgSend(^CounterSampleBufferDescriptor, self, "init") } @(objc_type=CounterSampleBufferDescriptor, objc_name="counterSet") -CounterSampleBufferDescriptor_counterSet :: proc(self: ^CounterSampleBufferDescriptor) -> ^CounterSampleBufferDescriptor { +CounterSampleBufferDescriptor_counterSet :: #force_inline proc(self: ^CounterSampleBufferDescriptor) -> ^CounterSampleBufferDescriptor { return msgSend(^CounterSampleBufferDescriptor, self, "counterSet") } @(objc_type=CounterSampleBufferDescriptor, objc_name="label") -CounterSampleBufferDescriptor_label :: proc(self: ^CounterSampleBufferDescriptor) -> ^NS.String { +CounterSampleBufferDescriptor_label :: #force_inline proc(self: ^CounterSampleBufferDescriptor) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=CounterSampleBufferDescriptor, objc_name="sampleCount") -CounterSampleBufferDescriptor_sampleCount :: proc(self: ^CounterSampleBufferDescriptor) -> NS.Integer { +CounterSampleBufferDescriptor_sampleCount :: #force_inline proc(self: ^CounterSampleBufferDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "sampleCount") } @(objc_type=CounterSampleBufferDescriptor, objc_name="setCounterSet") -CounterSampleBufferDescriptor_setCounterSet :: proc(self: ^CounterSampleBufferDescriptor, counterSet: ^NS.Object) { +CounterSampleBufferDescriptor_setCounterSet :: #force_inline proc(self: ^CounterSampleBufferDescriptor, counterSet: ^NS.Object) { msgSend(nil, self, "setCounterSet:", counterSet) } @(objc_type=CounterSampleBufferDescriptor, objc_name="setLabel") -CounterSampleBufferDescriptor_setLabel :: proc(self: ^CounterSampleBufferDescriptor, label: ^NS.String) { +CounterSampleBufferDescriptor_setLabel :: #force_inline proc(self: ^CounterSampleBufferDescriptor, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @(objc_type=CounterSampleBufferDescriptor, objc_name="setSampleCount") -CounterSampleBufferDescriptor_setSampleCount :: proc(self: ^CounterSampleBufferDescriptor, sampleCount: NS.Integer) { +CounterSampleBufferDescriptor_setSampleCount :: #force_inline proc(self: ^CounterSampleBufferDescriptor, sampleCount: NS.Integer) { msgSend(nil, self, "setSampleCount:", sampleCount) } @(objc_type=CounterSampleBufferDescriptor, objc_name="setStorageMode") -CounterSampleBufferDescriptor_setStorageMode :: proc(self: ^CounterSampleBufferDescriptor, storageMode: StorageMode) { +CounterSampleBufferDescriptor_setStorageMode :: #force_inline proc(self: ^CounterSampleBufferDescriptor, storageMode: StorageMode) { msgSend(nil, self, "setStorageMode:", storageMode) } @(objc_type=CounterSampleBufferDescriptor, objc_name="storageMode") -CounterSampleBufferDescriptor_storageMode :: proc(self: ^CounterSampleBufferDescriptor) -> StorageMode { +CounterSampleBufferDescriptor_storageMode :: #force_inline proc(self: ^CounterSampleBufferDescriptor) -> StorageMode { return msgSend(StorageMode, self, "storageMode") } @@ -1532,51 +1518,51 @@ Methods: DepthStencilDescriptor :: struct { using _: NS.Copying(DepthStencilDescriptor) } @(objc_type=DepthStencilDescriptor, objc_class_name="alloc") -DepthStencilDescriptor_alloc :: proc() -> ^DepthStencilDescriptor { +DepthStencilDescriptor_alloc :: #force_inline proc() -> ^DepthStencilDescriptor { return msgSend(^DepthStencilDescriptor, DepthStencilDescriptor, "alloc") } @(objc_type=DepthStencilDescriptor, objc_name="init") -DepthStencilDescriptor_init :: proc(self: ^DepthStencilDescriptor) -> ^DepthStencilDescriptor { +DepthStencilDescriptor_init :: #force_inline proc(self: ^DepthStencilDescriptor) -> ^DepthStencilDescriptor { return msgSend(^DepthStencilDescriptor, self, "init") } @(objc_type=DepthStencilDescriptor, objc_name="backFaceStencil") -DepthStencilDescriptor_backFaceStencil :: proc(self: ^DepthStencilDescriptor) -> ^StencilDescriptor { +DepthStencilDescriptor_backFaceStencil :: #force_inline proc(self: ^DepthStencilDescriptor) -> ^StencilDescriptor { return msgSend(^StencilDescriptor, self, "backFaceStencil") } @(objc_type=DepthStencilDescriptor, objc_name="depthCompareFunction") -DepthStencilDescriptor_depthCompareFunction :: proc(self: ^DepthStencilDescriptor) -> CompareFunction { +DepthStencilDescriptor_depthCompareFunction :: #force_inline proc(self: ^DepthStencilDescriptor) -> CompareFunction { return msgSend(CompareFunction, self, "depthCompareFunction") } @(objc_type=DepthStencilDescriptor, objc_name="frontFaceStencil") -DepthStencilDescriptor_frontFaceStencil :: proc(self: ^DepthStencilDescriptor) -> ^StencilDescriptor { +DepthStencilDescriptor_frontFaceStencil :: #force_inline proc(self: ^DepthStencilDescriptor) -> ^StencilDescriptor { return msgSend(^StencilDescriptor, self, "frontFaceStencil") } @(objc_type=DepthStencilDescriptor, objc_name="isDepthWriteEnabled") -DepthStencilDescriptor_isDepthWriteEnabled :: proc(self: ^DepthStencilDescriptor) -> BOOL { +DepthStencilDescriptor_isDepthWriteEnabled :: #force_inline proc(self: ^DepthStencilDescriptor) -> BOOL { return msgSend(BOOL, self, "isDepthWriteEnabled") } @(objc_type=DepthStencilDescriptor, objc_name="label") -DepthStencilDescriptor_label :: proc(self: ^DepthStencilDescriptor) -> ^NS.String { +DepthStencilDescriptor_label :: #force_inline proc(self: ^DepthStencilDescriptor) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=DepthStencilDescriptor, objc_name="setBackFaceStencil") -DepthStencilDescriptor_setBackFaceStencil :: proc(self: ^DepthStencilDescriptor, backFaceStencil: ^StencilDescriptor) { +DepthStencilDescriptor_setBackFaceStencil :: #force_inline proc(self: ^DepthStencilDescriptor, backFaceStencil: ^StencilDescriptor) { msgSend(nil, self, "setBackFaceStencil:", backFaceStencil) } @(objc_type=DepthStencilDescriptor, objc_name="setDepthCompareFunction") -DepthStencilDescriptor_setDepthCompareFunction :: proc(self: ^DepthStencilDescriptor, depthCompareFunction: CompareFunction) { +DepthStencilDescriptor_setDepthCompareFunction :: #force_inline proc(self: ^DepthStencilDescriptor, depthCompareFunction: CompareFunction) { msgSend(nil, self, "setDepthCompareFunction:", depthCompareFunction) } @(objc_type=DepthStencilDescriptor, objc_name="setDepthWriteEnabled") -DepthStencilDescriptor_setDepthWriteEnabled :: proc(self: ^DepthStencilDescriptor, depthWriteEnabled: BOOL) { +DepthStencilDescriptor_setDepthWriteEnabled :: #force_inline proc(self: ^DepthStencilDescriptor, depthWriteEnabled: BOOL) { msgSend(nil, self, "setDepthWriteEnabled:", depthWriteEnabled) } @(objc_type=DepthStencilDescriptor, objc_name="setFrontFaceStencil") -DepthStencilDescriptor_setFrontFaceStencil :: proc(self: ^DepthStencilDescriptor, frontFaceStencil: ^StencilDescriptor) { +DepthStencilDescriptor_setFrontFaceStencil :: #force_inline proc(self: ^DepthStencilDescriptor, frontFaceStencil: ^StencilDescriptor) { msgSend(nil, self, "setFrontFaceStencil:", frontFaceStencil) } @(objc_type=DepthStencilDescriptor, objc_name="setLabel") -DepthStencilDescriptor_setLabel :: proc(self: ^DepthStencilDescriptor, label: ^NS.String) { +DepthStencilDescriptor_setLabel :: #force_inline proc(self: ^DepthStencilDescriptor, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @@ -1598,27 +1584,27 @@ Methods: FunctionConstant :: struct { using _: NS.Copying(FunctionConstant) } @(objc_type=FunctionConstant, objc_class_name="alloc") -FunctionConstant_alloc :: proc() -> ^FunctionConstant { +FunctionConstant_alloc :: #force_inline proc() -> ^FunctionConstant { return msgSend(^FunctionConstant, FunctionConstant, "alloc") } @(objc_type=FunctionConstant, objc_name="init") -FunctionConstant_init :: proc(self: ^FunctionConstant) -> ^FunctionConstant { +FunctionConstant_init :: #force_inline proc(self: ^FunctionConstant) -> ^FunctionConstant { return msgSend(^FunctionConstant, self, "init") } @(objc_type=FunctionConstant, objc_name="index") -FunctionConstant_index :: proc(self: ^FunctionConstant) -> NS.Integer { +FunctionConstant_index :: #force_inline proc(self: ^FunctionConstant) -> NS.Integer { return msgSend(NS.Integer, self, "index") } @(objc_type=FunctionConstant, objc_name="name") -FunctionConstant_name :: proc(self: ^FunctionConstant) -> ^NS.String { +FunctionConstant_name :: #force_inline proc(self: ^FunctionConstant) -> ^NS.String { return msgSend(^NS.String, self, "name") } @(objc_type=FunctionConstant, objc_name="required") -FunctionConstant_required :: proc(self: ^FunctionConstant) -> BOOL { +FunctionConstant_required :: #force_inline proc(self: ^FunctionConstant) -> BOOL { return msgSend(BOOL, self, "required") } @(objc_type=FunctionConstant, objc_name="type") -FunctionConstant_type :: proc(self: ^FunctionConstant) -> DataType { +FunctionConstant_type :: #force_inline proc(self: ^FunctionConstant) -> DataType { return msgSend(DataType, self, "type") } @@ -1640,27 +1626,27 @@ Methods: FunctionConstantValues :: struct { using _: NS.Copying(FunctionConstantValues) } @(objc_type=FunctionConstantValues, objc_class_name="alloc") -FunctionConstantValues_alloc :: proc() -> ^FunctionConstantValues { +FunctionConstantValues_alloc :: #force_inline proc() -> ^FunctionConstantValues { return msgSend(^FunctionConstantValues, FunctionConstantValues, "alloc") } @(objc_type=FunctionConstantValues, objc_name="init") -FunctionConstantValues_init :: proc(self: ^FunctionConstantValues) -> ^FunctionConstantValues { +FunctionConstantValues_init :: #force_inline proc(self: ^FunctionConstantValues) -> ^FunctionConstantValues { return msgSend(^FunctionConstantValues, self, "init") } @(objc_type=FunctionConstantValues, objc_name="reset") -FunctionConstantValues_reset :: proc(self: ^FunctionConstantValues) { +FunctionConstantValues_reset :: #force_inline proc(self: ^FunctionConstantValues) { msgSend(nil, self, "reset") } @(objc_type=FunctionConstantValues, objc_name="setConstantValue_type_atIndex_") -FunctionConstantValues_setConstantValue_type_atIndex_ :: proc(self: ^FunctionConstantValues, value: rawptr, type: DataType, index: ^NS.Object) { +FunctionConstantValues_setConstantValue_type_atIndex_ :: #force_inline proc(self: ^FunctionConstantValues, value: rawptr, type: DataType, index: ^NS.Object) { msgSend(nil, self, "setConstantValue:type:atIndex:", value, type, index) } @(objc_type=FunctionConstantValues, objc_name="setConstantValue_type_withName_") -FunctionConstantValues_setConstantValue_type_withName_ :: proc(self: ^FunctionConstantValues, value: rawptr, type: DataType, name: ^NS.String) { +FunctionConstantValues_setConstantValue_type_withName_ :: #force_inline proc(self: ^FunctionConstantValues, value: rawptr, type: DataType, name: ^NS.String) { msgSend(nil, self, "setConstantValue:type:withName:", value, type, name) } @(objc_type=FunctionConstantValues, objc_name="setConstantValues") -FunctionConstantValues_setConstantValues :: proc(self: ^FunctionConstantValues, values: rawptr, type: DataType, range: NS.Range) { +FunctionConstantValues_setConstantValues :: #force_inline proc(self: ^FunctionConstantValues, values: rawptr, type: DataType, range: NS.Range) { msgSend(nil, self, "setConstantValues:type:withRange:", values, type, range) } @@ -1687,47 +1673,47 @@ Methods: FunctionDescriptor :: struct { using _: NS.Copying(FunctionDescriptor) } @(objc_type=FunctionDescriptor, objc_class_name="alloc") -FunctionDescriptor_alloc :: proc() -> ^FunctionDescriptor { +FunctionDescriptor_alloc :: #force_inline proc() -> ^FunctionDescriptor { return msgSend(^FunctionDescriptor, FunctionDescriptor, "alloc") } @(objc_type=FunctionDescriptor, objc_name="init") -FunctionDescriptor_init :: proc(self: ^FunctionDescriptor) -> ^FunctionDescriptor { +FunctionDescriptor_init :: #force_inline proc(self: ^FunctionDescriptor) -> ^FunctionDescriptor { return msgSend(^FunctionDescriptor, self, "init") } @(objc_type=FunctionDescriptor, objc_name="constantValues") -FunctionDescriptor_constantValues :: proc(self: ^FunctionDescriptor) -> ^FunctionConstantValues { +FunctionDescriptor_constantValues :: #force_inline proc(self: ^FunctionDescriptor) -> ^FunctionConstantValues { return msgSend(^FunctionConstantValues, self, "constantValues") } @(objc_type=FunctionDescriptor, objc_class_name="functionDescriptor") -FunctionDescriptor_functionDescriptor :: proc() -> ^FunctionDescriptor { +FunctionDescriptor_functionDescriptor :: #force_inline proc() -> ^FunctionDescriptor { return msgSend(^FunctionDescriptor, FunctionDescriptor, "functionDescriptor") } @(objc_type=FunctionDescriptor, objc_name="name") -FunctionDescriptor_name :: proc(self: ^FunctionDescriptor) -> ^NS.String { +FunctionDescriptor_name :: #force_inline proc(self: ^FunctionDescriptor) -> ^NS.String { return msgSend(^NS.String, self, "name") } @(objc_type=FunctionDescriptor, objc_name="options") -FunctionDescriptor_options :: proc(self: ^FunctionDescriptor) -> FunctionOptions { +FunctionDescriptor_options :: #force_inline proc(self: ^FunctionDescriptor) -> FunctionOptions { return msgSend(FunctionOptions, self, "options") } @(objc_type=FunctionDescriptor, objc_name="setConstantValues") -FunctionDescriptor_setConstantValues :: proc(self: ^FunctionDescriptor, constantValues: ^FunctionConstantValues) { +FunctionDescriptor_setConstantValues :: #force_inline proc(self: ^FunctionDescriptor, constantValues: ^FunctionConstantValues) { msgSend(nil, self, "setConstantValues:", constantValues) } @(objc_type=FunctionDescriptor, objc_name="setName") -FunctionDescriptor_setName :: proc(self: ^FunctionDescriptor, name: ^NS.String) { +FunctionDescriptor_setName :: #force_inline proc(self: ^FunctionDescriptor, name: ^NS.String) { msgSend(nil, self, "setName:", name) } @(objc_type=FunctionDescriptor, objc_name="setOptions") -FunctionDescriptor_setOptions :: proc(self: ^FunctionDescriptor, options: FunctionOptions) { +FunctionDescriptor_setOptions :: #force_inline proc(self: ^FunctionDescriptor, options: FunctionOptions) { msgSend(nil, self, "setOptions:", options) } @(objc_type=FunctionDescriptor, objc_name="setSpecializedName") -FunctionDescriptor_setSpecializedName :: proc(self: ^FunctionDescriptor, specializedName: ^NS.String) { +FunctionDescriptor_setSpecializedName :: #force_inline proc(self: ^FunctionDescriptor, specializedName: ^NS.String) { msgSend(nil, self, "setSpecializedName:", specializedName) } @(objc_type=FunctionDescriptor, objc_name="specializedName") -FunctionDescriptor_specializedName :: proc(self: ^FunctionDescriptor) -> ^NS.String { +FunctionDescriptor_specializedName :: #force_inline proc(self: ^FunctionDescriptor) -> ^NS.String { return msgSend(^NS.String, self, "specializedName") } @@ -1745,11 +1731,11 @@ Methods: IntersectionFunctionDescriptor :: struct { using _: NS.Copying(IntersectionFunctionDescriptor) } @(objc_type=IntersectionFunctionDescriptor, objc_class_name="alloc") -IntersectionFunctionDescriptor_alloc :: proc() -> ^IntersectionFunctionDescriptor { +IntersectionFunctionDescriptor_alloc :: #force_inline proc() -> ^IntersectionFunctionDescriptor { return msgSend(^IntersectionFunctionDescriptor, IntersectionFunctionDescriptor, "alloc") } @(objc_type=IntersectionFunctionDescriptor, objc_name="init") -IntersectionFunctionDescriptor_init :: proc(self: ^IntersectionFunctionDescriptor) -> ^IntersectionFunctionDescriptor { +IntersectionFunctionDescriptor_init :: #force_inline proc(self: ^IntersectionFunctionDescriptor) -> ^IntersectionFunctionDescriptor { return msgSend(^IntersectionFunctionDescriptor, self, "init") } @@ -1779,59 +1765,59 @@ Methods: HeapDescriptor :: struct { using _: NS.Copying(HeapDescriptor) } @(objc_type=HeapDescriptor, objc_class_name="alloc") -HeapDescriptor_alloc :: proc() -> ^HeapDescriptor { +HeapDescriptor_alloc :: #force_inline proc() -> ^HeapDescriptor { return msgSend(^HeapDescriptor, HeapDescriptor, "alloc") } @(objc_type=HeapDescriptor, objc_name="init") -HeapDescriptor_init :: proc(self: ^HeapDescriptor) -> ^HeapDescriptor { +HeapDescriptor_init :: #force_inline proc(self: ^HeapDescriptor) -> ^HeapDescriptor { return msgSend(^HeapDescriptor, self, "init") } @(objc_type=HeapDescriptor, objc_name="cpuCacheMode") -HeapDescriptor_cpuCacheMode :: proc(self: ^HeapDescriptor) -> CPUCacheMode { +HeapDescriptor_cpuCacheMode :: #force_inline proc(self: ^HeapDescriptor) -> CPUCacheMode { return msgSend(CPUCacheMode, self, "cpuCacheMode") } @(objc_type=HeapDescriptor, objc_name="hazardTrackingMode") -HeapDescriptor_hazardTrackingMode :: proc(self: ^HeapDescriptor) -> HazardTrackingMode { +HeapDescriptor_hazardTrackingMode :: #force_inline proc(self: ^HeapDescriptor) -> HazardTrackingMode { return msgSend(HazardTrackingMode, self, "hazardTrackingMode") } @(objc_type=HeapDescriptor, objc_name="resourceOptions") -HeapDescriptor_resourceOptions :: proc(self: ^HeapDescriptor) -> ResourceOptions { +HeapDescriptor_resourceOptions :: #force_inline proc(self: ^HeapDescriptor) -> ResourceOptions { return msgSend(ResourceOptions, self, "resourceOptions") } @(objc_type=HeapDescriptor, objc_name="setCpuCacheMode") -HeapDescriptor_setCpuCacheMode :: proc(self: ^HeapDescriptor, cpuCacheMode: CPUCacheMode) { +HeapDescriptor_setCpuCacheMode :: #force_inline proc(self: ^HeapDescriptor, cpuCacheMode: CPUCacheMode) { msgSend(nil, self, "setCpuCacheMode:", cpuCacheMode) } @(objc_type=HeapDescriptor, objc_name="setHazardTrackingMode") -HeapDescriptor_setHazardTrackingMode :: proc(self: ^HeapDescriptor, hazardTrackingMode: HazardTrackingMode) { +HeapDescriptor_setHazardTrackingMode :: #force_inline proc(self: ^HeapDescriptor, hazardTrackingMode: HazardTrackingMode) { msgSend(nil, self, "setHazardTrackingMode:", hazardTrackingMode) } @(objc_type=HeapDescriptor, objc_name="setResourceOptions") -HeapDescriptor_setResourceOptions :: proc(self: ^HeapDescriptor, resourceOptions: ResourceOptions) { +HeapDescriptor_setResourceOptions :: #force_inline proc(self: ^HeapDescriptor, resourceOptions: ResourceOptions) { msgSend(nil, self, "setResourceOptions:", resourceOptions) } @(objc_type=HeapDescriptor, objc_name="setSize") -HeapDescriptor_setSize :: proc(self: ^HeapDescriptor, size: NS.Integer) { +HeapDescriptor_setSize :: #force_inline proc(self: ^HeapDescriptor, size: NS.Integer) { msgSend(nil, self, "setSize:", size) } @(objc_type=HeapDescriptor, objc_name="setStorageMode") -HeapDescriptor_setStorageMode :: proc(self: ^HeapDescriptor, storageMode: StorageMode) { +HeapDescriptor_setStorageMode :: #force_inline proc(self: ^HeapDescriptor, storageMode: StorageMode) { msgSend(nil, self, "setStorageMode:", storageMode) } @(objc_type=HeapDescriptor, objc_name="setType") -HeapDescriptor_setType :: proc(self: ^HeapDescriptor, type: HeapType) { +HeapDescriptor_setType :: #force_inline proc(self: ^HeapDescriptor, type: HeapType) { msgSend(nil, self, "setType:", type) } @(objc_type=HeapDescriptor, objc_name="size") -HeapDescriptor_size :: proc(self: ^HeapDescriptor) -> NS.Integer { +HeapDescriptor_size :: #force_inline proc(self: ^HeapDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "size") } @(objc_type=HeapDescriptor, objc_name="storageMode") -HeapDescriptor_storageMode :: proc(self: ^HeapDescriptor) -> StorageMode { +HeapDescriptor_storageMode :: #force_inline proc(self: ^HeapDescriptor) -> StorageMode { return msgSend(StorageMode, self, "storageMode") } @(objc_type=HeapDescriptor, objc_name="type") -HeapDescriptor_type :: proc(self: ^HeapDescriptor) -> HeapType { +HeapDescriptor_type :: #force_inline proc(self: ^HeapDescriptor) -> HeapType { return msgSend(HeapType, self, "type") } @@ -1861,59 +1847,59 @@ Methods: IndirectCommandBufferDescriptor :: struct { using _: NS.Copying(IndirectCommandBufferDescriptor) } @(objc_type=IndirectCommandBufferDescriptor, objc_class_name="alloc") -IndirectCommandBufferDescriptor_alloc :: proc() -> ^IndirectCommandBufferDescriptor { +IndirectCommandBufferDescriptor_alloc :: #force_inline proc() -> ^IndirectCommandBufferDescriptor { return msgSend(^IndirectCommandBufferDescriptor, IndirectCommandBufferDescriptor, "alloc") } @(objc_type=IndirectCommandBufferDescriptor, objc_name="init") -IndirectCommandBufferDescriptor_init :: proc(self: ^IndirectCommandBufferDescriptor) -> ^IndirectCommandBufferDescriptor { +IndirectCommandBufferDescriptor_init :: #force_inline proc(self: ^IndirectCommandBufferDescriptor) -> ^IndirectCommandBufferDescriptor { return msgSend(^IndirectCommandBufferDescriptor, self, "init") } @(objc_type=IndirectCommandBufferDescriptor, objc_name="commandTypes") -IndirectCommandBufferDescriptor_commandTypes :: proc(self: ^IndirectCommandBufferDescriptor) -> IndirectCommandType { +IndirectCommandBufferDescriptor_commandTypes :: #force_inline proc(self: ^IndirectCommandBufferDescriptor) -> IndirectCommandType { return msgSend(IndirectCommandType, self, "commandTypes") } @(objc_type=IndirectCommandBufferDescriptor, objc_name="inheritBuffers") -IndirectCommandBufferDescriptor_inheritBuffers :: proc(self: ^IndirectCommandBufferDescriptor) -> BOOL { +IndirectCommandBufferDescriptor_inheritBuffers :: #force_inline proc(self: ^IndirectCommandBufferDescriptor) -> BOOL { return msgSend(BOOL, self, "inheritBuffers") } @(objc_type=IndirectCommandBufferDescriptor, objc_name="inheritPipelineState") -IndirectCommandBufferDescriptor_inheritPipelineState :: proc(self: ^IndirectCommandBufferDescriptor) -> BOOL { +IndirectCommandBufferDescriptor_inheritPipelineState :: #force_inline proc(self: ^IndirectCommandBufferDescriptor) -> BOOL { return msgSend(BOOL, self, "inheritPipelineState") } @(objc_type=IndirectCommandBufferDescriptor, objc_name="maxFragmentBufferBindCount") -IndirectCommandBufferDescriptor_maxFragmentBufferBindCount :: proc(self: ^IndirectCommandBufferDescriptor) -> NS.Integer { +IndirectCommandBufferDescriptor_maxFragmentBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "maxFragmentBufferBindCount") } @(objc_type=IndirectCommandBufferDescriptor, objc_name="maxKernelBufferBindCount") -IndirectCommandBufferDescriptor_maxKernelBufferBindCount :: proc(self: ^IndirectCommandBufferDescriptor) -> NS.Integer { +IndirectCommandBufferDescriptor_maxKernelBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "maxKernelBufferBindCount") } @(objc_type=IndirectCommandBufferDescriptor, objc_name="maxVertexBufferBindCount") -IndirectCommandBufferDescriptor_maxVertexBufferBindCount :: proc(self: ^IndirectCommandBufferDescriptor) -> NS.Integer { +IndirectCommandBufferDescriptor_maxVertexBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "maxVertexBufferBindCount") } @(objc_type=IndirectCommandBufferDescriptor, objc_name="setCommandTypes") -IndirectCommandBufferDescriptor_setCommandTypes :: proc(self: ^IndirectCommandBufferDescriptor, commandTypes: IndirectCommandType) { +IndirectCommandBufferDescriptor_setCommandTypes :: #force_inline proc(self: ^IndirectCommandBufferDescriptor, commandTypes: IndirectCommandType) { msgSend(nil, self, "setCommandTypes:", commandTypes) } @(objc_type=IndirectCommandBufferDescriptor, objc_name="setInheritBuffers") -IndirectCommandBufferDescriptor_setInheritBuffers :: proc(self: ^IndirectCommandBufferDescriptor, inheritBuffers: BOOL) { +IndirectCommandBufferDescriptor_setInheritBuffers :: #force_inline proc(self: ^IndirectCommandBufferDescriptor, inheritBuffers: BOOL) { msgSend(nil, self, "setInheritBuffers:", inheritBuffers) } @(objc_type=IndirectCommandBufferDescriptor, objc_name="setInheritPipelineState") -IndirectCommandBufferDescriptor_setInheritPipelineState :: proc(self: ^IndirectCommandBufferDescriptor, inheritPipelineState: BOOL) { +IndirectCommandBufferDescriptor_setInheritPipelineState :: #force_inline proc(self: ^IndirectCommandBufferDescriptor, inheritPipelineState: BOOL) { msgSend(nil, self, "setInheritPipelineState:", inheritPipelineState) } @(objc_type=IndirectCommandBufferDescriptor, objc_name="setMaxFragmentBufferBindCount") -IndirectCommandBufferDescriptor_setMaxFragmentBufferBindCount :: proc(self: ^IndirectCommandBufferDescriptor, maxFragmentBufferBindCount: NS.Integer) { +IndirectCommandBufferDescriptor_setMaxFragmentBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor, maxFragmentBufferBindCount: NS.Integer) { msgSend(nil, self, "setMaxFragmentBufferBindCount:", maxFragmentBufferBindCount) } @(objc_type=IndirectCommandBufferDescriptor, objc_name="setMaxKernelBufferBindCount") -IndirectCommandBufferDescriptor_setMaxKernelBufferBindCount :: proc(self: ^IndirectCommandBufferDescriptor, maxKernelBufferBindCount: NS.Integer) { +IndirectCommandBufferDescriptor_setMaxKernelBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor, maxKernelBufferBindCount: NS.Integer) { msgSend(nil, self, "setMaxKernelBufferBindCount:", maxKernelBufferBindCount) } @(objc_type=IndirectCommandBufferDescriptor, objc_name="setMaxVertexBufferBindCount") -IndirectCommandBufferDescriptor_setMaxVertexBufferBindCount :: proc(self: ^IndirectCommandBufferDescriptor, maxVertexBufferBindCount: NS.Integer) { +IndirectCommandBufferDescriptor_setMaxVertexBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor, maxVertexBufferBindCount: NS.Integer) { msgSend(nil, self, "setMaxVertexBufferBindCount:", maxVertexBufferBindCount) } @@ -1942,55 +1928,55 @@ Methods: InstanceAccelerationStructureDescriptor :: struct { using _: NS.Copying(InstanceAccelerationStructureDescriptor) } @(objc_type=InstanceAccelerationStructureDescriptor, objc_class_name="alloc") -InstanceAccelerationStructureDescriptor_alloc :: proc() -> ^InstanceAccelerationStructureDescriptor { +InstanceAccelerationStructureDescriptor_alloc :: #force_inline proc() -> ^InstanceAccelerationStructureDescriptor { return msgSend(^InstanceAccelerationStructureDescriptor, InstanceAccelerationStructureDescriptor, "alloc") } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="init") -InstanceAccelerationStructureDescriptor_init :: proc(self: ^InstanceAccelerationStructureDescriptor) -> ^InstanceAccelerationStructureDescriptor { +InstanceAccelerationStructureDescriptor_init :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor) -> ^InstanceAccelerationStructureDescriptor { return msgSend(^InstanceAccelerationStructureDescriptor, self, "init") } @(objc_type=InstanceAccelerationStructureDescriptor, objc_class_name="descriptor") -InstanceAccelerationStructureDescriptor_descriptor :: proc() -> ^InstanceAccelerationStructureDescriptor { +InstanceAccelerationStructureDescriptor_descriptor :: #force_inline proc() -> ^InstanceAccelerationStructureDescriptor { return msgSend(^InstanceAccelerationStructureDescriptor, InstanceAccelerationStructureDescriptor, "descriptor") } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="instanceCount") -InstanceAccelerationStructureDescriptor_instanceCount :: proc(self: ^InstanceAccelerationStructureDescriptor) -> NS.Integer { +InstanceAccelerationStructureDescriptor_instanceCount :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "instanceCount") } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="instanceDescriptorBuffer") -InstanceAccelerationStructureDescriptor_instanceDescriptorBuffer :: proc(self: ^InstanceAccelerationStructureDescriptor) -> ^InstanceAccelerationStructureDescriptor { +InstanceAccelerationStructureDescriptor_instanceDescriptorBuffer :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor) -> ^InstanceAccelerationStructureDescriptor { return msgSend(^InstanceAccelerationStructureDescriptor, self, "instanceDescriptorBuffer") } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="instanceDescriptorBufferOffset") -InstanceAccelerationStructureDescriptor_instanceDescriptorBufferOffset :: proc(self: ^InstanceAccelerationStructureDescriptor) -> NS.Integer { +InstanceAccelerationStructureDescriptor_instanceDescriptorBufferOffset :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "instanceDescriptorBufferOffset") } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="instanceDescriptorStride") -InstanceAccelerationStructureDescriptor_instanceDescriptorStride :: proc(self: ^InstanceAccelerationStructureDescriptor) -> NS.Integer { +InstanceAccelerationStructureDescriptor_instanceDescriptorStride :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "instanceDescriptorStride") } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="instancedAccelerationStructures") -InstanceAccelerationStructureDescriptor_instancedAccelerationStructures :: proc(self: ^InstanceAccelerationStructureDescriptor) -> ^NS.Array { +InstanceAccelerationStructureDescriptor_instancedAccelerationStructures :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor) -> ^NS.Array { return msgSend(^NS.Array, self, "instancedAccelerationStructures") } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="setInstanceCount") -InstanceAccelerationStructureDescriptor_setInstanceCount :: proc(self: ^InstanceAccelerationStructureDescriptor, instanceCount: NS.Integer) { +InstanceAccelerationStructureDescriptor_setInstanceCount :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor, instanceCount: NS.Integer) { msgSend(nil, self, "setInstanceCount:", instanceCount) } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="setInstanceDescriptorBuffer") -InstanceAccelerationStructureDescriptor_setInstanceDescriptorBuffer :: proc(self: ^InstanceAccelerationStructureDescriptor, instanceDescriptorBuffer: ^NS.Object) { +InstanceAccelerationStructureDescriptor_setInstanceDescriptorBuffer :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor, instanceDescriptorBuffer: ^NS.Object) { msgSend(nil, self, "setInstanceDescriptorBuffer:", instanceDescriptorBuffer) } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="setInstanceDescriptorBufferOffset") -InstanceAccelerationStructureDescriptor_setInstanceDescriptorBufferOffset :: proc(self: ^InstanceAccelerationStructureDescriptor, instanceDescriptorBufferOffset: NS.Integer) { +InstanceAccelerationStructureDescriptor_setInstanceDescriptorBufferOffset :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor, instanceDescriptorBufferOffset: NS.Integer) { msgSend(nil, self, "setInstanceDescriptorBufferOffset:", instanceDescriptorBufferOffset) } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="setInstanceDescriptorStride") -InstanceAccelerationStructureDescriptor_setInstanceDescriptorStride :: proc(self: ^InstanceAccelerationStructureDescriptor, instanceDescriptorStride: NS.Integer) { +InstanceAccelerationStructureDescriptor_setInstanceDescriptorStride :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor, instanceDescriptorStride: NS.Integer) { msgSend(nil, self, "setInstanceDescriptorStride:", instanceDescriptorStride) } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="setInstancedAccelerationStructures") -InstanceAccelerationStructureDescriptor_setInstancedAccelerationStructures :: proc(self: ^InstanceAccelerationStructureDescriptor, instancedAccelerationStructures: ^NS.Array) { +InstanceAccelerationStructureDescriptor_setInstancedAccelerationStructures :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor, instancedAccelerationStructures: ^NS.Array) { msgSend(nil, self, "setInstancedAccelerationStructures:", instancedAccelerationStructures) } @@ -2011,23 +1997,23 @@ Methods: IntersectionFunctionTableDescriptor :: struct { using _: NS.Copying(IntersectionFunctionTableDescriptor) } @(objc_type=IntersectionFunctionTableDescriptor, objc_class_name="alloc") -IntersectionFunctionTableDescriptor_alloc :: proc() -> ^IntersectionFunctionTableDescriptor { +IntersectionFunctionTableDescriptor_alloc :: #force_inline proc() -> ^IntersectionFunctionTableDescriptor { return msgSend(^IntersectionFunctionTableDescriptor, IntersectionFunctionTableDescriptor, "alloc") } @(objc_type=IntersectionFunctionTableDescriptor, objc_name="init") -IntersectionFunctionTableDescriptor_init :: proc(self: ^IntersectionFunctionTableDescriptor) -> ^IntersectionFunctionTableDescriptor { +IntersectionFunctionTableDescriptor_init :: #force_inline proc(self: ^IntersectionFunctionTableDescriptor) -> ^IntersectionFunctionTableDescriptor { return msgSend(^IntersectionFunctionTableDescriptor, self, "init") } @(objc_type=IntersectionFunctionTableDescriptor, objc_name="functionCount") -IntersectionFunctionTableDescriptor_functionCount :: proc(self: ^IntersectionFunctionTableDescriptor) -> NS.Integer { +IntersectionFunctionTableDescriptor_functionCount :: #force_inline proc(self: ^IntersectionFunctionTableDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "functionCount") } @(objc_type=IntersectionFunctionTableDescriptor, objc_class_name="intersectionFunctionTableDescriptor") -IntersectionFunctionTableDescriptor_intersectionFunctionTableDescriptor :: proc() -> ^IntersectionFunctionTableDescriptor { +IntersectionFunctionTableDescriptor_intersectionFunctionTableDescriptor :: #force_inline proc() -> ^IntersectionFunctionTableDescriptor { return msgSend(^IntersectionFunctionTableDescriptor, IntersectionFunctionTableDescriptor, "intersectionFunctionTableDescriptor") } @(objc_type=IntersectionFunctionTableDescriptor, objc_name="setFunctionCount") -IntersectionFunctionTableDescriptor_setFunctionCount :: proc(self: ^IntersectionFunctionTableDescriptor, functionCount: NS.Integer) { +IntersectionFunctionTableDescriptor_setFunctionCount :: #force_inline proc(self: ^IntersectionFunctionTableDescriptor, functionCount: NS.Integer) { msgSend(nil, self, "setFunctionCount:", functionCount) } @@ -2052,39 +2038,39 @@ Methods: LinkedFunctions :: struct { using _: NS.Copying(LinkedFunctions) } @(objc_type=LinkedFunctions, objc_class_name="alloc") -LinkedFunctions_alloc :: proc() -> ^LinkedFunctions { +LinkedFunctions_alloc :: #force_inline proc() -> ^LinkedFunctions { return msgSend(^LinkedFunctions, LinkedFunctions, "alloc") } @(objc_type=LinkedFunctions, objc_name="init") -LinkedFunctions_init :: proc(self: ^LinkedFunctions) -> ^LinkedFunctions { +LinkedFunctions_init :: #force_inline proc(self: ^LinkedFunctions) -> ^LinkedFunctions { return msgSend(^LinkedFunctions, self, "init") } @(objc_type=LinkedFunctions, objc_name="binaryFunctions") -LinkedFunctions_binaryFunctions :: proc(self: ^LinkedFunctions) -> ^NS.Array { +LinkedFunctions_binaryFunctions :: #force_inline proc(self: ^LinkedFunctions) -> ^NS.Array { return msgSend(^NS.Array, self, "binaryFunctions") } @(objc_type=LinkedFunctions, objc_name="functions") -LinkedFunctions_functions :: proc(self: ^LinkedFunctions) -> ^NS.Array { +LinkedFunctions_functions :: #force_inline proc(self: ^LinkedFunctions) -> ^NS.Array { return msgSend(^NS.Array, self, "functions") } @(objc_type=LinkedFunctions, objc_name="groups") -LinkedFunctions_groups :: proc(self: ^LinkedFunctions) -> ^NS.Dictionary { +LinkedFunctions_groups :: #force_inline proc(self: ^LinkedFunctions) -> ^NS.Dictionary { return msgSend(^NS.Dictionary, self, "groups") } @(objc_type=LinkedFunctions, objc_class_name="linkedFunctions") -LinkedFunctions_linkedFunctions :: proc() -> ^LinkedFunctions { +LinkedFunctions_linkedFunctions :: #force_inline proc() -> ^LinkedFunctions { return msgSend(^LinkedFunctions, LinkedFunctions, "linkedFunctions") } @(objc_type=LinkedFunctions, objc_name="setBinaryFunctions") -LinkedFunctions_setBinaryFunctions :: proc(self: ^LinkedFunctions, binaryFunctions: ^NS.Array) { +LinkedFunctions_setBinaryFunctions :: #force_inline proc(self: ^LinkedFunctions, binaryFunctions: ^NS.Array) { msgSend(nil, self, "setBinaryFunctions:", binaryFunctions) } @(objc_type=LinkedFunctions, objc_name="setFunctions") -LinkedFunctions_setFunctions :: proc(self: ^LinkedFunctions, functions: ^NS.Array) { +LinkedFunctions_setFunctions :: #force_inline proc(self: ^LinkedFunctions, functions: ^NS.Array) { msgSend(nil, self, "setFunctions:", functions) } @(objc_type=LinkedFunctions, objc_name="setGroups") -LinkedFunctions_setGroups :: proc(self: ^LinkedFunctions, groups: ^NS.Dictionary) { +LinkedFunctions_setGroups :: #force_inline proc(self: ^LinkedFunctions, groups: ^NS.Dictionary) { msgSend(nil, self, "setGroups:", groups) } @@ -2104,19 +2090,19 @@ Methods: PipelineBufferDescriptor :: struct { using _: NS.Copying(PipelineBufferDescriptor) } @(objc_type=PipelineBufferDescriptor, objc_class_name="alloc") -PipelineBufferDescriptor_alloc :: proc() -> ^PipelineBufferDescriptor { +PipelineBufferDescriptor_alloc :: #force_inline proc() -> ^PipelineBufferDescriptor { return msgSend(^PipelineBufferDescriptor, PipelineBufferDescriptor, "alloc") } @(objc_type=PipelineBufferDescriptor, objc_name="init") -PipelineBufferDescriptor_init :: proc(self: ^PipelineBufferDescriptor) -> ^PipelineBufferDescriptor { +PipelineBufferDescriptor_init :: #force_inline proc(self: ^PipelineBufferDescriptor) -> ^PipelineBufferDescriptor { return msgSend(^PipelineBufferDescriptor, self, "init") } @(objc_type=PipelineBufferDescriptor, objc_name="mutability") -PipelineBufferDescriptor_mutability :: proc(self: ^PipelineBufferDescriptor) -> Mutability { +PipelineBufferDescriptor_mutability :: #force_inline proc(self: ^PipelineBufferDescriptor) -> Mutability { return msgSend(Mutability, self, "mutability") } @(objc_type=PipelineBufferDescriptor, objc_name="setMutability") -PipelineBufferDescriptor_setMutability :: proc(self: ^PipelineBufferDescriptor, mutability: Mutability) { +PipelineBufferDescriptor_setMutability :: #force_inline proc(self: ^PipelineBufferDescriptor, mutability: Mutability) { msgSend(nil, self, "setMutability:", mutability) } @@ -2136,19 +2122,19 @@ Methods: PipelineBufferDescriptorArray :: struct { using _: NS.Object } @(objc_type=PipelineBufferDescriptorArray, objc_class_name="alloc") -PipelineBufferDescriptorArray_alloc :: proc() -> ^PipelineBufferDescriptorArray { +PipelineBufferDescriptorArray_alloc :: #force_inline proc() -> ^PipelineBufferDescriptorArray { return msgSend(^PipelineBufferDescriptorArray, PipelineBufferDescriptorArray, "alloc") } @(objc_type=PipelineBufferDescriptorArray, objc_name="init") -PipelineBufferDescriptorArray_init :: proc(self: ^PipelineBufferDescriptorArray) -> ^PipelineBufferDescriptorArray { +PipelineBufferDescriptorArray_init :: #force_inline proc(self: ^PipelineBufferDescriptorArray) -> ^PipelineBufferDescriptorArray { return msgSend(^PipelineBufferDescriptorArray, self, "init") } @(objc_type=PipelineBufferDescriptorArray, objc_name="objectAtIndexedSubscript") -PipelineBufferDescriptorArray_objectAtIndexedSubscript :: proc(self: ^PipelineBufferDescriptorArray, bufferIndex: ^NS.Object) -> ^PipelineBufferDescriptor { +PipelineBufferDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^PipelineBufferDescriptorArray, bufferIndex: ^NS.Object) -> ^PipelineBufferDescriptor { return msgSend(^PipelineBufferDescriptor, self, "objectAtIndexedSubscript:", bufferIndex) } @(objc_type=PipelineBufferDescriptorArray, objc_name="setObject") -PipelineBufferDescriptorArray_setObject :: proc(self: ^PipelineBufferDescriptorArray, buffer: ^PipelineBufferDescriptor, bufferIndex: ^NS.Object) { +PipelineBufferDescriptorArray_setObject :: #force_inline proc(self: ^PipelineBufferDescriptorArray, buffer: ^PipelineBufferDescriptor, bufferIndex: ^NS.Object) { msgSend(nil, self, "setObject:atIndexedSubscript:", buffer, bufferIndex) } @@ -2173,39 +2159,39 @@ Methods: PointerType :: struct { using _: NS.Object } @(objc_type=PointerType, objc_class_name="alloc") -PointerType_alloc :: proc() -> ^PointerType { +PointerType_alloc :: #force_inline proc() -> ^PointerType { return msgSend(^PointerType, PointerType, "alloc") } @(objc_type=PointerType, objc_name="init") -PointerType_init :: proc(self: ^PointerType) -> ^PointerType { +PointerType_init :: #force_inline proc(self: ^PointerType) -> ^PointerType { return msgSend(^PointerType, self, "init") } @(objc_type=PointerType, objc_name="access") -PointerType_access :: proc(self: ^PointerType) -> ArgumentAccess { +PointerType_access :: #force_inline proc(self: ^PointerType) -> ArgumentAccess { return msgSend(ArgumentAccess, self, "access") } @(objc_type=PointerType, objc_name="alignment") -PointerType_alignment :: proc(self: ^PointerType) -> NS.Integer { +PointerType_alignment :: #force_inline proc(self: ^PointerType) -> NS.Integer { return msgSend(NS.Integer, self, "alignment") } @(objc_type=PointerType, objc_name="dataSize") -PointerType_dataSize :: proc(self: ^PointerType) -> NS.Integer { +PointerType_dataSize :: #force_inline proc(self: ^PointerType) -> NS.Integer { return msgSend(NS.Integer, self, "dataSize") } @(objc_type=PointerType, objc_name="elementArrayType") -PointerType_elementArrayType :: proc(self: ^PointerType) -> ^ArrayType { +PointerType_elementArrayType :: #force_inline proc(self: ^PointerType) -> ^ArrayType { return msgSend(^ArrayType, self, "elementArrayType") } @(objc_type=PointerType, objc_name="elementIsArgumentBuffer") -PointerType_elementIsArgumentBuffer :: proc(self: ^PointerType) -> BOOL { +PointerType_elementIsArgumentBuffer :: #force_inline proc(self: ^PointerType) -> BOOL { return msgSend(BOOL, self, "elementIsArgumentBuffer") } @(objc_type=PointerType, objc_name="elementStructType") -PointerType_elementStructType :: proc(self: ^PointerType) -> ^StructType { +PointerType_elementStructType :: #force_inline proc(self: ^PointerType) -> ^StructType { return msgSend(^StructType, self, "elementStructType") } @(objc_type=PointerType, objc_name="elementType") -PointerType_elementType :: proc(self: ^PointerType) -> DataType { +PointerType_elementType :: #force_inline proc(self: ^PointerType) -> DataType { return msgSend(DataType, self, "elementType") } @@ -2226,23 +2212,23 @@ Methods: PrimitiveAccelerationStructureDescriptor :: struct { using _: NS.Copying(PrimitiveAccelerationStructureDescriptor) } @(objc_type=PrimitiveAccelerationStructureDescriptor, objc_class_name="alloc") -PrimitiveAccelerationStructureDescriptor_alloc :: proc() -> ^PrimitiveAccelerationStructureDescriptor { +PrimitiveAccelerationStructureDescriptor_alloc :: #force_inline proc() -> ^PrimitiveAccelerationStructureDescriptor { return msgSend(^PrimitiveAccelerationStructureDescriptor, PrimitiveAccelerationStructureDescriptor, "alloc") } @(objc_type=PrimitiveAccelerationStructureDescriptor, objc_name="init") -PrimitiveAccelerationStructureDescriptor_init :: proc(self: ^PrimitiveAccelerationStructureDescriptor) -> ^PrimitiveAccelerationStructureDescriptor { +PrimitiveAccelerationStructureDescriptor_init :: #force_inline proc(self: ^PrimitiveAccelerationStructureDescriptor) -> ^PrimitiveAccelerationStructureDescriptor { return msgSend(^PrimitiveAccelerationStructureDescriptor, self, "init") } @(objc_type=PrimitiveAccelerationStructureDescriptor, objc_class_name="descriptor") -PrimitiveAccelerationStructureDescriptor_descriptor :: proc() -> ^PrimitiveAccelerationStructureDescriptor { +PrimitiveAccelerationStructureDescriptor_descriptor :: #force_inline proc() -> ^PrimitiveAccelerationStructureDescriptor { return msgSend(^PrimitiveAccelerationStructureDescriptor, PrimitiveAccelerationStructureDescriptor, "descriptor") } @(objc_type=PrimitiveAccelerationStructureDescriptor, objc_name="geometryDescriptors") -PrimitiveAccelerationStructureDescriptor_geometryDescriptors :: proc(self: ^PrimitiveAccelerationStructureDescriptor) -> ^NS.Array { +PrimitiveAccelerationStructureDescriptor_geometryDescriptors :: #force_inline proc(self: ^PrimitiveAccelerationStructureDescriptor) -> ^NS.Array { return msgSend(^NS.Array, self, "geometryDescriptors") } @(objc_type=PrimitiveAccelerationStructureDescriptor, objc_name="setGeometryDescriptors") -PrimitiveAccelerationStructureDescriptor_setGeometryDescriptors :: proc(self: ^PrimitiveAccelerationStructureDescriptor, geometryDescriptors: ^NS.Array) { +PrimitiveAccelerationStructureDescriptor_setGeometryDescriptors :: #force_inline proc(self: ^PrimitiveAccelerationStructureDescriptor, geometryDescriptors: ^NS.Array) { msgSend(nil, self, "setGeometryDescriptors:", geometryDescriptors) } @@ -2262,19 +2248,19 @@ Methods: RasterizationRateLayerArray :: struct { using _: NS.Object } @(objc_type=RasterizationRateLayerArray, objc_class_name="alloc") -RasterizationRateLayerArray_alloc :: proc() -> ^RasterizationRateLayerArray { +RasterizationRateLayerArray_alloc :: #force_inline proc() -> ^RasterizationRateLayerArray { return msgSend(^RasterizationRateLayerArray, RasterizationRateLayerArray, "alloc") } @(objc_type=RasterizationRateLayerArray, objc_name="init") -RasterizationRateLayerArray_init :: proc(self: ^RasterizationRateLayerArray) -> ^RasterizationRateLayerArray { +RasterizationRateLayerArray_init :: #force_inline proc(self: ^RasterizationRateLayerArray) -> ^RasterizationRateLayerArray { return msgSend(^RasterizationRateLayerArray, self, "init") } @(objc_type=RasterizationRateLayerArray, objc_name="objectAtIndexedSubscript") -RasterizationRateLayerArray_objectAtIndexedSubscript :: proc(self: ^RasterizationRateLayerArray, layerIndex: ^NS.Object) -> ^RasterizationRateLayerDescriptor { +RasterizationRateLayerArray_objectAtIndexedSubscript :: #force_inline proc(self: ^RasterizationRateLayerArray, layerIndex: ^NS.Object) -> ^RasterizationRateLayerDescriptor { return msgSend(^RasterizationRateLayerDescriptor, self, "objectAtIndexedSubscript:", layerIndex) } @(objc_type=RasterizationRateLayerArray, objc_name="setObject") -RasterizationRateLayerArray_setObject :: proc(self: ^RasterizationRateLayerArray, layer: ^RasterizationRateLayerDescriptor, layerIndex: ^NS.Object) { +RasterizationRateLayerArray_setObject :: #force_inline proc(self: ^RasterizationRateLayerArray, layer: ^RasterizationRateLayerDescriptor, layerIndex: ^NS.Object) { msgSend(nil, self, "setObject:atIndexedSubscript:", layer, layerIndex) } @@ -2299,39 +2285,39 @@ Methods: RasterizationRateLayerDescriptor :: struct { using _: NS.Copying(RasterizationRateLayerDescriptor) } @(objc_type=RasterizationRateLayerDescriptor, objc_class_name="alloc") -RasterizationRateLayerDescriptor_alloc :: proc() -> ^RasterizationRateLayerDescriptor { +RasterizationRateLayerDescriptor_alloc :: #force_inline proc() -> ^RasterizationRateLayerDescriptor { return msgSend(^RasterizationRateLayerDescriptor, RasterizationRateLayerDescriptor, "alloc") } @(objc_type=RasterizationRateLayerDescriptor, objc_name="horizontal") -RasterizationRateLayerDescriptor_horizontal :: proc(self: ^RasterizationRateLayerDescriptor) -> ^RasterizationRateSampleArray { +RasterizationRateLayerDescriptor_horizontal :: #force_inline proc(self: ^RasterizationRateLayerDescriptor) -> ^RasterizationRateSampleArray { return msgSend(^RasterizationRateSampleArray, self, "horizontal") } @(objc_type=RasterizationRateLayerDescriptor, objc_name="horizontalSampleStorage") -RasterizationRateLayerDescriptor_horizontalSampleStorage :: proc(self: ^RasterizationRateLayerDescriptor) -> ^f32 { +RasterizationRateLayerDescriptor_horizontalSampleStorage :: #force_inline proc(self: ^RasterizationRateLayerDescriptor) -> ^f32 { return msgSend(^f32, self, "horizontalSampleStorage") } @(objc_type=RasterizationRateLayerDescriptor, objc_name="init") -RasterizationRateLayerDescriptor_init :: proc(self: ^RasterizationRateLayerDescriptor) -> ^RasterizationRateLayerDescriptor { +RasterizationRateLayerDescriptor_init :: #force_inline proc(self: ^RasterizationRateLayerDescriptor) -> ^RasterizationRateLayerDescriptor { return msgSend(^RasterizationRateLayerDescriptor, self, "init") } @(objc_type=RasterizationRateLayerDescriptor, objc_name="initWithSampleCount") -RasterizationRateLayerDescriptor_initWithSampleCount :: proc(self: ^RasterizationRateLayerDescriptor, sampleCount: Size) -> ^RasterizationRateLayerDescriptor { +RasterizationRateLayerDescriptor_initWithSampleCount :: #force_inline proc(self: ^RasterizationRateLayerDescriptor, sampleCount: Size) -> ^RasterizationRateLayerDescriptor { return msgSend(^RasterizationRateLayerDescriptor, self, "initWithSampleCount:", sampleCount) } @(objc_type=RasterizationRateLayerDescriptor, objc_name="initWithSampleCountWithDimensions") -RasterizationRateLayerDescriptor_initWithSampleCountWithDimensions :: proc(self: ^RasterizationRateLayerDescriptor, sampleCount: Size, horizontal: ^f32, vertical: ^f32) -> ^RasterizationRateLayerDescriptor { +RasterizationRateLayerDescriptor_initWithSampleCountWithDimensions :: #force_inline proc(self: ^RasterizationRateLayerDescriptor, sampleCount: Size, horizontal: ^f32, vertical: ^f32) -> ^RasterizationRateLayerDescriptor { return msgSend(^RasterizationRateLayerDescriptor, self, "initWithSampleCount:horizontal:vertical:", sampleCount, horizontal, vertical) } @(objc_type=RasterizationRateLayerDescriptor, objc_name="sampleCount") -RasterizationRateLayerDescriptor_sampleCount :: proc(self: ^RasterizationRateLayerDescriptor) -> Size { +RasterizationRateLayerDescriptor_sampleCount :: #force_inline proc(self: ^RasterizationRateLayerDescriptor) -> Size { return msgSend(Size, self, "sampleCount") } @(objc_type=RasterizationRateLayerDescriptor, objc_name="vertical") -RasterizationRateLayerDescriptor_vertical :: proc(self: ^RasterizationRateLayerDescriptor) -> ^RasterizationRateSampleArray { +RasterizationRateLayerDescriptor_vertical :: #force_inline proc(self: ^RasterizationRateLayerDescriptor) -> ^RasterizationRateSampleArray { return msgSend(^RasterizationRateSampleArray, self, "vertical") } @(objc_type=RasterizationRateLayerDescriptor, objc_name="verticalSampleStorage") -RasterizationRateLayerDescriptor_verticalSampleStorage :: proc(self: ^RasterizationRateLayerDescriptor) -> ^f32 { +RasterizationRateLayerDescriptor_verticalSampleStorage :: #force_inline proc(self: ^RasterizationRateLayerDescriptor) -> ^f32 { return msgSend(^f32, self, "verticalSampleStorage") } @@ -2360,55 +2346,55 @@ Methods: RasterizationRateMapDescriptor :: struct { using _: NS.Copying(RasterizationRateMapDescriptor) } @(objc_type=RasterizationRateMapDescriptor, objc_class_name="alloc") -RasterizationRateMapDescriptor_alloc :: proc() -> ^RasterizationRateMapDescriptor { +RasterizationRateMapDescriptor_alloc :: #force_inline proc() -> ^RasterizationRateMapDescriptor { return msgSend(^RasterizationRateMapDescriptor, RasterizationRateMapDescriptor, "alloc") } @(objc_type=RasterizationRateMapDescriptor, objc_name="init") -RasterizationRateMapDescriptor_init :: proc(self: ^RasterizationRateMapDescriptor) -> ^RasterizationRateMapDescriptor { +RasterizationRateMapDescriptor_init :: #force_inline proc(self: ^RasterizationRateMapDescriptor) -> ^RasterizationRateMapDescriptor { return msgSend(^RasterizationRateMapDescriptor, self, "init") } @(objc_type=RasterizationRateMapDescriptor, objc_name="label") -RasterizationRateMapDescriptor_label :: proc(self: ^RasterizationRateMapDescriptor) -> ^NS.String { +RasterizationRateMapDescriptor_label :: #force_inline proc(self: ^RasterizationRateMapDescriptor) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=RasterizationRateMapDescriptor, objc_name="layerAtIndex") -RasterizationRateMapDescriptor_layerAtIndex :: proc(self: ^RasterizationRateMapDescriptor, layerIndex: ^NS.Object) -> ^RasterizationRateLayerDescriptor { +RasterizationRateMapDescriptor_layerAtIndex :: #force_inline proc(self: ^RasterizationRateMapDescriptor, layerIndex: ^NS.Object) -> ^RasterizationRateLayerDescriptor { return msgSend(^RasterizationRateLayerDescriptor, self, "layerAtIndex:", layerIndex) } @(objc_type=RasterizationRateMapDescriptor, objc_name="layerCount") -RasterizationRateMapDescriptor_layerCount :: proc(self: ^RasterizationRateMapDescriptor) -> NS.Integer { +RasterizationRateMapDescriptor_layerCount :: #force_inline proc(self: ^RasterizationRateMapDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "layerCount") } @(objc_type=RasterizationRateMapDescriptor, objc_name="layers") -RasterizationRateMapDescriptor_layers :: proc(self: ^RasterizationRateMapDescriptor) -> ^RasterizationRateLayerArray { +RasterizationRateMapDescriptor_layers :: #force_inline proc(self: ^RasterizationRateMapDescriptor) -> ^RasterizationRateLayerArray { return msgSend(^RasterizationRateLayerArray, self, "layers") } @(objc_type=RasterizationRateMapDescriptor, objc_class_name="rasterizationRateMapDescriptorWithScreenSize") -RasterizationRateMapDescriptor_rasterizationRateMapDescriptorWithScreenSize :: proc(screenSize: Size) -> ^RasterizationRateMapDescriptor { +RasterizationRateMapDescriptor_rasterizationRateMapDescriptorWithScreenSize :: #force_inline proc(screenSize: Size) -> ^RasterizationRateMapDescriptor { return msgSend(^RasterizationRateMapDescriptor, RasterizationRateMapDescriptor, "rasterizationRateMapDescriptorWithScreenSize:", screenSize) } @(objc_type=RasterizationRateMapDescriptor, objc_class_name="rasterizationRateMapDescriptorWithScreenSize_layer_") -RasterizationRateMapDescriptor_rasterizationRateMapDescriptorWithScreenSize_layer_ :: proc(screenSize: Size, layer: ^RasterizationRateLayerDescriptor) -> ^RasterizationRateMapDescriptor { +RasterizationRateMapDescriptor_rasterizationRateMapDescriptorWithScreenSize_layer_ :: #force_inline proc(screenSize: Size, layer: ^RasterizationRateLayerDescriptor) -> ^RasterizationRateMapDescriptor { return msgSend(^RasterizationRateMapDescriptor, RasterizationRateMapDescriptor, "rasterizationRateMapDescriptorWithScreenSize:layer:", screenSize, layer) } @(objc_type=RasterizationRateMapDescriptor, objc_class_name="rasterizationRateMapDescriptorWithScreenSize_layerCount_layers_") -RasterizationRateMapDescriptor_rasterizationRateMapDescriptorWithScreenSize_layerCount_layers_ :: proc(screenSize: Size, layerCount: ^NS.Object, layers: ^^RasterizationRateLayerDescriptor ) -> ^RasterizationRateMapDescriptor { +RasterizationRateMapDescriptor_rasterizationRateMapDescriptorWithScreenSize_layerCount_layers_ :: #force_inline proc(screenSize: Size, layerCount: ^NS.Object, layers: ^^RasterizationRateLayerDescriptor ) -> ^RasterizationRateMapDescriptor { return msgSend(^RasterizationRateMapDescriptor, RasterizationRateMapDescriptor, "rasterizationRateMapDescriptorWithScreenSize:layerCount:layers:", screenSize, layerCount, layers) } @(objc_type=RasterizationRateMapDescriptor, objc_name="screenSize") -RasterizationRateMapDescriptor_screenSize :: proc(self: ^RasterizationRateMapDescriptor) -> Size { +RasterizationRateMapDescriptor_screenSize :: #force_inline proc(self: ^RasterizationRateMapDescriptor) -> Size { return msgSend(Size, self, "screenSize") } @(objc_type=RasterizationRateMapDescriptor, objc_name="setLabel") -RasterizationRateMapDescriptor_setLabel :: proc(self: ^RasterizationRateMapDescriptor, label: ^NS.String) { +RasterizationRateMapDescriptor_setLabel :: #force_inline proc(self: ^RasterizationRateMapDescriptor, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @(objc_type=RasterizationRateMapDescriptor, objc_name="setLayer") -RasterizationRateMapDescriptor_setLayer :: proc(self: ^RasterizationRateMapDescriptor, layer: ^RasterizationRateLayerDescriptor, layerIndex: ^NS.Object) { +RasterizationRateMapDescriptor_setLayer :: #force_inline proc(self: ^RasterizationRateMapDescriptor, layer: ^RasterizationRateLayerDescriptor, layerIndex: ^NS.Object) { msgSend(nil, self, "setLayer:atIndex:", layer, layerIndex) } @(objc_type=RasterizationRateMapDescriptor, objc_name="setScreenSize") -RasterizationRateMapDescriptor_setScreenSize :: proc(self: ^RasterizationRateMapDescriptor, screenSize: Size) { +RasterizationRateMapDescriptor_setScreenSize :: #force_inline proc(self: ^RasterizationRateMapDescriptor, screenSize: Size) { msgSend(nil, self, "setScreenSize:", screenSize) } @@ -2428,19 +2414,19 @@ Methods: RasterizationRateSampleArray :: struct { using _: NS.Object } @(objc_type=RasterizationRateSampleArray, objc_class_name="alloc") -RasterizationRateSampleArray_alloc :: proc() -> ^RasterizationRateSampleArray { +RasterizationRateSampleArray_alloc :: #force_inline proc() -> ^RasterizationRateSampleArray { return msgSend(^RasterizationRateSampleArray, RasterizationRateSampleArray, "alloc") } @(objc_type=RasterizationRateSampleArray, objc_name="init") -RasterizationRateSampleArray_init :: proc(self: ^RasterizationRateSampleArray) -> ^RasterizationRateSampleArray { +RasterizationRateSampleArray_init :: #force_inline proc(self: ^RasterizationRateSampleArray) -> ^RasterizationRateSampleArray { return msgSend(^RasterizationRateSampleArray, self, "init") } @(objc_type=RasterizationRateSampleArray, objc_name="objectAtIndexedSubscript") -RasterizationRateSampleArray_objectAtIndexedSubscript :: proc(self: ^RasterizationRateSampleArray, index: ^NS.Object) -> ^NS.Number { +RasterizationRateSampleArray_objectAtIndexedSubscript :: #force_inline proc(self: ^RasterizationRateSampleArray, index: ^NS.Object) -> ^NS.Number { return msgSend(^NS.Number, self, "objectAtIndexedSubscript:", index) } @(objc_type=RasterizationRateSampleArray, objc_name="setObject") -RasterizationRateSampleArray_setObject :: proc(self: ^RasterizationRateSampleArray, value: ^NS.Number, index: ^NS.Object) { +RasterizationRateSampleArray_setObject :: #force_inline proc(self: ^RasterizationRateSampleArray, value: ^NS.Number, index: ^NS.Object) { msgSend(nil, self, "setObject:atIndexedSubscript:", value, index) } @@ -2480,99 +2466,99 @@ Methods: RenderPassAttachmentDescriptor :: struct { using _: NS.Copying(RenderPassAttachmentDescriptor) } @(objc_type=RenderPassAttachmentDescriptor, objc_class_name="alloc") -RenderPassAttachmentDescriptor_alloc :: proc() -> ^RenderPassAttachmentDescriptor { +RenderPassAttachmentDescriptor_alloc :: #force_inline proc() -> ^RenderPassAttachmentDescriptor { return msgSend(^RenderPassAttachmentDescriptor, RenderPassAttachmentDescriptor, "alloc") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="init") -RenderPassAttachmentDescriptor_init :: proc(self: ^RenderPassAttachmentDescriptor) -> ^RenderPassAttachmentDescriptor { +RenderPassAttachmentDescriptor_init :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> ^RenderPassAttachmentDescriptor { return msgSend(^RenderPassAttachmentDescriptor, self, "init") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="depthPlane") -RenderPassAttachmentDescriptor_depthPlane :: proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { +RenderPassAttachmentDescriptor_depthPlane :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "depthPlane") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="level") -RenderPassAttachmentDescriptor_level :: proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { +RenderPassAttachmentDescriptor_level :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "level") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="loadAction") -RenderPassAttachmentDescriptor_loadAction :: proc(self: ^RenderPassAttachmentDescriptor) -> LoadAction { +RenderPassAttachmentDescriptor_loadAction :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> LoadAction { return msgSend(LoadAction, self, "loadAction") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="resolveDepthPlane") -RenderPassAttachmentDescriptor_resolveDepthPlane :: proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { +RenderPassAttachmentDescriptor_resolveDepthPlane :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "resolveDepthPlane") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="resolveLevel") -RenderPassAttachmentDescriptor_resolveLevel :: proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { +RenderPassAttachmentDescriptor_resolveLevel :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "resolveLevel") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="resolveSlice") -RenderPassAttachmentDescriptor_resolveSlice :: proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { +RenderPassAttachmentDescriptor_resolveSlice :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "resolveSlice") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="resolveTexture") -RenderPassAttachmentDescriptor_resolveTexture :: proc(self: ^RenderPassAttachmentDescriptor) -> ^RenderPassAttachmentDescriptor { +RenderPassAttachmentDescriptor_resolveTexture :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> ^RenderPassAttachmentDescriptor { return msgSend(^RenderPassAttachmentDescriptor, self, "resolveTexture") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setDepthPlane") -RenderPassAttachmentDescriptor_setDepthPlane :: proc(self: ^RenderPassAttachmentDescriptor, depthPlane: NS.Integer) { +RenderPassAttachmentDescriptor_setDepthPlane :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, depthPlane: NS.Integer) { msgSend(nil, self, "setDepthPlane:", depthPlane) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setLevel") -RenderPassAttachmentDescriptor_setLevel :: proc(self: ^RenderPassAttachmentDescriptor, level: NS.Integer) { +RenderPassAttachmentDescriptor_setLevel :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, level: NS.Integer) { msgSend(nil, self, "setLevel:", level) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setLoadAction") -RenderPassAttachmentDescriptor_setLoadAction :: proc(self: ^RenderPassAttachmentDescriptor, loadAction: LoadAction) { +RenderPassAttachmentDescriptor_setLoadAction :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, loadAction: LoadAction) { msgSend(nil, self, "setLoadAction:", loadAction) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setResolveDepthPlane") -RenderPassAttachmentDescriptor_setResolveDepthPlane :: proc(self: ^RenderPassAttachmentDescriptor, resolveDepthPlane: NS.Integer) { +RenderPassAttachmentDescriptor_setResolveDepthPlane :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, resolveDepthPlane: NS.Integer) { msgSend(nil, self, "setResolveDepthPlane:", resolveDepthPlane) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setResolveLevel") -RenderPassAttachmentDescriptor_setResolveLevel :: proc(self: ^RenderPassAttachmentDescriptor, resolveLevel: NS.Integer) { +RenderPassAttachmentDescriptor_setResolveLevel :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, resolveLevel: NS.Integer) { msgSend(nil, self, "setResolveLevel:", resolveLevel) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setResolveSlice") -RenderPassAttachmentDescriptor_setResolveSlice :: proc(self: ^RenderPassAttachmentDescriptor, resolveSlice: NS.Integer) { +RenderPassAttachmentDescriptor_setResolveSlice :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, resolveSlice: NS.Integer) { msgSend(nil, self, "setResolveSlice:", resolveSlice) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setResolveTexture") -RenderPassAttachmentDescriptor_setResolveTexture :: proc(self: ^RenderPassAttachmentDescriptor, resolveTexture: ^NS.Object) { +RenderPassAttachmentDescriptor_setResolveTexture :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, resolveTexture: ^NS.Object) { msgSend(nil, self, "setResolveTexture:", resolveTexture) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setSlice") -RenderPassAttachmentDescriptor_setSlice :: proc(self: ^RenderPassAttachmentDescriptor, slice: NS.Integer) { +RenderPassAttachmentDescriptor_setSlice :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, slice: NS.Integer) { msgSend(nil, self, "setSlice:", slice) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setStoreAction") -RenderPassAttachmentDescriptor_setStoreAction :: proc(self: ^RenderPassAttachmentDescriptor, storeAction: StoreAction) { +RenderPassAttachmentDescriptor_setStoreAction :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, storeAction: StoreAction) { msgSend(nil, self, "setStoreAction:", storeAction) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setStoreActionOptions") -RenderPassAttachmentDescriptor_setStoreActionOptions :: proc(self: ^RenderPassAttachmentDescriptor, storeActionOptions: StoreActionOptions) { +RenderPassAttachmentDescriptor_setStoreActionOptions :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, storeActionOptions: StoreActionOptions) { msgSend(nil, self, "setStoreActionOptions:", storeActionOptions) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setTexture") -RenderPassAttachmentDescriptor_setTexture :: proc(self: ^RenderPassAttachmentDescriptor, texture: ^NS.Object) { +RenderPassAttachmentDescriptor_setTexture :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, texture: ^NS.Object) { msgSend(nil, self, "setTexture:", texture) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="slice") -RenderPassAttachmentDescriptor_slice :: proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { +RenderPassAttachmentDescriptor_slice :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "slice") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="storeAction") -RenderPassAttachmentDescriptor_storeAction :: proc(self: ^RenderPassAttachmentDescriptor) -> StoreAction { +RenderPassAttachmentDescriptor_storeAction :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> StoreAction { return msgSend(StoreAction, self, "storeAction") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="storeActionOptions") -RenderPassAttachmentDescriptor_storeActionOptions :: proc(self: ^RenderPassAttachmentDescriptor) -> StoreActionOptions { +RenderPassAttachmentDescriptor_storeActionOptions :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> StoreActionOptions { return msgSend(StoreActionOptions, self, "storeActionOptions") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="texture") -RenderPassAttachmentDescriptor_texture :: proc(self: ^RenderPassAttachmentDescriptor) -> ^RenderPassAttachmentDescriptor { +RenderPassAttachmentDescriptor_texture :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> ^RenderPassAttachmentDescriptor { return msgSend(^RenderPassAttachmentDescriptor, self, "texture") } @@ -2592,19 +2578,19 @@ Methods: RenderPassColorAttachmentDescriptor :: struct { using _: NS.Copying(RenderPassColorAttachmentDescriptor) } @(objc_type=RenderPassColorAttachmentDescriptor, objc_class_name="alloc") -RenderPassColorAttachmentDescriptor_alloc :: proc() -> ^RenderPassColorAttachmentDescriptor { +RenderPassColorAttachmentDescriptor_alloc :: #force_inline proc() -> ^RenderPassColorAttachmentDescriptor { return msgSend(^RenderPassColorAttachmentDescriptor, RenderPassColorAttachmentDescriptor, "alloc") } @(objc_type=RenderPassColorAttachmentDescriptor, objc_name="init") -RenderPassColorAttachmentDescriptor_init :: proc(self: ^RenderPassColorAttachmentDescriptor) -> ^RenderPassColorAttachmentDescriptor { +RenderPassColorAttachmentDescriptor_init :: #force_inline proc(self: ^RenderPassColorAttachmentDescriptor) -> ^RenderPassColorAttachmentDescriptor { return msgSend(^RenderPassColorAttachmentDescriptor, self, "init") } @(objc_type=RenderPassColorAttachmentDescriptor, objc_name="clearColor") -RenderPassColorAttachmentDescriptor_clearColor :: proc(self: ^RenderPassColorAttachmentDescriptor) -> ClearColor { +RenderPassColorAttachmentDescriptor_clearColor :: #force_inline proc(self: ^RenderPassColorAttachmentDescriptor) -> ClearColor { return msgSend(ClearColor, self, "clearColor") } @(objc_type=RenderPassColorAttachmentDescriptor, objc_name="setClearColor") -RenderPassColorAttachmentDescriptor_setClearColor :: proc(self: ^RenderPassColorAttachmentDescriptor, clearColor: ClearColor) { +RenderPassColorAttachmentDescriptor_setClearColor :: #force_inline proc(self: ^RenderPassColorAttachmentDescriptor, clearColor: ClearColor) { msgSend(nil, self, "setClearColor:", clearColor) } @@ -2624,19 +2610,19 @@ Methods: RenderPassColorAttachmentDescriptorArray :: struct { using _: NS.Object } @(objc_type=RenderPassColorAttachmentDescriptorArray, objc_class_name="alloc") -RenderPassColorAttachmentDescriptorArray_alloc :: proc() -> ^RenderPassColorAttachmentDescriptorArray { +RenderPassColorAttachmentDescriptorArray_alloc :: #force_inline proc() -> ^RenderPassColorAttachmentDescriptorArray { return msgSend(^RenderPassColorAttachmentDescriptorArray, RenderPassColorAttachmentDescriptorArray, "alloc") } @(objc_type=RenderPassColorAttachmentDescriptorArray, objc_name="init") -RenderPassColorAttachmentDescriptorArray_init :: proc(self: ^RenderPassColorAttachmentDescriptorArray) -> ^RenderPassColorAttachmentDescriptorArray { +RenderPassColorAttachmentDescriptorArray_init :: #force_inline proc(self: ^RenderPassColorAttachmentDescriptorArray) -> ^RenderPassColorAttachmentDescriptorArray { return msgSend(^RenderPassColorAttachmentDescriptorArray, self, "init") } @(objc_type=RenderPassColorAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") -RenderPassColorAttachmentDescriptorArray_objectAtIndexedSubscript :: proc(self: ^RenderPassColorAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^RenderPassColorAttachmentDescriptor { +RenderPassColorAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^RenderPassColorAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^RenderPassColorAttachmentDescriptor { return msgSend(^RenderPassColorAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) } @(objc_type=RenderPassColorAttachmentDescriptorArray, objc_name="setObject") -RenderPassColorAttachmentDescriptorArray_setObject :: proc(self: ^RenderPassColorAttachmentDescriptorArray, attachment: ^RenderPassColorAttachmentDescriptor, attachmentIndex: ^NS.Object) { +RenderPassColorAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^RenderPassColorAttachmentDescriptorArray, attachment: ^RenderPassColorAttachmentDescriptor, attachmentIndex: ^NS.Object) { msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) } @@ -2658,27 +2644,27 @@ Methods: RenderPassDepthAttachmentDescriptor :: struct { using _: NS.Copying(RenderPassDepthAttachmentDescriptor) } @(objc_type=RenderPassDepthAttachmentDescriptor, objc_class_name="alloc") -RenderPassDepthAttachmentDescriptor_alloc :: proc() -> ^RenderPassDepthAttachmentDescriptor { +RenderPassDepthAttachmentDescriptor_alloc :: #force_inline proc() -> ^RenderPassDepthAttachmentDescriptor { return msgSend(^RenderPassDepthAttachmentDescriptor, RenderPassDepthAttachmentDescriptor, "alloc") } @(objc_type=RenderPassDepthAttachmentDescriptor, objc_name="init") -RenderPassDepthAttachmentDescriptor_init :: proc(self: ^RenderPassDepthAttachmentDescriptor) -> ^RenderPassDepthAttachmentDescriptor { +RenderPassDepthAttachmentDescriptor_init :: #force_inline proc(self: ^RenderPassDepthAttachmentDescriptor) -> ^RenderPassDepthAttachmentDescriptor { return msgSend(^RenderPassDepthAttachmentDescriptor, self, "init") } @(objc_type=RenderPassDepthAttachmentDescriptor, objc_name="clearDepth") -RenderPassDepthAttachmentDescriptor_clearDepth :: proc(self: ^RenderPassDepthAttachmentDescriptor) -> f64 { +RenderPassDepthAttachmentDescriptor_clearDepth :: #force_inline proc(self: ^RenderPassDepthAttachmentDescriptor) -> f64 { return msgSend(f64, self, "clearDepth") } @(objc_type=RenderPassDepthAttachmentDescriptor, objc_name="depthResolveFilter") -RenderPassDepthAttachmentDescriptor_depthResolveFilter :: proc(self: ^RenderPassDepthAttachmentDescriptor) -> MultisampleDepthResolveFilter { +RenderPassDepthAttachmentDescriptor_depthResolveFilter :: #force_inline proc(self: ^RenderPassDepthAttachmentDescriptor) -> MultisampleDepthResolveFilter { return msgSend(MultisampleDepthResolveFilter, self, "depthResolveFilter") } @(objc_type=RenderPassDepthAttachmentDescriptor, objc_name="setClearDepth") -RenderPassDepthAttachmentDescriptor_setClearDepth :: proc(self: ^RenderPassDepthAttachmentDescriptor, clearDepth: f64) { +RenderPassDepthAttachmentDescriptor_setClearDepth :: #force_inline proc(self: ^RenderPassDepthAttachmentDescriptor, clearDepth: f64) { msgSend(nil, self, "setClearDepth:", clearDepth) } @(objc_type=RenderPassDepthAttachmentDescriptor, objc_name="setDepthResolveFilter") -RenderPassDepthAttachmentDescriptor_setDepthResolveFilter :: proc(self: ^RenderPassDepthAttachmentDescriptor, depthResolveFilter: MultisampleDepthResolveFilter) { +RenderPassDepthAttachmentDescriptor_setDepthResolveFilter :: #force_inline proc(self: ^RenderPassDepthAttachmentDescriptor, depthResolveFilter: MultisampleDepthResolveFilter) { msgSend(nil, self, "setDepthResolveFilter:", depthResolveFilter) } @@ -2725,127 +2711,127 @@ Methods: RenderPassDescriptor :: struct { using _: NS.Copying(RenderPassDescriptor) } @(objc_type=RenderPassDescriptor, objc_class_name="alloc") -RenderPassDescriptor_alloc :: proc() -> ^RenderPassDescriptor { +RenderPassDescriptor_alloc :: #force_inline proc() -> ^RenderPassDescriptor { return msgSend(^RenderPassDescriptor, RenderPassDescriptor, "alloc") } @(objc_type=RenderPassDescriptor, objc_name="init") -RenderPassDescriptor_init :: proc(self: ^RenderPassDescriptor) -> ^RenderPassDescriptor { +RenderPassDescriptor_init :: #force_inline proc(self: ^RenderPassDescriptor) -> ^RenderPassDescriptor { return msgSend(^RenderPassDescriptor, self, "init") } @(objc_type=RenderPassDescriptor, objc_name="colorAttachments") -RenderPassDescriptor_colorAttachments :: proc(self: ^RenderPassDescriptor) -> ^RenderPassColorAttachmentDescriptorArray { +RenderPassDescriptor_colorAttachments :: #force_inline proc(self: ^RenderPassDescriptor) -> ^RenderPassColorAttachmentDescriptorArray { return msgSend(^RenderPassColorAttachmentDescriptorArray, self, "colorAttachments") } @(objc_type=RenderPassDescriptor, objc_name="defaultRasterSampleCount") -RenderPassDescriptor_defaultRasterSampleCount :: proc(self: ^RenderPassDescriptor) -> NS.Integer { +RenderPassDescriptor_defaultRasterSampleCount :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "defaultRasterSampleCount") } @(objc_type=RenderPassDescriptor, objc_name="depthAttachment") -RenderPassDescriptor_depthAttachment :: proc(self: ^RenderPassDescriptor) -> ^RenderPassDepthAttachmentDescriptor { +RenderPassDescriptor_depthAttachment :: #force_inline proc(self: ^RenderPassDescriptor) -> ^RenderPassDepthAttachmentDescriptor { return msgSend(^RenderPassDepthAttachmentDescriptor, self, "depthAttachment") } @(objc_type=RenderPassDescriptor, objc_name="getSamplePositions") -RenderPassDescriptor_getSamplePositions :: proc(self: ^RenderPassDescriptor, positions: ^SamplePosition, count: ^NS.Object) -> ^RenderPassDescriptor { +RenderPassDescriptor_getSamplePositions :: #force_inline proc(self: ^RenderPassDescriptor, positions: ^SamplePosition, count: ^NS.Object) -> ^RenderPassDescriptor { return msgSend(^RenderPassDescriptor, self, "getSamplePositions:count:", positions, count) } @(objc_type=RenderPassDescriptor, objc_name="imageblockSampleLength") -RenderPassDescriptor_imageblockSampleLength :: proc(self: ^RenderPassDescriptor) -> NS.Integer { +RenderPassDescriptor_imageblockSampleLength :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "imageblockSampleLength") } @(objc_type=RenderPassDescriptor, objc_name="rasterizationRateMap") -RenderPassDescriptor_rasterizationRateMap :: proc(self: ^RenderPassDescriptor) -> ^RenderPassDescriptor { +RenderPassDescriptor_rasterizationRateMap :: #force_inline proc(self: ^RenderPassDescriptor) -> ^RenderPassDescriptor { return msgSend(^RenderPassDescriptor, self, "rasterizationRateMap") } @(objc_type=RenderPassDescriptor, objc_class_name="renderPassDescriptor") -RenderPassDescriptor_renderPassDescriptor :: proc() -> ^RenderPassDescriptor { +RenderPassDescriptor_renderPassDescriptor :: #force_inline proc() -> ^RenderPassDescriptor { return msgSend(^RenderPassDescriptor, RenderPassDescriptor, "renderPassDescriptor") } @(objc_type=RenderPassDescriptor, objc_name="renderTargetArrayLength") -RenderPassDescriptor_renderTargetArrayLength :: proc(self: ^RenderPassDescriptor) -> NS.Integer { +RenderPassDescriptor_renderTargetArrayLength :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "renderTargetArrayLength") } @(objc_type=RenderPassDescriptor, objc_name="renderTargetHeight") -RenderPassDescriptor_renderTargetHeight :: proc(self: ^RenderPassDescriptor) -> NS.Integer { +RenderPassDescriptor_renderTargetHeight :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "renderTargetHeight") } @(objc_type=RenderPassDescriptor, objc_name="renderTargetWidth") -RenderPassDescriptor_renderTargetWidth :: proc(self: ^RenderPassDescriptor) -> NS.Integer { +RenderPassDescriptor_renderTargetWidth :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "renderTargetWidth") } @(objc_type=RenderPassDescriptor, objc_name="sampleBufferAttachments") -RenderPassDescriptor_sampleBufferAttachments :: proc(self: ^RenderPassDescriptor) -> ^RenderPassSampleBufferAttachmentDescriptorArray { +RenderPassDescriptor_sampleBufferAttachments :: #force_inline proc(self: ^RenderPassDescriptor) -> ^RenderPassSampleBufferAttachmentDescriptorArray { return msgSend(^RenderPassSampleBufferAttachmentDescriptorArray, self, "sampleBufferAttachments") } @(objc_type=RenderPassDescriptor, objc_name="setDefaultRasterSampleCount") -RenderPassDescriptor_setDefaultRasterSampleCount :: proc(self: ^RenderPassDescriptor, defaultRasterSampleCount: NS.Integer) { +RenderPassDescriptor_setDefaultRasterSampleCount :: #force_inline proc(self: ^RenderPassDescriptor, defaultRasterSampleCount: NS.Integer) { msgSend(nil, self, "setDefaultRasterSampleCount:", defaultRasterSampleCount) } @(objc_type=RenderPassDescriptor, objc_name="setDepthAttachment") -RenderPassDescriptor_setDepthAttachment :: proc(self: ^RenderPassDescriptor, depthAttachment: ^RenderPassDepthAttachmentDescriptor) { +RenderPassDescriptor_setDepthAttachment :: #force_inline proc(self: ^RenderPassDescriptor, depthAttachment: ^RenderPassDepthAttachmentDescriptor) { msgSend(nil, self, "setDepthAttachment:", depthAttachment) } @(objc_type=RenderPassDescriptor, objc_name="setImageblockSampleLength") -RenderPassDescriptor_setImageblockSampleLength :: proc(self: ^RenderPassDescriptor, imageblockSampleLength: NS.Integer) { +RenderPassDescriptor_setImageblockSampleLength :: #force_inline proc(self: ^RenderPassDescriptor, imageblockSampleLength: NS.Integer) { msgSend(nil, self, "setImageblockSampleLength:", imageblockSampleLength) } @(objc_type=RenderPassDescriptor, objc_name="setRasterizationRateMap") -RenderPassDescriptor_setRasterizationRateMap :: proc(self: ^RenderPassDescriptor, rasterizationRateMap: ^NS.Object) { +RenderPassDescriptor_setRasterizationRateMap :: #force_inline proc(self: ^RenderPassDescriptor, rasterizationRateMap: ^NS.Object) { msgSend(nil, self, "setRasterizationRateMap:", rasterizationRateMap) } @(objc_type=RenderPassDescriptor, objc_name="setRenderTargetArrayLength") -RenderPassDescriptor_setRenderTargetArrayLength :: proc(self: ^RenderPassDescriptor, renderTargetArrayLength: NS.Integer) { +RenderPassDescriptor_setRenderTargetArrayLength :: #force_inline proc(self: ^RenderPassDescriptor, renderTargetArrayLength: NS.Integer) { msgSend(nil, self, "setRenderTargetArrayLength:", renderTargetArrayLength) } @(objc_type=RenderPassDescriptor, objc_name="setRenderTargetHeight") -RenderPassDescriptor_setRenderTargetHeight :: proc(self: ^RenderPassDescriptor, renderTargetHeight: NS.Integer) { +RenderPassDescriptor_setRenderTargetHeight :: #force_inline proc(self: ^RenderPassDescriptor, renderTargetHeight: NS.Integer) { msgSend(nil, self, "setRenderTargetHeight:", renderTargetHeight) } @(objc_type=RenderPassDescriptor, objc_name="setRenderTargetWidth") -RenderPassDescriptor_setRenderTargetWidth :: proc(self: ^RenderPassDescriptor, renderTargetWidth: NS.Integer) { +RenderPassDescriptor_setRenderTargetWidth :: #force_inline proc(self: ^RenderPassDescriptor, renderTargetWidth: NS.Integer) { msgSend(nil, self, "setRenderTargetWidth:", renderTargetWidth) } @(objc_type=RenderPassDescriptor, objc_name="setSamplePositions") -RenderPassDescriptor_setSamplePositions :: proc(self: ^RenderPassDescriptor, positions: ^SamplePosition, count: ^NS.Object) { +RenderPassDescriptor_setSamplePositions :: #force_inline proc(self: ^RenderPassDescriptor, positions: ^SamplePosition, count: ^NS.Object) { msgSend(nil, self, "setSamplePositions:count:", positions, count) } @(objc_type=RenderPassDescriptor, objc_name="setStencilAttachment") -RenderPassDescriptor_setStencilAttachment :: proc(self: ^RenderPassDescriptor, stencilAttachment: ^RenderPassStencilAttachmentDescriptor) { +RenderPassDescriptor_setStencilAttachment :: #force_inline proc(self: ^RenderPassDescriptor, stencilAttachment: ^RenderPassStencilAttachmentDescriptor) { msgSend(nil, self, "setStencilAttachment:", stencilAttachment) } @(objc_type=RenderPassDescriptor, objc_name="setThreadgroupMemoryLength") -RenderPassDescriptor_setThreadgroupMemoryLength :: proc(self: ^RenderPassDescriptor, threadgroupMemoryLength: NS.Integer) { +RenderPassDescriptor_setThreadgroupMemoryLength :: #force_inline proc(self: ^RenderPassDescriptor, threadgroupMemoryLength: NS.Integer) { msgSend(nil, self, "setThreadgroupMemoryLength:", threadgroupMemoryLength) } @(objc_type=RenderPassDescriptor, objc_name="setTileHeight") -RenderPassDescriptor_setTileHeight :: proc(self: ^RenderPassDescriptor, tileHeight: NS.Integer) { +RenderPassDescriptor_setTileHeight :: #force_inline proc(self: ^RenderPassDescriptor, tileHeight: NS.Integer) { msgSend(nil, self, "setTileHeight:", tileHeight) } @(objc_type=RenderPassDescriptor, objc_name="setTileWidth") -RenderPassDescriptor_setTileWidth :: proc(self: ^RenderPassDescriptor, tileWidth: NS.Integer) { +RenderPassDescriptor_setTileWidth :: #force_inline proc(self: ^RenderPassDescriptor, tileWidth: NS.Integer) { msgSend(nil, self, "setTileWidth:", tileWidth) } @(objc_type=RenderPassDescriptor, objc_name="setVisibilityResultBuffer") -RenderPassDescriptor_setVisibilityResultBuffer :: proc(self: ^RenderPassDescriptor, visibilityResultBuffer: ^NS.Object) { +RenderPassDescriptor_setVisibilityResultBuffer :: #force_inline proc(self: ^RenderPassDescriptor, visibilityResultBuffer: ^NS.Object) { msgSend(nil, self, "setVisibilityResultBuffer:", visibilityResultBuffer) } @(objc_type=RenderPassDescriptor, objc_name="stencilAttachment") -RenderPassDescriptor_stencilAttachment :: proc(self: ^RenderPassDescriptor) -> ^RenderPassStencilAttachmentDescriptor { +RenderPassDescriptor_stencilAttachment :: #force_inline proc(self: ^RenderPassDescriptor) -> ^RenderPassStencilAttachmentDescriptor { return msgSend(^RenderPassStencilAttachmentDescriptor, self, "stencilAttachment") } @(objc_type=RenderPassDescriptor, objc_name="threadgroupMemoryLength") -RenderPassDescriptor_threadgroupMemoryLength :: proc(self: ^RenderPassDescriptor) -> NS.Integer { +RenderPassDescriptor_threadgroupMemoryLength :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "threadgroupMemoryLength") } @(objc_type=RenderPassDescriptor, objc_name="tileHeight") -RenderPassDescriptor_tileHeight :: proc(self: ^RenderPassDescriptor) -> NS.Integer { +RenderPassDescriptor_tileHeight :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "tileHeight") } @(objc_type=RenderPassDescriptor, objc_name="tileWidth") -RenderPassDescriptor_tileWidth :: proc(self: ^RenderPassDescriptor) -> NS.Integer { +RenderPassDescriptor_tileWidth :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "tileWidth") } @(objc_type=RenderPassDescriptor, objc_name="visibilityResultBuffer") -RenderPassDescriptor_visibilityResultBuffer :: proc(self: ^RenderPassDescriptor) -> ^RenderPassDescriptor { +RenderPassDescriptor_visibilityResultBuffer :: #force_inline proc(self: ^RenderPassDescriptor) -> ^RenderPassDescriptor { return msgSend(^RenderPassDescriptor, self, "visibilityResultBuffer") } @@ -2873,51 +2859,51 @@ Methods: RenderPassSampleBufferAttachmentDescriptor :: struct { using _: NS.Copying(RenderPassSampleBufferAttachmentDescriptor) } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_class_name="alloc") -RenderPassSampleBufferAttachmentDescriptor_alloc :: proc() -> ^RenderPassSampleBufferAttachmentDescriptor { +RenderPassSampleBufferAttachmentDescriptor_alloc :: #force_inline proc() -> ^RenderPassSampleBufferAttachmentDescriptor { return msgSend(^RenderPassSampleBufferAttachmentDescriptor, RenderPassSampleBufferAttachmentDescriptor, "alloc") } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="init") -RenderPassSampleBufferAttachmentDescriptor_init :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> ^RenderPassSampleBufferAttachmentDescriptor { +RenderPassSampleBufferAttachmentDescriptor_init :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> ^RenderPassSampleBufferAttachmentDescriptor { return msgSend(^RenderPassSampleBufferAttachmentDescriptor, self, "init") } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="endOfFragmentSampleIndex") -RenderPassSampleBufferAttachmentDescriptor_endOfFragmentSampleIndex :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.Integer { +RenderPassSampleBufferAttachmentDescriptor_endOfFragmentSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "endOfFragmentSampleIndex") } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="endOfVertexSampleIndex") -RenderPassSampleBufferAttachmentDescriptor_endOfVertexSampleIndex :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.Integer { +RenderPassSampleBufferAttachmentDescriptor_endOfVertexSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "endOfVertexSampleIndex") } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="sampleBuffer") -RenderPassSampleBufferAttachmentDescriptor_sampleBuffer :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> ^RenderPassSampleBufferAttachmentDescriptor { +RenderPassSampleBufferAttachmentDescriptor_sampleBuffer :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> ^RenderPassSampleBufferAttachmentDescriptor { return msgSend(^RenderPassSampleBufferAttachmentDescriptor, self, "sampleBuffer") } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="setEndOfFragmentSampleIndex") -RenderPassSampleBufferAttachmentDescriptor_setEndOfFragmentSampleIndex :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor, endOfFragmentSampleIndex: NS.Integer) { +RenderPassSampleBufferAttachmentDescriptor_setEndOfFragmentSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor, endOfFragmentSampleIndex: NS.Integer) { msgSend(nil, self, "setEndOfFragmentSampleIndex:", endOfFragmentSampleIndex) } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="setEndOfVertexSampleIndex") -RenderPassSampleBufferAttachmentDescriptor_setEndOfVertexSampleIndex :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor, endOfVertexSampleIndex: NS.Integer) { +RenderPassSampleBufferAttachmentDescriptor_setEndOfVertexSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor, endOfVertexSampleIndex: NS.Integer) { msgSend(nil, self, "setEndOfVertexSampleIndex:", endOfVertexSampleIndex) } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="setSampleBuffer") -RenderPassSampleBufferAttachmentDescriptor_setSampleBuffer :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor, sampleBuffer: ^NS.Object) { +RenderPassSampleBufferAttachmentDescriptor_setSampleBuffer :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor, sampleBuffer: ^NS.Object) { msgSend(nil, self, "setSampleBuffer:", sampleBuffer) } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="setStartOfFragmentSampleIndex") -RenderPassSampleBufferAttachmentDescriptor_setStartOfFragmentSampleIndex :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor, startOfFragmentSampleIndex: NS.Integer) { +RenderPassSampleBufferAttachmentDescriptor_setStartOfFragmentSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor, startOfFragmentSampleIndex: NS.Integer) { msgSend(nil, self, "setStartOfFragmentSampleIndex:", startOfFragmentSampleIndex) } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="setStartOfVertexSampleIndex") -RenderPassSampleBufferAttachmentDescriptor_setStartOfVertexSampleIndex :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor, startOfVertexSampleIndex: NS.Integer) { +RenderPassSampleBufferAttachmentDescriptor_setStartOfVertexSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor, startOfVertexSampleIndex: NS.Integer) { msgSend(nil, self, "setStartOfVertexSampleIndex:", startOfVertexSampleIndex) } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="startOfFragmentSampleIndex") -RenderPassSampleBufferAttachmentDescriptor_startOfFragmentSampleIndex :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.Integer { +RenderPassSampleBufferAttachmentDescriptor_startOfFragmentSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "startOfFragmentSampleIndex") } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="startOfVertexSampleIndex") -RenderPassSampleBufferAttachmentDescriptor_startOfVertexSampleIndex :: proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.Integer { +RenderPassSampleBufferAttachmentDescriptor_startOfVertexSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "startOfVertexSampleIndex") } @@ -2937,19 +2923,19 @@ Methods: RenderPassSampleBufferAttachmentDescriptorArray :: struct { using _: NS.Object } @(objc_type=RenderPassSampleBufferAttachmentDescriptorArray, objc_class_name="alloc") -RenderPassSampleBufferAttachmentDescriptorArray_alloc :: proc() -> ^RenderPassSampleBufferAttachmentDescriptorArray { +RenderPassSampleBufferAttachmentDescriptorArray_alloc :: #force_inline proc() -> ^RenderPassSampleBufferAttachmentDescriptorArray { return msgSend(^RenderPassSampleBufferAttachmentDescriptorArray, RenderPassSampleBufferAttachmentDescriptorArray, "alloc") } @(objc_type=RenderPassSampleBufferAttachmentDescriptorArray, objc_name="init") -RenderPassSampleBufferAttachmentDescriptorArray_init :: proc(self: ^RenderPassSampleBufferAttachmentDescriptorArray) -> ^RenderPassSampleBufferAttachmentDescriptorArray { +RenderPassSampleBufferAttachmentDescriptorArray_init :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptorArray) -> ^RenderPassSampleBufferAttachmentDescriptorArray { return msgSend(^RenderPassSampleBufferAttachmentDescriptorArray, self, "init") } @(objc_type=RenderPassSampleBufferAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") -RenderPassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: proc(self: ^RenderPassSampleBufferAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^RenderPassSampleBufferAttachmentDescriptor { +RenderPassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^RenderPassSampleBufferAttachmentDescriptor { return msgSend(^RenderPassSampleBufferAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) } @(objc_type=RenderPassSampleBufferAttachmentDescriptorArray, objc_name="setObject") -RenderPassSampleBufferAttachmentDescriptorArray_setObject :: proc(self: ^RenderPassSampleBufferAttachmentDescriptorArray, attachment: ^RenderPassSampleBufferAttachmentDescriptor, attachmentIndex: ^NS.Object) { +RenderPassSampleBufferAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptorArray, attachment: ^RenderPassSampleBufferAttachmentDescriptor, attachmentIndex: ^NS.Object) { msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) } @@ -2971,27 +2957,27 @@ Methods: RenderPassStencilAttachmentDescriptor :: struct { using _: NS.Copying(RenderPassStencilAttachmentDescriptor) } @(objc_type=RenderPassStencilAttachmentDescriptor, objc_class_name="alloc") -RenderPassStencilAttachmentDescriptor_alloc :: proc() -> ^RenderPassStencilAttachmentDescriptor { +RenderPassStencilAttachmentDescriptor_alloc :: #force_inline proc() -> ^RenderPassStencilAttachmentDescriptor { return msgSend(^RenderPassStencilAttachmentDescriptor, RenderPassStencilAttachmentDescriptor, "alloc") } @(objc_type=RenderPassStencilAttachmentDescriptor, objc_name="init") -RenderPassStencilAttachmentDescriptor_init :: proc(self: ^RenderPassStencilAttachmentDescriptor) -> ^RenderPassStencilAttachmentDescriptor { +RenderPassStencilAttachmentDescriptor_init :: #force_inline proc(self: ^RenderPassStencilAttachmentDescriptor) -> ^RenderPassStencilAttachmentDescriptor { return msgSend(^RenderPassStencilAttachmentDescriptor, self, "init") } @(objc_type=RenderPassStencilAttachmentDescriptor, objc_name="clearStencil") -RenderPassStencilAttachmentDescriptor_clearStencil :: proc(self: ^RenderPassStencilAttachmentDescriptor) -> u32 { +RenderPassStencilAttachmentDescriptor_clearStencil :: #force_inline proc(self: ^RenderPassStencilAttachmentDescriptor) -> u32 { return msgSend(u32, self, "clearStencil") } @(objc_type=RenderPassStencilAttachmentDescriptor, objc_name="setClearStencil") -RenderPassStencilAttachmentDescriptor_setClearStencil :: proc(self: ^RenderPassStencilAttachmentDescriptor, clearStencil: u32) { +RenderPassStencilAttachmentDescriptor_setClearStencil :: #force_inline proc(self: ^RenderPassStencilAttachmentDescriptor, clearStencil: u32) { msgSend(nil, self, "setClearStencil:", clearStencil) } @(objc_type=RenderPassStencilAttachmentDescriptor, objc_name="setStencilResolveFilter") -RenderPassStencilAttachmentDescriptor_setStencilResolveFilter :: proc(self: ^RenderPassStencilAttachmentDescriptor, stencilResolveFilter: MultisampleStencilResolveFilter) { +RenderPassStencilAttachmentDescriptor_setStencilResolveFilter :: #force_inline proc(self: ^RenderPassStencilAttachmentDescriptor, stencilResolveFilter: MultisampleStencilResolveFilter) { msgSend(nil, self, "setStencilResolveFilter:", stencilResolveFilter) } @(objc_type=RenderPassStencilAttachmentDescriptor, objc_name="stencilResolveFilter") -RenderPassStencilAttachmentDescriptor_stencilResolveFilter :: proc(self: ^RenderPassStencilAttachmentDescriptor) -> MultisampleStencilResolveFilter { +RenderPassStencilAttachmentDescriptor_stencilResolveFilter :: #force_inline proc(self: ^RenderPassStencilAttachmentDescriptor) -> MultisampleStencilResolveFilter { return msgSend(MultisampleStencilResolveFilter, self, "stencilResolveFilter") } @@ -3027,83 +3013,83 @@ Methods: RenderPipelineColorAttachmentDescriptor :: struct { using _: NS.Copying(RenderPipelineColorAttachmentDescriptor) } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_class_name="alloc") -RenderPipelineColorAttachmentDescriptor_alloc :: proc() -> ^RenderPipelineColorAttachmentDescriptor { +RenderPipelineColorAttachmentDescriptor_alloc :: #force_inline proc() -> ^RenderPipelineColorAttachmentDescriptor { return msgSend(^RenderPipelineColorAttachmentDescriptor, RenderPipelineColorAttachmentDescriptor, "alloc") } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="init") -RenderPipelineColorAttachmentDescriptor_init :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> ^RenderPipelineColorAttachmentDescriptor { +RenderPipelineColorAttachmentDescriptor_init :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor) -> ^RenderPipelineColorAttachmentDescriptor { return msgSend(^RenderPipelineColorAttachmentDescriptor, self, "init") } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="alphaBlendOperation") -RenderPipelineColorAttachmentDescriptor_alphaBlendOperation :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendOperation { +RenderPipelineColorAttachmentDescriptor_alphaBlendOperation :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendOperation { return msgSend(BlendOperation, self, "alphaBlendOperation") } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="destinationAlphaBlendFactor") -RenderPipelineColorAttachmentDescriptor_destinationAlphaBlendFactor :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendFactor { +RenderPipelineColorAttachmentDescriptor_destinationAlphaBlendFactor :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendFactor { return msgSend(BlendFactor, self, "destinationAlphaBlendFactor") } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="destinationRGBBlendFactor") -RenderPipelineColorAttachmentDescriptor_destinationRGBBlendFactor :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendFactor { +RenderPipelineColorAttachmentDescriptor_destinationRGBBlendFactor :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendFactor { return msgSend(BlendFactor, self, "destinationRGBBlendFactor") } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="isBlendingEnabled") -RenderPipelineColorAttachmentDescriptor_isBlendingEnabled :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BOOL { +RenderPipelineColorAttachmentDescriptor_isBlendingEnabled :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BOOL { return msgSend(BOOL, self, "isBlendingEnabled") } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="pixelFormat") -RenderPipelineColorAttachmentDescriptor_pixelFormat :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> PixelFormat { +RenderPipelineColorAttachmentDescriptor_pixelFormat :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor) -> PixelFormat { return msgSend(PixelFormat, self, "pixelFormat") } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="rgbBlendOperation") -RenderPipelineColorAttachmentDescriptor_rgbBlendOperation :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendOperation { +RenderPipelineColorAttachmentDescriptor_rgbBlendOperation :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendOperation { return msgSend(BlendOperation, self, "rgbBlendOperation") } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setAlphaBlendOperation") -RenderPipelineColorAttachmentDescriptor_setAlphaBlendOperation :: proc(self: ^RenderPipelineColorAttachmentDescriptor, alphaBlendOperation: BlendOperation) { +RenderPipelineColorAttachmentDescriptor_setAlphaBlendOperation :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor, alphaBlendOperation: BlendOperation) { msgSend(nil, self, "setAlphaBlendOperation:", alphaBlendOperation) } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setBlendingEnabled") -RenderPipelineColorAttachmentDescriptor_setBlendingEnabled :: proc(self: ^RenderPipelineColorAttachmentDescriptor, blendingEnabled: BOOL) { +RenderPipelineColorAttachmentDescriptor_setBlendingEnabled :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor, blendingEnabled: BOOL) { msgSend(nil, self, "setBlendingEnabled:", blendingEnabled) } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setDestinationAlphaBlendFactor") -RenderPipelineColorAttachmentDescriptor_setDestinationAlphaBlendFactor :: proc(self: ^RenderPipelineColorAttachmentDescriptor, destinationAlphaBlendFactor: BlendFactor) { +RenderPipelineColorAttachmentDescriptor_setDestinationAlphaBlendFactor :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor, destinationAlphaBlendFactor: BlendFactor) { msgSend(nil, self, "setDestinationAlphaBlendFactor:", destinationAlphaBlendFactor) } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setDestinationRGBBlendFactor") -RenderPipelineColorAttachmentDescriptor_setDestinationRGBBlendFactor :: proc(self: ^RenderPipelineColorAttachmentDescriptor, destinationRGBBlendFactor: BlendFactor) { +RenderPipelineColorAttachmentDescriptor_setDestinationRGBBlendFactor :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor, destinationRGBBlendFactor: BlendFactor) { msgSend(nil, self, "setDestinationRGBBlendFactor:", destinationRGBBlendFactor) } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setPixelFormat") -RenderPipelineColorAttachmentDescriptor_setPixelFormat :: proc(self: ^RenderPipelineColorAttachmentDescriptor, pixelFormat: PixelFormat) { +RenderPipelineColorAttachmentDescriptor_setPixelFormat :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor, pixelFormat: PixelFormat) { msgSend(nil, self, "setPixelFormat:", pixelFormat) } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setRgbBlendOperation") -RenderPipelineColorAttachmentDescriptor_setRgbBlendOperation :: proc(self: ^RenderPipelineColorAttachmentDescriptor, rgbBlendOperation: BlendOperation) { +RenderPipelineColorAttachmentDescriptor_setRgbBlendOperation :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor, rgbBlendOperation: BlendOperation) { msgSend(nil, self, "setRgbBlendOperation:", rgbBlendOperation) } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setSourceAlphaBlendFactor") -RenderPipelineColorAttachmentDescriptor_setSourceAlphaBlendFactor :: proc(self: ^RenderPipelineColorAttachmentDescriptor, sourceAlphaBlendFactor: BlendFactor) { +RenderPipelineColorAttachmentDescriptor_setSourceAlphaBlendFactor :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor, sourceAlphaBlendFactor: BlendFactor) { msgSend(nil, self, "setSourceAlphaBlendFactor:", sourceAlphaBlendFactor) } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setSourceRGBBlendFactor") -RenderPipelineColorAttachmentDescriptor_setSourceRGBBlendFactor :: proc(self: ^RenderPipelineColorAttachmentDescriptor, sourceRGBBlendFactor: BlendFactor) { +RenderPipelineColorAttachmentDescriptor_setSourceRGBBlendFactor :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor, sourceRGBBlendFactor: BlendFactor) { msgSend(nil, self, "setSourceRGBBlendFactor:", sourceRGBBlendFactor) } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="setWriteMask") -RenderPipelineColorAttachmentDescriptor_setWriteMask :: proc(self: ^RenderPipelineColorAttachmentDescriptor, writeMask: ColorWriteMask) { +RenderPipelineColorAttachmentDescriptor_setWriteMask :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor, writeMask: ColorWriteMask) { msgSend(nil, self, "setWriteMask:", writeMask) } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="sourceAlphaBlendFactor") -RenderPipelineColorAttachmentDescriptor_sourceAlphaBlendFactor :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendFactor { +RenderPipelineColorAttachmentDescriptor_sourceAlphaBlendFactor :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendFactor { return msgSend(BlendFactor, self, "sourceAlphaBlendFactor") } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="sourceRGBBlendFactor") -RenderPipelineColorAttachmentDescriptor_sourceRGBBlendFactor :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendFactor { +RenderPipelineColorAttachmentDescriptor_sourceRGBBlendFactor :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor) -> BlendFactor { return msgSend(BlendFactor, self, "sourceRGBBlendFactor") } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_name="writeMask") -RenderPipelineColorAttachmentDescriptor_writeMask :: proc(self: ^RenderPipelineColorAttachmentDescriptor) -> ColorWriteMask { +RenderPipelineColorAttachmentDescriptor_writeMask :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptor) -> ColorWriteMask { return msgSend(ColorWriteMask, self, "writeMask") } @@ -3123,19 +3109,19 @@ Methods: RenderPipelineColorAttachmentDescriptorArray :: struct { using _: NS.Object } @(objc_type=RenderPipelineColorAttachmentDescriptorArray, objc_class_name="alloc") -RenderPipelineColorAttachmentDescriptorArray_alloc :: proc() -> ^RenderPipelineColorAttachmentDescriptorArray { +RenderPipelineColorAttachmentDescriptorArray_alloc :: #force_inline proc() -> ^RenderPipelineColorAttachmentDescriptorArray { return msgSend(^RenderPipelineColorAttachmentDescriptorArray, RenderPipelineColorAttachmentDescriptorArray, "alloc") } @(objc_type=RenderPipelineColorAttachmentDescriptorArray, objc_name="init") -RenderPipelineColorAttachmentDescriptorArray_init :: proc(self: ^RenderPipelineColorAttachmentDescriptorArray) -> ^RenderPipelineColorAttachmentDescriptorArray { +RenderPipelineColorAttachmentDescriptorArray_init :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptorArray) -> ^RenderPipelineColorAttachmentDescriptorArray { return msgSend(^RenderPipelineColorAttachmentDescriptorArray, self, "init") } @(objc_type=RenderPipelineColorAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") -RenderPipelineColorAttachmentDescriptorArray_objectAtIndexedSubscript :: proc(self: ^RenderPipelineColorAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^RenderPipelineColorAttachmentDescriptor { +RenderPipelineColorAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^RenderPipelineColorAttachmentDescriptor { return msgSend(^RenderPipelineColorAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) } @(objc_type=RenderPipelineColorAttachmentDescriptorArray, objc_name="setObject") -RenderPipelineColorAttachmentDescriptorArray_setObject :: proc(self: ^RenderPipelineColorAttachmentDescriptorArray, attachment: ^RenderPipelineColorAttachmentDescriptor, attachmentIndex: ^NS.Object) { +RenderPipelineColorAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptorArray, attachment: ^RenderPipelineColorAttachmentDescriptor, attachmentIndex: ^NS.Object) { msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) } @@ -3201,203 +3187,203 @@ Methods: RenderPipelineDescriptor :: struct { using _: NS.Copying(RenderPipelineDescriptor) } @(objc_type=RenderPipelineDescriptor, objc_class_name="alloc") -RenderPipelineDescriptor_alloc :: proc() -> ^RenderPipelineDescriptor { +RenderPipelineDescriptor_alloc :: #force_inline proc() -> ^RenderPipelineDescriptor { return msgSend(^RenderPipelineDescriptor, RenderPipelineDescriptor, "alloc") } @(objc_type=RenderPipelineDescriptor, objc_name="init") -RenderPipelineDescriptor_init :: proc(self: ^RenderPipelineDescriptor) -> ^RenderPipelineDescriptor { +RenderPipelineDescriptor_init :: #force_inline proc(self: ^RenderPipelineDescriptor) -> ^RenderPipelineDescriptor { return msgSend(^RenderPipelineDescriptor, self, "init") } @(objc_type=RenderPipelineDescriptor, objc_name="binaryArchives") -RenderPipelineDescriptor_binaryArchives :: proc(self: ^RenderPipelineDescriptor) -> ^NS.Array { +RenderPipelineDescriptor_binaryArchives :: #force_inline proc(self: ^RenderPipelineDescriptor) -> ^NS.Array { return msgSend(^NS.Array, self, "binaryArchives") } @(objc_type=RenderPipelineDescriptor, objc_name="colorAttachments") -RenderPipelineDescriptor_colorAttachments :: proc(self: ^RenderPipelineDescriptor) -> ^RenderPipelineColorAttachmentDescriptorArray { +RenderPipelineDescriptor_colorAttachments :: #force_inline proc(self: ^RenderPipelineDescriptor) -> ^RenderPipelineColorAttachmentDescriptorArray { return msgSend(^RenderPipelineColorAttachmentDescriptorArray, self, "colorAttachments") } @(objc_type=RenderPipelineDescriptor, objc_name="depthAttachmentPixelFormat") -RenderPipelineDescriptor_depthAttachmentPixelFormat :: proc(self: ^RenderPipelineDescriptor) -> PixelFormat { +RenderPipelineDescriptor_depthAttachmentPixelFormat :: #force_inline proc(self: ^RenderPipelineDescriptor) -> PixelFormat { return msgSend(PixelFormat, self, "depthAttachmentPixelFormat") } @(objc_type=RenderPipelineDescriptor, objc_name="fragmentBuffers") -RenderPipelineDescriptor_fragmentBuffers :: proc(self: ^RenderPipelineDescriptor) -> ^PipelineBufferDescriptorArray { +RenderPipelineDescriptor_fragmentBuffers :: #force_inline proc(self: ^RenderPipelineDescriptor) -> ^PipelineBufferDescriptorArray { return msgSend(^PipelineBufferDescriptorArray, self, "fragmentBuffers") } @(objc_type=RenderPipelineDescriptor, objc_name="fragmentFunction") -RenderPipelineDescriptor_fragmentFunction :: proc(self: ^RenderPipelineDescriptor) -> ^RenderPipelineDescriptor { +RenderPipelineDescriptor_fragmentFunction :: #force_inline proc(self: ^RenderPipelineDescriptor) -> ^RenderPipelineDescriptor { return msgSend(^RenderPipelineDescriptor, self, "fragmentFunction") } @(objc_type=RenderPipelineDescriptor, objc_name="inputPrimitiveTopology") -RenderPipelineDescriptor_inputPrimitiveTopology :: proc(self: ^RenderPipelineDescriptor) -> PrimitiveTopologyClass { +RenderPipelineDescriptor_inputPrimitiveTopology :: #force_inline proc(self: ^RenderPipelineDescriptor) -> PrimitiveTopologyClass { return msgSend(PrimitiveTopologyClass, self, "inputPrimitiveTopology") } @(objc_type=RenderPipelineDescriptor, objc_name="isAlphaToCoverageEnabled") -RenderPipelineDescriptor_isAlphaToCoverageEnabled :: proc(self: ^RenderPipelineDescriptor) -> BOOL { +RenderPipelineDescriptor_isAlphaToCoverageEnabled :: #force_inline proc(self: ^RenderPipelineDescriptor) -> BOOL { return msgSend(BOOL, self, "isAlphaToCoverageEnabled") } @(objc_type=RenderPipelineDescriptor, objc_name="isAlphaToOneEnabled") -RenderPipelineDescriptor_isAlphaToOneEnabled :: proc(self: ^RenderPipelineDescriptor) -> BOOL { +RenderPipelineDescriptor_isAlphaToOneEnabled :: #force_inline proc(self: ^RenderPipelineDescriptor) -> BOOL { return msgSend(BOOL, self, "isAlphaToOneEnabled") } @(objc_type=RenderPipelineDescriptor, objc_name="isRasterizationEnabled") -RenderPipelineDescriptor_isRasterizationEnabled :: proc(self: ^RenderPipelineDescriptor) -> BOOL { +RenderPipelineDescriptor_isRasterizationEnabled :: #force_inline proc(self: ^RenderPipelineDescriptor) -> BOOL { return msgSend(BOOL, self, "isRasterizationEnabled") } @(objc_type=RenderPipelineDescriptor, objc_name="isTessellationFactorScaleEnabled") -RenderPipelineDescriptor_isTessellationFactorScaleEnabled :: proc(self: ^RenderPipelineDescriptor) -> BOOL { +RenderPipelineDescriptor_isTessellationFactorScaleEnabled :: #force_inline proc(self: ^RenderPipelineDescriptor) -> BOOL { return msgSend(BOOL, self, "isTessellationFactorScaleEnabled") } @(objc_type=RenderPipelineDescriptor, objc_name="label") -RenderPipelineDescriptor_label :: proc(self: ^RenderPipelineDescriptor) -> ^NS.String { +RenderPipelineDescriptor_label :: #force_inline proc(self: ^RenderPipelineDescriptor) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=RenderPipelineDescriptor, objc_name="maxTessellationFactor") -RenderPipelineDescriptor_maxTessellationFactor :: proc(self: ^RenderPipelineDescriptor) -> NS.Integer { +RenderPipelineDescriptor_maxTessellationFactor :: #force_inline proc(self: ^RenderPipelineDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "maxTessellationFactor") } @(objc_type=RenderPipelineDescriptor, objc_name="maxVertexAmplificationCount") -RenderPipelineDescriptor_maxVertexAmplificationCount :: proc(self: ^RenderPipelineDescriptor) -> NS.Integer { +RenderPipelineDescriptor_maxVertexAmplificationCount :: #force_inline proc(self: ^RenderPipelineDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "maxVertexAmplificationCount") } @(objc_type=RenderPipelineDescriptor, objc_name="rasterSampleCount") -RenderPipelineDescriptor_rasterSampleCount :: proc(self: ^RenderPipelineDescriptor) -> NS.Integer { +RenderPipelineDescriptor_rasterSampleCount :: #force_inline proc(self: ^RenderPipelineDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "rasterSampleCount") } @(objc_type=RenderPipelineDescriptor, objc_name="reset") -RenderPipelineDescriptor_reset :: proc(self: ^RenderPipelineDescriptor) { +RenderPipelineDescriptor_reset :: #force_inline proc(self: ^RenderPipelineDescriptor) { msgSend(nil, self, "reset") } @(objc_type=RenderPipelineDescriptor, objc_name="sampleCount") -RenderPipelineDescriptor_sampleCount :: proc(self: ^RenderPipelineDescriptor) -> NS.Integer { +RenderPipelineDescriptor_sampleCount :: #force_inline proc(self: ^RenderPipelineDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "sampleCount") } @(objc_type=RenderPipelineDescriptor, objc_name="setAlphaToCoverageEnabled") -RenderPipelineDescriptor_setAlphaToCoverageEnabled :: proc(self: ^RenderPipelineDescriptor, alphaToCoverageEnabled: BOOL) { +RenderPipelineDescriptor_setAlphaToCoverageEnabled :: #force_inline proc(self: ^RenderPipelineDescriptor, alphaToCoverageEnabled: BOOL) { msgSend(nil, self, "setAlphaToCoverageEnabled:", alphaToCoverageEnabled) } @(objc_type=RenderPipelineDescriptor, objc_name="setAlphaToOneEnabled") -RenderPipelineDescriptor_setAlphaToOneEnabled :: proc(self: ^RenderPipelineDescriptor, alphaToOneEnabled: BOOL) { +RenderPipelineDescriptor_setAlphaToOneEnabled :: #force_inline proc(self: ^RenderPipelineDescriptor, alphaToOneEnabled: BOOL) { msgSend(nil, self, "setAlphaToOneEnabled:", alphaToOneEnabled) } @(objc_type=RenderPipelineDescriptor, objc_name="setBinaryArchives") -RenderPipelineDescriptor_setBinaryArchives :: proc(self: ^RenderPipelineDescriptor, binaryArchives: ^NS.Array) { +RenderPipelineDescriptor_setBinaryArchives :: #force_inline proc(self: ^RenderPipelineDescriptor, binaryArchives: ^NS.Array) { msgSend(nil, self, "setBinaryArchives:", binaryArchives) } @(objc_type=RenderPipelineDescriptor, objc_name="setDepthAttachmentPixelFormat") -RenderPipelineDescriptor_setDepthAttachmentPixelFormat :: proc(self: ^RenderPipelineDescriptor, depthAttachmentPixelFormat: PixelFormat) { +RenderPipelineDescriptor_setDepthAttachmentPixelFormat :: #force_inline proc(self: ^RenderPipelineDescriptor, depthAttachmentPixelFormat: PixelFormat) { msgSend(nil, self, "setDepthAttachmentPixelFormat:", depthAttachmentPixelFormat) } @(objc_type=RenderPipelineDescriptor, objc_name="setFragmentFunction") -RenderPipelineDescriptor_setFragmentFunction :: proc(self: ^RenderPipelineDescriptor, fragmentFunction: ^NS.Object) { +RenderPipelineDescriptor_setFragmentFunction :: #force_inline proc(self: ^RenderPipelineDescriptor, fragmentFunction: ^NS.Object) { msgSend(nil, self, "setFragmentFunction:", fragmentFunction) } @(objc_type=RenderPipelineDescriptor, objc_name="setInputPrimitiveTopology") -RenderPipelineDescriptor_setInputPrimitiveTopology :: proc(self: ^RenderPipelineDescriptor, inputPrimitiveTopology: PrimitiveTopologyClass) { +RenderPipelineDescriptor_setInputPrimitiveTopology :: #force_inline proc(self: ^RenderPipelineDescriptor, inputPrimitiveTopology: PrimitiveTopologyClass) { msgSend(nil, self, "setInputPrimitiveTopology:", inputPrimitiveTopology) } @(objc_type=RenderPipelineDescriptor, objc_name="setLabel") -RenderPipelineDescriptor_setLabel :: proc(self: ^RenderPipelineDescriptor, label: ^NS.String) { +RenderPipelineDescriptor_setLabel :: #force_inline proc(self: ^RenderPipelineDescriptor, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @(objc_type=RenderPipelineDescriptor, objc_name="setMaxTessellationFactor") -RenderPipelineDescriptor_setMaxTessellationFactor :: proc(self: ^RenderPipelineDescriptor, maxTessellationFactor: NS.Integer) { +RenderPipelineDescriptor_setMaxTessellationFactor :: #force_inline proc(self: ^RenderPipelineDescriptor, maxTessellationFactor: NS.Integer) { msgSend(nil, self, "setMaxTessellationFactor:", maxTessellationFactor) } @(objc_type=RenderPipelineDescriptor, objc_name="setMaxVertexAmplificationCount") -RenderPipelineDescriptor_setMaxVertexAmplificationCount :: proc(self: ^RenderPipelineDescriptor, maxVertexAmplificationCount: NS.Integer) { +RenderPipelineDescriptor_setMaxVertexAmplificationCount :: #force_inline proc(self: ^RenderPipelineDescriptor, maxVertexAmplificationCount: NS.Integer) { msgSend(nil, self, "setMaxVertexAmplificationCount:", maxVertexAmplificationCount) } @(objc_type=RenderPipelineDescriptor, objc_name="setRasterSampleCount") -RenderPipelineDescriptor_setRasterSampleCount :: proc(self: ^RenderPipelineDescriptor, rasterSampleCount: NS.Integer) { +RenderPipelineDescriptor_setRasterSampleCount :: #force_inline proc(self: ^RenderPipelineDescriptor, rasterSampleCount: NS.Integer) { msgSend(nil, self, "setRasterSampleCount:", rasterSampleCount) } @(objc_type=RenderPipelineDescriptor, objc_name="setRasterizationEnabled") -RenderPipelineDescriptor_setRasterizationEnabled :: proc(self: ^RenderPipelineDescriptor, rasterizationEnabled: BOOL) { +RenderPipelineDescriptor_setRasterizationEnabled :: #force_inline proc(self: ^RenderPipelineDescriptor, rasterizationEnabled: BOOL) { msgSend(nil, self, "setRasterizationEnabled:", rasterizationEnabled) } @(objc_type=RenderPipelineDescriptor, objc_name="setSampleCount") -RenderPipelineDescriptor_setSampleCount :: proc(self: ^RenderPipelineDescriptor, sampleCount: NS.Integer) { +RenderPipelineDescriptor_setSampleCount :: #force_inline proc(self: ^RenderPipelineDescriptor, sampleCount: NS.Integer) { msgSend(nil, self, "setSampleCount:", sampleCount) } @(objc_type=RenderPipelineDescriptor, objc_name="setStencilAttachmentPixelFormat") -RenderPipelineDescriptor_setStencilAttachmentPixelFormat :: proc(self: ^RenderPipelineDescriptor, stencilAttachmentPixelFormat: PixelFormat) { +RenderPipelineDescriptor_setStencilAttachmentPixelFormat :: #force_inline proc(self: ^RenderPipelineDescriptor, stencilAttachmentPixelFormat: PixelFormat) { msgSend(nil, self, "setStencilAttachmentPixelFormat:", stencilAttachmentPixelFormat) } @(objc_type=RenderPipelineDescriptor, objc_name="setSupportIndirectCommandBuffers") -RenderPipelineDescriptor_setSupportIndirectCommandBuffers :: proc(self: ^RenderPipelineDescriptor, supportIndirectCommandBuffers: BOOL) { +RenderPipelineDescriptor_setSupportIndirectCommandBuffers :: #force_inline proc(self: ^RenderPipelineDescriptor, supportIndirectCommandBuffers: BOOL) { msgSend(nil, self, "setSupportIndirectCommandBuffers:", supportIndirectCommandBuffers) } @(objc_type=RenderPipelineDescriptor, objc_name="setTessellationControlPointIndexType") -RenderPipelineDescriptor_setTessellationControlPointIndexType :: proc(self: ^RenderPipelineDescriptor, tessellationControlPointIndexType: TessellationControlPointIndexType) { +RenderPipelineDescriptor_setTessellationControlPointIndexType :: #force_inline proc(self: ^RenderPipelineDescriptor, tessellationControlPointIndexType: TessellationControlPointIndexType) { msgSend(nil, self, "setTessellationControlPointIndexType:", tessellationControlPointIndexType) } @(objc_type=RenderPipelineDescriptor, objc_name="setTessellationFactorFormat") -RenderPipelineDescriptor_setTessellationFactorFormat :: proc(self: ^RenderPipelineDescriptor, tessellationFactorFormat: TessellationFactorFormat) { +RenderPipelineDescriptor_setTessellationFactorFormat :: #force_inline proc(self: ^RenderPipelineDescriptor, tessellationFactorFormat: TessellationFactorFormat) { msgSend(nil, self, "setTessellationFactorFormat:", tessellationFactorFormat) } @(objc_type=RenderPipelineDescriptor, objc_name="setTessellationFactorScaleEnabled") -RenderPipelineDescriptor_setTessellationFactorScaleEnabled :: proc(self: ^RenderPipelineDescriptor, tessellationFactorScaleEnabled: BOOL) { +RenderPipelineDescriptor_setTessellationFactorScaleEnabled :: #force_inline proc(self: ^RenderPipelineDescriptor, tessellationFactorScaleEnabled: BOOL) { msgSend(nil, self, "setTessellationFactorScaleEnabled:", tessellationFactorScaleEnabled) } @(objc_type=RenderPipelineDescriptor, objc_name="setTessellationFactorStepFunction") -RenderPipelineDescriptor_setTessellationFactorStepFunction :: proc(self: ^RenderPipelineDescriptor, tessellationFactorStepFunction: TessellationFactorStepFunction) { +RenderPipelineDescriptor_setTessellationFactorStepFunction :: #force_inline proc(self: ^RenderPipelineDescriptor, tessellationFactorStepFunction: TessellationFactorStepFunction) { msgSend(nil, self, "setTessellationFactorStepFunction:", tessellationFactorStepFunction) } @(objc_type=RenderPipelineDescriptor, objc_name="setTessellationOutputWindingOrder") -RenderPipelineDescriptor_setTessellationOutputWindingOrder :: proc(self: ^RenderPipelineDescriptor, tessellationOutputWindingOrder: Winding) { +RenderPipelineDescriptor_setTessellationOutputWindingOrder :: #force_inline proc(self: ^RenderPipelineDescriptor, tessellationOutputWindingOrder: Winding) { msgSend(nil, self, "setTessellationOutputWindingOrder:", tessellationOutputWindingOrder) } @(objc_type=RenderPipelineDescriptor, objc_name="setTessellationPartitionMode") -RenderPipelineDescriptor_setTessellationPartitionMode :: proc(self: ^RenderPipelineDescriptor, tessellationPartitionMode: TessellationPartitionMode) { +RenderPipelineDescriptor_setTessellationPartitionMode :: #force_inline proc(self: ^RenderPipelineDescriptor, tessellationPartitionMode: TessellationPartitionMode) { msgSend(nil, self, "setTessellationPartitionMode:", tessellationPartitionMode) } @(objc_type=RenderPipelineDescriptor, objc_name="setVertexDescriptor") -RenderPipelineDescriptor_setVertexDescriptor :: proc(self: ^RenderPipelineDescriptor, vertexDescriptor: ^VertexDescriptor) { +RenderPipelineDescriptor_setVertexDescriptor :: #force_inline proc(self: ^RenderPipelineDescriptor, vertexDescriptor: ^VertexDescriptor) { msgSend(nil, self, "setVertexDescriptor:", vertexDescriptor) } @(objc_type=RenderPipelineDescriptor, objc_name="setVertexFunction") -RenderPipelineDescriptor_setVertexFunction :: proc(self: ^RenderPipelineDescriptor, vertexFunction: ^NS.Object) { +RenderPipelineDescriptor_setVertexFunction :: #force_inline proc(self: ^RenderPipelineDescriptor, vertexFunction: ^NS.Object) { msgSend(nil, self, "setVertexFunction:", vertexFunction) } @(objc_type=RenderPipelineDescriptor, objc_name="stencilAttachmentPixelFormat") -RenderPipelineDescriptor_stencilAttachmentPixelFormat :: proc(self: ^RenderPipelineDescriptor) -> PixelFormat { +RenderPipelineDescriptor_stencilAttachmentPixelFormat :: #force_inline proc(self: ^RenderPipelineDescriptor) -> PixelFormat { return msgSend(PixelFormat, self, "stencilAttachmentPixelFormat") } @(objc_type=RenderPipelineDescriptor, objc_name="supportIndirectCommandBuffers") -RenderPipelineDescriptor_supportIndirectCommandBuffers :: proc(self: ^RenderPipelineDescriptor) -> BOOL { +RenderPipelineDescriptor_supportIndirectCommandBuffers :: #force_inline proc(self: ^RenderPipelineDescriptor) -> BOOL { return msgSend(BOOL, self, "supportIndirectCommandBuffers") } @(objc_type=RenderPipelineDescriptor, objc_name="tessellationControlPointIndexType") -RenderPipelineDescriptor_tessellationControlPointIndexType :: proc(self: ^RenderPipelineDescriptor) -> TessellationControlPointIndexType { +RenderPipelineDescriptor_tessellationControlPointIndexType :: #force_inline proc(self: ^RenderPipelineDescriptor) -> TessellationControlPointIndexType { return msgSend(TessellationControlPointIndexType, self, "tessellationControlPointIndexType") } @(objc_type=RenderPipelineDescriptor, objc_name="tessellationFactorFormat") -RenderPipelineDescriptor_tessellationFactorFormat :: proc(self: ^RenderPipelineDescriptor) -> TessellationFactorFormat { +RenderPipelineDescriptor_tessellationFactorFormat :: #force_inline proc(self: ^RenderPipelineDescriptor) -> TessellationFactorFormat { return msgSend(TessellationFactorFormat, self, "tessellationFactorFormat") } @(objc_type=RenderPipelineDescriptor, objc_name="tessellationFactorStepFunction") -RenderPipelineDescriptor_tessellationFactorStepFunction :: proc(self: ^RenderPipelineDescriptor) -> TessellationFactorStepFunction { +RenderPipelineDescriptor_tessellationFactorStepFunction :: #force_inline proc(self: ^RenderPipelineDescriptor) -> TessellationFactorStepFunction { return msgSend(TessellationFactorStepFunction, self, "tessellationFactorStepFunction") } @(objc_type=RenderPipelineDescriptor, objc_name="tessellationOutputWindingOrder") -RenderPipelineDescriptor_tessellationOutputWindingOrder :: proc(self: ^RenderPipelineDescriptor) -> Winding { +RenderPipelineDescriptor_tessellationOutputWindingOrder :: #force_inline proc(self: ^RenderPipelineDescriptor) -> Winding { return msgSend(Winding, self, "tessellationOutputWindingOrder") } @(objc_type=RenderPipelineDescriptor, objc_name="tessellationPartitionMode") -RenderPipelineDescriptor_tessellationPartitionMode :: proc(self: ^RenderPipelineDescriptor) -> TessellationPartitionMode { +RenderPipelineDescriptor_tessellationPartitionMode :: #force_inline proc(self: ^RenderPipelineDescriptor) -> TessellationPartitionMode { return msgSend(TessellationPartitionMode, self, "tessellationPartitionMode") } @(objc_type=RenderPipelineDescriptor, objc_name="vertexBuffers") -RenderPipelineDescriptor_vertexBuffers :: proc(self: ^RenderPipelineDescriptor) -> ^PipelineBufferDescriptorArray { +RenderPipelineDescriptor_vertexBuffers :: #force_inline proc(self: ^RenderPipelineDescriptor) -> ^PipelineBufferDescriptorArray { return msgSend(^PipelineBufferDescriptorArray, self, "vertexBuffers") } @(objc_type=RenderPipelineDescriptor, objc_name="vertexDescriptor") -RenderPipelineDescriptor_vertexDescriptor :: proc(self: ^RenderPipelineDescriptor) -> ^VertexDescriptor { +RenderPipelineDescriptor_vertexDescriptor :: #force_inline proc(self: ^RenderPipelineDescriptor) -> ^VertexDescriptor { return msgSend(^VertexDescriptor, self, "vertexDescriptor") } @(objc_type=RenderPipelineDescriptor, objc_name="vertexFunction") -RenderPipelineDescriptor_vertexFunction :: proc(self: ^RenderPipelineDescriptor) -> ^RenderPipelineDescriptor { +RenderPipelineDescriptor_vertexFunction :: #force_inline proc(self: ^RenderPipelineDescriptor) -> ^RenderPipelineDescriptor { return msgSend(^RenderPipelineDescriptor, self, "vertexFunction") } @@ -3418,23 +3404,23 @@ Methods: RenderPipelineReflection :: struct { using _: NS.Object } @(objc_type=RenderPipelineReflection, objc_class_name="alloc") -RenderPipelineReflection_alloc :: proc() -> ^RenderPipelineReflection { +RenderPipelineReflection_alloc :: #force_inline proc() -> ^RenderPipelineReflection { return msgSend(^RenderPipelineReflection, RenderPipelineReflection, "alloc") } @(objc_type=RenderPipelineReflection, objc_name="init") -RenderPipelineReflection_init :: proc(self: ^RenderPipelineReflection) -> ^RenderPipelineReflection { +RenderPipelineReflection_init :: #force_inline proc(self: ^RenderPipelineReflection) -> ^RenderPipelineReflection { return msgSend(^RenderPipelineReflection, self, "init") } @(objc_type=RenderPipelineReflection, objc_name="fragmentArguments") -RenderPipelineReflection_fragmentArguments :: proc(self: ^RenderPipelineReflection) -> ^NS.Array { +RenderPipelineReflection_fragmentArguments :: #force_inline proc(self: ^RenderPipelineReflection) -> ^NS.Array { return msgSend(^NS.Array, self, "fragmentArguments") } @(objc_type=RenderPipelineReflection, objc_name="tileArguments") -RenderPipelineReflection_tileArguments :: proc(self: ^RenderPipelineReflection) -> ^NS.Array { +RenderPipelineReflection_tileArguments :: #force_inline proc(self: ^RenderPipelineReflection) -> ^NS.Array { return msgSend(^NS.Array, self, "tileArguments") } @(objc_type=RenderPipelineReflection, objc_name="vertexArguments") -RenderPipelineReflection_vertexArguments :: proc(self: ^RenderPipelineReflection) -> ^NS.Array { +RenderPipelineReflection_vertexArguments :: #force_inline proc(self: ^RenderPipelineReflection) -> ^NS.Array { return msgSend(^NS.Array, self, "vertexArguments") } @@ -3454,19 +3440,19 @@ Methods: ResourceStatePassDescriptor :: struct { using _: NS.Copying(ResourceStatePassDescriptor) } @(objc_type=ResourceStatePassDescriptor, objc_class_name="alloc") -ResourceStatePassDescriptor_alloc :: proc() -> ^ResourceStatePassDescriptor { +ResourceStatePassDescriptor_alloc :: #force_inline proc() -> ^ResourceStatePassDescriptor { return msgSend(^ResourceStatePassDescriptor, ResourceStatePassDescriptor, "alloc") } @(objc_type=ResourceStatePassDescriptor, objc_name="init") -ResourceStatePassDescriptor_init :: proc(self: ^ResourceStatePassDescriptor) -> ^ResourceStatePassDescriptor { +ResourceStatePassDescriptor_init :: #force_inline proc(self: ^ResourceStatePassDescriptor) -> ^ResourceStatePassDescriptor { return msgSend(^ResourceStatePassDescriptor, self, "init") } @(objc_type=ResourceStatePassDescriptor, objc_class_name="resourceStatePassDescriptor") -ResourceStatePassDescriptor_resourceStatePassDescriptor :: proc() -> ^ResourceStatePassDescriptor { +ResourceStatePassDescriptor_resourceStatePassDescriptor :: #force_inline proc() -> ^ResourceStatePassDescriptor { return msgSend(^ResourceStatePassDescriptor, ResourceStatePassDescriptor, "resourceStatePassDescriptor") } @(objc_type=ResourceStatePassDescriptor, objc_name="sampleBufferAttachments") -ResourceStatePassDescriptor_sampleBufferAttachments :: proc(self: ^ResourceStatePassDescriptor) -> ^ResourceStatePassSampleBufferAttachmentDescriptorArray { +ResourceStatePassDescriptor_sampleBufferAttachments :: #force_inline proc(self: ^ResourceStatePassDescriptor) -> ^ResourceStatePassSampleBufferAttachmentDescriptorArray { return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptorArray, self, "sampleBufferAttachments") } @@ -3490,35 +3476,35 @@ Methods: ResourceStatePassSampleBufferAttachmentDescriptor :: struct { using _: NS.Copying(ResourceStatePassSampleBufferAttachmentDescriptor) } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_class_name="alloc") -ResourceStatePassSampleBufferAttachmentDescriptor_alloc :: proc() -> ^ResourceStatePassSampleBufferAttachmentDescriptor { +ResourceStatePassSampleBufferAttachmentDescriptor_alloc :: #force_inline proc() -> ^ResourceStatePassSampleBufferAttachmentDescriptor { return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptor, ResourceStatePassSampleBufferAttachmentDescriptor, "alloc") } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="init") -ResourceStatePassSampleBufferAttachmentDescriptor_init :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> ^ResourceStatePassSampleBufferAttachmentDescriptor { +ResourceStatePassSampleBufferAttachmentDescriptor_init :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> ^ResourceStatePassSampleBufferAttachmentDescriptor { return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptor, self, "init") } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="endOfEncoderSampleIndex") -ResourceStatePassSampleBufferAttachmentDescriptor_endOfEncoderSampleIndex :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> NS.Integer { +ResourceStatePassSampleBufferAttachmentDescriptor_endOfEncoderSampleIndex :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "endOfEncoderSampleIndex") } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="sampleBuffer") -ResourceStatePassSampleBufferAttachmentDescriptor_sampleBuffer :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> ^ResourceStatePassSampleBufferAttachmentDescriptor { +ResourceStatePassSampleBufferAttachmentDescriptor_sampleBuffer :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> ^ResourceStatePassSampleBufferAttachmentDescriptor { return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptor, self, "sampleBuffer") } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="setEndOfEncoderSampleIndex") -ResourceStatePassSampleBufferAttachmentDescriptor_setEndOfEncoderSampleIndex :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor, endOfEncoderSampleIndex: NS.Integer) { +ResourceStatePassSampleBufferAttachmentDescriptor_setEndOfEncoderSampleIndex :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor, endOfEncoderSampleIndex: NS.Integer) { msgSend(nil, self, "setEndOfEncoderSampleIndex:", endOfEncoderSampleIndex) } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="setSampleBuffer") -ResourceStatePassSampleBufferAttachmentDescriptor_setSampleBuffer :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor, sampleBuffer: ^NS.Object) { +ResourceStatePassSampleBufferAttachmentDescriptor_setSampleBuffer :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor, sampleBuffer: ^NS.Object) { msgSend(nil, self, "setSampleBuffer:", sampleBuffer) } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="setStartOfEncoderSampleIndex") -ResourceStatePassSampleBufferAttachmentDescriptor_setStartOfEncoderSampleIndex :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor, startOfEncoderSampleIndex: NS.Integer) { +ResourceStatePassSampleBufferAttachmentDescriptor_setStartOfEncoderSampleIndex :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor, startOfEncoderSampleIndex: NS.Integer) { msgSend(nil, self, "setStartOfEncoderSampleIndex:", startOfEncoderSampleIndex) } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="startOfEncoderSampleIndex") -ResourceStatePassSampleBufferAttachmentDescriptor_startOfEncoderSampleIndex :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> NS.Integer { +ResourceStatePassSampleBufferAttachmentDescriptor_startOfEncoderSampleIndex :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "startOfEncoderSampleIndex") } @@ -3538,19 +3524,19 @@ Methods: ResourceStatePassSampleBufferAttachmentDescriptorArray :: struct { using _: NS.Object } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptorArray, objc_class_name="alloc") -ResourceStatePassSampleBufferAttachmentDescriptorArray_alloc :: proc() -> ^ResourceStatePassSampleBufferAttachmentDescriptorArray { +ResourceStatePassSampleBufferAttachmentDescriptorArray_alloc :: #force_inline proc() -> ^ResourceStatePassSampleBufferAttachmentDescriptorArray { return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptorArray, ResourceStatePassSampleBufferAttachmentDescriptorArray, "alloc") } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptorArray, objc_name="init") -ResourceStatePassSampleBufferAttachmentDescriptorArray_init :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptorArray) -> ^ResourceStatePassSampleBufferAttachmentDescriptorArray { +ResourceStatePassSampleBufferAttachmentDescriptorArray_init :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptorArray) -> ^ResourceStatePassSampleBufferAttachmentDescriptorArray { return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptorArray, self, "init") } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") -ResourceStatePassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^ResourceStatePassSampleBufferAttachmentDescriptor { +ResourceStatePassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^ResourceStatePassSampleBufferAttachmentDescriptor { return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptorArray, objc_name="setObject") -ResourceStatePassSampleBufferAttachmentDescriptorArray_setObject :: proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptorArray, attachment: ^ResourceStatePassSampleBufferAttachmentDescriptor, attachmentIndex: ^NS.Object) { +ResourceStatePassSampleBufferAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptorArray, attachment: ^ResourceStatePassSampleBufferAttachmentDescriptor, attachmentIndex: ^NS.Object) { msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) } @@ -3598,131 +3584,131 @@ Methods: SamplerDescriptor :: struct { using _: NS.Copying(SamplerDescriptor) } @(objc_type=SamplerDescriptor, objc_class_name="alloc") -SamplerDescriptor_alloc :: proc() -> ^SamplerDescriptor { +SamplerDescriptor_alloc :: #force_inline proc() -> ^SamplerDescriptor { return msgSend(^SamplerDescriptor, SamplerDescriptor, "alloc") } @(objc_type=SamplerDescriptor, objc_name="init") -SamplerDescriptor_init :: proc(self: ^SamplerDescriptor) -> ^SamplerDescriptor { +SamplerDescriptor_init :: #force_inline proc(self: ^SamplerDescriptor) -> ^SamplerDescriptor { return msgSend(^SamplerDescriptor, self, "init") } @(objc_type=SamplerDescriptor, objc_name="borderColor") -SamplerDescriptor_borderColor :: proc(self: ^SamplerDescriptor) -> SamplerBorderColor { +SamplerDescriptor_borderColor :: #force_inline proc(self: ^SamplerDescriptor) -> SamplerBorderColor { return msgSend(SamplerBorderColor, self, "borderColor") } @(objc_type=SamplerDescriptor, objc_name="compareFunction") -SamplerDescriptor_compareFunction :: proc(self: ^SamplerDescriptor) -> CompareFunction { +SamplerDescriptor_compareFunction :: #force_inline proc(self: ^SamplerDescriptor) -> CompareFunction { return msgSend(CompareFunction, self, "compareFunction") } @(objc_type=SamplerDescriptor, objc_name="label") -SamplerDescriptor_label :: proc(self: ^SamplerDescriptor) -> ^NS.String { +SamplerDescriptor_label :: #force_inline proc(self: ^SamplerDescriptor) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=SamplerDescriptor, objc_name="lodAverage") -SamplerDescriptor_lodAverage :: proc(self: ^SamplerDescriptor) -> BOOL { +SamplerDescriptor_lodAverage :: #force_inline proc(self: ^SamplerDescriptor) -> BOOL { return msgSend(BOOL, self, "lodAverage") } @(objc_type=SamplerDescriptor, objc_name="lodMaxClamp") -SamplerDescriptor_lodMaxClamp :: proc(self: ^SamplerDescriptor) -> f32 { +SamplerDescriptor_lodMaxClamp :: #force_inline proc(self: ^SamplerDescriptor) -> f32 { return msgSend(f32, self, "lodMaxClamp") } @(objc_type=SamplerDescriptor, objc_name="lodMinClamp") -SamplerDescriptor_lodMinClamp :: proc(self: ^SamplerDescriptor) -> f32 { +SamplerDescriptor_lodMinClamp :: #force_inline proc(self: ^SamplerDescriptor) -> f32 { return msgSend(f32, self, "lodMinClamp") } @(objc_type=SamplerDescriptor, objc_name="magFilter") -SamplerDescriptor_magFilter :: proc(self: ^SamplerDescriptor) -> SamplerMinMagFilter { +SamplerDescriptor_magFilter :: #force_inline proc(self: ^SamplerDescriptor) -> SamplerMinMagFilter { return msgSend(SamplerMinMagFilter, self, "magFilter") } @(objc_type=SamplerDescriptor, objc_name="maxAnisotropy") -SamplerDescriptor_maxAnisotropy :: proc(self: ^SamplerDescriptor) -> NS.Integer { +SamplerDescriptor_maxAnisotropy :: #force_inline proc(self: ^SamplerDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "maxAnisotropy") } @(objc_type=SamplerDescriptor, objc_name="minFilter") -SamplerDescriptor_minFilter :: proc(self: ^SamplerDescriptor) -> SamplerMinMagFilter { +SamplerDescriptor_minFilter :: #force_inline proc(self: ^SamplerDescriptor) -> SamplerMinMagFilter { return msgSend(SamplerMinMagFilter, self, "minFilter") } @(objc_type=SamplerDescriptor, objc_name="mipFilter") -SamplerDescriptor_mipFilter :: proc(self: ^SamplerDescriptor) -> SamplerMipFilter { +SamplerDescriptor_mipFilter :: #force_inline proc(self: ^SamplerDescriptor) -> SamplerMipFilter { return msgSend(SamplerMipFilter, self, "mipFilter") } @(objc_type=SamplerDescriptor, objc_name="normalizedCoordinates") -SamplerDescriptor_normalizedCoordinates :: proc(self: ^SamplerDescriptor) -> BOOL { +SamplerDescriptor_normalizedCoordinates :: #force_inline proc(self: ^SamplerDescriptor) -> BOOL { return msgSend(BOOL, self, "normalizedCoordinates") } @(objc_type=SamplerDescriptor, objc_name="rAddressMode") -SamplerDescriptor_rAddressMode :: proc(self: ^SamplerDescriptor) -> SamplerAddressMode { +SamplerDescriptor_rAddressMode :: #force_inline proc(self: ^SamplerDescriptor) -> SamplerAddressMode { return msgSend(SamplerAddressMode, self, "rAddressMode") } @(objc_type=SamplerDescriptor, objc_name="sAddressMode") -SamplerDescriptor_sAddressMode :: proc(self: ^SamplerDescriptor) -> SamplerAddressMode { +SamplerDescriptor_sAddressMode :: #force_inline proc(self: ^SamplerDescriptor) -> SamplerAddressMode { return msgSend(SamplerAddressMode, self, "sAddressMode") } @(objc_type=SamplerDescriptor, objc_name="setBorderColor") -SamplerDescriptor_setBorderColor :: proc(self: ^SamplerDescriptor, borderColor: SamplerBorderColor) { +SamplerDescriptor_setBorderColor :: #force_inline proc(self: ^SamplerDescriptor, borderColor: SamplerBorderColor) { msgSend(nil, self, "setBorderColor:", borderColor) } @(objc_type=SamplerDescriptor, objc_name="setCompareFunction") -SamplerDescriptor_setCompareFunction :: proc(self: ^SamplerDescriptor, compareFunction: CompareFunction) { +SamplerDescriptor_setCompareFunction :: #force_inline proc(self: ^SamplerDescriptor, compareFunction: CompareFunction) { msgSend(nil, self, "setCompareFunction:", compareFunction) } @(objc_type=SamplerDescriptor, objc_name="setLabel") -SamplerDescriptor_setLabel :: proc(self: ^SamplerDescriptor, label: ^NS.String) { +SamplerDescriptor_setLabel :: #force_inline proc(self: ^SamplerDescriptor, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @(objc_type=SamplerDescriptor, objc_name="setLodAverage") -SamplerDescriptor_setLodAverage :: proc(self: ^SamplerDescriptor, lodAverage: BOOL) { +SamplerDescriptor_setLodAverage :: #force_inline proc(self: ^SamplerDescriptor, lodAverage: BOOL) { msgSend(nil, self, "setLodAverage:", lodAverage) } @(objc_type=SamplerDescriptor, objc_name="setLodMaxClamp") -SamplerDescriptor_setLodMaxClamp :: proc(self: ^SamplerDescriptor, lodMaxClamp: f32) { +SamplerDescriptor_setLodMaxClamp :: #force_inline proc(self: ^SamplerDescriptor, lodMaxClamp: f32) { msgSend(nil, self, "setLodMaxClamp:", lodMaxClamp) } @(objc_type=SamplerDescriptor, objc_name="setLodMinClamp") -SamplerDescriptor_setLodMinClamp :: proc(self: ^SamplerDescriptor, lodMinClamp: f32) { +SamplerDescriptor_setLodMinClamp :: #force_inline proc(self: ^SamplerDescriptor, lodMinClamp: f32) { msgSend(nil, self, "setLodMinClamp:", lodMinClamp) } @(objc_type=SamplerDescriptor, objc_name="setMagFilter") -SamplerDescriptor_setMagFilter :: proc(self: ^SamplerDescriptor, magFilter: SamplerMinMagFilter) { +SamplerDescriptor_setMagFilter :: #force_inline proc(self: ^SamplerDescriptor, magFilter: SamplerMinMagFilter) { msgSend(nil, self, "setMagFilter:", magFilter) } @(objc_type=SamplerDescriptor, objc_name="setMaxAnisotropy") -SamplerDescriptor_setMaxAnisotropy :: proc(self: ^SamplerDescriptor, maxAnisotropy: NS.Integer) { +SamplerDescriptor_setMaxAnisotropy :: #force_inline proc(self: ^SamplerDescriptor, maxAnisotropy: NS.Integer) { msgSend(nil, self, "setMaxAnisotropy:", maxAnisotropy) } @(objc_type=SamplerDescriptor, objc_name="setMinFilter") -SamplerDescriptor_setMinFilter :: proc(self: ^SamplerDescriptor, minFilter: SamplerMinMagFilter) { +SamplerDescriptor_setMinFilter :: #force_inline proc(self: ^SamplerDescriptor, minFilter: SamplerMinMagFilter) { msgSend(nil, self, "setMinFilter:", minFilter) } @(objc_type=SamplerDescriptor, objc_name="setMipFilter") -SamplerDescriptor_setMipFilter :: proc(self: ^SamplerDescriptor, mipFilter: SamplerMipFilter) { +SamplerDescriptor_setMipFilter :: #force_inline proc(self: ^SamplerDescriptor, mipFilter: SamplerMipFilter) { msgSend(nil, self, "setMipFilter:", mipFilter) } @(objc_type=SamplerDescriptor, objc_name="setNormalizedCoordinates") -SamplerDescriptor_setNormalizedCoordinates :: proc(self: ^SamplerDescriptor, normalizedCoordinates: BOOL) { +SamplerDescriptor_setNormalizedCoordinates :: #force_inline proc(self: ^SamplerDescriptor, normalizedCoordinates: BOOL) { msgSend(nil, self, "setNormalizedCoordinates:", normalizedCoordinates) } @(objc_type=SamplerDescriptor, objc_name="setRAddressMode") -SamplerDescriptor_setRAddressMode :: proc(self: ^SamplerDescriptor, rAddressMode: SamplerAddressMode) { +SamplerDescriptor_setRAddressMode :: #force_inline proc(self: ^SamplerDescriptor, rAddressMode: SamplerAddressMode) { msgSend(nil, self, "setRAddressMode:", rAddressMode) } @(objc_type=SamplerDescriptor, objc_name="setSAddressMode") -SamplerDescriptor_setSAddressMode :: proc(self: ^SamplerDescriptor, sAddressMode: SamplerAddressMode) { +SamplerDescriptor_setSAddressMode :: #force_inline proc(self: ^SamplerDescriptor, sAddressMode: SamplerAddressMode) { msgSend(nil, self, "setSAddressMode:", sAddressMode) } @(objc_type=SamplerDescriptor, objc_name="setSupportArgumentBuffers") -SamplerDescriptor_setSupportArgumentBuffers :: proc(self: ^SamplerDescriptor, supportArgumentBuffers: BOOL) { +SamplerDescriptor_setSupportArgumentBuffers :: #force_inline proc(self: ^SamplerDescriptor, supportArgumentBuffers: BOOL) { msgSend(nil, self, "setSupportArgumentBuffers:", supportArgumentBuffers) } @(objc_type=SamplerDescriptor, objc_name="setTAddressMode") -SamplerDescriptor_setTAddressMode :: proc(self: ^SamplerDescriptor, tAddressMode: SamplerAddressMode) { +SamplerDescriptor_setTAddressMode :: #force_inline proc(self: ^SamplerDescriptor, tAddressMode: SamplerAddressMode) { msgSend(nil, self, "setTAddressMode:", tAddressMode) } @(objc_type=SamplerDescriptor, objc_name="supportArgumentBuffers") -SamplerDescriptor_supportArgumentBuffers :: proc(self: ^SamplerDescriptor) -> BOOL { +SamplerDescriptor_supportArgumentBuffers :: #force_inline proc(self: ^SamplerDescriptor) -> BOOL { return msgSend(BOOL, self, "supportArgumentBuffers") } @(objc_type=SamplerDescriptor, objc_name="tAddressMode") -SamplerDescriptor_tAddressMode :: proc(self: ^SamplerDescriptor) -> SamplerAddressMode { +SamplerDescriptor_tAddressMode :: #force_inline proc(self: ^SamplerDescriptor) -> SamplerAddressMode { return msgSend(SamplerAddressMode, self, "tAddressMode") } @@ -3741,15 +3727,15 @@ Methods: SharedEventHandle :: struct { using _: NS.Object } @(objc_type=SharedEventHandle, objc_class_name="alloc") -SharedEventHandle_alloc :: proc() -> ^SharedEventHandle { +SharedEventHandle_alloc :: #force_inline proc() -> ^SharedEventHandle { return msgSend(^SharedEventHandle, SharedEventHandle, "alloc") } @(objc_type=SharedEventHandle, objc_name="init") -SharedEventHandle_init :: proc(self: ^SharedEventHandle) -> ^SharedEventHandle { +SharedEventHandle_init :: #force_inline proc(self: ^SharedEventHandle) -> ^SharedEventHandle { return msgSend(^SharedEventHandle, self, "init") } @(objc_type=SharedEventHandle, objc_name="label") -SharedEventHandle_label :: proc(self: ^SharedEventHandle) -> ^NS.String { +SharedEventHandle_label :: #force_inline proc(self: ^SharedEventHandle) -> ^NS.String { return msgSend(^NS.String, self, "label") } @@ -3769,19 +3755,19 @@ Methods: SharedEventListener :: struct { using _: NS.Object } @(objc_type=SharedEventListener, objc_class_name="alloc") -SharedEventListener_alloc :: proc() -> ^SharedEventListener { +SharedEventListener_alloc :: #force_inline proc() -> ^SharedEventListener { return msgSend(^SharedEventListener, SharedEventListener, "alloc") } @(objc_type=SharedEventListener, objc_name="dispatchQueue") -SharedEventListener_dispatchQueue :: proc(self: ^SharedEventListener) -> NS.Integer { +SharedEventListener_dispatchQueue :: #force_inline proc(self: ^SharedEventListener) -> NS.Integer { return msgSend(NS.Integer, self, "dispatchQueue") } @(objc_type=SharedEventListener, objc_name="init") -SharedEventListener_init :: proc(self: ^SharedEventListener) -> ^SharedEventListener { +SharedEventListener_init :: #force_inline proc(self: ^SharedEventListener) -> ^SharedEventListener { return msgSend(^SharedEventListener, self, "init") } @(objc_type=SharedEventListener, objc_name="initWithDispatchQueue") -SharedEventListener_initWithDispatchQueue :: proc(self: ^SharedEventListener, dispatchQueue: ^NS.Object) -> ^SharedEventListener { +SharedEventListener_initWithDispatchQueue :: #force_inline proc(self: ^SharedEventListener, dispatchQueue: ^NS.Object) -> ^SharedEventListener { return msgSend(^SharedEventListener, self, "initWithDispatchQueue:", dispatchQueue) } @@ -3801,19 +3787,19 @@ Methods: SharedTextureHandle :: struct { using _: NS.Object } @(objc_type=SharedTextureHandle, objc_class_name="alloc") -SharedTextureHandle_alloc :: proc() -> ^SharedTextureHandle { +SharedTextureHandle_alloc :: #force_inline proc() -> ^SharedTextureHandle { return msgSend(^SharedTextureHandle, SharedTextureHandle, "alloc") } @(objc_type=SharedTextureHandle, objc_name="init") -SharedTextureHandle_init :: proc(self: ^SharedTextureHandle) -> ^SharedTextureHandle { +SharedTextureHandle_init :: #force_inline proc(self: ^SharedTextureHandle) -> ^SharedTextureHandle { return msgSend(^SharedTextureHandle, self, "init") } @(objc_type=SharedTextureHandle, objc_name="device") -SharedTextureHandle_device :: proc(self: ^SharedTextureHandle) -> ^SharedTextureHandle { +SharedTextureHandle_device :: #force_inline proc(self: ^SharedTextureHandle) -> ^SharedTextureHandle { return msgSend(^SharedTextureHandle, self, "device") } @(objc_type=SharedTextureHandle, objc_name="label") -SharedTextureHandle_label :: proc(self: ^SharedTextureHandle) -> ^NS.String { +SharedTextureHandle_label :: #force_inline proc(self: ^SharedTextureHandle) -> ^NS.String { return msgSend(^NS.String, self, "label") } @@ -3839,43 +3825,43 @@ Methods: StageInputOutputDescriptor :: struct { using _: NS.Copying(StageInputOutputDescriptor) } @(objc_type=StageInputOutputDescriptor, objc_class_name="alloc") -StageInputOutputDescriptor_alloc :: proc() -> ^StageInputOutputDescriptor { +StageInputOutputDescriptor_alloc :: #force_inline proc() -> ^StageInputOutputDescriptor { return msgSend(^StageInputOutputDescriptor, StageInputOutputDescriptor, "alloc") } @(objc_type=StageInputOutputDescriptor, objc_name="init") -StageInputOutputDescriptor_init :: proc(self: ^StageInputOutputDescriptor) -> ^StageInputOutputDescriptor { +StageInputOutputDescriptor_init :: #force_inline proc(self: ^StageInputOutputDescriptor) -> ^StageInputOutputDescriptor { return msgSend(^StageInputOutputDescriptor, self, "init") } @(objc_type=StageInputOutputDescriptor, objc_name="attributes") -StageInputOutputDescriptor_attributes :: proc(self: ^StageInputOutputDescriptor) -> ^AttributeDescriptorArray { +StageInputOutputDescriptor_attributes :: #force_inline proc(self: ^StageInputOutputDescriptor) -> ^AttributeDescriptorArray { return msgSend(^AttributeDescriptorArray, self, "attributes") } @(objc_type=StageInputOutputDescriptor, objc_name="indexBufferIndex") -StageInputOutputDescriptor_indexBufferIndex :: proc(self: ^StageInputOutputDescriptor) -> NS.Integer { +StageInputOutputDescriptor_indexBufferIndex :: #force_inline proc(self: ^StageInputOutputDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "indexBufferIndex") } @(objc_type=StageInputOutputDescriptor, objc_name="indexType") -StageInputOutputDescriptor_indexType :: proc(self: ^StageInputOutputDescriptor) -> IndexType { +StageInputOutputDescriptor_indexType :: #force_inline proc(self: ^StageInputOutputDescriptor) -> IndexType { return msgSend(IndexType, self, "indexType") } @(objc_type=StageInputOutputDescriptor, objc_name="layouts") -StageInputOutputDescriptor_layouts :: proc(self: ^StageInputOutputDescriptor) -> ^BufferLayoutDescriptorArray { +StageInputOutputDescriptor_layouts :: #force_inline proc(self: ^StageInputOutputDescriptor) -> ^BufferLayoutDescriptorArray { return msgSend(^BufferLayoutDescriptorArray, self, "layouts") } @(objc_type=StageInputOutputDescriptor, objc_name="reset") -StageInputOutputDescriptor_reset :: proc(self: ^StageInputOutputDescriptor) { +StageInputOutputDescriptor_reset :: #force_inline proc(self: ^StageInputOutputDescriptor) { msgSend(nil, self, "reset") } @(objc_type=StageInputOutputDescriptor, objc_name="setIndexBufferIndex") -StageInputOutputDescriptor_setIndexBufferIndex :: proc(self: ^StageInputOutputDescriptor, indexBufferIndex: NS.Integer) { +StageInputOutputDescriptor_setIndexBufferIndex :: #force_inline proc(self: ^StageInputOutputDescriptor, indexBufferIndex: NS.Integer) { msgSend(nil, self, "setIndexBufferIndex:", indexBufferIndex) } @(objc_type=StageInputOutputDescriptor, objc_name="setIndexType") -StageInputOutputDescriptor_setIndexType :: proc(self: ^StageInputOutputDescriptor, indexType: IndexType) { +StageInputOutputDescriptor_setIndexType :: #force_inline proc(self: ^StageInputOutputDescriptor, indexType: IndexType) { msgSend(nil, self, "setIndexType:", indexType) } @(objc_type=StageInputOutputDescriptor, objc_class_name="stageInputOutputDescriptor") -StageInputOutputDescriptor_stageInputOutputDescriptor :: proc() -> ^StageInputOutputDescriptor { +StageInputOutputDescriptor_stageInputOutputDescriptor :: #force_inline proc() -> ^StageInputOutputDescriptor { return msgSend(^StageInputOutputDescriptor, StageInputOutputDescriptor, "stageInputOutputDescriptor") } @@ -3905,59 +3891,59 @@ Methods: StencilDescriptor :: struct { using _: NS.Copying(StencilDescriptor) } @(objc_type=StencilDescriptor, objc_class_name="alloc") -StencilDescriptor_alloc :: proc() -> ^StencilDescriptor { +StencilDescriptor_alloc :: #force_inline proc() -> ^StencilDescriptor { return msgSend(^StencilDescriptor, StencilDescriptor, "alloc") } @(objc_type=StencilDescriptor, objc_name="init") -StencilDescriptor_init :: proc(self: ^StencilDescriptor) -> ^StencilDescriptor { +StencilDescriptor_init :: #force_inline proc(self: ^StencilDescriptor) -> ^StencilDescriptor { return msgSend(^StencilDescriptor, self, "init") } @(objc_type=StencilDescriptor, objc_name="depthFailureOperation") -StencilDescriptor_depthFailureOperation :: proc(self: ^StencilDescriptor) -> StencilOperation { +StencilDescriptor_depthFailureOperation :: #force_inline proc(self: ^StencilDescriptor) -> StencilOperation { return msgSend(StencilOperation, self, "depthFailureOperation") } @(objc_type=StencilDescriptor, objc_name="depthStencilPassOperation") -StencilDescriptor_depthStencilPassOperation :: proc(self: ^StencilDescriptor) -> StencilOperation { +StencilDescriptor_depthStencilPassOperation :: #force_inline proc(self: ^StencilDescriptor) -> StencilOperation { return msgSend(StencilOperation, self, "depthStencilPassOperation") } @(objc_type=StencilDescriptor, objc_name="readMask") -StencilDescriptor_readMask :: proc(self: ^StencilDescriptor) -> u32 { +StencilDescriptor_readMask :: #force_inline proc(self: ^StencilDescriptor) -> u32 { return msgSend(u32, self, "readMask") } @(objc_type=StencilDescriptor, objc_name="setDepthFailureOperation") -StencilDescriptor_setDepthFailureOperation :: proc(self: ^StencilDescriptor, depthFailureOperation: StencilOperation) { +StencilDescriptor_setDepthFailureOperation :: #force_inline proc(self: ^StencilDescriptor, depthFailureOperation: StencilOperation) { msgSend(nil, self, "setDepthFailureOperation:", depthFailureOperation) } @(objc_type=StencilDescriptor, objc_name="setDepthStencilPassOperation") -StencilDescriptor_setDepthStencilPassOperation :: proc(self: ^StencilDescriptor, depthStencilPassOperation: StencilOperation) { +StencilDescriptor_setDepthStencilPassOperation :: #force_inline proc(self: ^StencilDescriptor, depthStencilPassOperation: StencilOperation) { msgSend(nil, self, "setDepthStencilPassOperation:", depthStencilPassOperation) } @(objc_type=StencilDescriptor, objc_name="setReadMask") -StencilDescriptor_setReadMask :: proc(self: ^StencilDescriptor, readMask: u32) { +StencilDescriptor_setReadMask :: #force_inline proc(self: ^StencilDescriptor, readMask: u32) { msgSend(nil, self, "setReadMask:", readMask) } @(objc_type=StencilDescriptor, objc_name="setStencilCompareFunction") -StencilDescriptor_setStencilCompareFunction :: proc(self: ^StencilDescriptor, stencilCompareFunction: CompareFunction) { +StencilDescriptor_setStencilCompareFunction :: #force_inline proc(self: ^StencilDescriptor, stencilCompareFunction: CompareFunction) { msgSend(nil, self, "setStencilCompareFunction:", stencilCompareFunction) } @(objc_type=StencilDescriptor, objc_name="setStencilFailureOperation") -StencilDescriptor_setStencilFailureOperation :: proc(self: ^StencilDescriptor, stencilFailureOperation: StencilOperation) { +StencilDescriptor_setStencilFailureOperation :: #force_inline proc(self: ^StencilDescriptor, stencilFailureOperation: StencilOperation) { msgSend(nil, self, "setStencilFailureOperation:", stencilFailureOperation) } @(objc_type=StencilDescriptor, objc_name="setWriteMask") -StencilDescriptor_setWriteMask :: proc(self: ^StencilDescriptor, writeMask: u32) { +StencilDescriptor_setWriteMask :: #force_inline proc(self: ^StencilDescriptor, writeMask: u32) { msgSend(nil, self, "setWriteMask:", writeMask) } @(objc_type=StencilDescriptor, objc_name="stencilCompareFunction") -StencilDescriptor_stencilCompareFunction :: proc(self: ^StencilDescriptor) -> CompareFunction { +StencilDescriptor_stencilCompareFunction :: #force_inline proc(self: ^StencilDescriptor) -> CompareFunction { return msgSend(CompareFunction, self, "stencilCompareFunction") } @(objc_type=StencilDescriptor, objc_name="stencilFailureOperation") -StencilDescriptor_stencilFailureOperation :: proc(self: ^StencilDescriptor) -> StencilOperation { +StencilDescriptor_stencilFailureOperation :: #force_inline proc(self: ^StencilDescriptor) -> StencilOperation { return msgSend(StencilOperation, self, "stencilFailureOperation") } @(objc_type=StencilDescriptor, objc_name="writeMask") -StencilDescriptor_writeMask :: proc(self: ^StencilDescriptor) -> u32 { +StencilDescriptor_writeMask :: #force_inline proc(self: ^StencilDescriptor) -> u32 { return msgSend(u32, self, "writeMask") } @@ -3983,43 +3969,43 @@ Methods: StructMember :: struct { using _: NS.Object } @(objc_type=StructMember, objc_class_name="alloc") -StructMember_alloc :: proc() -> ^StructMember { +StructMember_alloc :: #force_inline proc() -> ^StructMember { return msgSend(^StructMember, StructMember, "alloc") } @(objc_type=StructMember, objc_name="init") -StructMember_init :: proc(self: ^StructMember) -> ^StructMember { +StructMember_init :: #force_inline proc(self: ^StructMember) -> ^StructMember { return msgSend(^StructMember, self, "init") } @(objc_type=StructMember, objc_name="argumentIndex") -StructMember_argumentIndex :: proc(self: ^StructMember) -> NS.Integer { +StructMember_argumentIndex :: #force_inline proc(self: ^StructMember) -> NS.Integer { return msgSend(NS.Integer, self, "argumentIndex") } @(objc_type=StructMember, objc_name="arrayType") -StructMember_arrayType :: proc(self: ^StructMember) -> ^ArrayType { +StructMember_arrayType :: #force_inline proc(self: ^StructMember) -> ^ArrayType { return msgSend(^ArrayType, self, "arrayType") } @(objc_type=StructMember, objc_name="dataType") -StructMember_dataType :: proc(self: ^StructMember) -> DataType { +StructMember_dataType :: #force_inline proc(self: ^StructMember) -> DataType { return msgSend(DataType, self, "dataType") } @(objc_type=StructMember, objc_name="name") -StructMember_name :: proc(self: ^StructMember) -> ^NS.String { +StructMember_name :: #force_inline proc(self: ^StructMember) -> ^NS.String { return msgSend(^NS.String, self, "name") } @(objc_type=StructMember, objc_name="offset") -StructMember_offset :: proc(self: ^StructMember) -> NS.Integer { +StructMember_offset :: #force_inline proc(self: ^StructMember) -> NS.Integer { return msgSend(NS.Integer, self, "offset") } @(objc_type=StructMember, objc_name="pointerType") -StructMember_pointerType :: proc(self: ^StructMember) -> ^PointerType { +StructMember_pointerType :: #force_inline proc(self: ^StructMember) -> ^PointerType { return msgSend(^PointerType, self, "pointerType") } @(objc_type=StructMember, objc_name="structType") -StructMember_structType :: proc(self: ^StructMember) -> ^StructType { +StructMember_structType :: #force_inline proc(self: ^StructMember) -> ^StructType { return msgSend(^StructType, self, "structType") } @(objc_type=StructMember, objc_name="textureReferenceType") -StructMember_textureReferenceType :: proc(self: ^StructMember) -> ^TextureReferenceType { +StructMember_textureReferenceType :: #force_inline proc(self: ^StructMember) -> ^TextureReferenceType { return msgSend(^TextureReferenceType, self, "textureReferenceType") } @@ -4039,19 +4025,19 @@ Methods: StructType :: struct { using _: NS.Object } @(objc_type=StructType, objc_class_name="alloc") -StructType_alloc :: proc() -> ^StructType { +StructType_alloc :: #force_inline proc() -> ^StructType { return msgSend(^StructType, StructType, "alloc") } @(objc_type=StructType, objc_name="init") -StructType_init :: proc(self: ^StructType) -> ^StructType { +StructType_init :: #force_inline proc(self: ^StructType) -> ^StructType { return msgSend(^StructType, self, "init") } @(objc_type=StructType, objc_name="memberByName") -StructType_memberByName :: proc(self: ^StructType, name: ^NS.String) -> ^StructMember { +StructType_memberByName :: #force_inline proc(self: ^StructType, name: ^NS.String) -> ^StructMember { return msgSend(^StructMember, self, "memberByName:", name) } @(objc_type=StructType, objc_name="members") -StructType_members :: proc(self: ^StructType) -> ^NS.Array { +StructType_members :: #force_inline proc(self: ^StructType) -> ^NS.Array { return msgSend(^NS.Array, self, "members") } @@ -4102,143 +4088,143 @@ Methods: TextureDescriptor :: struct { using _: NS.Copying(TextureDescriptor) } @(objc_type=TextureDescriptor, objc_class_name="alloc") -TextureDescriptor_alloc :: proc() -> ^TextureDescriptor { +TextureDescriptor_alloc :: #force_inline proc() -> ^TextureDescriptor { return msgSend(^TextureDescriptor, TextureDescriptor, "alloc") } @(objc_type=TextureDescriptor, objc_name="init") -TextureDescriptor_init :: proc(self: ^TextureDescriptor) -> ^TextureDescriptor { +TextureDescriptor_init :: #force_inline proc(self: ^TextureDescriptor) -> ^TextureDescriptor { return msgSend(^TextureDescriptor, self, "init") } @(objc_type=TextureDescriptor, objc_name="allowGPUOptimizedContents") -TextureDescriptor_allowGPUOptimizedContents :: proc(self: ^TextureDescriptor) -> BOOL { +TextureDescriptor_allowGPUOptimizedContents :: #force_inline proc(self: ^TextureDescriptor) -> BOOL { return msgSend(BOOL, self, "allowGPUOptimizedContents") } @(objc_type=TextureDescriptor, objc_name="arrayLength") -TextureDescriptor_arrayLength :: proc(self: ^TextureDescriptor) -> NS.Integer { +TextureDescriptor_arrayLength :: #force_inline proc(self: ^TextureDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "arrayLength") } @(objc_type=TextureDescriptor, objc_name="cpuCacheMode") -TextureDescriptor_cpuCacheMode :: proc(self: ^TextureDescriptor) -> CPUCacheMode { +TextureDescriptor_cpuCacheMode :: #force_inline proc(self: ^TextureDescriptor) -> CPUCacheMode { return msgSend(CPUCacheMode, self, "cpuCacheMode") } @(objc_type=TextureDescriptor, objc_name="depth") -TextureDescriptor_depth :: proc(self: ^TextureDescriptor) -> NS.Integer { +TextureDescriptor_depth :: #force_inline proc(self: ^TextureDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "depth") } @(objc_type=TextureDescriptor, objc_name="hazardTrackingMode") -TextureDescriptor_hazardTrackingMode :: proc(self: ^TextureDescriptor) -> HazardTrackingMode { +TextureDescriptor_hazardTrackingMode :: #force_inline proc(self: ^TextureDescriptor) -> HazardTrackingMode { return msgSend(HazardTrackingMode, self, "hazardTrackingMode") } @(objc_type=TextureDescriptor, objc_name="height") -TextureDescriptor_height :: proc(self: ^TextureDescriptor) -> NS.Integer { +TextureDescriptor_height :: #force_inline proc(self: ^TextureDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "height") } @(objc_type=TextureDescriptor, objc_name="mipmapLevelCount") -TextureDescriptor_mipmapLevelCount :: proc(self: ^TextureDescriptor) -> NS.Integer { +TextureDescriptor_mipmapLevelCount :: #force_inline proc(self: ^TextureDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "mipmapLevelCount") } @(objc_type=TextureDescriptor, objc_name="pixelFormat") -TextureDescriptor_pixelFormat :: proc(self: ^TextureDescriptor) -> PixelFormat { +TextureDescriptor_pixelFormat :: #force_inline proc(self: ^TextureDescriptor) -> PixelFormat { return msgSend(PixelFormat, self, "pixelFormat") } @(objc_type=TextureDescriptor, objc_name="resourceOptions") -TextureDescriptor_resourceOptions :: proc(self: ^TextureDescriptor) -> ResourceOptions { +TextureDescriptor_resourceOptions :: #force_inline proc(self: ^TextureDescriptor) -> ResourceOptions { return msgSend(ResourceOptions, self, "resourceOptions") } @(objc_type=TextureDescriptor, objc_name="sampleCount") -TextureDescriptor_sampleCount :: proc(self: ^TextureDescriptor) -> NS.Integer { +TextureDescriptor_sampleCount :: #force_inline proc(self: ^TextureDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "sampleCount") } @(objc_type=TextureDescriptor, objc_name="setAllowGPUOptimizedContents") -TextureDescriptor_setAllowGPUOptimizedContents :: proc(self: ^TextureDescriptor, allowGPUOptimizedContents: BOOL) { +TextureDescriptor_setAllowGPUOptimizedContents :: #force_inline proc(self: ^TextureDescriptor, allowGPUOptimizedContents: BOOL) { msgSend(nil, self, "setAllowGPUOptimizedContents:", allowGPUOptimizedContents) } @(objc_type=TextureDescriptor, objc_name="setArrayLength") -TextureDescriptor_setArrayLength :: proc(self: ^TextureDescriptor, arrayLength: NS.Integer) { +TextureDescriptor_setArrayLength :: #force_inline proc(self: ^TextureDescriptor, arrayLength: NS.Integer) { msgSend(nil, self, "setArrayLength:", arrayLength) } @(objc_type=TextureDescriptor, objc_name="setCpuCacheMode") -TextureDescriptor_setCpuCacheMode :: proc(self: ^TextureDescriptor, cpuCacheMode: CPUCacheMode) { +TextureDescriptor_setCpuCacheMode :: #force_inline proc(self: ^TextureDescriptor, cpuCacheMode: CPUCacheMode) { msgSend(nil, self, "setCpuCacheMode:", cpuCacheMode) } @(objc_type=TextureDescriptor, objc_name="setDepth") -TextureDescriptor_setDepth :: proc(self: ^TextureDescriptor, depth: NS.Integer) { +TextureDescriptor_setDepth :: #force_inline proc(self: ^TextureDescriptor, depth: NS.Integer) { msgSend(nil, self, "setDepth:", depth) } @(objc_type=TextureDescriptor, objc_name="setHazardTrackingMode") -TextureDescriptor_setHazardTrackingMode :: proc(self: ^TextureDescriptor, hazardTrackingMode: HazardTrackingMode) { +TextureDescriptor_setHazardTrackingMode :: #force_inline proc(self: ^TextureDescriptor, hazardTrackingMode: HazardTrackingMode) { msgSend(nil, self, "setHazardTrackingMode:", hazardTrackingMode) } @(objc_type=TextureDescriptor, objc_name="setHeight") -TextureDescriptor_setHeight :: proc(self: ^TextureDescriptor, height: NS.Integer) { +TextureDescriptor_setHeight :: #force_inline proc(self: ^TextureDescriptor, height: NS.Integer) { msgSend(nil, self, "setHeight:", height) } @(objc_type=TextureDescriptor, objc_name="setMipmapLevelCount") -TextureDescriptor_setMipmapLevelCount :: proc(self: ^TextureDescriptor, mipmapLevelCount: NS.Integer) { +TextureDescriptor_setMipmapLevelCount :: #force_inline proc(self: ^TextureDescriptor, mipmapLevelCount: NS.Integer) { msgSend(nil, self, "setMipmapLevelCount:", mipmapLevelCount) } @(objc_type=TextureDescriptor, objc_name="setPixelFormat") -TextureDescriptor_setPixelFormat :: proc(self: ^TextureDescriptor, pixelFormat: PixelFormat) { +TextureDescriptor_setPixelFormat :: #force_inline proc(self: ^TextureDescriptor, pixelFormat: PixelFormat) { msgSend(nil, self, "setPixelFormat:", pixelFormat) } @(objc_type=TextureDescriptor, objc_name="setResourceOptions") -TextureDescriptor_setResourceOptions :: proc(self: ^TextureDescriptor, resourceOptions: ResourceOptions) { +TextureDescriptor_setResourceOptions :: #force_inline proc(self: ^TextureDescriptor, resourceOptions: ResourceOptions) { msgSend(nil, self, "setResourceOptions:", resourceOptions) } @(objc_type=TextureDescriptor, objc_name="setSampleCount") -TextureDescriptor_setSampleCount :: proc(self: ^TextureDescriptor, sampleCount: NS.Integer) { +TextureDescriptor_setSampleCount :: #force_inline proc(self: ^TextureDescriptor, sampleCount: NS.Integer) { msgSend(nil, self, "setSampleCount:", sampleCount) } @(objc_type=TextureDescriptor, objc_name="setStorageMode") -TextureDescriptor_setStorageMode :: proc(self: ^TextureDescriptor, storageMode: StorageMode) { +TextureDescriptor_setStorageMode :: #force_inline proc(self: ^TextureDescriptor, storageMode: StorageMode) { msgSend(nil, self, "setStorageMode:", storageMode) } @(objc_type=TextureDescriptor, objc_name="setSwizzle") -TextureDescriptor_setSwizzle :: proc(self: ^TextureDescriptor, swizzle: TextureSwizzleChannels) { +TextureDescriptor_setSwizzle :: #force_inline proc(self: ^TextureDescriptor, swizzle: TextureSwizzleChannels) { msgSend(nil, self, "setSwizzle:", swizzle) } @(objc_type=TextureDescriptor, objc_name="setTextureType") -TextureDescriptor_setTextureType :: proc(self: ^TextureDescriptor, textureType: TextureType) { +TextureDescriptor_setTextureType :: #force_inline proc(self: ^TextureDescriptor, textureType: TextureType) { msgSend(nil, self, "setTextureType:", textureType) } @(objc_type=TextureDescriptor, objc_name="setUsage") -TextureDescriptor_setUsage :: proc(self: ^TextureDescriptor, usage: TextureUsage) { +TextureDescriptor_setUsage :: #force_inline proc(self: ^TextureDescriptor, usage: TextureUsage) { msgSend(nil, self, "setUsage:", usage) } @(objc_type=TextureDescriptor, objc_name="setWidth") -TextureDescriptor_setWidth :: proc(self: ^TextureDescriptor, width: NS.Integer) { +TextureDescriptor_setWidth :: #force_inline proc(self: ^TextureDescriptor, width: NS.Integer) { msgSend(nil, self, "setWidth:", width) } @(objc_type=TextureDescriptor, objc_name="storageMode") -TextureDescriptor_storageMode :: proc(self: ^TextureDescriptor) -> StorageMode { +TextureDescriptor_storageMode :: #force_inline proc(self: ^TextureDescriptor) -> StorageMode { return msgSend(StorageMode, self, "storageMode") } @(objc_type=TextureDescriptor, objc_name="swizzle") -TextureDescriptor_swizzle :: proc(self: ^TextureDescriptor) -> TextureSwizzleChannels { +TextureDescriptor_swizzle :: #force_inline proc(self: ^TextureDescriptor) -> TextureSwizzleChannels { return msgSend(TextureSwizzleChannels, self, "swizzle") } @(objc_type=TextureDescriptor, objc_class_name="texture2DDescriptorWithPixelFormat") -TextureDescriptor_texture2DDescriptorWithPixelFormat :: proc(pixelFormat: PixelFormat, width: ^NS.Object, height: ^NS.Object, mipmapped: BOOL) -> ^TextureDescriptor { +TextureDescriptor_texture2DDescriptorWithPixelFormat :: #force_inline proc(pixelFormat: PixelFormat, width: ^NS.Object, height: ^NS.Object, mipmapped: BOOL) -> ^TextureDescriptor { return msgSend(^TextureDescriptor, TextureDescriptor, "texture2DDescriptorWithPixelFormat:width:height:mipmapped:", pixelFormat, width, height, mipmapped) } @(objc_type=TextureDescriptor, objc_class_name="textureBufferDescriptorWithPixelFormat") -TextureDescriptor_textureBufferDescriptorWithPixelFormat :: proc(pixelFormat: PixelFormat, width: ^NS.Object, resourceOptions: ResourceOptions, usage: TextureUsage) -> ^TextureDescriptor { +TextureDescriptor_textureBufferDescriptorWithPixelFormat :: #force_inline proc(pixelFormat: PixelFormat, width: ^NS.Object, resourceOptions: ResourceOptions, usage: TextureUsage) -> ^TextureDescriptor { return msgSend(^TextureDescriptor, TextureDescriptor, "textureBufferDescriptorWithPixelFormat:width:resourceOptions:usage:", pixelFormat, width, resourceOptions, usage) } @(objc_type=TextureDescriptor, objc_class_name="textureCubeDescriptorWithPixelFormat") -TextureDescriptor_textureCubeDescriptorWithPixelFormat :: proc(pixelFormat: PixelFormat, size: ^NS.Object, mipmapped: BOOL) -> ^TextureDescriptor { +TextureDescriptor_textureCubeDescriptorWithPixelFormat :: #force_inline proc(pixelFormat: PixelFormat, size: ^NS.Object, mipmapped: BOOL) -> ^TextureDescriptor { return msgSend(^TextureDescriptor, TextureDescriptor, "textureCubeDescriptorWithPixelFormat:size:mipmapped:", pixelFormat, size, mipmapped) } @(objc_type=TextureDescriptor, objc_name="textureType") -TextureDescriptor_textureType :: proc(self: ^TextureDescriptor) -> TextureType { +TextureDescriptor_textureType :: #force_inline proc(self: ^TextureDescriptor) -> TextureType { return msgSend(TextureType, self, "textureType") } @(objc_type=TextureDescriptor, objc_name="usage") -TextureDescriptor_usage :: proc(self: ^TextureDescriptor) -> TextureUsage { +TextureDescriptor_usage :: #force_inline proc(self: ^TextureDescriptor) -> TextureUsage { return msgSend(TextureUsage, self, "usage") } @(objc_type=TextureDescriptor, objc_name="width") -TextureDescriptor_width :: proc(self: ^TextureDescriptor) -> NS.Integer { +TextureDescriptor_width :: #force_inline proc(self: ^TextureDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "width") } @@ -4260,27 +4246,27 @@ Methods: TextureReferenceType :: struct { using _: NS.Object } @(objc_type=TextureReferenceType, objc_class_name="alloc") -TextureReferenceType_alloc :: proc() -> ^TextureReferenceType { +TextureReferenceType_alloc :: #force_inline proc() -> ^TextureReferenceType { return msgSend(^TextureReferenceType, TextureReferenceType, "alloc") } @(objc_type=TextureReferenceType, objc_name="init") -TextureReferenceType_init :: proc(self: ^TextureReferenceType) -> ^TextureReferenceType { +TextureReferenceType_init :: #force_inline proc(self: ^TextureReferenceType) -> ^TextureReferenceType { return msgSend(^TextureReferenceType, self, "init") } @(objc_type=TextureReferenceType, objc_name="access") -TextureReferenceType_access :: proc(self: ^TextureReferenceType) -> ArgumentAccess { +TextureReferenceType_access :: #force_inline proc(self: ^TextureReferenceType) -> ArgumentAccess { return msgSend(ArgumentAccess, self, "access") } @(objc_type=TextureReferenceType, objc_name="isDepthTexture") -TextureReferenceType_isDepthTexture :: proc(self: ^TextureReferenceType) -> BOOL { +TextureReferenceType_isDepthTexture :: #force_inline proc(self: ^TextureReferenceType) -> BOOL { return msgSend(BOOL, self, "isDepthTexture") } @(objc_type=TextureReferenceType, objc_name="textureDataType") -TextureReferenceType_textureDataType :: proc(self: ^TextureReferenceType) -> DataType { +TextureReferenceType_textureDataType :: #force_inline proc(self: ^TextureReferenceType) -> DataType { return msgSend(DataType, self, "textureDataType") } @(objc_type=TextureReferenceType, objc_name="textureType") -TextureReferenceType_textureType :: proc(self: ^TextureReferenceType) -> TextureType { +TextureReferenceType_textureType :: #force_inline proc(self: ^TextureReferenceType) -> TextureType { return msgSend(TextureType, self, "textureType") } @@ -4300,19 +4286,19 @@ Methods: TileRenderPipelineColorAttachmentDescriptor :: struct { using _: NS.Copying(TileRenderPipelineColorAttachmentDescriptor) } @(objc_type=TileRenderPipelineColorAttachmentDescriptor, objc_class_name="alloc") -TileRenderPipelineColorAttachmentDescriptor_alloc :: proc() -> ^TileRenderPipelineColorAttachmentDescriptor { +TileRenderPipelineColorAttachmentDescriptor_alloc :: #force_inline proc() -> ^TileRenderPipelineColorAttachmentDescriptor { return msgSend(^TileRenderPipelineColorAttachmentDescriptor, TileRenderPipelineColorAttachmentDescriptor, "alloc") } @(objc_type=TileRenderPipelineColorAttachmentDescriptor, objc_name="init") -TileRenderPipelineColorAttachmentDescriptor_init :: proc(self: ^TileRenderPipelineColorAttachmentDescriptor) -> ^TileRenderPipelineColorAttachmentDescriptor { +TileRenderPipelineColorAttachmentDescriptor_init :: #force_inline proc(self: ^TileRenderPipelineColorAttachmentDescriptor) -> ^TileRenderPipelineColorAttachmentDescriptor { return msgSend(^TileRenderPipelineColorAttachmentDescriptor, self, "init") } @(objc_type=TileRenderPipelineColorAttachmentDescriptor, objc_name="pixelFormat") -TileRenderPipelineColorAttachmentDescriptor_pixelFormat :: proc(self: ^TileRenderPipelineColorAttachmentDescriptor) -> PixelFormat { +TileRenderPipelineColorAttachmentDescriptor_pixelFormat :: #force_inline proc(self: ^TileRenderPipelineColorAttachmentDescriptor) -> PixelFormat { return msgSend(PixelFormat, self, "pixelFormat") } @(objc_type=TileRenderPipelineColorAttachmentDescriptor, objc_name="setPixelFormat") -TileRenderPipelineColorAttachmentDescriptor_setPixelFormat :: proc(self: ^TileRenderPipelineColorAttachmentDescriptor, pixelFormat: PixelFormat) { +TileRenderPipelineColorAttachmentDescriptor_setPixelFormat :: #force_inline proc(self: ^TileRenderPipelineColorAttachmentDescriptor, pixelFormat: PixelFormat) { msgSend(nil, self, "setPixelFormat:", pixelFormat) } @@ -4332,19 +4318,19 @@ Methods: TileRenderPipelineColorAttachmentDescriptorArray :: struct { using _: NS.Object } @(objc_type=TileRenderPipelineColorAttachmentDescriptorArray, objc_class_name="alloc") -TileRenderPipelineColorAttachmentDescriptorArray_alloc :: proc() -> ^TileRenderPipelineColorAttachmentDescriptorArray { +TileRenderPipelineColorAttachmentDescriptorArray_alloc :: #force_inline proc() -> ^TileRenderPipelineColorAttachmentDescriptorArray { return msgSend(^TileRenderPipelineColorAttachmentDescriptorArray, TileRenderPipelineColorAttachmentDescriptorArray, "alloc") } @(objc_type=TileRenderPipelineColorAttachmentDescriptorArray, objc_name="init") -TileRenderPipelineColorAttachmentDescriptorArray_init :: proc(self: ^TileRenderPipelineColorAttachmentDescriptorArray) -> ^TileRenderPipelineColorAttachmentDescriptorArray { +TileRenderPipelineColorAttachmentDescriptorArray_init :: #force_inline proc(self: ^TileRenderPipelineColorAttachmentDescriptorArray) -> ^TileRenderPipelineColorAttachmentDescriptorArray { return msgSend(^TileRenderPipelineColorAttachmentDescriptorArray, self, "init") } @(objc_type=TileRenderPipelineColorAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") -TileRenderPipelineColorAttachmentDescriptorArray_objectAtIndexedSubscript :: proc(self: ^TileRenderPipelineColorAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^TileRenderPipelineColorAttachmentDescriptor { +TileRenderPipelineColorAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^TileRenderPipelineColorAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^TileRenderPipelineColorAttachmentDescriptor { return msgSend(^TileRenderPipelineColorAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) } @(objc_type=TileRenderPipelineColorAttachmentDescriptorArray, objc_name="setObject") -TileRenderPipelineColorAttachmentDescriptorArray_setObject :: proc(self: ^TileRenderPipelineColorAttachmentDescriptorArray, attachment: ^TileRenderPipelineColorAttachmentDescriptor, attachmentIndex: ^NS.Object) { +TileRenderPipelineColorAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^TileRenderPipelineColorAttachmentDescriptorArray, attachment: ^TileRenderPipelineColorAttachmentDescriptor, attachmentIndex: ^NS.Object) { msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) } @@ -4377,71 +4363,71 @@ Methods: TileRenderPipelineDescriptor :: struct { using _: NS.Copying(TileRenderPipelineDescriptor) } @(objc_type=TileRenderPipelineDescriptor, objc_class_name="alloc") -TileRenderPipelineDescriptor_alloc :: proc() -> ^TileRenderPipelineDescriptor { +TileRenderPipelineDescriptor_alloc :: #force_inline proc() -> ^TileRenderPipelineDescriptor { return msgSend(^TileRenderPipelineDescriptor, TileRenderPipelineDescriptor, "alloc") } @(objc_type=TileRenderPipelineDescriptor, objc_name="init") -TileRenderPipelineDescriptor_init :: proc(self: ^TileRenderPipelineDescriptor) -> ^TileRenderPipelineDescriptor { +TileRenderPipelineDescriptor_init :: #force_inline proc(self: ^TileRenderPipelineDescriptor) -> ^TileRenderPipelineDescriptor { return msgSend(^TileRenderPipelineDescriptor, self, "init") } @(objc_type=TileRenderPipelineDescriptor, objc_name="binaryArchives") -TileRenderPipelineDescriptor_binaryArchives :: proc(self: ^TileRenderPipelineDescriptor) -> ^NS.Array { +TileRenderPipelineDescriptor_binaryArchives :: #force_inline proc(self: ^TileRenderPipelineDescriptor) -> ^NS.Array { return msgSend(^NS.Array, self, "binaryArchives") } @(objc_type=TileRenderPipelineDescriptor, objc_name="colorAttachments") -TileRenderPipelineDescriptor_colorAttachments :: proc(self: ^TileRenderPipelineDescriptor) -> ^TileRenderPipelineColorAttachmentDescriptorArray { +TileRenderPipelineDescriptor_colorAttachments :: #force_inline proc(self: ^TileRenderPipelineDescriptor) -> ^TileRenderPipelineColorAttachmentDescriptorArray { return msgSend(^TileRenderPipelineColorAttachmentDescriptorArray, self, "colorAttachments") } @(objc_type=TileRenderPipelineDescriptor, objc_name="label") -TileRenderPipelineDescriptor_label :: proc(self: ^TileRenderPipelineDescriptor) -> ^NS.String { +TileRenderPipelineDescriptor_label :: #force_inline proc(self: ^TileRenderPipelineDescriptor) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=TileRenderPipelineDescriptor, objc_name="maxTotalThreadsPerThreadgroup") -TileRenderPipelineDescriptor_maxTotalThreadsPerThreadgroup :: proc(self: ^TileRenderPipelineDescriptor) -> NS.Integer { +TileRenderPipelineDescriptor_maxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^TileRenderPipelineDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "maxTotalThreadsPerThreadgroup") } @(objc_type=TileRenderPipelineDescriptor, objc_name="rasterSampleCount") -TileRenderPipelineDescriptor_rasterSampleCount :: proc(self: ^TileRenderPipelineDescriptor) -> NS.Integer { +TileRenderPipelineDescriptor_rasterSampleCount :: #force_inline proc(self: ^TileRenderPipelineDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "rasterSampleCount") } @(objc_type=TileRenderPipelineDescriptor, objc_name="reset") -TileRenderPipelineDescriptor_reset :: proc(self: ^TileRenderPipelineDescriptor) { +TileRenderPipelineDescriptor_reset :: #force_inline proc(self: ^TileRenderPipelineDescriptor) { msgSend(nil, self, "reset") } @(objc_type=TileRenderPipelineDescriptor, objc_name="setBinaryArchives") -TileRenderPipelineDescriptor_setBinaryArchives :: proc(self: ^TileRenderPipelineDescriptor, binaryArchives: ^NS.Array) { +TileRenderPipelineDescriptor_setBinaryArchives :: #force_inline proc(self: ^TileRenderPipelineDescriptor, binaryArchives: ^NS.Array) { msgSend(nil, self, "setBinaryArchives:", binaryArchives) } @(objc_type=TileRenderPipelineDescriptor, objc_name="setLabel") -TileRenderPipelineDescriptor_setLabel :: proc(self: ^TileRenderPipelineDescriptor, label: ^NS.String) { +TileRenderPipelineDescriptor_setLabel :: #force_inline proc(self: ^TileRenderPipelineDescriptor, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @(objc_type=TileRenderPipelineDescriptor, objc_name="setMaxTotalThreadsPerThreadgroup") -TileRenderPipelineDescriptor_setMaxTotalThreadsPerThreadgroup :: proc(self: ^TileRenderPipelineDescriptor, maxTotalThreadsPerThreadgroup: NS.Integer) { +TileRenderPipelineDescriptor_setMaxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^TileRenderPipelineDescriptor, maxTotalThreadsPerThreadgroup: NS.Integer) { msgSend(nil, self, "setMaxTotalThreadsPerThreadgroup:", maxTotalThreadsPerThreadgroup) } @(objc_type=TileRenderPipelineDescriptor, objc_name="setRasterSampleCount") -TileRenderPipelineDescriptor_setRasterSampleCount :: proc(self: ^TileRenderPipelineDescriptor, rasterSampleCount: NS.Integer) { +TileRenderPipelineDescriptor_setRasterSampleCount :: #force_inline proc(self: ^TileRenderPipelineDescriptor, rasterSampleCount: NS.Integer) { msgSend(nil, self, "setRasterSampleCount:", rasterSampleCount) } @(objc_type=TileRenderPipelineDescriptor, objc_name="setThreadgroupSizeMatchesTileSize") -TileRenderPipelineDescriptor_setThreadgroupSizeMatchesTileSize :: proc(self: ^TileRenderPipelineDescriptor, threadgroupSizeMatchesTileSize: BOOL) { +TileRenderPipelineDescriptor_setThreadgroupSizeMatchesTileSize :: #force_inline proc(self: ^TileRenderPipelineDescriptor, threadgroupSizeMatchesTileSize: BOOL) { msgSend(nil, self, "setThreadgroupSizeMatchesTileSize:", threadgroupSizeMatchesTileSize) } @(objc_type=TileRenderPipelineDescriptor, objc_name="setTileFunction") -TileRenderPipelineDescriptor_setTileFunction :: proc(self: ^TileRenderPipelineDescriptor, tileFunction: ^NS.Object) { +TileRenderPipelineDescriptor_setTileFunction :: #force_inline proc(self: ^TileRenderPipelineDescriptor, tileFunction: ^NS.Object) { msgSend(nil, self, "setTileFunction:", tileFunction) } @(objc_type=TileRenderPipelineDescriptor, objc_name="threadgroupSizeMatchesTileSize") -TileRenderPipelineDescriptor_threadgroupSizeMatchesTileSize :: proc(self: ^TileRenderPipelineDescriptor) -> BOOL { +TileRenderPipelineDescriptor_threadgroupSizeMatchesTileSize :: #force_inline proc(self: ^TileRenderPipelineDescriptor) -> BOOL { return msgSend(BOOL, self, "threadgroupSizeMatchesTileSize") } @(objc_type=TileRenderPipelineDescriptor, objc_name="tileBuffers") -TileRenderPipelineDescriptor_tileBuffers :: proc(self: ^TileRenderPipelineDescriptor) -> ^PipelineBufferDescriptorArray { +TileRenderPipelineDescriptor_tileBuffers :: #force_inline proc(self: ^TileRenderPipelineDescriptor) -> ^PipelineBufferDescriptorArray { return msgSend(^PipelineBufferDescriptorArray, self, "tileBuffers") } @(objc_type=TileRenderPipelineDescriptor, objc_name="tileFunction") -TileRenderPipelineDescriptor_tileFunction :: proc(self: ^TileRenderPipelineDescriptor) -> ^TileRenderPipelineDescriptor { +TileRenderPipelineDescriptor_tileFunction :: #force_inline proc(self: ^TileRenderPipelineDescriptor) -> ^TileRenderPipelineDescriptor { return msgSend(^TileRenderPipelineDescriptor, self, "tileFunction") } @@ -4460,15 +4446,15 @@ Methods: Type :: struct { using _: NS.Object } @(objc_type=Type, objc_class_name="alloc") -Type_alloc :: proc() -> ^Type { +Type_alloc :: #force_inline proc() -> ^Type { return msgSend(^Type, Type, "alloc") } @(objc_type=Type, objc_name="init") -Type_init :: proc(self: ^Type) -> ^Type { +Type_init :: #force_inline proc(self: ^Type) -> ^Type { return msgSend(^Type, self, "init") } @(objc_type=Type, objc_name="dataType") -Type_dataType :: proc(self: ^Type) -> DataType { +Type_dataType :: #force_inline proc(self: ^Type) -> DataType { return msgSend(DataType, self, "dataType") } @@ -4492,35 +4478,35 @@ Methods: VertexAttribute :: struct { using _: NS.Object } @(objc_type=VertexAttribute, objc_class_name="alloc") -VertexAttribute_alloc :: proc() -> ^VertexAttribute { +VertexAttribute_alloc :: #force_inline proc() -> ^VertexAttribute { return msgSend(^VertexAttribute, VertexAttribute, "alloc") } @(objc_type=VertexAttribute, objc_name="init") -VertexAttribute_init :: proc(self: ^VertexAttribute) -> ^VertexAttribute { +VertexAttribute_init :: #force_inline proc(self: ^VertexAttribute) -> ^VertexAttribute { return msgSend(^VertexAttribute, self, "init") } @(objc_type=VertexAttribute, objc_name="attributeIndex") -VertexAttribute_attributeIndex :: proc(self: ^VertexAttribute) -> NS.Integer { +VertexAttribute_attributeIndex :: #force_inline proc(self: ^VertexAttribute) -> NS.Integer { return msgSend(NS.Integer, self, "attributeIndex") } @(objc_type=VertexAttribute, objc_name="attributeType") -VertexAttribute_attributeType :: proc(self: ^VertexAttribute) -> DataType { +VertexAttribute_attributeType :: #force_inline proc(self: ^VertexAttribute) -> DataType { return msgSend(DataType, self, "attributeType") } @(objc_type=VertexAttribute, objc_name="isActive") -VertexAttribute_isActive :: proc(self: ^VertexAttribute) -> BOOL { +VertexAttribute_isActive :: #force_inline proc(self: ^VertexAttribute) -> BOOL { return msgSend(BOOL, self, "isActive") } @(objc_type=VertexAttribute, objc_name="isPatchControlPointData") -VertexAttribute_isPatchControlPointData :: proc(self: ^VertexAttribute) -> BOOL { +VertexAttribute_isPatchControlPointData :: #force_inline proc(self: ^VertexAttribute) -> BOOL { return msgSend(BOOL, self, "isPatchControlPointData") } @(objc_type=VertexAttribute, objc_name="isPatchData") -VertexAttribute_isPatchData :: proc(self: ^VertexAttribute) -> BOOL { +VertexAttribute_isPatchData :: #force_inline proc(self: ^VertexAttribute) -> BOOL { return msgSend(BOOL, self, "isPatchData") } @(objc_type=VertexAttribute, objc_name="name") -VertexAttribute_name :: proc(self: ^VertexAttribute) -> ^NS.String { +VertexAttribute_name :: #force_inline proc(self: ^VertexAttribute) -> ^NS.String { return msgSend(^NS.String, self, "name") } @@ -4544,35 +4530,35 @@ Methods: VertexAttributeDescriptor :: struct { using _: NS.Copying(VertexAttributeDescriptor) } @(objc_type=VertexAttributeDescriptor, objc_class_name="alloc") -VertexAttributeDescriptor_alloc :: proc() -> ^VertexAttributeDescriptor { +VertexAttributeDescriptor_alloc :: #force_inline proc() -> ^VertexAttributeDescriptor { return msgSend(^VertexAttributeDescriptor, VertexAttributeDescriptor, "alloc") } @(objc_type=VertexAttributeDescriptor, objc_name="init") -VertexAttributeDescriptor_init :: proc(self: ^VertexAttributeDescriptor) -> ^VertexAttributeDescriptor { +VertexAttributeDescriptor_init :: #force_inline proc(self: ^VertexAttributeDescriptor) -> ^VertexAttributeDescriptor { return msgSend(^VertexAttributeDescriptor, self, "init") } @(objc_type=VertexAttributeDescriptor, objc_name="bufferIndex") -VertexAttributeDescriptor_bufferIndex :: proc(self: ^VertexAttributeDescriptor) -> NS.Integer { +VertexAttributeDescriptor_bufferIndex :: #force_inline proc(self: ^VertexAttributeDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "bufferIndex") } @(objc_type=VertexAttributeDescriptor, objc_name="format") -VertexAttributeDescriptor_format :: proc(self: ^VertexAttributeDescriptor) -> VertexFormat { +VertexAttributeDescriptor_format :: #force_inline proc(self: ^VertexAttributeDescriptor) -> VertexFormat { return msgSend(VertexFormat, self, "format") } @(objc_type=VertexAttributeDescriptor, objc_name="offset") -VertexAttributeDescriptor_offset :: proc(self: ^VertexAttributeDescriptor) -> NS.Integer { +VertexAttributeDescriptor_offset :: #force_inline proc(self: ^VertexAttributeDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "offset") } @(objc_type=VertexAttributeDescriptor, objc_name="setBufferIndex") -VertexAttributeDescriptor_setBufferIndex :: proc(self: ^VertexAttributeDescriptor, bufferIndex: NS.Integer) { +VertexAttributeDescriptor_setBufferIndex :: #force_inline proc(self: ^VertexAttributeDescriptor, bufferIndex: NS.Integer) { msgSend(nil, self, "setBufferIndex:", bufferIndex) } @(objc_type=VertexAttributeDescriptor, objc_name="setFormat") -VertexAttributeDescriptor_setFormat :: proc(self: ^VertexAttributeDescriptor, format: VertexFormat) { +VertexAttributeDescriptor_setFormat :: #force_inline proc(self: ^VertexAttributeDescriptor, format: VertexFormat) { msgSend(nil, self, "setFormat:", format) } @(objc_type=VertexAttributeDescriptor, objc_name="setOffset") -VertexAttributeDescriptor_setOffset :: proc(self: ^VertexAttributeDescriptor, offset: NS.Integer) { +VertexAttributeDescriptor_setOffset :: #force_inline proc(self: ^VertexAttributeDescriptor, offset: NS.Integer) { msgSend(nil, self, "setOffset:", offset) } @@ -4592,19 +4578,19 @@ Methods: VertexAttributeDescriptorArray :: struct { using _: NS.Object } @(objc_type=VertexAttributeDescriptorArray, objc_class_name="alloc") -VertexAttributeDescriptorArray_alloc :: proc() -> ^VertexAttributeDescriptorArray { +VertexAttributeDescriptorArray_alloc :: #force_inline proc() -> ^VertexAttributeDescriptorArray { return msgSend(^VertexAttributeDescriptorArray, VertexAttributeDescriptorArray, "alloc") } @(objc_type=VertexAttributeDescriptorArray, objc_name="init") -VertexAttributeDescriptorArray_init :: proc(self: ^VertexAttributeDescriptorArray) -> ^VertexAttributeDescriptorArray { +VertexAttributeDescriptorArray_init :: #force_inline proc(self: ^VertexAttributeDescriptorArray) -> ^VertexAttributeDescriptorArray { return msgSend(^VertexAttributeDescriptorArray, self, "init") } @(objc_type=VertexAttributeDescriptorArray, objc_name="objectAtIndexedSubscript") -VertexAttributeDescriptorArray_objectAtIndexedSubscript :: proc(self: ^VertexAttributeDescriptorArray, index: ^NS.Object) -> ^VertexAttributeDescriptor { +VertexAttributeDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^VertexAttributeDescriptorArray, index: ^NS.Object) -> ^VertexAttributeDescriptor { return msgSend(^VertexAttributeDescriptor, self, "objectAtIndexedSubscript:", index) } @(objc_type=VertexAttributeDescriptorArray, objc_name="setObject") -VertexAttributeDescriptorArray_setObject :: proc(self: ^VertexAttributeDescriptorArray, attributeDesc: ^VertexAttributeDescriptor, index: ^NS.Object) { +VertexAttributeDescriptorArray_setObject :: #force_inline proc(self: ^VertexAttributeDescriptorArray, attributeDesc: ^VertexAttributeDescriptor, index: ^NS.Object) { msgSend(nil, self, "setObject:atIndexedSubscript:", attributeDesc, index) } @@ -4628,35 +4614,35 @@ Methods: VertexBufferLayoutDescriptor :: struct { using _: NS.Copying(VertexBufferLayoutDescriptor) } @(objc_type=VertexBufferLayoutDescriptor, objc_class_name="alloc") -VertexBufferLayoutDescriptor_alloc :: proc() -> ^VertexBufferLayoutDescriptor { +VertexBufferLayoutDescriptor_alloc :: #force_inline proc() -> ^VertexBufferLayoutDescriptor { return msgSend(^VertexBufferLayoutDescriptor, VertexBufferLayoutDescriptor, "alloc") } @(objc_type=VertexBufferLayoutDescriptor, objc_name="init") -VertexBufferLayoutDescriptor_init :: proc(self: ^VertexBufferLayoutDescriptor) -> ^VertexBufferLayoutDescriptor { +VertexBufferLayoutDescriptor_init :: #force_inline proc(self: ^VertexBufferLayoutDescriptor) -> ^VertexBufferLayoutDescriptor { return msgSend(^VertexBufferLayoutDescriptor, self, "init") } @(objc_type=VertexBufferLayoutDescriptor, objc_name="setStepFunction") -VertexBufferLayoutDescriptor_setStepFunction :: proc(self: ^VertexBufferLayoutDescriptor, stepFunction: VertexStepFunction) { +VertexBufferLayoutDescriptor_setStepFunction :: #force_inline proc(self: ^VertexBufferLayoutDescriptor, stepFunction: VertexStepFunction) { msgSend(nil, self, "setStepFunction:", stepFunction) } @(objc_type=VertexBufferLayoutDescriptor, objc_name="setStepRate") -VertexBufferLayoutDescriptor_setStepRate :: proc(self: ^VertexBufferLayoutDescriptor, stepRate: NS.Integer) { +VertexBufferLayoutDescriptor_setStepRate :: #force_inline proc(self: ^VertexBufferLayoutDescriptor, stepRate: NS.Integer) { msgSend(nil, self, "setStepRate:", stepRate) } @(objc_type=VertexBufferLayoutDescriptor, objc_name="setStride") -VertexBufferLayoutDescriptor_setStride :: proc(self: ^VertexBufferLayoutDescriptor, stride: NS.Integer) { +VertexBufferLayoutDescriptor_setStride :: #force_inline proc(self: ^VertexBufferLayoutDescriptor, stride: NS.Integer) { msgSend(nil, self, "setStride:", stride) } @(objc_type=VertexBufferLayoutDescriptor, objc_name="stepFunction") -VertexBufferLayoutDescriptor_stepFunction :: proc(self: ^VertexBufferLayoutDescriptor) -> VertexStepFunction { +VertexBufferLayoutDescriptor_stepFunction :: #force_inline proc(self: ^VertexBufferLayoutDescriptor) -> VertexStepFunction { return msgSend(VertexStepFunction, self, "stepFunction") } @(objc_type=VertexBufferLayoutDescriptor, objc_name="stepRate") -VertexBufferLayoutDescriptor_stepRate :: proc(self: ^VertexBufferLayoutDescriptor) -> NS.Integer { +VertexBufferLayoutDescriptor_stepRate :: #force_inline proc(self: ^VertexBufferLayoutDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "stepRate") } @(objc_type=VertexBufferLayoutDescriptor, objc_name="stride") -VertexBufferLayoutDescriptor_stride :: proc(self: ^VertexBufferLayoutDescriptor) -> NS.Integer { +VertexBufferLayoutDescriptor_stride :: #force_inline proc(self: ^VertexBufferLayoutDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "stride") } @@ -4676,19 +4662,19 @@ Methods: VertexBufferLayoutDescriptorArray :: struct { using _: NS.Object } @(objc_type=VertexBufferLayoutDescriptorArray, objc_class_name="alloc") -VertexBufferLayoutDescriptorArray_alloc :: proc() -> ^VertexBufferLayoutDescriptorArray { +VertexBufferLayoutDescriptorArray_alloc :: #force_inline proc() -> ^VertexBufferLayoutDescriptorArray { return msgSend(^VertexBufferLayoutDescriptorArray, VertexBufferLayoutDescriptorArray, "alloc") } @(objc_type=VertexBufferLayoutDescriptorArray, objc_name="init") -VertexBufferLayoutDescriptorArray_init :: proc(self: ^VertexBufferLayoutDescriptorArray) -> ^VertexBufferLayoutDescriptorArray { +VertexBufferLayoutDescriptorArray_init :: #force_inline proc(self: ^VertexBufferLayoutDescriptorArray) -> ^VertexBufferLayoutDescriptorArray { return msgSend(^VertexBufferLayoutDescriptorArray, self, "init") } @(objc_type=VertexBufferLayoutDescriptorArray, objc_name="objectAtIndexedSubscript") -VertexBufferLayoutDescriptorArray_objectAtIndexedSubscript :: proc(self: ^VertexBufferLayoutDescriptorArray, index: ^NS.Object) -> ^VertexBufferLayoutDescriptor { +VertexBufferLayoutDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^VertexBufferLayoutDescriptorArray, index: ^NS.Object) -> ^VertexBufferLayoutDescriptor { return msgSend(^VertexBufferLayoutDescriptor, self, "objectAtIndexedSubscript:", index) } @(objc_type=VertexBufferLayoutDescriptorArray, objc_name="setObject") -VertexBufferLayoutDescriptorArray_setObject :: proc(self: ^VertexBufferLayoutDescriptorArray, bufferDesc: ^VertexBufferLayoutDescriptor, index: ^NS.Object) { +VertexBufferLayoutDescriptorArray_setObject :: #force_inline proc(self: ^VertexBufferLayoutDescriptorArray, bufferDesc: ^VertexBufferLayoutDescriptor, index: ^NS.Object) { msgSend(nil, self, "setObject:atIndexedSubscript:", bufferDesc, index) } @@ -4710,27 +4696,27 @@ Methods: VertexDescriptor :: struct { using _: NS.Copying(VertexDescriptor) } @(objc_type=VertexDescriptor, objc_class_name="alloc") -VertexDescriptor_alloc :: proc() -> ^VertexDescriptor { +VertexDescriptor_alloc :: #force_inline proc() -> ^VertexDescriptor { return msgSend(^VertexDescriptor, VertexDescriptor, "alloc") } @(objc_type=VertexDescriptor, objc_name="init") -VertexDescriptor_init :: proc(self: ^VertexDescriptor) -> ^VertexDescriptor { +VertexDescriptor_init :: #force_inline proc(self: ^VertexDescriptor) -> ^VertexDescriptor { return msgSend(^VertexDescriptor, self, "init") } @(objc_type=VertexDescriptor, objc_name="attributes") -VertexDescriptor_attributes :: proc(self: ^VertexDescriptor) -> ^VertexAttributeDescriptorArray { +VertexDescriptor_attributes :: #force_inline proc(self: ^VertexDescriptor) -> ^VertexAttributeDescriptorArray { return msgSend(^VertexAttributeDescriptorArray, self, "attributes") } @(objc_type=VertexDescriptor, objc_name="layouts") -VertexDescriptor_layouts :: proc(self: ^VertexDescriptor) -> ^VertexBufferLayoutDescriptorArray { +VertexDescriptor_layouts :: #force_inline proc(self: ^VertexDescriptor) -> ^VertexBufferLayoutDescriptorArray { return msgSend(^VertexBufferLayoutDescriptorArray, self, "layouts") } @(objc_type=VertexDescriptor, objc_name="reset") -VertexDescriptor_reset :: proc(self: ^VertexDescriptor) { +VertexDescriptor_reset :: #force_inline proc(self: ^VertexDescriptor) { msgSend(nil, self, "reset") } @(objc_type=VertexDescriptor, objc_class_name="vertexDescriptor") -VertexDescriptor_vertexDescriptor :: proc() -> ^VertexDescriptor { +VertexDescriptor_vertexDescriptor :: #force_inline proc() -> ^VertexDescriptor { return msgSend(^VertexDescriptor, VertexDescriptor, "vertexDescriptor") } @@ -4751,23 +4737,23 @@ Methods: VisibleFunctionTableDescriptor :: struct { using _: NS.Copying(VisibleFunctionTableDescriptor) } @(objc_type=VisibleFunctionTableDescriptor, objc_class_name="alloc") -VisibleFunctionTableDescriptor_alloc :: proc() -> ^VisibleFunctionTableDescriptor { +VisibleFunctionTableDescriptor_alloc :: #force_inline proc() -> ^VisibleFunctionTableDescriptor { return msgSend(^VisibleFunctionTableDescriptor, VisibleFunctionTableDescriptor, "alloc") } @(objc_type=VisibleFunctionTableDescriptor, objc_name="init") -VisibleFunctionTableDescriptor_init :: proc(self: ^VisibleFunctionTableDescriptor) -> ^VisibleFunctionTableDescriptor { +VisibleFunctionTableDescriptor_init :: #force_inline proc(self: ^VisibleFunctionTableDescriptor) -> ^VisibleFunctionTableDescriptor { return msgSend(^VisibleFunctionTableDescriptor, self, "init") } @(objc_type=VisibleFunctionTableDescriptor, objc_name="functionCount") -VisibleFunctionTableDescriptor_functionCount :: proc(self: ^VisibleFunctionTableDescriptor) -> NS.Integer { +VisibleFunctionTableDescriptor_functionCount :: #force_inline proc(self: ^VisibleFunctionTableDescriptor) -> NS.Integer { return msgSend(NS.Integer, self, "functionCount") } @(objc_type=VisibleFunctionTableDescriptor, objc_name="setFunctionCount") -VisibleFunctionTableDescriptor_setFunctionCount :: proc(self: ^VisibleFunctionTableDescriptor, functionCount: NS.Integer) { +VisibleFunctionTableDescriptor_setFunctionCount :: #force_inline proc(self: ^VisibleFunctionTableDescriptor, functionCount: NS.Integer) { msgSend(nil, self, "setFunctionCount:", functionCount) } @(objc_type=VisibleFunctionTableDescriptor, objc_class_name="visibleFunctionTableDescriptor") -VisibleFunctionTableDescriptor_visibleFunctionTableDescriptor :: proc() -> ^VisibleFunctionTableDescriptor { +VisibleFunctionTableDescriptor_visibleFunctionTableDescriptor :: #force_inline proc() -> ^VisibleFunctionTableDescriptor { return msgSend(^VisibleFunctionTableDescriptor, VisibleFunctionTableDescriptor, "visibleFunctionTableDescriptor") } @@ -4784,7 +4770,7 @@ Methods: AccelerationStructure :: struct { using _: NS.Object } @(objc_type=AccelerationStructure, objc_name="size") -AccelerationStructure_size :: proc(self: ^AccelerationStructure) -> NS.Integer { +AccelerationStructure_size :: #force_inline proc(self: ^AccelerationStructure) -> NS.Integer { return msgSend(NS.Integer, self, "size") } @@ -4812,51 +4798,51 @@ Methods: AccelerationStructureCommandEncoder :: struct { using _: NS.Object } @(objc_type=AccelerationStructureCommandEncoder, objc_name="buildAccelerationStructure") -AccelerationStructureCommandEncoder_buildAccelerationStructure :: proc(self: ^AccelerationStructureCommandEncoder, accelerationStructure: ^NS.Object, descriptor: ^AccelerationStructureDescriptor, scratchBuffer: ^NS.Object, scratchBufferOffset: ^NS.Object) { +AccelerationStructureCommandEncoder_buildAccelerationStructure :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, accelerationStructure: ^NS.Object, descriptor: ^AccelerationStructureDescriptor, scratchBuffer: ^NS.Object, scratchBufferOffset: ^NS.Object) { msgSend(nil, self, "buildAccelerationStructure:descriptor:scratchBuffer:scratchBufferOffset:", accelerationStructure, descriptor, scratchBuffer, scratchBufferOffset) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="copyAccelerationStructure") -AccelerationStructureCommandEncoder_copyAccelerationStructure :: proc(self: ^AccelerationStructureCommandEncoder, sourceAccelerationStructure: ^NS.Object, destinationAccelerationStructure: ^NS.Object) { +AccelerationStructureCommandEncoder_copyAccelerationStructure :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, sourceAccelerationStructure: ^NS.Object, destinationAccelerationStructure: ^NS.Object) { msgSend(nil, self, "copyAccelerationStructure:toAccelerationStructure:", sourceAccelerationStructure, destinationAccelerationStructure) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="copyAndCompactAccelerationStructure") -AccelerationStructureCommandEncoder_copyAndCompactAccelerationStructure :: proc(self: ^AccelerationStructureCommandEncoder, sourceAccelerationStructure: ^NS.Object, destinationAccelerationStructure: ^NS.Object) { +AccelerationStructureCommandEncoder_copyAndCompactAccelerationStructure :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, sourceAccelerationStructure: ^NS.Object, destinationAccelerationStructure: ^NS.Object) { msgSend(nil, self, "copyAndCompactAccelerationStructure:toAccelerationStructure:", sourceAccelerationStructure, destinationAccelerationStructure) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="refitAccelerationStructure") -AccelerationStructureCommandEncoder_refitAccelerationStructure :: proc(self: ^AccelerationStructureCommandEncoder, sourceAccelerationStructure: ^NS.Object, descriptor: ^AccelerationStructureDescriptor, destinationAccelerationStructure: ^NS.Object, scratchBuffer: ^NS.Object, scratchBufferOffset: ^NS.Object) { +AccelerationStructureCommandEncoder_refitAccelerationStructure :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, sourceAccelerationStructure: ^NS.Object, descriptor: ^AccelerationStructureDescriptor, destinationAccelerationStructure: ^NS.Object, scratchBuffer: ^NS.Object, scratchBufferOffset: ^NS.Object) { msgSend(nil, self, "refitAccelerationStructure:descriptor:destination:scratchBuffer:scratchBufferOffset:", sourceAccelerationStructure, descriptor, destinationAccelerationStructure, scratchBuffer, scratchBufferOffset) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="sampleCountersInBuffer") -AccelerationStructureCommandEncoder_sampleCountersInBuffer :: proc(self: ^AccelerationStructureCommandEncoder, sampleBuffer: ^NS.Object, sampleIndex: ^NS.Object, barrier: BOOL) { +AccelerationStructureCommandEncoder_sampleCountersInBuffer :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, sampleBuffer: ^NS.Object, sampleIndex: ^NS.Object, barrier: BOOL) { msgSend(nil, self, "sampleCountersInBuffer:atSampleIndex:withBarrier:", sampleBuffer, sampleIndex, barrier) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="updateFence") -AccelerationStructureCommandEncoder_updateFence :: proc(self: ^AccelerationStructureCommandEncoder, fence: ^NS.Object) { +AccelerationStructureCommandEncoder_updateFence :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, fence: ^NS.Object) { msgSend(nil, self, "updateFence:", fence) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="useHeap") -AccelerationStructureCommandEncoder_useHeap :: proc(self: ^AccelerationStructureCommandEncoder, heap: ^NS.Object) { +AccelerationStructureCommandEncoder_useHeap :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, heap: ^NS.Object) { msgSend(nil, self, "useHeap:", heap) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="useHeaps") -AccelerationStructureCommandEncoder_useHeaps :: proc(self: ^AccelerationStructureCommandEncoder, heaps: ^^NS.Object, count: ^NS.Object) { +AccelerationStructureCommandEncoder_useHeaps :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, heaps: ^^NS.Object, count: ^NS.Object) { msgSend(nil, self, "useHeaps:count:", heaps, count) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="useResource") -AccelerationStructureCommandEncoder_useResource :: proc(self: ^AccelerationStructureCommandEncoder, resource: ^NS.Object, usage: ResourceUsage) { +AccelerationStructureCommandEncoder_useResource :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, resource: ^NS.Object, usage: ResourceUsage) { msgSend(nil, self, "useResource:usage:", resource, usage) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="useResources") -AccelerationStructureCommandEncoder_useResources :: proc(self: ^AccelerationStructureCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, usage: ResourceUsage) { +AccelerationStructureCommandEncoder_useResources :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, usage: ResourceUsage) { msgSend(nil, self, "useResources:count:usage:", resources, count, usage) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="waitForFence") -AccelerationStructureCommandEncoder_waitForFence :: proc(self: ^AccelerationStructureCommandEncoder, fence: ^NS.Object) { +AccelerationStructureCommandEncoder_waitForFence :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, fence: ^NS.Object) { msgSend(nil, self, "waitForFence:", fence) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="writeCompactedAccelerationStructureSize") -AccelerationStructureCommandEncoder_writeCompactedAccelerationStructureSize :: proc(self: ^AccelerationStructureCommandEncoder, accelerationStructure: ^NS.Object, buffer: ^NS.Object, offset: ^NS.Object) { +AccelerationStructureCommandEncoder_writeCompactedAccelerationStructureSize :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, accelerationStructure: ^NS.Object, buffer: ^NS.Object, offset: ^NS.Object) { msgSend(nil, self, "writeCompactedAccelerationStructureSize:toBuffer:offset:", accelerationStructure, buffer, offset) } @@ -4898,107 +4884,107 @@ Methods: ArgumentEncoder :: struct { using _: NS.Object } @(objc_type=ArgumentEncoder, objc_name="alignment") -ArgumentEncoder_alignment :: proc(self: ^ArgumentEncoder) -> NS.Integer { +ArgumentEncoder_alignment :: #force_inline proc(self: ^ArgumentEncoder) -> NS.Integer { return msgSend(NS.Integer, self, "alignment") } @(objc_type=ArgumentEncoder, objc_name="constantDataAtIndex") -ArgumentEncoder_constantDataAtIndex :: proc(self: ^ArgumentEncoder, index: ^NS.Object) -> rawptr { +ArgumentEncoder_constantDataAtIndex :: #force_inline proc(self: ^ArgumentEncoder, index: ^NS.Object) -> rawptr { return msgSend(rawptr, self, "constantDataAtIndex:", index) } @(objc_type=ArgumentEncoder, objc_name="device") -ArgumentEncoder_device :: proc(self: ^ArgumentEncoder) -> ^ArgumentEncoder { +ArgumentEncoder_device :: #force_inline proc(self: ^ArgumentEncoder) -> ^ArgumentEncoder { return msgSend(^ArgumentEncoder, self, "device") } @(objc_type=ArgumentEncoder, objc_name="encodedLength") -ArgumentEncoder_encodedLength :: proc(self: ^ArgumentEncoder) -> NS.Integer { +ArgumentEncoder_encodedLength :: #force_inline proc(self: ^ArgumentEncoder) -> NS.Integer { return msgSend(NS.Integer, self, "encodedLength") } @(objc_type=ArgumentEncoder, objc_name="label") -ArgumentEncoder_label :: proc(self: ^ArgumentEncoder) -> ^NS.String { +ArgumentEncoder_label :: #force_inline proc(self: ^ArgumentEncoder) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=ArgumentEncoder, objc_name="newArgumentEncoderForBufferAtIndex") -ArgumentEncoder_newArgumentEncoderForBufferAtIndex :: proc(self: ^ArgumentEncoder, index: ^NS.Object) -> ^ArgumentEncoder { +ArgumentEncoder_newArgumentEncoderForBufferAtIndex :: #force_inline proc(self: ^ArgumentEncoder, index: ^NS.Object) -> ^ArgumentEncoder { return msgSend(^ArgumentEncoder, self, "newArgumentEncoderForBufferAtIndex:", index) } @(objc_type=ArgumentEncoder, objc_name="setAccelerationStructure") -ArgumentEncoder_setAccelerationStructure :: proc(self: ^ArgumentEncoder, accelerationStructure: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setAccelerationStructure :: #force_inline proc(self: ^ArgumentEncoder, accelerationStructure: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setAccelerationStructure:atIndex:", accelerationStructure, index) } @(objc_type=ArgumentEncoder, objc_name="setArgumentBuffer_offset_") -ArgumentEncoder_setArgumentBuffer_offset_ :: proc(self: ^ArgumentEncoder, argumentBuffer: ^NS.Object, offset: ^NS.Object) { +ArgumentEncoder_setArgumentBuffer_offset_ :: #force_inline proc(self: ^ArgumentEncoder, argumentBuffer: ^NS.Object, offset: ^NS.Object) { msgSend(nil, self, "setArgumentBuffer:offset:", argumentBuffer, offset) } @(objc_type=ArgumentEncoder, objc_name="setArgumentBuffer_startOffset_arrayElement_") -ArgumentEncoder_setArgumentBuffer_startOffset_arrayElement_ :: proc(self: ^ArgumentEncoder, argumentBuffer: ^NS.Object, startOffset: ^NS.Object, arrayElement: ^NS.Object) { +ArgumentEncoder_setArgumentBuffer_startOffset_arrayElement_ :: #force_inline proc(self: ^ArgumentEncoder, argumentBuffer: ^NS.Object, startOffset: ^NS.Object, arrayElement: ^NS.Object) { msgSend(nil, self, "setArgumentBuffer:startOffset:arrayElement:", argumentBuffer, startOffset, arrayElement) } @(objc_type=ArgumentEncoder, objc_name="setBuffer") -ArgumentEncoder_setBuffer :: proc(self: ^ArgumentEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setBuffer :: #force_inline proc(self: ^ArgumentEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setBuffer:offset:atIndex:", buffer, offset, index) } @(objc_type=ArgumentEncoder, objc_name="setBuffers") -ArgumentEncoder_setBuffers :: proc(self: ^ArgumentEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { +ArgumentEncoder_setBuffers :: #force_inline proc(self: ^ArgumentEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { msgSend(nil, self, "setBuffers:offsets:withRange:", buffers, offsets, range) } @(objc_type=ArgumentEncoder, objc_name="setComputePipelineState") -ArgumentEncoder_setComputePipelineState :: proc(self: ^ArgumentEncoder, pipeline: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setComputePipelineState :: #force_inline proc(self: ^ArgumentEncoder, pipeline: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setComputePipelineState:atIndex:", pipeline, index) } @(objc_type=ArgumentEncoder, objc_name="setComputePipelineStates") -ArgumentEncoder_setComputePipelineStates :: proc(self: ^ArgumentEncoder, pipelines: ^^NS.Object, range: NS.Range) { +ArgumentEncoder_setComputePipelineStates :: #force_inline proc(self: ^ArgumentEncoder, pipelines: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setComputePipelineStates:withRange:", pipelines, range) } @(objc_type=ArgumentEncoder, objc_name="setIndirectCommandBuffer") -ArgumentEncoder_setIndirectCommandBuffer :: proc(self: ^ArgumentEncoder, indirectCommandBuffer: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setIndirectCommandBuffer :: #force_inline proc(self: ^ArgumentEncoder, indirectCommandBuffer: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setIndirectCommandBuffer:atIndex:", indirectCommandBuffer, index) } @(objc_type=ArgumentEncoder, objc_name="setIndirectCommandBuffers") -ArgumentEncoder_setIndirectCommandBuffers :: proc(self: ^ArgumentEncoder, buffers: ^^NS.Object, range: NS.Range) { +ArgumentEncoder_setIndirectCommandBuffers :: #force_inline proc(self: ^ArgumentEncoder, buffers: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setIndirectCommandBuffers:withRange:", buffers, range) } @(objc_type=ArgumentEncoder, objc_name="setIntersectionFunctionTable") -ArgumentEncoder_setIntersectionFunctionTable :: proc(self: ^ArgumentEncoder, intersectionFunctionTable: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setIntersectionFunctionTable :: #force_inline proc(self: ^ArgumentEncoder, intersectionFunctionTable: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setIntersectionFunctionTable:atIndex:", intersectionFunctionTable, index) } @(objc_type=ArgumentEncoder, objc_name="setIntersectionFunctionTables") -ArgumentEncoder_setIntersectionFunctionTables :: proc(self: ^ArgumentEncoder, intersectionFunctionTables: ^^NS.Object, range: NS.Range) { +ArgumentEncoder_setIntersectionFunctionTables :: #force_inline proc(self: ^ArgumentEncoder, intersectionFunctionTables: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setIntersectionFunctionTables:withRange:", intersectionFunctionTables, range) } @(objc_type=ArgumentEncoder, objc_name="setLabel") -ArgumentEncoder_setLabel :: proc(self: ^ArgumentEncoder, label: ^NS.String) { +ArgumentEncoder_setLabel :: #force_inline proc(self: ^ArgumentEncoder, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @(objc_type=ArgumentEncoder, objc_name="setRenderPipelineState") -ArgumentEncoder_setRenderPipelineState :: proc(self: ^ArgumentEncoder, pipeline: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setRenderPipelineState :: #force_inline proc(self: ^ArgumentEncoder, pipeline: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setRenderPipelineState:atIndex:", pipeline, index) } @(objc_type=ArgumentEncoder, objc_name="setRenderPipelineStates") -ArgumentEncoder_setRenderPipelineStates :: proc(self: ^ArgumentEncoder, pipelines: ^^NS.Object, range: NS.Range) { +ArgumentEncoder_setRenderPipelineStates :: #force_inline proc(self: ^ArgumentEncoder, pipelines: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setRenderPipelineStates:withRange:", pipelines, range) } @(objc_type=ArgumentEncoder, objc_name="setSamplerState") -ArgumentEncoder_setSamplerState :: proc(self: ^ArgumentEncoder, sampler: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setSamplerState :: #force_inline proc(self: ^ArgumentEncoder, sampler: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setSamplerState:atIndex:", sampler, index) } @(objc_type=ArgumentEncoder, objc_name="setSamplerStates") -ArgumentEncoder_setSamplerStates :: proc(self: ^ArgumentEncoder, samplers: ^^NS.Object, range: NS.Range) { +ArgumentEncoder_setSamplerStates :: #force_inline proc(self: ^ArgumentEncoder, samplers: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setSamplerStates:withRange:", samplers, range) } @(objc_type=ArgumentEncoder, objc_name="setTexture") -ArgumentEncoder_setTexture :: proc(self: ^ArgumentEncoder, texture: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setTexture :: #force_inline proc(self: ^ArgumentEncoder, texture: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setTexture:atIndex:", texture, index) } @(objc_type=ArgumentEncoder, objc_name="setTextures") -ArgumentEncoder_setTextures :: proc(self: ^ArgumentEncoder, textures: ^^NS.Object, range: NS.Range) { +ArgumentEncoder_setTextures :: #force_inline proc(self: ^ArgumentEncoder, textures: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setTextures:withRange:", textures, range) } @(objc_type=ArgumentEncoder, objc_name="setVisibleFunctionTable") -ArgumentEncoder_setVisibleFunctionTable :: proc(self: ^ArgumentEncoder, visibleFunctionTable: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setVisibleFunctionTable :: #force_inline proc(self: ^ArgumentEncoder, visibleFunctionTable: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setVisibleFunctionTable:atIndex:", visibleFunctionTable, index) } @(objc_type=ArgumentEncoder, objc_name="setVisibleFunctionTables") -ArgumentEncoder_setVisibleFunctionTables :: proc(self: ^ArgumentEncoder, visibleFunctionTables: ^^NS.Object, range: NS.Range) { +ArgumentEncoder_setVisibleFunctionTables :: #force_inline proc(self: ^ArgumentEncoder, visibleFunctionTables: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setVisibleFunctionTables:withRange:", visibleFunctionTables, range) } @@ -5021,31 +5007,31 @@ Methods: BinaryArchive :: struct { using _: NS.Copying(BinaryArchive) } @(objc_type=BinaryArchive, objc_name="addComputePipelineFunctionsWithDescriptor") -BinaryArchive_addComputePipelineFunctionsWithDescriptor :: proc(self: ^BinaryArchive, descriptor: ^ComputePipelineDescriptor, error: ^^NS.Error ) -> BOOL { +BinaryArchive_addComputePipelineFunctionsWithDescriptor :: #force_inline proc(self: ^BinaryArchive, descriptor: ^ComputePipelineDescriptor, error: ^^NS.Error ) -> BOOL { return msgSend(BOOL, self, "addComputePipelineFunctionsWithDescriptor:error:", descriptor, error) } @(objc_type=BinaryArchive, objc_name="addRenderPipelineFunctionsWithDescriptor") -BinaryArchive_addRenderPipelineFunctionsWithDescriptor :: proc(self: ^BinaryArchive, descriptor: ^RenderPipelineDescriptor, error: ^^NS.Error ) -> BOOL { +BinaryArchive_addRenderPipelineFunctionsWithDescriptor :: #force_inline proc(self: ^BinaryArchive, descriptor: ^RenderPipelineDescriptor, error: ^^NS.Error ) -> BOOL { return msgSend(BOOL, self, "addRenderPipelineFunctionsWithDescriptor:error:", descriptor, error) } @(objc_type=BinaryArchive, objc_name="addTileRenderPipelineFunctionsWithDescriptor") -BinaryArchive_addTileRenderPipelineFunctionsWithDescriptor :: proc(self: ^BinaryArchive, descriptor: ^TileRenderPipelineDescriptor, error: ^^NS.Error ) -> BOOL { +BinaryArchive_addTileRenderPipelineFunctionsWithDescriptor :: #force_inline proc(self: ^BinaryArchive, descriptor: ^TileRenderPipelineDescriptor, error: ^^NS.Error ) -> BOOL { return msgSend(BOOL, self, "addTileRenderPipelineFunctionsWithDescriptor:error:", descriptor, error) } @(objc_type=BinaryArchive, objc_name="device") -BinaryArchive_device :: proc(self: ^BinaryArchive) -> ^BinaryArchive { +BinaryArchive_device :: #force_inline proc(self: ^BinaryArchive) -> ^BinaryArchive { return msgSend(^BinaryArchive, self, "device") } @(objc_type=BinaryArchive, objc_name="label") -BinaryArchive_label :: proc(self: ^BinaryArchive) -> ^NS.String { +BinaryArchive_label :: #force_inline proc(self: ^BinaryArchive) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=BinaryArchive, objc_name="serializeToURL") -BinaryArchive_serializeToURL :: proc(self: ^BinaryArchive, url: ^NS.URL, error: ^^NS.Error ) -> BOOL { +BinaryArchive_serializeToURL :: #force_inline proc(self: ^BinaryArchive, url: ^NS.URL, error: ^^NS.Error ) -> BOOL { return msgSend(BOOL, self, "serializeToURL:error:", url, error) } @(objc_type=BinaryArchive, objc_name="setLabel") -BinaryArchive_setLabel :: proc(self: ^BinaryArchive, label: ^NS.String) { +BinaryArchive_setLabel :: #force_inline proc(self: ^BinaryArchive, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @@ -5086,103 +5072,103 @@ Methods: BlitCommandEncoder :: struct { using _: NS.Object } @(objc_type=BlitCommandEncoder, objc_name="copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_") -BlitCommandEncoder_copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_ :: proc(self: ^BlitCommandEncoder, sourceBuffer: ^NS.Object, sourceOffset: ^NS.Object, sourceBytesPerRow: ^NS.Object, sourceBytesPerImage: ^NS.Object, sourceSize: Size, destinationTexture: ^NS.Object, destinationSlice: ^NS.Object, destinationLevel: ^NS.Object, destinationOrigin: Origin) { +BlitCommandEncoder_copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceBuffer: ^NS.Object, sourceOffset: ^NS.Object, sourceBytesPerRow: ^NS.Object, sourceBytesPerImage: ^NS.Object, sourceSize: Size, destinationTexture: ^NS.Object, destinationSlice: ^NS.Object, destinationLevel: ^NS.Object, destinationOrigin: Origin) { msgSend(nil, self, "copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:", sourceBuffer, sourceOffset, sourceBytesPerRow, sourceBytesPerImage, sourceSize, destinationTexture, destinationSlice, destinationLevel, destinationOrigin) } @(objc_type=BlitCommandEncoder, objc_name="copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_options_") -BlitCommandEncoder_copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_options_ :: proc(self: ^BlitCommandEncoder, sourceBuffer: ^NS.Object, sourceOffset: ^NS.Object, sourceBytesPerRow: ^NS.Object, sourceBytesPerImage: ^NS.Object, sourceSize: Size, destinationTexture: ^NS.Object, destinationSlice: ^NS.Object, destinationLevel: ^NS.Object, destinationOrigin: Origin, options: BlitOption) { +BlitCommandEncoder_copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_options_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceBuffer: ^NS.Object, sourceOffset: ^NS.Object, sourceBytesPerRow: ^NS.Object, sourceBytesPerImage: ^NS.Object, sourceSize: Size, destinationTexture: ^NS.Object, destinationSlice: ^NS.Object, destinationLevel: ^NS.Object, destinationOrigin: Origin, options: BlitOption) { msgSend(nil, self, "copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:options:", sourceBuffer, sourceOffset, sourceBytesPerRow, sourceBytesPerImage, sourceSize, destinationTexture, destinationSlice, destinationLevel, destinationOrigin, options) } @(objc_type=BlitCommandEncoder, objc_name="copyFromBuffer_sourceOffset_toBuffer_destinationOffset_size_") -BlitCommandEncoder_copyFromBuffer_sourceOffset_toBuffer_destinationOffset_size_ :: proc(self: ^BlitCommandEncoder, sourceBuffer: ^NS.Object, sourceOffset: ^NS.Object, destinationBuffer: ^NS.Object, destinationOffset: ^NS.Object, size: ^NS.Object) { +BlitCommandEncoder_copyFromBuffer_sourceOffset_toBuffer_destinationOffset_size_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceBuffer: ^NS.Object, sourceOffset: ^NS.Object, destinationBuffer: ^NS.Object, destinationOffset: ^NS.Object, size: ^NS.Object) { msgSend(nil, self, "copyFromBuffer:sourceOffset:toBuffer:destinationOffset:size:", sourceBuffer, sourceOffset, destinationBuffer, destinationOffset, size) } @(objc_type=BlitCommandEncoder, objc_name="copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_") -BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_ :: proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, sourceSlice: ^NS.Object, sourceLevel: ^NS.Object, sourceOrigin: Origin, sourceSize: Size, destinationBuffer: ^NS.Object, destinationOffset: ^NS.Object, destinationBytesPerRow: ^NS.Object, destinationBytesPerImage: ^NS.Object) { +BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, sourceSlice: ^NS.Object, sourceLevel: ^NS.Object, sourceOrigin: Origin, sourceSize: Size, destinationBuffer: ^NS.Object, destinationOffset: ^NS.Object, destinationBytesPerRow: ^NS.Object, destinationBytesPerImage: ^NS.Object) { msgSend(nil, self, "copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:", sourceTexture, sourceSlice, sourceLevel, sourceOrigin, sourceSize, destinationBuffer, destinationOffset, destinationBytesPerRow, destinationBytesPerImage) } @(objc_type=BlitCommandEncoder, objc_name="copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_options_") -BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_options_ :: proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, sourceSlice: ^NS.Object, sourceLevel: ^NS.Object, sourceOrigin: Origin, sourceSize: Size, destinationBuffer: ^NS.Object, destinationOffset: ^NS.Object, destinationBytesPerRow: ^NS.Object, destinationBytesPerImage: ^NS.Object, options: BlitOption) { +BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_options_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, sourceSlice: ^NS.Object, sourceLevel: ^NS.Object, sourceOrigin: Origin, sourceSize: Size, destinationBuffer: ^NS.Object, destinationOffset: ^NS.Object, destinationBytesPerRow: ^NS.Object, destinationBytesPerImage: ^NS.Object, options: BlitOption) { msgSend(nil, self, "copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:options:", sourceTexture, sourceSlice, sourceLevel, sourceOrigin, sourceSize, destinationBuffer, destinationOffset, destinationBytesPerRow, destinationBytesPerImage, options) } @(objc_type=BlitCommandEncoder, objc_name="copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_") -BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_ :: proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, sourceSlice: ^NS.Object, sourceLevel: ^NS.Object, sourceOrigin: Origin, sourceSize: Size, destinationTexture: ^NS.Object, destinationSlice: ^NS.Object, destinationLevel: ^NS.Object, destinationOrigin: Origin) { +BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, sourceSlice: ^NS.Object, sourceLevel: ^NS.Object, sourceOrigin: Origin, sourceSize: Size, destinationTexture: ^NS.Object, destinationSlice: ^NS.Object, destinationLevel: ^NS.Object, destinationOrigin: Origin) { msgSend(nil, self, "copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:", sourceTexture, sourceSlice, sourceLevel, sourceOrigin, sourceSize, destinationTexture, destinationSlice, destinationLevel, destinationOrigin) } @(objc_type=BlitCommandEncoder, objc_name="copyFromTexture_sourceSlice_sourceLevel_toTexture_destinationSlice_destinationLevel_sliceCount_levelCount_") -BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_toTexture_destinationSlice_destinationLevel_sliceCount_levelCount_ :: proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, sourceSlice: ^NS.Object, sourceLevel: ^NS.Object, destinationTexture: ^NS.Object, destinationSlice: ^NS.Object, destinationLevel: ^NS.Object, sliceCount: ^NS.Object, levelCount: ^NS.Object) { +BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_toTexture_destinationSlice_destinationLevel_sliceCount_levelCount_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, sourceSlice: ^NS.Object, sourceLevel: ^NS.Object, destinationTexture: ^NS.Object, destinationSlice: ^NS.Object, destinationLevel: ^NS.Object, sliceCount: ^NS.Object, levelCount: ^NS.Object) { msgSend(nil, self, "copyFromTexture:sourceSlice:sourceLevel:toTexture:destinationSlice:destinationLevel:sliceCount:levelCount:", sourceTexture, sourceSlice, sourceLevel, destinationTexture, destinationSlice, destinationLevel, sliceCount, levelCount) } @(objc_type=BlitCommandEncoder, objc_name="copyFromTexture_toTexture_") -BlitCommandEncoder_copyFromTexture_toTexture_ :: proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, destinationTexture: ^NS.Object) { +BlitCommandEncoder_copyFromTexture_toTexture_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, destinationTexture: ^NS.Object) { msgSend(nil, self, "copyFromTexture:toTexture:", sourceTexture, destinationTexture) } @(objc_type=BlitCommandEncoder, objc_name="copyIndirectCommandBuffer") -BlitCommandEncoder_copyIndirectCommandBuffer :: proc(self: ^BlitCommandEncoder, source: ^NS.Object, sourceRange: NS.Range, destination: ^NS.Object, destinationIndex: ^NS.Object) { +BlitCommandEncoder_copyIndirectCommandBuffer :: #force_inline proc(self: ^BlitCommandEncoder, source: ^NS.Object, sourceRange: NS.Range, destination: ^NS.Object, destinationIndex: ^NS.Object) { msgSend(nil, self, "copyIndirectCommandBuffer:sourceRange:destination:destinationIndex:", source, sourceRange, destination, destinationIndex) } @(objc_type=BlitCommandEncoder, objc_name="fillBuffer") -BlitCommandEncoder_fillBuffer :: proc(self: ^BlitCommandEncoder, buffer: ^NS.Object, range: NS.Range, value: u8) { +BlitCommandEncoder_fillBuffer :: #force_inline proc(self: ^BlitCommandEncoder, buffer: ^NS.Object, range: NS.Range, value: u8) { msgSend(nil, self, "fillBuffer:range:value:", buffer, range, value) } @(objc_type=BlitCommandEncoder, objc_name="generateMipmapsForTexture") -BlitCommandEncoder_generateMipmapsForTexture :: proc(self: ^BlitCommandEncoder, texture: ^NS.Object) { +BlitCommandEncoder_generateMipmapsForTexture :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^NS.Object) { msgSend(nil, self, "generateMipmapsForTexture:", texture) } @(objc_type=BlitCommandEncoder, objc_name="getTextureAccessCounters") -BlitCommandEncoder_getTextureAccessCounters :: proc(self: ^BlitCommandEncoder, texture: ^NS.Object, region: Region, mipLevel: ^NS.Object, slice: ^NS.Object, resetCounters: BOOL, countersBuffer: ^NS.Object, countersBufferOffset: ^NS.Object) { +BlitCommandEncoder_getTextureAccessCounters :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^NS.Object, region: Region, mipLevel: ^NS.Object, slice: ^NS.Object, resetCounters: BOOL, countersBuffer: ^NS.Object, countersBufferOffset: ^NS.Object) { msgSend(nil, self, "getTextureAccessCounters:region:mipLevel:slice:resetCounters:countersBuffer:countersBufferOffset:", texture, region, mipLevel, slice, resetCounters, countersBuffer, countersBufferOffset) } @(objc_type=BlitCommandEncoder, objc_name="optimizeContentsForCPUAccess") -BlitCommandEncoder_optimizeContentsForCPUAccess :: proc(self: ^BlitCommandEncoder, texture: ^NS.Object) { +BlitCommandEncoder_optimizeContentsForCPUAccess :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^NS.Object) { msgSend(nil, self, "optimizeContentsForCPUAccess:", texture) } @(objc_type=BlitCommandEncoder, objc_name="optimizeContentsForCPUAccess_slice_level_") -BlitCommandEncoder_optimizeContentsForCPUAccess_slice_level_ :: proc(self: ^BlitCommandEncoder, texture: ^NS.Object, slice: ^NS.Object, level: ^NS.Object) { +BlitCommandEncoder_optimizeContentsForCPUAccess_slice_level_ :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^NS.Object, slice: ^NS.Object, level: ^NS.Object) { msgSend(nil, self, "optimizeContentsForCPUAccess:slice:level:", texture, slice, level) } @(objc_type=BlitCommandEncoder, objc_name="optimizeContentsForGPUAccess") -BlitCommandEncoder_optimizeContentsForGPUAccess :: proc(self: ^BlitCommandEncoder, texture: ^NS.Object) { +BlitCommandEncoder_optimizeContentsForGPUAccess :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^NS.Object) { msgSend(nil, self, "optimizeContentsForGPUAccess:", texture) } @(objc_type=BlitCommandEncoder, objc_name="optimizeContentsForGPUAccess_slice_level_") -BlitCommandEncoder_optimizeContentsForGPUAccess_slice_level_ :: proc(self: ^BlitCommandEncoder, texture: ^NS.Object, slice: ^NS.Object, level: ^NS.Object) { +BlitCommandEncoder_optimizeContentsForGPUAccess_slice_level_ :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^NS.Object, slice: ^NS.Object, level: ^NS.Object) { msgSend(nil, self, "optimizeContentsForGPUAccess:slice:level:", texture, slice, level) } @(objc_type=BlitCommandEncoder, objc_name="optimizeIndirectCommandBuffer") -BlitCommandEncoder_optimizeIndirectCommandBuffer :: proc(self: ^BlitCommandEncoder, indirectCommandBuffer: ^NS.Object, range: NS.Range) { +BlitCommandEncoder_optimizeIndirectCommandBuffer :: #force_inline proc(self: ^BlitCommandEncoder, indirectCommandBuffer: ^NS.Object, range: NS.Range) { msgSend(nil, self, "optimizeIndirectCommandBuffer:withRange:", indirectCommandBuffer, range) } @(objc_type=BlitCommandEncoder, objc_name="resetCommandsInBuffer") -BlitCommandEncoder_resetCommandsInBuffer :: proc(self: ^BlitCommandEncoder, buffer: ^NS.Object, range: NS.Range) { +BlitCommandEncoder_resetCommandsInBuffer :: #force_inline proc(self: ^BlitCommandEncoder, buffer: ^NS.Object, range: NS.Range) { msgSend(nil, self, "resetCommandsInBuffer:withRange:", buffer, range) } @(objc_type=BlitCommandEncoder, objc_name="resetTextureAccessCounters") -BlitCommandEncoder_resetTextureAccessCounters :: proc(self: ^BlitCommandEncoder, texture: ^NS.Object, region: Region, mipLevel: ^NS.Object, slice: ^NS.Object) { +BlitCommandEncoder_resetTextureAccessCounters :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^NS.Object, region: Region, mipLevel: ^NS.Object, slice: ^NS.Object) { msgSend(nil, self, "resetTextureAccessCounters:region:mipLevel:slice:", texture, region, mipLevel, slice) } @(objc_type=BlitCommandEncoder, objc_name="resolveCounters") -BlitCommandEncoder_resolveCounters :: proc(self: ^BlitCommandEncoder, sampleBuffer: ^NS.Object, range: NS.Range, destinationBuffer: ^NS.Object, destinationOffset: ^NS.Object) { +BlitCommandEncoder_resolveCounters :: #force_inline proc(self: ^BlitCommandEncoder, sampleBuffer: ^NS.Object, range: NS.Range, destinationBuffer: ^NS.Object, destinationOffset: ^NS.Object) { msgSend(nil, self, "resolveCounters:inRange:destinationBuffer:destinationOffset:", sampleBuffer, range, destinationBuffer, destinationOffset) } @(objc_type=BlitCommandEncoder, objc_name="sampleCountersInBuffer") -BlitCommandEncoder_sampleCountersInBuffer :: proc(self: ^BlitCommandEncoder, sampleBuffer: ^NS.Object, sampleIndex: ^NS.Object, barrier: BOOL) { +BlitCommandEncoder_sampleCountersInBuffer :: #force_inline proc(self: ^BlitCommandEncoder, sampleBuffer: ^NS.Object, sampleIndex: ^NS.Object, barrier: BOOL) { msgSend(nil, self, "sampleCountersInBuffer:atSampleIndex:withBarrier:", sampleBuffer, sampleIndex, barrier) } @(objc_type=BlitCommandEncoder, objc_name="synchronizeResource") -BlitCommandEncoder_synchronizeResource :: proc(self: ^BlitCommandEncoder, resource: ^NS.Object) { +BlitCommandEncoder_synchronizeResource :: #force_inline proc(self: ^BlitCommandEncoder, resource: ^NS.Object) { msgSend(nil, self, "synchronizeResource:", resource) } @(objc_type=BlitCommandEncoder, objc_name="synchronizeTexture") -BlitCommandEncoder_synchronizeTexture :: proc(self: ^BlitCommandEncoder, texture: ^NS.Object, slice: ^NS.Object, level: ^NS.Object) { +BlitCommandEncoder_synchronizeTexture :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^NS.Object, slice: ^NS.Object, level: ^NS.Object) { msgSend(nil, self, "synchronizeTexture:slice:level:", texture, slice, level) } @(objc_type=BlitCommandEncoder, objc_name="updateFence") -BlitCommandEncoder_updateFence :: proc(self: ^BlitCommandEncoder, fence: ^NS.Object) { +BlitCommandEncoder_updateFence :: #force_inline proc(self: ^BlitCommandEncoder, fence: ^NS.Object) { msgSend(nil, self, "updateFence:", fence) } @(objc_type=BlitCommandEncoder, objc_name="waitForFence") -BlitCommandEncoder_waitForFence :: proc(self: ^BlitCommandEncoder, fence: ^NS.Object) { +BlitCommandEncoder_waitForFence :: #force_inline proc(self: ^BlitCommandEncoder, fence: ^NS.Object) { msgSend(nil, self, "waitForFence:", fence) } @@ -5206,35 +5192,35 @@ Methods: Buffer :: struct { using _: NS.Object } @(objc_type=Buffer, objc_name="addDebugMarker") -Buffer_addDebugMarker :: proc(self: ^Buffer, marker: ^NS.String, range: NS.Range) { +Buffer_addDebugMarker :: #force_inline proc(self: ^Buffer, marker: ^NS.String, range: NS.Range) { msgSend(nil, self, "addDebugMarker:range:", marker, range) } @(objc_type=Buffer, objc_name="contents") -Buffer_contents :: proc(self: ^Buffer) -> rawptr { +Buffer_contents :: #force_inline proc(self: ^Buffer) -> rawptr { return msgSend(rawptr, self, "contents") } @(objc_type=Buffer, objc_name="didModifyRange") -Buffer_didModifyRange :: proc(self: ^Buffer, range: NS.Range) { +Buffer_didModifyRange :: #force_inline proc(self: ^Buffer, range: NS.Range) { msgSend(nil, self, "didModifyRange:", range) } @(objc_type=Buffer, objc_name="length") -Buffer_length :: proc(self: ^Buffer) -> NS.Integer { +Buffer_length :: #force_inline proc(self: ^Buffer) -> NS.Integer { return msgSend(NS.Integer, self, "length") } @(objc_type=Buffer, objc_name="newRemoteBufferViewForDevice") -Buffer_newRemoteBufferViewForDevice :: proc(self: ^Buffer, device: ^NS.Object) -> ^Buffer { +Buffer_newRemoteBufferViewForDevice :: #force_inline proc(self: ^Buffer, device: ^NS.Object) -> ^Buffer { return msgSend(^Buffer, self, "newRemoteBufferViewForDevice:", device) } @(objc_type=Buffer, objc_name="newTextureWithDescriptor") -Buffer_newTextureWithDescriptor :: proc(self: ^Buffer, descriptor: ^TextureDescriptor, offset: ^NS.Object, bytesPerRow: ^NS.Object) -> ^Buffer { +Buffer_newTextureWithDescriptor :: #force_inline proc(self: ^Buffer, descriptor: ^TextureDescriptor, offset: ^NS.Object, bytesPerRow: ^NS.Object) -> ^Buffer { return msgSend(^Buffer, self, "newTextureWithDescriptor:offset:bytesPerRow:", descriptor, offset, bytesPerRow) } @(objc_type=Buffer, objc_name="remoteStorageBuffer") -Buffer_remoteStorageBuffer :: proc(self: ^Buffer) -> ^Buffer { +Buffer_remoteStorageBuffer :: #force_inline proc(self: ^Buffer) -> ^Buffer { return msgSend(^Buffer, self, "remoteStorageBuffer") } @(objc_type=Buffer, objc_name="removeAllDebugMarkers") -Buffer_removeAllDebugMarkers :: proc(self: ^Buffer) { +Buffer_removeAllDebugMarkers :: #force_inline proc(self: ^Buffer) { msgSend(nil, self, "removeAllDebugMarkers") } @@ -5256,27 +5242,27 @@ Methods: CaptureScope :: struct { using _: NS.Object } @(objc_type=CaptureScope, objc_name="beginScope") -CaptureScope_beginScope :: proc(self: ^CaptureScope) { +CaptureScope_beginScope :: #force_inline proc(self: ^CaptureScope) { msgSend(nil, self, "beginScope") } @(objc_type=CaptureScope, objc_name="commandQueue") -CaptureScope_commandQueue :: proc(self: ^CaptureScope) -> ^CaptureScope { +CaptureScope_commandQueue :: #force_inline proc(self: ^CaptureScope) -> ^CaptureScope { return msgSend(^CaptureScope, self, "commandQueue") } @(objc_type=CaptureScope, objc_name="device") -CaptureScope_device :: proc(self: ^CaptureScope) -> ^CaptureScope { +CaptureScope_device :: #force_inline proc(self: ^CaptureScope) -> ^CaptureScope { return msgSend(^CaptureScope, self, "device") } @(objc_type=CaptureScope, objc_name="endScope") -CaptureScope_endScope :: proc(self: ^CaptureScope) { +CaptureScope_endScope :: #force_inline proc(self: ^CaptureScope) { msgSend(nil, self, "endScope") } @(objc_type=CaptureScope, objc_name="label") -CaptureScope_label :: proc(self: ^CaptureScope) -> ^NS.String { +CaptureScope_label :: #force_inline proc(self: ^CaptureScope) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=CaptureScope, objc_name="setLabel") -CaptureScope_setLabel :: proc(self: ^CaptureScope, label: ^NS.String) { +CaptureScope_setLabel :: #force_inline proc(self: ^CaptureScope, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @@ -5328,147 +5314,147 @@ Methods: CommandBuffer :: struct { using _: NS.Object } @(objc_type=CommandBuffer, objc_name="GPUEndTime") -CommandBuffer_GPUEndTime :: proc(self: ^CommandBuffer) -> CFTimeInterval { +CommandBuffer_GPUEndTime :: #force_inline proc(self: ^CommandBuffer) -> CFTimeInterval { return msgSend(CFTimeInterval, self, "GPUEndTime") } @(objc_type=CommandBuffer, objc_name="GPUStartTime") -CommandBuffer_GPUStartTime :: proc(self: ^CommandBuffer) -> CFTimeInterval { +CommandBuffer_GPUStartTime :: #force_inline proc(self: ^CommandBuffer) -> CFTimeInterval { return msgSend(CFTimeInterval, self, "GPUStartTime") } @(objc_type=CommandBuffer, objc_name="accelerationStructureCommandEncoder") -CommandBuffer_accelerationStructureCommandEncoder :: proc(self: ^CommandBuffer) -> ^CommandBuffer { +CommandBuffer_accelerationStructureCommandEncoder :: #force_inline proc(self: ^CommandBuffer) -> ^CommandBuffer { return msgSend(^CommandBuffer, self, "accelerationStructureCommandEncoder") } @(objc_type=CommandBuffer, objc_name="addCompletedHandler") -CommandBuffer_addCompletedHandler :: proc(self: ^CommandBuffer, block: CommandBufferHandler) { +CommandBuffer_addCompletedHandler :: #force_inline proc(self: ^CommandBuffer, block: CommandBufferHandler) { msgSend(nil, self, "addCompletedHandler:", block) } @(objc_type=CommandBuffer, objc_name="addScheduledHandler") -CommandBuffer_addScheduledHandler :: proc(self: ^CommandBuffer, block: CommandBufferHandler) { +CommandBuffer_addScheduledHandler :: #force_inline proc(self: ^CommandBuffer, block: CommandBufferHandler) { msgSend(nil, self, "addScheduledHandler:", block) } @(objc_type=CommandBuffer, objc_name="blitCommandEncoder") -CommandBuffer_blitCommandEncoder :: proc(self: ^CommandBuffer) -> ^CommandBuffer { +CommandBuffer_blitCommandEncoder :: #force_inline proc(self: ^CommandBuffer) -> ^CommandBuffer { return msgSend(^CommandBuffer, self, "blitCommandEncoder") } @(objc_type=CommandBuffer, objc_name="blitCommandEncoderWithDescriptor") -CommandBuffer_blitCommandEncoderWithDescriptor :: proc(self: ^CommandBuffer, blitPassDescriptor: ^BlitPassDescriptor) -> ^CommandBuffer { +CommandBuffer_blitCommandEncoderWithDescriptor :: #force_inline proc(self: ^CommandBuffer, blitPassDescriptor: ^BlitPassDescriptor) -> ^CommandBuffer { return msgSend(^CommandBuffer, self, "blitCommandEncoderWithDescriptor:", blitPassDescriptor) } @(objc_type=CommandBuffer, objc_name="commandQueue") -CommandBuffer_commandQueue :: proc(self: ^CommandBuffer) -> ^CommandBuffer { +CommandBuffer_commandQueue :: #force_inline proc(self: ^CommandBuffer) -> ^CommandBuffer { return msgSend(^CommandBuffer, self, "commandQueue") } @(objc_type=CommandBuffer, objc_name="commit") -CommandBuffer_commit :: proc(self: ^CommandBuffer) { +CommandBuffer_commit :: #force_inline proc(self: ^CommandBuffer) { msgSend(nil, self, "commit") } @(objc_type=CommandBuffer, objc_name="computeCommandEncoder") -CommandBuffer_computeCommandEncoder :: proc(self: ^CommandBuffer) -> ^CommandBuffer { +CommandBuffer_computeCommandEncoder :: #force_inline proc(self: ^CommandBuffer) -> ^CommandBuffer { return msgSend(^CommandBuffer, self, "computeCommandEncoder") } @(objc_type=CommandBuffer, objc_name="computeCommandEncoderWithDescriptor") -CommandBuffer_computeCommandEncoderWithDescriptor :: proc(self: ^CommandBuffer, computePassDescriptor: ^ComputePassDescriptor) -> ^CommandBuffer { +CommandBuffer_computeCommandEncoderWithDescriptor :: #force_inline proc(self: ^CommandBuffer, computePassDescriptor: ^ComputePassDescriptor) -> ^CommandBuffer { return msgSend(^CommandBuffer, self, "computeCommandEncoderWithDescriptor:", computePassDescriptor) } @(objc_type=CommandBuffer, objc_name="computeCommandEncoderWithDispatchType") -CommandBuffer_computeCommandEncoderWithDispatchType :: proc(self: ^CommandBuffer, dispatchType: DispatchType) -> ^CommandBuffer { +CommandBuffer_computeCommandEncoderWithDispatchType :: #force_inline proc(self: ^CommandBuffer, dispatchType: DispatchType) -> ^CommandBuffer { return msgSend(^CommandBuffer, self, "computeCommandEncoderWithDispatchType:", dispatchType) } @(objc_type=CommandBuffer, objc_name="device") -CommandBuffer_device :: proc(self: ^CommandBuffer) -> ^CommandBuffer { +CommandBuffer_device :: #force_inline proc(self: ^CommandBuffer) -> ^CommandBuffer { return msgSend(^CommandBuffer, self, "device") } @(objc_type=CommandBuffer, objc_name="encodeSignalEvent") -CommandBuffer_encodeSignalEvent :: proc(self: ^CommandBuffer, event: ^NS.Object, value: u64) { +CommandBuffer_encodeSignalEvent :: #force_inline proc(self: ^CommandBuffer, event: ^NS.Object, value: u64) { msgSend(nil, self, "encodeSignalEvent:value:", event, value) } @(objc_type=CommandBuffer, objc_name="encodeWaitForEvent") -CommandBuffer_encodeWaitForEvent :: proc(self: ^CommandBuffer, event: ^NS.Object, value: u64) { +CommandBuffer_encodeWaitForEvent :: #force_inline proc(self: ^CommandBuffer, event: ^NS.Object, value: u64) { msgSend(nil, self, "encodeWaitForEvent:value:", event, value) } @(objc_type=CommandBuffer, objc_name="enqueue") -CommandBuffer_enqueue :: proc(self: ^CommandBuffer) { +CommandBuffer_enqueue :: #force_inline proc(self: ^CommandBuffer) { msgSend(nil, self, "enqueue") } @(objc_type=CommandBuffer, objc_name="error") -CommandBuffer_error :: proc(self: ^CommandBuffer) -> ^NS.Error { +CommandBuffer_error :: #force_inline proc(self: ^CommandBuffer) -> ^NS.Error { return msgSend(^NS.Error, self, "error") } @(objc_type=CommandBuffer, objc_name="errorOptions") -CommandBuffer_errorOptions :: proc(self: ^CommandBuffer) -> CommandBufferErrorOption { +CommandBuffer_errorOptions :: #force_inline proc(self: ^CommandBuffer) -> CommandBufferErrorOption { return msgSend(CommandBufferErrorOption, self, "errorOptions") } @(objc_type=CommandBuffer, objc_name="kernelEndTime") -CommandBuffer_kernelEndTime :: proc(self: ^CommandBuffer) -> CFTimeInterval { +CommandBuffer_kernelEndTime :: #force_inline proc(self: ^CommandBuffer) -> CFTimeInterval { return msgSend(CFTimeInterval, self, "kernelEndTime") } @(objc_type=CommandBuffer, objc_name="kernelStartTime") -CommandBuffer_kernelStartTime :: proc(self: ^CommandBuffer) -> CFTimeInterval { +CommandBuffer_kernelStartTime :: #force_inline proc(self: ^CommandBuffer) -> CFTimeInterval { return msgSend(CFTimeInterval, self, "kernelStartTime") } @(objc_type=CommandBuffer, objc_name="label") -CommandBuffer_label :: proc(self: ^CommandBuffer) -> ^NS.String { +CommandBuffer_label :: #force_inline proc(self: ^CommandBuffer) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=CommandBuffer, objc_name="logs") -CommandBuffer_logs :: proc(self: ^CommandBuffer) -> ^CommandBuffer { +CommandBuffer_logs :: #force_inline proc(self: ^CommandBuffer) -> ^CommandBuffer { return msgSend(^CommandBuffer, self, "logs") } @(objc_type=CommandBuffer, objc_name="parallelRenderCommandEncoderWithDescriptor") -CommandBuffer_parallelRenderCommandEncoderWithDescriptor :: proc(self: ^CommandBuffer, renderPassDescriptor: ^RenderPassDescriptor) -> ^CommandBuffer { +CommandBuffer_parallelRenderCommandEncoderWithDescriptor :: #force_inline proc(self: ^CommandBuffer, renderPassDescriptor: ^RenderPassDescriptor) -> ^CommandBuffer { return msgSend(^CommandBuffer, self, "parallelRenderCommandEncoderWithDescriptor:", renderPassDescriptor) } @(objc_type=CommandBuffer, objc_name="popDebugGroup") -CommandBuffer_popDebugGroup :: proc(self: ^CommandBuffer) { +CommandBuffer_popDebugGroup :: #force_inline proc(self: ^CommandBuffer) { msgSend(nil, self, "popDebugGroup") } @(objc_type=CommandBuffer, objc_name="presentDrawable") -CommandBuffer_presentDrawable :: proc(self: ^CommandBuffer, drawable: ^NS.Object) { +CommandBuffer_presentDrawable :: #force_inline proc(self: ^CommandBuffer, drawable: ^NS.Object) { msgSend(nil, self, "presentDrawable:", drawable) } @(objc_type=CommandBuffer, objc_name="presentDrawable_afterMinimumDuration_") -CommandBuffer_presentDrawable_afterMinimumDuration_ :: proc(self: ^CommandBuffer, drawable: ^NS.Object, duration: CFTimeInterval) { +CommandBuffer_presentDrawable_afterMinimumDuration_ :: #force_inline proc(self: ^CommandBuffer, drawable: ^NS.Object, duration: CFTimeInterval) { msgSend(nil, self, "presentDrawable:afterMinimumDuration:", drawable, duration) } @(objc_type=CommandBuffer, objc_name="presentDrawable_atTime_") -CommandBuffer_presentDrawable_atTime_ :: proc(self: ^CommandBuffer, drawable: ^NS.Object, presentationTime: CFTimeInterval) { +CommandBuffer_presentDrawable_atTime_ :: #force_inline proc(self: ^CommandBuffer, drawable: ^NS.Object, presentationTime: CFTimeInterval) { msgSend(nil, self, "presentDrawable:atTime:", drawable, presentationTime) } @(objc_type=CommandBuffer, objc_name="pushDebugGroup") -CommandBuffer_pushDebugGroup :: proc(self: ^CommandBuffer, string: ^NS.String) { +CommandBuffer_pushDebugGroup :: #force_inline proc(self: ^CommandBuffer, string: ^NS.String) { msgSend(nil, self, "pushDebugGroup:", string) } @(objc_type=CommandBuffer, objc_name="renderCommandEncoderWithDescriptor") -CommandBuffer_renderCommandEncoderWithDescriptor :: proc(self: ^CommandBuffer, renderPassDescriptor: ^RenderPassDescriptor) -> ^CommandBuffer { +CommandBuffer_renderCommandEncoderWithDescriptor :: #force_inline proc(self: ^CommandBuffer, renderPassDescriptor: ^RenderPassDescriptor) -> ^CommandBuffer { return msgSend(^CommandBuffer, self, "renderCommandEncoderWithDescriptor:", renderPassDescriptor) } @(objc_type=CommandBuffer, objc_name="resourceStateCommandEncoder") -CommandBuffer_resourceStateCommandEncoder :: proc(self: ^CommandBuffer) -> ^CommandBuffer { +CommandBuffer_resourceStateCommandEncoder :: #force_inline proc(self: ^CommandBuffer) -> ^CommandBuffer { return msgSend(^CommandBuffer, self, "resourceStateCommandEncoder") } @(objc_type=CommandBuffer, objc_name="resourceStateCommandEncoderWithDescriptor") -CommandBuffer_resourceStateCommandEncoderWithDescriptor :: proc(self: ^CommandBuffer, resourceStatePassDescriptor: ^ResourceStatePassDescriptor) -> ^CommandBuffer { +CommandBuffer_resourceStateCommandEncoderWithDescriptor :: #force_inline proc(self: ^CommandBuffer, resourceStatePassDescriptor: ^ResourceStatePassDescriptor) -> ^CommandBuffer { return msgSend(^CommandBuffer, self, "resourceStateCommandEncoderWithDescriptor:", resourceStatePassDescriptor) } @(objc_type=CommandBuffer, objc_name="retainedReferences") -CommandBuffer_retainedReferences :: proc(self: ^CommandBuffer) -> BOOL { +CommandBuffer_retainedReferences :: #force_inline proc(self: ^CommandBuffer) -> BOOL { return msgSend(BOOL, self, "retainedReferences") } @(objc_type=CommandBuffer, objc_name="setLabel") -CommandBuffer_setLabel :: proc(self: ^CommandBuffer, label: ^NS.String) { +CommandBuffer_setLabel :: #force_inline proc(self: ^CommandBuffer, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @(objc_type=CommandBuffer, objc_name="status") -CommandBuffer_status :: proc(self: ^CommandBuffer) -> CommandBufferStatus { +CommandBuffer_status :: #force_inline proc(self: ^CommandBuffer) -> CommandBufferStatus { return msgSend(CommandBufferStatus, self, "status") } @(objc_type=CommandBuffer, objc_name="waitUntilCompleted") -CommandBuffer_waitUntilCompleted :: proc(self: ^CommandBuffer) { +CommandBuffer_waitUntilCompleted :: #force_inline proc(self: ^CommandBuffer) { msgSend(nil, self, "waitUntilCompleted") } @(objc_type=CommandBuffer, objc_name="waitUntilScheduled") -CommandBuffer_waitUntilScheduled :: proc(self: ^CommandBuffer) { +CommandBuffer_waitUntilScheduled :: #force_inline proc(self: ^CommandBuffer) { msgSend(nil, self, "waitUntilScheduled") } @@ -5487,15 +5473,15 @@ Methods: CommandBufferEncoderInfo :: struct { using _: NS.Object } @(objc_type=CommandBufferEncoderInfo, objc_name="debugSignposts") -CommandBufferEncoderInfo_debugSignposts :: proc(self: ^CommandBufferEncoderInfo) -> ^NS.Array { +CommandBufferEncoderInfo_debugSignposts :: #force_inline proc(self: ^CommandBufferEncoderInfo) -> ^NS.Array { return msgSend(^NS.Array, self, "debugSignposts") } @(objc_type=CommandBufferEncoderInfo, objc_name="errorState") -CommandBufferEncoderInfo_errorState :: proc(self: ^CommandBufferEncoderInfo) -> CommandEncoderErrorState { +CommandBufferEncoderInfo_errorState :: #force_inline proc(self: ^CommandBufferEncoderInfo) -> CommandEncoderErrorState { return msgSend(CommandEncoderErrorState, self, "errorState") } @(objc_type=CommandBufferEncoderInfo, objc_name="label") -CommandBufferEncoderInfo_label :: proc(self: ^CommandBufferEncoderInfo) -> ^NS.String { +CommandBufferEncoderInfo_label :: #force_inline proc(self: ^CommandBufferEncoderInfo) -> ^NS.String { return msgSend(^NS.String, self, "label") } @@ -5518,31 +5504,31 @@ Methods: CommandEncoder :: struct { using _: NS.Object } @(objc_type=CommandEncoder, objc_name="device") -CommandEncoder_device :: proc(self: ^CommandEncoder) -> ^CommandEncoder { +CommandEncoder_device :: #force_inline proc(self: ^CommandEncoder) -> ^CommandEncoder { return msgSend(^CommandEncoder, self, "device") } @(objc_type=CommandEncoder, objc_name="endEncoding") -CommandEncoder_endEncoding :: proc(self: ^CommandEncoder) { +CommandEncoder_endEncoding :: #force_inline proc(self: ^CommandEncoder) { msgSend(nil, self, "endEncoding") } @(objc_type=CommandEncoder, objc_name="insertDebugSignpost") -CommandEncoder_insertDebugSignpost :: proc(self: ^CommandEncoder, string: ^NS.String) { +CommandEncoder_insertDebugSignpost :: #force_inline proc(self: ^CommandEncoder, string: ^NS.String) { msgSend(nil, self, "insertDebugSignpost:", string) } @(objc_type=CommandEncoder, objc_name="label") -CommandEncoder_label :: proc(self: ^CommandEncoder) -> ^NS.String { +CommandEncoder_label :: #force_inline proc(self: ^CommandEncoder) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=CommandEncoder, objc_name="popDebugGroup") -CommandEncoder_popDebugGroup :: proc(self: ^CommandEncoder) { +CommandEncoder_popDebugGroup :: #force_inline proc(self: ^CommandEncoder) { msgSend(nil, self, "popDebugGroup") } @(objc_type=CommandEncoder, objc_name="pushDebugGroup") -CommandEncoder_pushDebugGroup :: proc(self: ^CommandEncoder, string: ^NS.String) { +CommandEncoder_pushDebugGroup :: #force_inline proc(self: ^CommandEncoder, string: ^NS.String) { msgSend(nil, self, "pushDebugGroup:", string) } @(objc_type=CommandEncoder, objc_name="setLabel") -CommandEncoder_setLabel :: proc(self: ^CommandEncoder, label: ^NS.String) { +CommandEncoder_setLabel :: #force_inline proc(self: ^CommandEncoder, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @@ -5565,31 +5551,31 @@ Methods: CommandQueue :: struct { using _: NS.Object } @(objc_type=CommandQueue, objc_name="commandBuffer") -CommandQueue_commandBuffer :: proc(self: ^CommandQueue) -> ^CommandQueue { +CommandQueue_commandBuffer :: #force_inline proc(self: ^CommandQueue) -> ^CommandQueue { return msgSend(^CommandQueue, self, "commandBuffer") } @(objc_type=CommandQueue, objc_name="commandBufferWithDescriptor") -CommandQueue_commandBufferWithDescriptor :: proc(self: ^CommandQueue, descriptor: ^CommandBufferDescriptor) -> ^CommandQueue { +CommandQueue_commandBufferWithDescriptor :: #force_inline proc(self: ^CommandQueue, descriptor: ^CommandBufferDescriptor) -> ^CommandQueue { return msgSend(^CommandQueue, self, "commandBufferWithDescriptor:", descriptor) } @(objc_type=CommandQueue, objc_name="commandBufferWithUnretainedReferences") -CommandQueue_commandBufferWithUnretainedReferences :: proc(self: ^CommandQueue) -> ^CommandQueue { +CommandQueue_commandBufferWithUnretainedReferences :: #force_inline proc(self: ^CommandQueue) -> ^CommandQueue { return msgSend(^CommandQueue, self, "commandBufferWithUnretainedReferences") } @(objc_type=CommandQueue, objc_name="device") -CommandQueue_device :: proc(self: ^CommandQueue) -> ^CommandQueue { +CommandQueue_device :: #force_inline proc(self: ^CommandQueue) -> ^CommandQueue { return msgSend(^CommandQueue, self, "device") } @(objc_type=CommandQueue, objc_name="insertDebugCaptureBoundary") -CommandQueue_insertDebugCaptureBoundary :: proc(self: ^CommandQueue) { +CommandQueue_insertDebugCaptureBoundary :: #force_inline proc(self: ^CommandQueue) { msgSend(nil, self, "insertDebugCaptureBoundary") } @(objc_type=CommandQueue, objc_name="label") -CommandQueue_label :: proc(self: ^CommandQueue) -> ^NS.String { +CommandQueue_label :: #force_inline proc(self: ^CommandQueue) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=CommandQueue, objc_name="setLabel") -CommandQueue_setLabel :: proc(self: ^CommandQueue, label: ^NS.String) { +CommandQueue_setLabel :: #force_inline proc(self: ^CommandQueue, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @@ -5640,143 +5626,143 @@ Methods: ComputeCommandEncoder :: struct { using _: NS.Object } @(objc_type=ComputeCommandEncoder, objc_name="dispatchThreadgroups") -ComputeCommandEncoder_dispatchThreadgroups :: proc(self: ^ComputeCommandEncoder, threadgroupsPerGrid: Size, threadsPerThreadgroup: Size) { +ComputeCommandEncoder_dispatchThreadgroups :: #force_inline proc(self: ^ComputeCommandEncoder, threadgroupsPerGrid: Size, threadsPerThreadgroup: Size) { msgSend(nil, self, "dispatchThreadgroups:threadsPerThreadgroup:", threadgroupsPerGrid, threadsPerThreadgroup) } @(objc_type=ComputeCommandEncoder, objc_name="dispatchThreadgroupsWithIndirectBuffer") -ComputeCommandEncoder_dispatchThreadgroupsWithIndirectBuffer :: proc(self: ^ComputeCommandEncoder, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object, threadsPerThreadgroup: Size) { +ComputeCommandEncoder_dispatchThreadgroupsWithIndirectBuffer :: #force_inline proc(self: ^ComputeCommandEncoder, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object, threadsPerThreadgroup: Size) { msgSend(nil, self, "dispatchThreadgroupsWithIndirectBuffer:indirectBufferOffset:threadsPerThreadgroup:", indirectBuffer, indirectBufferOffset, threadsPerThreadgroup) } @(objc_type=ComputeCommandEncoder, objc_name="dispatchThreads") -ComputeCommandEncoder_dispatchThreads :: proc(self: ^ComputeCommandEncoder, threadsPerGrid: Size, threadsPerThreadgroup: Size) { +ComputeCommandEncoder_dispatchThreads :: #force_inline proc(self: ^ComputeCommandEncoder, threadsPerGrid: Size, threadsPerThreadgroup: Size) { msgSend(nil, self, "dispatchThreads:threadsPerThreadgroup:", threadsPerGrid, threadsPerThreadgroup) } @(objc_type=ComputeCommandEncoder, objc_name="dispatchType") -ComputeCommandEncoder_dispatchType :: proc(self: ^ComputeCommandEncoder) -> DispatchType { +ComputeCommandEncoder_dispatchType :: #force_inline proc(self: ^ComputeCommandEncoder) -> DispatchType { return msgSend(DispatchType, self, "dispatchType") } @(objc_type=ComputeCommandEncoder, objc_name="executeCommandsInBuffer_indirectBuffer_indirectBufferOffset_") -ComputeCommandEncoder_executeCommandsInBuffer_indirectBuffer_indirectBufferOffset_ :: proc(self: ^ComputeCommandEncoder, indirectCommandbuffer: ^NS.Object, indirectRangeBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { +ComputeCommandEncoder_executeCommandsInBuffer_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^ComputeCommandEncoder, indirectCommandbuffer: ^NS.Object, indirectRangeBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { msgSend(nil, self, "executeCommandsInBuffer:indirectBuffer:indirectBufferOffset:", indirectCommandbuffer, indirectRangeBuffer, indirectBufferOffset) } @(objc_type=ComputeCommandEncoder, objc_name="executeCommandsInBuffer_withRange_") -ComputeCommandEncoder_executeCommandsInBuffer_withRange_ :: proc(self: ^ComputeCommandEncoder, indirectCommandBuffer: ^NS.Object, executionRange: NS.Range) { +ComputeCommandEncoder_executeCommandsInBuffer_withRange_ :: #force_inline proc(self: ^ComputeCommandEncoder, indirectCommandBuffer: ^NS.Object, executionRange: NS.Range) { msgSend(nil, self, "executeCommandsInBuffer:withRange:", indirectCommandBuffer, executionRange) } @(objc_type=ComputeCommandEncoder, objc_name="memoryBarrierWithResources") -ComputeCommandEncoder_memoryBarrierWithResources :: proc(self: ^ComputeCommandEncoder, resources: ^^NS.Object, count: ^NS.Object) { +ComputeCommandEncoder_memoryBarrierWithResources :: #force_inline proc(self: ^ComputeCommandEncoder, resources: ^^NS.Object, count: ^NS.Object) { msgSend(nil, self, "memoryBarrierWithResources:count:", resources, count) } @(objc_type=ComputeCommandEncoder, objc_name="memoryBarrierWithScope") -ComputeCommandEncoder_memoryBarrierWithScope :: proc(self: ^ComputeCommandEncoder, scope: BarrierScope) { +ComputeCommandEncoder_memoryBarrierWithScope :: #force_inline proc(self: ^ComputeCommandEncoder, scope: BarrierScope) { msgSend(nil, self, "memoryBarrierWithScope:", scope) } @(objc_type=ComputeCommandEncoder, objc_name="sampleCountersInBuffer") -ComputeCommandEncoder_sampleCountersInBuffer :: proc(self: ^ComputeCommandEncoder, sampleBuffer: ^NS.Object, sampleIndex: ^NS.Object, barrier: BOOL) { +ComputeCommandEncoder_sampleCountersInBuffer :: #force_inline proc(self: ^ComputeCommandEncoder, sampleBuffer: ^NS.Object, sampleIndex: ^NS.Object, barrier: BOOL) { msgSend(nil, self, "sampleCountersInBuffer:atSampleIndex:withBarrier:", sampleBuffer, sampleIndex, barrier) } @(objc_type=ComputeCommandEncoder, objc_name="setAccelerationStructure") -ComputeCommandEncoder_setAccelerationStructure :: proc(self: ^ComputeCommandEncoder, accelerationStructure: ^NS.Object, bufferIndex: ^NS.Object) { +ComputeCommandEncoder_setAccelerationStructure :: #force_inline proc(self: ^ComputeCommandEncoder, accelerationStructure: ^NS.Object, bufferIndex: ^NS.Object) { msgSend(nil, self, "setAccelerationStructure:atBufferIndex:", accelerationStructure, bufferIndex) } @(objc_type=ComputeCommandEncoder, objc_name="setBuffer") -ComputeCommandEncoder_setBuffer :: proc(self: ^ComputeCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +ComputeCommandEncoder_setBuffer :: #force_inline proc(self: ^ComputeCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setBuffer:offset:atIndex:", buffer, offset, index) } @(objc_type=ComputeCommandEncoder, objc_name="setBufferOffset") -ComputeCommandEncoder_setBufferOffset :: proc(self: ^ComputeCommandEncoder, offset: ^NS.Object, index: ^NS.Object) { +ComputeCommandEncoder_setBufferOffset :: #force_inline proc(self: ^ComputeCommandEncoder, offset: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setBufferOffset:atIndex:", offset, index) } @(objc_type=ComputeCommandEncoder, objc_name="setBuffers") -ComputeCommandEncoder_setBuffers :: proc(self: ^ComputeCommandEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { +ComputeCommandEncoder_setBuffers :: #force_inline proc(self: ^ComputeCommandEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { msgSend(nil, self, "setBuffers:offsets:withRange:", buffers, offsets, range) } @(objc_type=ComputeCommandEncoder, objc_name="setBytes") -ComputeCommandEncoder_setBytes :: proc(self: ^ComputeCommandEncoder, bytes: rawptr, length: ^NS.Object, index: ^NS.Object) { +ComputeCommandEncoder_setBytes :: #force_inline proc(self: ^ComputeCommandEncoder, bytes: rawptr, length: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setBytes:length:atIndex:", bytes, length, index) } @(objc_type=ComputeCommandEncoder, objc_name="setComputePipelineState") -ComputeCommandEncoder_setComputePipelineState :: proc(self: ^ComputeCommandEncoder, pipelineState: ^NS.Object) { +ComputeCommandEncoder_setComputePipelineState :: #force_inline proc(self: ^ComputeCommandEncoder, pipelineState: ^NS.Object) { msgSend(nil, self, "setComputePipelineState:", pipelineState) } @(objc_type=ComputeCommandEncoder, objc_name="setImageblockWidth") -ComputeCommandEncoder_setImageblockWidth :: proc(self: ^ComputeCommandEncoder, width: ^NS.Object, height: ^NS.Object) { +ComputeCommandEncoder_setImageblockWidth :: #force_inline proc(self: ^ComputeCommandEncoder, width: ^NS.Object, height: ^NS.Object) { msgSend(nil, self, "setImageblockWidth:height:", width, height) } @(objc_type=ComputeCommandEncoder, objc_name="setIntersectionFunctionTable") -ComputeCommandEncoder_setIntersectionFunctionTable :: proc(self: ^ComputeCommandEncoder, intersectionFunctionTable: ^NS.Object, bufferIndex: ^NS.Object) { +ComputeCommandEncoder_setIntersectionFunctionTable :: #force_inline proc(self: ^ComputeCommandEncoder, intersectionFunctionTable: ^NS.Object, bufferIndex: ^NS.Object) { msgSend(nil, self, "setIntersectionFunctionTable:atBufferIndex:", intersectionFunctionTable, bufferIndex) } @(objc_type=ComputeCommandEncoder, objc_name="setIntersectionFunctionTables") -ComputeCommandEncoder_setIntersectionFunctionTables :: proc(self: ^ComputeCommandEncoder, intersectionFunctionTables: ^^NS.Object, range: NS.Range) { +ComputeCommandEncoder_setIntersectionFunctionTables :: #force_inline proc(self: ^ComputeCommandEncoder, intersectionFunctionTables: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setIntersectionFunctionTables:withBufferRange:", intersectionFunctionTables, range) } @(objc_type=ComputeCommandEncoder, objc_name="setSamplerState_atIndex_") -ComputeCommandEncoder_setSamplerState_atIndex_ :: proc(self: ^ComputeCommandEncoder, sampler: ^NS.Object, index: ^NS.Object) { +ComputeCommandEncoder_setSamplerState_atIndex_ :: #force_inline proc(self: ^ComputeCommandEncoder, sampler: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setSamplerState:atIndex:", sampler, index) } @(objc_type=ComputeCommandEncoder, objc_name="setSamplerState_lodMinClamp_lodMaxClamp_atIndex_") -ComputeCommandEncoder_setSamplerState_lodMinClamp_lodMaxClamp_atIndex_ :: proc(self: ^ComputeCommandEncoder, sampler: ^NS.Object, lodMinClamp: f32, lodMaxClamp: f32, index: ^NS.Object) { +ComputeCommandEncoder_setSamplerState_lodMinClamp_lodMaxClamp_atIndex_ :: #force_inline proc(self: ^ComputeCommandEncoder, sampler: ^NS.Object, lodMinClamp: f32, lodMaxClamp: f32, index: ^NS.Object) { msgSend(nil, self, "setSamplerState:lodMinClamp:lodMaxClamp:atIndex:", sampler, lodMinClamp, lodMaxClamp, index) } @(objc_type=ComputeCommandEncoder, objc_name="setSamplerStates_lodMinClamps_lodMaxClamps_withRange_") -ComputeCommandEncoder_setSamplerStates_lodMinClamps_lodMaxClamps_withRange_ :: proc(self: ^ComputeCommandEncoder, samplers: ^^NS.Object, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { +ComputeCommandEncoder_setSamplerStates_lodMinClamps_lodMaxClamps_withRange_ :: #force_inline proc(self: ^ComputeCommandEncoder, samplers: ^^NS.Object, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { msgSend(nil, self, "setSamplerStates:lodMinClamps:lodMaxClamps:withRange:", samplers, lodMinClamps, lodMaxClamps, range) } @(objc_type=ComputeCommandEncoder, objc_name="setSamplerStates_withRange_") -ComputeCommandEncoder_setSamplerStates_withRange_ :: proc(self: ^ComputeCommandEncoder, samplers: ^^NS.Object, range: NS.Range) { +ComputeCommandEncoder_setSamplerStates_withRange_ :: #force_inline proc(self: ^ComputeCommandEncoder, samplers: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setSamplerStates:withRange:", samplers, range) } @(objc_type=ComputeCommandEncoder, objc_name="setStageInRegion") -ComputeCommandEncoder_setStageInRegion :: proc(self: ^ComputeCommandEncoder, region: Region) { +ComputeCommandEncoder_setStageInRegion :: #force_inline proc(self: ^ComputeCommandEncoder, region: Region) { msgSend(nil, self, "setStageInRegion:", region) } @(objc_type=ComputeCommandEncoder, objc_name="setStageInRegionWithIndirectBuffer") -ComputeCommandEncoder_setStageInRegionWithIndirectBuffer :: proc(self: ^ComputeCommandEncoder, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { +ComputeCommandEncoder_setStageInRegionWithIndirectBuffer :: #force_inline proc(self: ^ComputeCommandEncoder, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { msgSend(nil, self, "setStageInRegionWithIndirectBuffer:indirectBufferOffset:", indirectBuffer, indirectBufferOffset) } @(objc_type=ComputeCommandEncoder, objc_name="setTexture") -ComputeCommandEncoder_setTexture :: proc(self: ^ComputeCommandEncoder, texture: ^NS.Object, index: ^NS.Object) { +ComputeCommandEncoder_setTexture :: #force_inline proc(self: ^ComputeCommandEncoder, texture: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setTexture:atIndex:", texture, index) } @(objc_type=ComputeCommandEncoder, objc_name="setTextures") -ComputeCommandEncoder_setTextures :: proc(self: ^ComputeCommandEncoder, textures: ^^NS.Object, range: NS.Range) { +ComputeCommandEncoder_setTextures :: #force_inline proc(self: ^ComputeCommandEncoder, textures: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setTextures:withRange:", textures, range) } @(objc_type=ComputeCommandEncoder, objc_name="setThreadgroupMemoryLength") -ComputeCommandEncoder_setThreadgroupMemoryLength :: proc(self: ^ComputeCommandEncoder, length: ^NS.Object, index: ^NS.Object) { +ComputeCommandEncoder_setThreadgroupMemoryLength :: #force_inline proc(self: ^ComputeCommandEncoder, length: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setThreadgroupMemoryLength:atIndex:", length, index) } @(objc_type=ComputeCommandEncoder, objc_name="setVisibleFunctionTable") -ComputeCommandEncoder_setVisibleFunctionTable :: proc(self: ^ComputeCommandEncoder, visibleFunctionTable: ^NS.Object, bufferIndex: ^NS.Object) { +ComputeCommandEncoder_setVisibleFunctionTable :: #force_inline proc(self: ^ComputeCommandEncoder, visibleFunctionTable: ^NS.Object, bufferIndex: ^NS.Object) { msgSend(nil, self, "setVisibleFunctionTable:atBufferIndex:", visibleFunctionTable, bufferIndex) } @(objc_type=ComputeCommandEncoder, objc_name="setVisibleFunctionTables") -ComputeCommandEncoder_setVisibleFunctionTables :: proc(self: ^ComputeCommandEncoder, visibleFunctionTables: ^^NS.Object, range: NS.Range) { +ComputeCommandEncoder_setVisibleFunctionTables :: #force_inline proc(self: ^ComputeCommandEncoder, visibleFunctionTables: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setVisibleFunctionTables:withBufferRange:", visibleFunctionTables, range) } @(objc_type=ComputeCommandEncoder, objc_name="updateFence") -ComputeCommandEncoder_updateFence :: proc(self: ^ComputeCommandEncoder, fence: ^NS.Object) { +ComputeCommandEncoder_updateFence :: #force_inline proc(self: ^ComputeCommandEncoder, fence: ^NS.Object) { msgSend(nil, self, "updateFence:", fence) } @(objc_type=ComputeCommandEncoder, objc_name="useHeap") -ComputeCommandEncoder_useHeap :: proc(self: ^ComputeCommandEncoder, heap: ^NS.Object) { +ComputeCommandEncoder_useHeap :: #force_inline proc(self: ^ComputeCommandEncoder, heap: ^NS.Object) { msgSend(nil, self, "useHeap:", heap) } @(objc_type=ComputeCommandEncoder, objc_name="useHeaps") -ComputeCommandEncoder_useHeaps :: proc(self: ^ComputeCommandEncoder, heaps: ^^NS.Object, count: ^NS.Object) { +ComputeCommandEncoder_useHeaps :: #force_inline proc(self: ^ComputeCommandEncoder, heaps: ^^NS.Object, count: ^NS.Object) { msgSend(nil, self, "useHeaps:count:", heaps, count) } @(objc_type=ComputeCommandEncoder, objc_name="useResource") -ComputeCommandEncoder_useResource :: proc(self: ^ComputeCommandEncoder, resource: ^NS.Object, usage: ResourceUsage) { +ComputeCommandEncoder_useResource :: #force_inline proc(self: ^ComputeCommandEncoder, resource: ^NS.Object, usage: ResourceUsage) { msgSend(nil, self, "useResource:usage:", resource, usage) } @(objc_type=ComputeCommandEncoder, objc_name="useResources") -ComputeCommandEncoder_useResources :: proc(self: ^ComputeCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, usage: ResourceUsage) { +ComputeCommandEncoder_useResources :: #force_inline proc(self: ^ComputeCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, usage: ResourceUsage) { msgSend(nil, self, "useResources:count:usage:", resources, count, usage) } @(objc_type=ComputeCommandEncoder, objc_name="waitForFence") -ComputeCommandEncoder_waitForFence :: proc(self: ^ComputeCommandEncoder, fence: ^NS.Object) { +ComputeCommandEncoder_waitForFence :: #force_inline proc(self: ^ComputeCommandEncoder, fence: ^NS.Object) { msgSend(nil, self, "waitForFence:", fence) } @@ -5803,47 +5789,47 @@ Methods: ComputePipelineState :: struct { using _: NS.Object } @(objc_type=ComputePipelineState, objc_name="device") -ComputePipelineState_device :: proc(self: ^ComputePipelineState) -> ^ComputePipelineState { +ComputePipelineState_device :: #force_inline proc(self: ^ComputePipelineState) -> ^ComputePipelineState { return msgSend(^ComputePipelineState, self, "device") } @(objc_type=ComputePipelineState, objc_name="functionHandleWithFunction") -ComputePipelineState_functionHandleWithFunction :: proc(self: ^ComputePipelineState, function: ^NS.Object) -> ^ComputePipelineState { +ComputePipelineState_functionHandleWithFunction :: #force_inline proc(self: ^ComputePipelineState, function: ^NS.Object) -> ^ComputePipelineState { return msgSend(^ComputePipelineState, self, "functionHandleWithFunction:", function) } @(objc_type=ComputePipelineState, objc_name="imageblockMemoryLengthForDimensions") -ComputePipelineState_imageblockMemoryLengthForDimensions :: proc(self: ^ComputePipelineState, imageblockDimensions: Size) -> ^ComputePipelineState { +ComputePipelineState_imageblockMemoryLengthForDimensions :: #force_inline proc(self: ^ComputePipelineState, imageblockDimensions: Size) -> ^ComputePipelineState { return msgSend(^ComputePipelineState, self, "imageblockMemoryLengthForDimensions:", imageblockDimensions) } @(objc_type=ComputePipelineState, objc_name="label") -ComputePipelineState_label :: proc(self: ^ComputePipelineState) -> ^NS.String { +ComputePipelineState_label :: #force_inline proc(self: ^ComputePipelineState) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=ComputePipelineState, objc_name="maxTotalThreadsPerThreadgroup") -ComputePipelineState_maxTotalThreadsPerThreadgroup :: proc(self: ^ComputePipelineState) -> NS.Integer { +ComputePipelineState_maxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^ComputePipelineState) -> NS.Integer { return msgSend(NS.Integer, self, "maxTotalThreadsPerThreadgroup") } @(objc_type=ComputePipelineState, objc_name="newComputePipelineStateWithAdditionalBinaryFunctions") -ComputePipelineState_newComputePipelineStateWithAdditionalBinaryFunctions :: proc(self: ^ComputePipelineState, functions: ^NS.Array, error: ^^NS.Error ) -> ^ComputePipelineState { +ComputePipelineState_newComputePipelineStateWithAdditionalBinaryFunctions :: #force_inline proc(self: ^ComputePipelineState, functions: ^NS.Array, error: ^^NS.Error ) -> ^ComputePipelineState { return msgSend(^ComputePipelineState, self, "newComputePipelineStateWithAdditionalBinaryFunctions:error:", functions, error) } @(objc_type=ComputePipelineState, objc_name="newIntersectionFunctionTableWithDescriptor") -ComputePipelineState_newIntersectionFunctionTableWithDescriptor :: proc(self: ^ComputePipelineState, descriptor: ^IntersectionFunctionTableDescriptor) -> ^ComputePipelineState { +ComputePipelineState_newIntersectionFunctionTableWithDescriptor :: #force_inline proc(self: ^ComputePipelineState, descriptor: ^IntersectionFunctionTableDescriptor) -> ^ComputePipelineState { return msgSend(^ComputePipelineState, self, "newIntersectionFunctionTableWithDescriptor:", descriptor) } @(objc_type=ComputePipelineState, objc_name="newVisibleFunctionTableWithDescriptor") -ComputePipelineState_newVisibleFunctionTableWithDescriptor :: proc(self: ^ComputePipelineState, descriptor: ^VisibleFunctionTableDescriptor) -> ^ComputePipelineState { +ComputePipelineState_newVisibleFunctionTableWithDescriptor :: #force_inline proc(self: ^ComputePipelineState, descriptor: ^VisibleFunctionTableDescriptor) -> ^ComputePipelineState { return msgSend(^ComputePipelineState, self, "newVisibleFunctionTableWithDescriptor:", descriptor) } @(objc_type=ComputePipelineState, objc_name="staticThreadgroupMemoryLength") -ComputePipelineState_staticThreadgroupMemoryLength :: proc(self: ^ComputePipelineState) -> NS.Integer { +ComputePipelineState_staticThreadgroupMemoryLength :: #force_inline proc(self: ^ComputePipelineState) -> NS.Integer { return msgSend(NS.Integer, self, "staticThreadgroupMemoryLength") } @(objc_type=ComputePipelineState, objc_name="supportIndirectCommandBuffers") -ComputePipelineState_supportIndirectCommandBuffers :: proc(self: ^ComputePipelineState) -> BOOL { +ComputePipelineState_supportIndirectCommandBuffers :: #force_inline proc(self: ^ComputePipelineState) -> BOOL { return msgSend(BOOL, self, "supportIndirectCommandBuffers") } @(objc_type=ComputePipelineState, objc_name="threadExecutionWidth") -ComputePipelineState_threadExecutionWidth :: proc(self: ^ComputePipelineState) -> NS.Integer { +ComputePipelineState_threadExecutionWidth :: #force_inline proc(self: ^ComputePipelineState) -> NS.Integer { return msgSend(NS.Integer, self, "threadExecutionWidth") } @@ -5860,7 +5846,7 @@ Methods: Counter :: struct { using _: NS.Object } @(objc_type=Counter, objc_name="name") -Counter_name :: proc(self: ^Counter) -> ^NS.String { +Counter_name :: #force_inline proc(self: ^Counter) -> ^NS.String { return msgSend(^NS.String, self, "name") } @@ -5880,19 +5866,19 @@ Methods: CounterSampleBuffer :: struct { using _: NS.Object } @(objc_type=CounterSampleBuffer, objc_name="device") -CounterSampleBuffer_device :: proc(self: ^CounterSampleBuffer) -> ^CounterSampleBuffer { +CounterSampleBuffer_device :: #force_inline proc(self: ^CounterSampleBuffer) -> ^CounterSampleBuffer { return msgSend(^CounterSampleBuffer, self, "device") } @(objc_type=CounterSampleBuffer, objc_name="label") -CounterSampleBuffer_label :: proc(self: ^CounterSampleBuffer) -> ^NS.String { +CounterSampleBuffer_label :: #force_inline proc(self: ^CounterSampleBuffer) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=CounterSampleBuffer, objc_name="resolveCounterRange") -CounterSampleBuffer_resolveCounterRange :: proc(self: ^CounterSampleBuffer, range: NS.Range) -> ^NS.Data { +CounterSampleBuffer_resolveCounterRange :: #force_inline proc(self: ^CounterSampleBuffer, range: NS.Range) -> ^NS.Data { return msgSend(^NS.Data, self, "resolveCounterRange:", range) } @(objc_type=CounterSampleBuffer, objc_name="sampleCount") -CounterSampleBuffer_sampleCount :: proc(self: ^CounterSampleBuffer) -> NS.Integer { +CounterSampleBuffer_sampleCount :: #force_inline proc(self: ^CounterSampleBuffer) -> NS.Integer { return msgSend(NS.Integer, self, "sampleCount") } @@ -5910,11 +5896,11 @@ Methods: CounterSet :: struct { using _: NS.Object } @(objc_type=CounterSet, objc_name="counters") -CounterSet_counters :: proc(self: ^CounterSet) -> ^NS.Array { +CounterSet_counters :: #force_inline proc(self: ^CounterSet) -> ^NS.Array { return msgSend(^NS.Array, self, "counters") } @(objc_type=CounterSet, objc_name="name") -CounterSet_name :: proc(self: ^CounterSet) -> ^NS.String { +CounterSet_name :: #force_inline proc(self: ^CounterSet) -> ^NS.String { return msgSend(^NS.String, self, "name") } @@ -5932,11 +5918,11 @@ Methods: DepthStencilState :: struct { using _: NS.Object } @(objc_type=DepthStencilState, objc_name="device") -DepthStencilState_device :: proc(self: ^DepthStencilState) -> ^DepthStencilState { +DepthStencilState_device :: #force_inline proc(self: ^DepthStencilState) -> ^DepthStencilState { return msgSend(^DepthStencilState, self, "device") } @(objc_type=DepthStencilState, objc_name="label") -DepthStencilState_label :: proc(self: ^DepthStencilState) -> ^NS.String { +DepthStencilState_label :: #force_inline proc(self: ^DepthStencilState) -> ^NS.String { return msgSend(^NS.String, self, "label") } @@ -6047,383 +6033,383 @@ Methods: Device :: struct { using _: NS.Object } @(objc_type=Device, objc_name="accelerationStructureSizesWithDescriptor") -Device_accelerationStructureSizesWithDescriptor :: proc(self: ^Device, descriptor: ^AccelerationStructureDescriptor) -> AccelerationStructureSizes { +Device_accelerationStructureSizesWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^AccelerationStructureDescriptor) -> AccelerationStructureSizes { return msgSend(AccelerationStructureSizes, self, "accelerationStructureSizesWithDescriptor:", descriptor) } @(objc_type=Device, objc_name="areBarycentricCoordsSupported") -Device_areBarycentricCoordsSupported :: proc(self: ^Device) -> BOOL { +Device_areBarycentricCoordsSupported :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "areBarycentricCoordsSupported") } @(objc_type=Device, objc_name="areProgrammableSamplePositionsSupported") -Device_areProgrammableSamplePositionsSupported :: proc(self: ^Device) -> BOOL { +Device_areProgrammableSamplePositionsSupported :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "areProgrammableSamplePositionsSupported") } @(objc_type=Device, objc_name="areRasterOrderGroupsSupported") -Device_areRasterOrderGroupsSupported :: proc(self: ^Device) -> BOOL { +Device_areRasterOrderGroupsSupported :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "areRasterOrderGroupsSupported") } @(objc_type=Device, objc_name="argumentBuffersSupport") -Device_argumentBuffersSupport :: proc(self: ^Device) -> ArgumentBuffersTier { +Device_argumentBuffersSupport :: #force_inline proc(self: ^Device) -> ArgumentBuffersTier { return msgSend(ArgumentBuffersTier, self, "argumentBuffersSupport") } @(objc_type=Device, objc_name="convertSparsePixelRegions") -Device_convertSparsePixelRegions :: proc(self: ^Device, pixelRegions: ^Region, tileRegions: ^Region, tileSize: Size, mode: SparseTextureRegionAlignmentMode, numRegions: ^NS.Object) { +Device_convertSparsePixelRegions :: #force_inline proc(self: ^Device, pixelRegions: ^Region, tileRegions: ^Region, tileSize: Size, mode: SparseTextureRegionAlignmentMode, numRegions: ^NS.Object) { msgSend(nil, self, "convertSparsePixelRegions:toTileRegions:withTileSize:alignmentMode:numRegions:", pixelRegions, tileRegions, tileSize, mode, numRegions) } @(objc_type=Device, objc_name="convertSparseTileRegions") -Device_convertSparseTileRegions :: proc(self: ^Device, tileRegions: ^Region, pixelRegions: ^Region, tileSize: Size, numRegions: ^NS.Object) { +Device_convertSparseTileRegions :: #force_inline proc(self: ^Device, tileRegions: ^Region, pixelRegions: ^Region, tileSize: Size, numRegions: ^NS.Object) { msgSend(nil, self, "convertSparseTileRegions:toPixelRegions:withTileSize:numRegions:", tileRegions, pixelRegions, tileSize, numRegions) } @(objc_type=Device, objc_name="counterSets") -Device_counterSets :: proc(self: ^Device) -> ^NS.Array { +Device_counterSets :: #force_inline proc(self: ^Device) -> ^NS.Array { return msgSend(^NS.Array, self, "counterSets") } @(objc_type=Device, objc_name="currentAllocatedSize") -Device_currentAllocatedSize :: proc(self: ^Device) -> NS.Integer { +Device_currentAllocatedSize :: #force_inline proc(self: ^Device) -> NS.Integer { return msgSend(NS.Integer, self, "currentAllocatedSize") } @(objc_type=Device, objc_name="getDefaultSamplePositions") -Device_getDefaultSamplePositions :: proc(self: ^Device, positions: ^SamplePosition, count: ^NS.Object) { +Device_getDefaultSamplePositions :: #force_inline proc(self: ^Device, positions: ^SamplePosition, count: ^NS.Object) { msgSend(nil, self, "getDefaultSamplePositions:count:", positions, count) } @(objc_type=Device, objc_name="hasUnifiedMemory") -Device_hasUnifiedMemory :: proc(self: ^Device) -> BOOL { +Device_hasUnifiedMemory :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "hasUnifiedMemory") } @(objc_type=Device, objc_name="heapBufferSizeAndAlignWithLength") -Device_heapBufferSizeAndAlignWithLength :: proc(self: ^Device, length: ^NS.Object, options: ResourceOptions) -> SizeAndAlign { +Device_heapBufferSizeAndAlignWithLength :: #force_inline proc(self: ^Device, length: ^NS.Object, options: ResourceOptions) -> SizeAndAlign { return msgSend(SizeAndAlign, self, "heapBufferSizeAndAlignWithLength:options:", length, options) } @(objc_type=Device, objc_name="heapTextureSizeAndAlignWithDescriptor") -Device_heapTextureSizeAndAlignWithDescriptor :: proc(self: ^Device, desc: ^TextureDescriptor) -> SizeAndAlign { +Device_heapTextureSizeAndAlignWithDescriptor :: #force_inline proc(self: ^Device, desc: ^TextureDescriptor) -> SizeAndAlign { return msgSend(SizeAndAlign, self, "heapTextureSizeAndAlignWithDescriptor:", desc) } @(objc_type=Device, objc_name="isDepth24Stencil8PixelFormatSupported") -Device_isDepth24Stencil8PixelFormatSupported :: proc(self: ^Device) -> BOOL { +Device_isDepth24Stencil8PixelFormatSupported :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "isDepth24Stencil8PixelFormatSupported") } @(objc_type=Device, objc_name="isHeadless") -Device_isHeadless :: proc(self: ^Device) -> BOOL { +Device_isHeadless :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "isHeadless") } @(objc_type=Device, objc_name="isLowPower") -Device_isLowPower :: proc(self: ^Device) -> BOOL { +Device_isLowPower :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "isLowPower") } @(objc_type=Device, objc_name="isRemovable") -Device_isRemovable :: proc(self: ^Device) -> BOOL { +Device_isRemovable :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "isRemovable") } @(objc_type=Device, objc_name="location") -Device_location :: proc(self: ^Device) -> DeviceLocation { +Device_location :: #force_inline proc(self: ^Device) -> DeviceLocation { return msgSend(DeviceLocation, self, "location") } @(objc_type=Device, objc_name="locationNumber") -Device_locationNumber :: proc(self: ^Device) -> NS.Integer { +Device_locationNumber :: #force_inline proc(self: ^Device) -> NS.Integer { return msgSend(NS.Integer, self, "locationNumber") } @(objc_type=Device, objc_name="maxArgumentBufferSamplerCount") -Device_maxArgumentBufferSamplerCount :: proc(self: ^Device) -> NS.Integer { +Device_maxArgumentBufferSamplerCount :: #force_inline proc(self: ^Device) -> NS.Integer { return msgSend(NS.Integer, self, "maxArgumentBufferSamplerCount") } @(objc_type=Device, objc_name="maxBufferLength") -Device_maxBufferLength :: proc(self: ^Device) -> NS.Integer { +Device_maxBufferLength :: #force_inline proc(self: ^Device) -> NS.Integer { return msgSend(NS.Integer, self, "maxBufferLength") } @(objc_type=Device, objc_name="maxThreadgroupMemoryLength") -Device_maxThreadgroupMemoryLength :: proc(self: ^Device) -> NS.Integer { +Device_maxThreadgroupMemoryLength :: #force_inline proc(self: ^Device) -> NS.Integer { return msgSend(NS.Integer, self, "maxThreadgroupMemoryLength") } @(objc_type=Device, objc_name="maxThreadsPerThreadgroup") -Device_maxThreadsPerThreadgroup :: proc(self: ^Device) -> Size { +Device_maxThreadsPerThreadgroup :: #force_inline proc(self: ^Device) -> Size { return msgSend(Size, self, "maxThreadsPerThreadgroup") } @(objc_type=Device, objc_name="maxTransferRate") -Device_maxTransferRate :: proc(self: ^Device) -> u64 { +Device_maxTransferRate :: #force_inline proc(self: ^Device) -> u64 { return msgSend(u64, self, "maxTransferRate") } @(objc_type=Device, objc_name="minimumLinearTextureAlignmentForPixelFormat") -Device_minimumLinearTextureAlignmentForPixelFormat :: proc(self: ^Device, format: PixelFormat) -> ^Device { +Device_minimumLinearTextureAlignmentForPixelFormat :: #force_inline proc(self: ^Device, format: PixelFormat) -> ^Device { return msgSend(^Device, self, "minimumLinearTextureAlignmentForPixelFormat:", format) } @(objc_type=Device, objc_name="minimumTextureBufferAlignmentForPixelFormat") -Device_minimumTextureBufferAlignmentForPixelFormat :: proc(self: ^Device, format: PixelFormat) -> ^Device { +Device_minimumTextureBufferAlignmentForPixelFormat :: #force_inline proc(self: ^Device, format: PixelFormat) -> ^Device { return msgSend(^Device, self, "minimumTextureBufferAlignmentForPixelFormat:", format) } @(objc_type=Device, objc_name="name") -Device_name :: proc(self: ^Device) -> ^NS.String { +Device_name :: #force_inline proc(self: ^Device) -> ^NS.String { return msgSend(^NS.String, self, "name") } @(objc_type=Device, objc_name="newAccelerationStructureWithDescriptor") -Device_newAccelerationStructureWithDescriptor :: proc(self: ^Device, descriptor: ^AccelerationStructureDescriptor) -> ^Device { +Device_newAccelerationStructureWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^AccelerationStructureDescriptor) -> ^Device { return msgSend(^Device, self, "newAccelerationStructureWithDescriptor:", descriptor) } @(objc_type=Device, objc_name="newAccelerationStructureWithSize") -Device_newAccelerationStructureWithSize :: proc(self: ^Device, size: ^NS.Object) -> ^Device { +Device_newAccelerationStructureWithSize :: #force_inline proc(self: ^Device, size: ^NS.Object) -> ^Device { return msgSend(^Device, self, "newAccelerationStructureWithSize:", size) } @(objc_type=Device, objc_name="newArgumentEncoderWithArguments") -Device_newArgumentEncoderWithArguments :: proc(self: ^Device, arguments: ^NS.Array) -> ^Device { +Device_newArgumentEncoderWithArguments :: #force_inline proc(self: ^Device, arguments: ^NS.Array) -> ^Device { return msgSend(^Device, self, "newArgumentEncoderWithArguments:", arguments) } @(objc_type=Device, objc_name="newBinaryArchiveWithDescriptor") -Device_newBinaryArchiveWithDescriptor :: proc(self: ^Device, descriptor: ^BinaryArchiveDescriptor, error: ^^NS.Error ) -> ^Device { +Device_newBinaryArchiveWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^BinaryArchiveDescriptor, error: ^^NS.Error ) -> ^Device { return msgSend(^Device, self, "newBinaryArchiveWithDescriptor:error:", descriptor, error) } @(objc_type=Device, objc_name="newBufferWithBytes") -Device_newBufferWithBytes :: proc(self: ^Device, pointer: rawptr, length: ^NS.Object, options: ResourceOptions) -> ^Device { +Device_newBufferWithBytes :: #force_inline proc(self: ^Device, pointer: rawptr, length: ^NS.Object, options: ResourceOptions) -> ^Device { return msgSend(^Device, self, "newBufferWithBytes:length:options:", pointer, length, options) } @(objc_type=Device, objc_name="newBufferWithBytesNoCopy") -Device_newBufferWithBytesNoCopy :: proc(self: ^Device, pointer: rawptr, length: ^NS.Object, options: ResourceOptions, deallocator: rawptr) -> ^Device { +Device_newBufferWithBytesNoCopy :: #force_inline proc(self: ^Device, pointer: rawptr, length: ^NS.Object, options: ResourceOptions, deallocator: rawptr) -> ^Device { return msgSend(^Device, self, "newBufferWithBytesNoCopy:length:options:deallocator:", pointer, length, options, deallocator) } @(objc_type=Device, objc_name="newBufferWithLength") -Device_newBufferWithLength :: proc(self: ^Device, length: ^NS.Object, options: ResourceOptions) -> ^Device { +Device_newBufferWithLength :: #force_inline proc(self: ^Device, length: ^NS.Object, options: ResourceOptions) -> ^Device { return msgSend(^Device, self, "newBufferWithLength:options:", length, options) } @(objc_type=Device, objc_name="newCommandQueue") -Device_newCommandQueue :: proc(self: ^Device) -> ^Device { +Device_newCommandQueue :: #force_inline proc(self: ^Device) -> ^Device { return msgSend(^Device, self, "newCommandQueue") } @(objc_type=Device, objc_name="newCommandQueueWithMaxCommandBufferCount") -Device_newCommandQueueWithMaxCommandBufferCount :: proc(self: ^Device, maxCommandBufferCount: ^NS.Object) -> ^Device { +Device_newCommandQueueWithMaxCommandBufferCount :: #force_inline proc(self: ^Device, maxCommandBufferCount: ^NS.Object) -> ^Device { return msgSend(^Device, self, "newCommandQueueWithMaxCommandBufferCount:", maxCommandBufferCount) } @(objc_type=Device, objc_name="newComputePipelineStateWithDescriptor_options_completionHandler_") -Device_newComputePipelineStateWithDescriptor_options_completionHandler_ :: proc(self: ^Device, descriptor: ^ComputePipelineDescriptor, options: PipelineOption, completionHandler: NewComputePipelineStateWithReflectionCompletionHandler) { +Device_newComputePipelineStateWithDescriptor_options_completionHandler_ :: #force_inline proc(self: ^Device, descriptor: ^ComputePipelineDescriptor, options: PipelineOption, completionHandler: NewComputePipelineStateWithReflectionCompletionHandler) { msgSend(nil, self, "newComputePipelineStateWithDescriptor:options:completionHandler:", descriptor, options, completionHandler) } @(objc_type=Device, objc_name="newComputePipelineStateWithDescriptor_options_reflection_error_") -Device_newComputePipelineStateWithDescriptor_options_reflection_error_ :: proc(self: ^Device, descriptor: ^ComputePipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedComputePipelineReflection, error: ^^NS.Error ) -> ^Device { +Device_newComputePipelineStateWithDescriptor_options_reflection_error_ :: #force_inline proc(self: ^Device, descriptor: ^ComputePipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedComputePipelineReflection, error: ^^NS.Error ) -> ^Device { return msgSend(^Device, self, "newComputePipelineStateWithDescriptor:options:reflection:error:", descriptor, options, reflection, error) } @(objc_type=Device, objc_name="newComputePipelineStateWithFunction_completionHandler_") -Device_newComputePipelineStateWithFunction_completionHandler_ :: proc(self: ^Device, computeFunction: ^NS.Object, completionHandler: NewComputePipelineStateCompletionHandler) { +Device_newComputePipelineStateWithFunction_completionHandler_ :: #force_inline proc(self: ^Device, computeFunction: ^NS.Object, completionHandler: NewComputePipelineStateCompletionHandler) { msgSend(nil, self, "newComputePipelineStateWithFunction:completionHandler:", computeFunction, completionHandler) } @(objc_type=Device, objc_name="newComputePipelineStateWithFunction_error_") -Device_newComputePipelineStateWithFunction_error_ :: proc(self: ^Device, computeFunction: ^NS.Object, error: ^^NS.Error ) -> ^Device { +Device_newComputePipelineStateWithFunction_error_ :: #force_inline proc(self: ^Device, computeFunction: ^NS.Object, error: ^^NS.Error ) -> ^Device { return msgSend(^Device, self, "newComputePipelineStateWithFunction:error:", computeFunction, error) } @(objc_type=Device, objc_name="newComputePipelineStateWithFunction_options_completionHandler_") -Device_newComputePipelineStateWithFunction_options_completionHandler_ :: proc(self: ^Device, computeFunction: ^NS.Object, options: PipelineOption, completionHandler: NewComputePipelineStateWithReflectionCompletionHandler) { +Device_newComputePipelineStateWithFunction_options_completionHandler_ :: #force_inline proc(self: ^Device, computeFunction: ^NS.Object, options: PipelineOption, completionHandler: NewComputePipelineStateWithReflectionCompletionHandler) { msgSend(nil, self, "newComputePipelineStateWithFunction:options:completionHandler:", computeFunction, options, completionHandler) } @(objc_type=Device, objc_name="newComputePipelineStateWithFunction_options_reflection_error_") -Device_newComputePipelineStateWithFunction_options_reflection_error_ :: proc(self: ^Device, computeFunction: ^NS.Object, options: PipelineOption, reflection: ^AutoreleasedComputePipelineReflection, error: ^^NS.Error ) -> ^Device { +Device_newComputePipelineStateWithFunction_options_reflection_error_ :: #force_inline proc(self: ^Device, computeFunction: ^NS.Object, options: PipelineOption, reflection: ^AutoreleasedComputePipelineReflection, error: ^^NS.Error ) -> ^Device { return msgSend(^Device, self, "newComputePipelineStateWithFunction:options:reflection:error:", computeFunction, options, reflection, error) } @(objc_type=Device, objc_name="newCounterSampleBufferWithDescriptor") -Device_newCounterSampleBufferWithDescriptor :: proc(self: ^Device, descriptor: ^CounterSampleBufferDescriptor, error: ^^NS.Error ) -> ^Device { +Device_newCounterSampleBufferWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^CounterSampleBufferDescriptor, error: ^^NS.Error ) -> ^Device { return msgSend(^Device, self, "newCounterSampleBufferWithDescriptor:error:", descriptor, error) } @(objc_type=Device, objc_name="newDefaultLibrary") -Device_newDefaultLibrary :: proc(self: ^Device) -> ^Device { +Device_newDefaultLibrary :: #force_inline proc(self: ^Device) -> ^Device { return msgSend(^Device, self, "newDefaultLibrary") } @(objc_type=Device, objc_name="newDefaultLibraryWithBundle") -Device_newDefaultLibraryWithBundle :: proc(self: ^Device, bundle: ^NS.Bundle, error: ^^NS.Error ) -> ^Device { +Device_newDefaultLibraryWithBundle :: #force_inline proc(self: ^Device, bundle: ^NS.Bundle, error: ^^NS.Error ) -> ^Device { return msgSend(^Device, self, "newDefaultLibraryWithBundle:error:", bundle, error) } @(objc_type=Device, objc_name="newDepthStencilStateWithDescriptor") -Device_newDepthStencilStateWithDescriptor :: proc(self: ^Device, descriptor: ^DepthStencilDescriptor) -> ^Device { +Device_newDepthStencilStateWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^DepthStencilDescriptor) -> ^Device { return msgSend(^Device, self, "newDepthStencilStateWithDescriptor:", descriptor) } @(objc_type=Device, objc_name="newDynamicLibrary") -Device_newDynamicLibrary :: proc(self: ^Device, library: ^NS.Object, error: ^^NS.Error ) -> ^Device { +Device_newDynamicLibrary :: #force_inline proc(self: ^Device, library: ^NS.Object, error: ^^NS.Error ) -> ^Device { return msgSend(^Device, self, "newDynamicLibrary:error:", library, error) } @(objc_type=Device, objc_name="newDynamicLibraryWithURL") -Device_newDynamicLibraryWithURL :: proc(self: ^Device, url: ^NS.URL, error: ^^NS.Error ) -> ^Device { +Device_newDynamicLibraryWithURL :: #force_inline proc(self: ^Device, url: ^NS.URL, error: ^^NS.Error ) -> ^Device { return msgSend(^Device, self, "newDynamicLibraryWithURL:error:", url, error) } @(objc_type=Device, objc_name="newEvent") -Device_newEvent :: proc(self: ^Device) -> ^Device { +Device_newEvent :: #force_inline proc(self: ^Device) -> ^Device { return msgSend(^Device, self, "newEvent") } @(objc_type=Device, objc_name="newFence") -Device_newFence :: proc(self: ^Device) -> ^Device { +Device_newFence :: #force_inline proc(self: ^Device) -> ^Device { return msgSend(^Device, self, "newFence") } @(objc_type=Device, objc_name="newHeapWithDescriptor") -Device_newHeapWithDescriptor :: proc(self: ^Device, descriptor: ^HeapDescriptor) -> ^Device { +Device_newHeapWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^HeapDescriptor) -> ^Device { return msgSend(^Device, self, "newHeapWithDescriptor:", descriptor) } @(objc_type=Device, objc_name="newIndirectCommandBufferWithDescriptor") -Device_newIndirectCommandBufferWithDescriptor :: proc(self: ^Device, descriptor: ^IndirectCommandBufferDescriptor, maxCount: ^NS.Object, options: ResourceOptions) -> ^Device { +Device_newIndirectCommandBufferWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^IndirectCommandBufferDescriptor, maxCount: ^NS.Object, options: ResourceOptions) -> ^Device { return msgSend(^Device, self, "newIndirectCommandBufferWithDescriptor:maxCommandCount:options:", descriptor, maxCount, options) } @(objc_type=Device, objc_name="newLibraryWithData") -Device_newLibraryWithData :: proc(self: ^Device, data: ^NS.Object, error: ^^NS.Error ) -> ^Device { +Device_newLibraryWithData :: #force_inline proc(self: ^Device, data: ^NS.Object, error: ^^NS.Error ) -> ^Device { return msgSend(^Device, self, "newLibraryWithData:error:", data, error) } @(objc_type=Device, objc_name="newLibraryWithFile") -Device_newLibraryWithFile :: proc(self: ^Device, filepath: ^NS.String, error: ^^NS.Error ) -> ^Device { +Device_newLibraryWithFile :: #force_inline proc(self: ^Device, filepath: ^NS.String, error: ^^NS.Error ) -> ^Device { return msgSend(^Device, self, "newLibraryWithFile:error:", filepath, error) } @(objc_type=Device, objc_name="newLibraryWithSource_options_completionHandler_") -Device_newLibraryWithSource_options_completionHandler_ :: proc(self: ^Device, source: ^NS.String, options: ^CompileOptions, completionHandler: NewLibraryCompletionHandler) { +Device_newLibraryWithSource_options_completionHandler_ :: #force_inline proc(self: ^Device, source: ^NS.String, options: ^CompileOptions, completionHandler: NewLibraryCompletionHandler) { msgSend(nil, self, "newLibraryWithSource:options:completionHandler:", source, options, completionHandler) } @(objc_type=Device, objc_name="newLibraryWithSource_options_error_") -Device_newLibraryWithSource_options_error_ :: proc(self: ^Device, source: ^NS.String, options: ^CompileOptions, error: ^^NS.Error ) -> ^Device { +Device_newLibraryWithSource_options_error_ :: #force_inline proc(self: ^Device, source: ^NS.String, options: ^CompileOptions, error: ^^NS.Error ) -> ^Device { return msgSend(^Device, self, "newLibraryWithSource:options:error:", source, options, error) } @(objc_type=Device, objc_name="newLibraryWithURL") -Device_newLibraryWithURL :: proc(self: ^Device, url: ^NS.URL, error: ^^NS.Error ) -> ^Device { +Device_newLibraryWithURL :: #force_inline proc(self: ^Device, url: ^NS.URL, error: ^^NS.Error ) -> ^Device { return msgSend(^Device, self, "newLibraryWithURL:error:", url, error) } @(objc_type=Device, objc_name="newRasterizationRateMapWithDescriptor") -Device_newRasterizationRateMapWithDescriptor :: proc(self: ^Device, descriptor: ^RasterizationRateMapDescriptor) -> ^Device { +Device_newRasterizationRateMapWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^RasterizationRateMapDescriptor) -> ^Device { return msgSend(^Device, self, "newRasterizationRateMapWithDescriptor:", descriptor) } @(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptor_completionHandler_") -Device_newRenderPipelineStateWithDescriptor_completionHandler_ :: proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, completionHandler: NewRenderPipelineStateCompletionHandler) { +Device_newRenderPipelineStateWithDescriptor_completionHandler_ :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, completionHandler: NewRenderPipelineStateCompletionHandler) { msgSend(nil, self, "newRenderPipelineStateWithDescriptor:completionHandler:", descriptor, completionHandler) } @(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptor_error_") -Device_newRenderPipelineStateWithDescriptor_error_ :: proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, error: ^^NS.Error ) -> ^Device { +Device_newRenderPipelineStateWithDescriptor_error_ :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, error: ^^NS.Error ) -> ^Device { return msgSend(^Device, self, "newRenderPipelineStateWithDescriptor:error:", descriptor, error) } @(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptor_options_completionHandler_") -Device_newRenderPipelineStateWithDescriptor_options_completionHandler_ :: proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, options: PipelineOption, completionHandler: NewRenderPipelineStateWithReflectionCompletionHandler) { +Device_newRenderPipelineStateWithDescriptor_options_completionHandler_ :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, options: PipelineOption, completionHandler: NewRenderPipelineStateWithReflectionCompletionHandler) { msgSend(nil, self, "newRenderPipelineStateWithDescriptor:options:completionHandler:", descriptor, options, completionHandler) } @(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptor_options_reflection_error_") -Device_newRenderPipelineStateWithDescriptor_options_reflection_error_ :: proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedRenderPipelineReflection, error: ^^NS.Error ) -> ^Device { +Device_newRenderPipelineStateWithDescriptor_options_reflection_error_ :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedRenderPipelineReflection, error: ^^NS.Error ) -> ^Device { return msgSend(^Device, self, "newRenderPipelineStateWithDescriptor:options:reflection:error:", descriptor, options, reflection, error) } @(objc_type=Device, objc_name="newRenderPipelineStateWithTileDescriptor_options_completionHandler_") -Device_newRenderPipelineStateWithTileDescriptor_options_completionHandler_ :: proc(self: ^Device, descriptor: ^TileRenderPipelineDescriptor, options: PipelineOption, completionHandler: NewRenderPipelineStateWithReflectionCompletionHandler) { +Device_newRenderPipelineStateWithTileDescriptor_options_completionHandler_ :: #force_inline proc(self: ^Device, descriptor: ^TileRenderPipelineDescriptor, options: PipelineOption, completionHandler: NewRenderPipelineStateWithReflectionCompletionHandler) { msgSend(nil, self, "newRenderPipelineStateWithTileDescriptor:options:completionHandler:", descriptor, options, completionHandler) } @(objc_type=Device, objc_name="newRenderPipelineStateWithTileDescriptor_options_reflection_error_") -Device_newRenderPipelineStateWithTileDescriptor_options_reflection_error_ :: proc(self: ^Device, descriptor: ^TileRenderPipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedRenderPipelineReflection, error: ^^NS.Error ) -> ^Device { +Device_newRenderPipelineStateWithTileDescriptor_options_reflection_error_ :: #force_inline proc(self: ^Device, descriptor: ^TileRenderPipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedRenderPipelineReflection, error: ^^NS.Error ) -> ^Device { return msgSend(^Device, self, "newRenderPipelineStateWithTileDescriptor:options:reflection:error:", descriptor, options, reflection, error) } @(objc_type=Device, objc_name="newSamplerStateWithDescriptor") -Device_newSamplerStateWithDescriptor :: proc(self: ^Device, descriptor: ^SamplerDescriptor) -> ^Device { +Device_newSamplerStateWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^SamplerDescriptor) -> ^Device { return msgSend(^Device, self, "newSamplerStateWithDescriptor:", descriptor) } @(objc_type=Device, objc_name="newSharedEvent") -Device_newSharedEvent :: proc(self: ^Device) -> ^Device { +Device_newSharedEvent :: #force_inline proc(self: ^Device) -> ^Device { return msgSend(^Device, self, "newSharedEvent") } @(objc_type=Device, objc_name="newSharedEventWithHandle") -Device_newSharedEventWithHandle :: proc(self: ^Device, sharedEventHandle: ^SharedEventHandle) -> ^Device { +Device_newSharedEventWithHandle :: #force_inline proc(self: ^Device, sharedEventHandle: ^SharedEventHandle) -> ^Device { return msgSend(^Device, self, "newSharedEventWithHandle:", sharedEventHandle) } @(objc_type=Device, objc_name="newSharedTextureWithDescriptor") -Device_newSharedTextureWithDescriptor :: proc(self: ^Device, descriptor: ^TextureDescriptor) -> ^Device { +Device_newSharedTextureWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^TextureDescriptor) -> ^Device { return msgSend(^Device, self, "newSharedTextureWithDescriptor:", descriptor) } @(objc_type=Device, objc_name="newSharedTextureWithHandle") -Device_newSharedTextureWithHandle :: proc(self: ^Device, sharedHandle: ^SharedTextureHandle) -> ^Device { +Device_newSharedTextureWithHandle :: #force_inline proc(self: ^Device, sharedHandle: ^SharedTextureHandle) -> ^Device { return msgSend(^Device, self, "newSharedTextureWithHandle:", sharedHandle) } @(objc_type=Device, objc_name="newTextureWithDescriptor") -Device_newTextureWithDescriptor :: proc(self: ^Device, desc: ^TextureDescriptor) -> ^Device { +Device_newTextureWithDescriptor :: #force_inline proc(self: ^Device, desc: ^TextureDescriptor) -> ^Device { return msgSend(^Device, self, "newTextureWithDescriptor:", desc) } @(objc_type=Device, objc_name="newTextureWithDescriptor_iosurface_plane_") -Device_newTextureWithDescriptor_iosurface_plane_ :: proc(self: ^Device, descriptor: ^TextureDescriptor, iosurface: IOSurfaceRef, plane: ^NS.Object) -> ^Device { +Device_newTextureWithDescriptor_iosurface_plane_ :: #force_inline proc(self: ^Device, descriptor: ^TextureDescriptor, iosurface: IOSurfaceRef, plane: ^NS.Object) -> ^Device { return msgSend(^Device, self, "newTextureWithDescriptor:iosurface:plane:", descriptor, iosurface, plane) } @(objc_type=Device, objc_name="peerCount") -Device_peerCount :: proc(self: ^Device) -> u32 { +Device_peerCount :: #force_inline proc(self: ^Device) -> u32 { return msgSend(u32, self, "peerCount") } @(objc_type=Device, objc_name="peerGroupID") -Device_peerGroupID :: proc(self: ^Device) -> u64 { +Device_peerGroupID :: #force_inline proc(self: ^Device) -> u64 { return msgSend(u64, self, "peerGroupID") } @(objc_type=Device, objc_name="peerIndex") -Device_peerIndex :: proc(self: ^Device) -> u32 { +Device_peerIndex :: #force_inline proc(self: ^Device) -> u32 { return msgSend(u32, self, "peerIndex") } @(objc_type=Device, objc_name="readWriteTextureSupport") -Device_readWriteTextureSupport :: proc(self: ^Device) -> ReadWriteTextureTier { +Device_readWriteTextureSupport :: #force_inline proc(self: ^Device) -> ReadWriteTextureTier { return msgSend(ReadWriteTextureTier, self, "readWriteTextureSupport") } @(objc_type=Device, objc_name="recommendedMaxWorkingSetSize") -Device_recommendedMaxWorkingSetSize :: proc(self: ^Device) -> u64 { +Device_recommendedMaxWorkingSetSize :: #force_inline proc(self: ^Device) -> u64 { return msgSend(u64, self, "recommendedMaxWorkingSetSize") } @(objc_type=Device, objc_name="registryID") -Device_registryID :: proc(self: ^Device) -> u64 { +Device_registryID :: #force_inline proc(self: ^Device) -> u64 { return msgSend(u64, self, "registryID") } @(objc_type=Device, objc_name="sampleTimestamps") -Device_sampleTimestamps :: proc(self: ^Device, cpuTimestamp: ^Timestamp, gpuTimestamp: ^Timestamp) { +Device_sampleTimestamps :: #force_inline proc(self: ^Device, cpuTimestamp: ^Timestamp, gpuTimestamp: ^Timestamp) { msgSend(nil, self, "sampleTimestamps:gpuTimestamp:", cpuTimestamp, gpuTimestamp) } @(objc_type=Device, objc_name="sparseTileSizeInBytes") -Device_sparseTileSizeInBytes :: proc(self: ^Device) -> NS.Integer { +Device_sparseTileSizeInBytes :: #force_inline proc(self: ^Device) -> NS.Integer { return msgSend(NS.Integer, self, "sparseTileSizeInBytes") } @(objc_type=Device, objc_name="sparseTileSizeWithTextureType") -Device_sparseTileSizeWithTextureType :: proc(self: ^Device, textureType: TextureType, pixelFormat: PixelFormat, sampleCount: ^NS.Object) -> Size { +Device_sparseTileSizeWithTextureType :: #force_inline proc(self: ^Device, textureType: TextureType, pixelFormat: PixelFormat, sampleCount: ^NS.Object) -> Size { return msgSend(Size, self, "sparseTileSizeWithTextureType:pixelFormat:sampleCount:", textureType, pixelFormat, sampleCount) } @(objc_type=Device, objc_name="supports32BitFloatFiltering") -Device_supports32BitFloatFiltering :: proc(self: ^Device) -> BOOL { +Device_supports32BitFloatFiltering :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "supports32BitFloatFiltering") } @(objc_type=Device, objc_name="supports32BitMSAA") -Device_supports32BitMSAA :: proc(self: ^Device) -> BOOL { +Device_supports32BitMSAA :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "supports32BitMSAA") } @(objc_type=Device, objc_name="supportsBCTextureCompression") -Device_supportsBCTextureCompression :: proc(self: ^Device) -> BOOL { +Device_supportsBCTextureCompression :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "supportsBCTextureCompression") } @(objc_type=Device, objc_name="supportsCounterSampling") -Device_supportsCounterSampling :: proc(self: ^Device, samplingPoint: CounterSamplingPoint) -> BOOL { +Device_supportsCounterSampling :: #force_inline proc(self: ^Device, samplingPoint: CounterSamplingPoint) -> BOOL { return msgSend(BOOL, self, "supportsCounterSampling:", samplingPoint) } @(objc_type=Device, objc_name="supportsDynamicLibraries") -Device_supportsDynamicLibraries :: proc(self: ^Device) -> BOOL { +Device_supportsDynamicLibraries :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "supportsDynamicLibraries") } @(objc_type=Device, objc_name="supportsFamily") -Device_supportsFamily :: proc(self: ^Device, gpuFamily: GPUFamily) -> BOOL { +Device_supportsFamily :: #force_inline proc(self: ^Device, gpuFamily: GPUFamily) -> BOOL { return msgSend(BOOL, self, "supportsFamily:", gpuFamily) } @(objc_type=Device, objc_name="supportsFeatureSet") -Device_supportsFeatureSet :: proc(self: ^Device, featureSet: FeatureSet) -> BOOL { +Device_supportsFeatureSet :: #force_inline proc(self: ^Device, featureSet: FeatureSet) -> BOOL { return msgSend(BOOL, self, "supportsFeatureSet:", featureSet) } @(objc_type=Device, objc_name="supportsFunctionPointers") -Device_supportsFunctionPointers :: proc(self: ^Device) -> BOOL { +Device_supportsFunctionPointers :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "supportsFunctionPointers") } @(objc_type=Device, objc_name="supportsPullModelInterpolation") -Device_supportsPullModelInterpolation :: proc(self: ^Device) -> BOOL { +Device_supportsPullModelInterpolation :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "supportsPullModelInterpolation") } @(objc_type=Device, objc_name="supportsQueryTextureLOD") -Device_supportsQueryTextureLOD :: proc(self: ^Device) -> BOOL { +Device_supportsQueryTextureLOD :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "supportsQueryTextureLOD") } @(objc_type=Device, objc_name="supportsRasterizationRateMapWithLayerCount") -Device_supportsRasterizationRateMapWithLayerCount :: proc(self: ^Device, layerCount: ^NS.Object) -> BOOL { +Device_supportsRasterizationRateMapWithLayerCount :: #force_inline proc(self: ^Device, layerCount: ^NS.Object) -> BOOL { return msgSend(BOOL, self, "supportsRasterizationRateMapWithLayerCount:", layerCount) } @(objc_type=Device, objc_name="supportsRaytracing") -Device_supportsRaytracing :: proc(self: ^Device) -> BOOL { +Device_supportsRaytracing :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "supportsRaytracing") } @(objc_type=Device, objc_name="supportsShaderBarycentricCoordinates") -Device_supportsShaderBarycentricCoordinates :: proc(self: ^Device) -> BOOL { +Device_supportsShaderBarycentricCoordinates :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "supportsShaderBarycentricCoordinates") } @(objc_type=Device, objc_name="supportsTextureSampleCount") -Device_supportsTextureSampleCount :: proc(self: ^Device, sampleCount: ^NS.Object) -> BOOL { +Device_supportsTextureSampleCount :: #force_inline proc(self: ^Device, sampleCount: ^NS.Object) -> BOOL { return msgSend(BOOL, self, "supportsTextureSampleCount:", sampleCount) } @(objc_type=Device, objc_name="supportsVertexAmplificationCount") -Device_supportsVertexAmplificationCount :: proc(self: ^Device, count: ^NS.Object) -> BOOL { +Device_supportsVertexAmplificationCount :: #force_inline proc(self: ^Device, count: ^NS.Object) -> BOOL { return msgSend(BOOL, self, "supportsVertexAmplificationCount:", count) } @@ -6445,27 +6431,27 @@ Methods: Drawable :: struct { using _: NS.Object } @(objc_type=Drawable, objc_name="addPresentedHandler") -Drawable_addPresentedHandler :: proc(self: ^Drawable, block: DrawablePresentedHandler) { +Drawable_addPresentedHandler :: #force_inline proc(self: ^Drawable, block: DrawablePresentedHandler) { msgSend(nil, self, "addPresentedHandler:", block) } @(objc_type=Drawable, objc_name="drawableID") -Drawable_drawableID :: proc(self: ^Drawable) -> NS.Integer { +Drawable_drawableID :: #force_inline proc(self: ^Drawable) -> NS.Integer { return msgSend(NS.Integer, self, "drawableID") } @(objc_type=Drawable, objc_name="present") -Drawable_present :: proc(self: ^Drawable) { +Drawable_present :: #force_inline proc(self: ^Drawable) { msgSend(nil, self, "present") } @(objc_type=Drawable, objc_name="presentAfterMinimumDuration") -Drawable_presentAfterMinimumDuration :: proc(self: ^Drawable, duration: CFTimeInterval) { +Drawable_presentAfterMinimumDuration :: #force_inline proc(self: ^Drawable, duration: CFTimeInterval) { msgSend(nil, self, "presentAfterMinimumDuration:", duration) } @(objc_type=Drawable, objc_name="presentAtTime") -Drawable_presentAtTime :: proc(self: ^Drawable, presentationTime: CFTimeInterval) { +Drawable_presentAtTime :: #force_inline proc(self: ^Drawable, presentationTime: CFTimeInterval) { msgSend(nil, self, "presentAtTime:", presentationTime) } @(objc_type=Drawable, objc_name="presentedTime") -Drawable_presentedTime :: proc(self: ^Drawable) -> CFTimeInterval { +Drawable_presentedTime :: #force_inline proc(self: ^Drawable) -> CFTimeInterval { return msgSend(CFTimeInterval, self, "presentedTime") } @@ -6486,23 +6472,23 @@ Methods: DynamicLibrary :: struct { using _: NS.Object } @(objc_type=DynamicLibrary, objc_name="device") -DynamicLibrary_device :: proc(self: ^DynamicLibrary) -> ^DynamicLibrary { +DynamicLibrary_device :: #force_inline proc(self: ^DynamicLibrary) -> ^DynamicLibrary { return msgSend(^DynamicLibrary, self, "device") } @(objc_type=DynamicLibrary, objc_name="installName") -DynamicLibrary_installName :: proc(self: ^DynamicLibrary) -> ^NS.String { +DynamicLibrary_installName :: #force_inline proc(self: ^DynamicLibrary) -> ^NS.String { return msgSend(^NS.String, self, "installName") } @(objc_type=DynamicLibrary, objc_name="label") -DynamicLibrary_label :: proc(self: ^DynamicLibrary) -> ^NS.String { +DynamicLibrary_label :: #force_inline proc(self: ^DynamicLibrary) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=DynamicLibrary, objc_name="serializeToURL") -DynamicLibrary_serializeToURL :: proc(self: ^DynamicLibrary, url: ^NS.URL, error: ^^NS.Error ) -> BOOL { +DynamicLibrary_serializeToURL :: #force_inline proc(self: ^DynamicLibrary, url: ^NS.URL, error: ^^NS.Error ) -> BOOL { return msgSend(BOOL, self, "serializeToURL:error:", url, error) } @(objc_type=DynamicLibrary, objc_name="setLabel") -DynamicLibrary_setLabel :: proc(self: ^DynamicLibrary, label: ^NS.String) { +DynamicLibrary_setLabel :: #force_inline proc(self: ^DynamicLibrary, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @@ -6521,15 +6507,15 @@ Methods: Event :: struct { using _: NS.Object } @(objc_type=Event, objc_name="device") -Event_device :: proc(self: ^Event) -> ^Event { +Event_device :: #force_inline proc(self: ^Event) -> ^Event { return msgSend(^Event, self, "device") } @(objc_type=Event, objc_name="label") -Event_label :: proc(self: ^Event) -> ^NS.String { +Event_label :: #force_inline proc(self: ^Event) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=Event, objc_name="setLabel") -Event_setLabel :: proc(self: ^Event, label: ^NS.String) { +Event_setLabel :: #force_inline proc(self: ^Event, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @@ -6548,15 +6534,15 @@ Methods: Fence :: struct { using _: NS.Object } @(objc_type=Fence, objc_name="device") -Fence_device :: proc(self: ^Fence) -> ^Fence { +Fence_device :: #force_inline proc(self: ^Fence) -> ^Fence { return msgSend(^Fence, self, "device") } @(objc_type=Fence, objc_name="label") -Fence_label :: proc(self: ^Fence) -> ^NS.String { +Fence_label :: #force_inline proc(self: ^Fence) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=Fence, objc_name="setLabel") -Fence_setLabel :: proc(self: ^Fence, label: ^NS.String) { +Fence_setLabel :: #force_inline proc(self: ^Fence, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @@ -6585,55 +6571,55 @@ Methods: Function :: struct { using _: NS.Object } @(objc_type=Function, objc_name="device") -Function_device :: proc(self: ^Function) -> ^Function { +Function_device :: #force_inline proc(self: ^Function) -> ^Function { return msgSend(^Function, self, "device") } @(objc_type=Function, objc_name="functionConstantsDictionary") -Function_functionConstantsDictionary :: proc(self: ^Function) -> ^NS.Dictionary { +Function_functionConstantsDictionary :: #force_inline proc(self: ^Function) -> ^NS.Dictionary { return msgSend(^NS.Dictionary, self, "functionConstantsDictionary") } @(objc_type=Function, objc_name="functionType") -Function_functionType :: proc(self: ^Function) -> FunctionType { +Function_functionType :: #force_inline proc(self: ^Function) -> FunctionType { return msgSend(FunctionType, self, "functionType") } @(objc_type=Function, objc_name="label") -Function_label :: proc(self: ^Function) -> ^NS.String { +Function_label :: #force_inline proc(self: ^Function) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=Function, objc_name="name") -Function_name :: proc(self: ^Function) -> ^NS.String { +Function_name :: #force_inline proc(self: ^Function) -> ^NS.String { return msgSend(^NS.String, self, "name") } @(objc_type=Function, objc_name="newArgumentEncoderWithBufferIndex") -Function_newArgumentEncoderWithBufferIndex :: proc(self: ^Function, bufferIndex: ^NS.Object) -> ^Function { +Function_newArgumentEncoderWithBufferIndex :: #force_inline proc(self: ^Function, bufferIndex: ^NS.Object) -> ^Function { return msgSend(^Function, self, "newArgumentEncoderWithBufferIndex:", bufferIndex) } @(objc_type=Function, objc_name="newArgumentEncoderWithBufferIndex_reflection_") -Function_newArgumentEncoderWithBufferIndex_reflection_ :: proc(self: ^Function, bufferIndex: ^NS.Object, reflection: ^AutoreleasedArgument) -> ^Function { +Function_newArgumentEncoderWithBufferIndex_reflection_ :: #force_inline proc(self: ^Function, bufferIndex: ^NS.Object, reflection: ^AutoreleasedArgument) -> ^Function { return msgSend(^Function, self, "newArgumentEncoderWithBufferIndex:reflection:", bufferIndex, reflection) } @(objc_type=Function, objc_name="options") -Function_options :: proc(self: ^Function) -> FunctionOptions { +Function_options :: #force_inline proc(self: ^Function) -> FunctionOptions { return msgSend(FunctionOptions, self, "options") } @(objc_type=Function, objc_name="patchControlPointCount") -Function_patchControlPointCount :: proc(self: ^Function) -> NS.Integer { +Function_patchControlPointCount :: #force_inline proc(self: ^Function) -> NS.Integer { return msgSend(NS.Integer, self, "patchControlPointCount") } @(objc_type=Function, objc_name="patchType") -Function_patchType :: proc(self: ^Function) -> PatchType { +Function_patchType :: #force_inline proc(self: ^Function) -> PatchType { return msgSend(PatchType, self, "patchType") } @(objc_type=Function, objc_name="setLabel") -Function_setLabel :: proc(self: ^Function, label: ^NS.String) { +Function_setLabel :: #force_inline proc(self: ^Function, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @(objc_type=Function, objc_name="stageInputAttributes") -Function_stageInputAttributes :: proc(self: ^Function) -> ^NS.Array { +Function_stageInputAttributes :: #force_inline proc(self: ^Function) -> ^NS.Array { return msgSend(^NS.Array, self, "stageInputAttributes") } @(objc_type=Function, objc_name="vertexAttributes") -Function_vertexAttributes :: proc(self: ^Function) -> ^NS.Array { +Function_vertexAttributes :: #force_inline proc(self: ^Function) -> ^NS.Array { return msgSend(^NS.Array, self, "vertexAttributes") } @@ -6652,15 +6638,15 @@ Methods: FunctionHandle :: struct { using _: NS.Object } @(objc_type=FunctionHandle, objc_name="device") -FunctionHandle_device :: proc(self: ^FunctionHandle) -> ^FunctionHandle { +FunctionHandle_device :: #force_inline proc(self: ^FunctionHandle) -> ^FunctionHandle { return msgSend(^FunctionHandle, self, "device") } @(objc_type=FunctionHandle, objc_name="functionType") -FunctionHandle_functionType :: proc(self: ^FunctionHandle) -> FunctionType { +FunctionHandle_functionType :: #force_inline proc(self: ^FunctionHandle) -> FunctionType { return msgSend(FunctionType, self, "functionType") } @(objc_type=FunctionHandle, objc_name="name") -FunctionHandle_name :: proc(self: ^FunctionHandle) -> ^NS.String { +FunctionHandle_name :: #force_inline proc(self: ^FunctionHandle) -> ^NS.String { return msgSend(^NS.String, self, "name") } @@ -6680,19 +6666,19 @@ Methods: FunctionLog :: struct { using _: NS.Object } @(objc_type=FunctionLog, objc_name="debugLocation") -FunctionLog_debugLocation :: proc(self: ^FunctionLog) -> ^FunctionLog { +FunctionLog_debugLocation :: #force_inline proc(self: ^FunctionLog) -> ^FunctionLog { return msgSend(^FunctionLog, self, "debugLocation") } @(objc_type=FunctionLog, objc_name="encoderLabel") -FunctionLog_encoderLabel :: proc(self: ^FunctionLog) -> ^NS.String { +FunctionLog_encoderLabel :: #force_inline proc(self: ^FunctionLog) -> ^NS.String { return msgSend(^NS.String, self, "encoderLabel") } @(objc_type=FunctionLog, objc_name="function") -FunctionLog_function :: proc(self: ^FunctionLog) -> ^FunctionLog { +FunctionLog_function :: #force_inline proc(self: ^FunctionLog) -> ^FunctionLog { return msgSend(^FunctionLog, self, "function") } @(objc_type=FunctionLog, objc_name="type") -FunctionLog_type :: proc(self: ^FunctionLog) -> FunctionLogType { +FunctionLog_type :: #force_inline proc(self: ^FunctionLog) -> FunctionLogType { return msgSend(FunctionLogType, self, "type") } @@ -6712,19 +6698,19 @@ Methods: FunctionLogDebugLocation :: struct { using _: NS.Object } @(objc_type=FunctionLogDebugLocation, objc_name="URL") -FunctionLogDebugLocation_URL :: proc(self: ^FunctionLogDebugLocation) -> ^NS.URL { +FunctionLogDebugLocation_URL :: #force_inline proc(self: ^FunctionLogDebugLocation) -> ^NS.URL { return msgSend(^NS.URL, self, "URL") } @(objc_type=FunctionLogDebugLocation, objc_name="column") -FunctionLogDebugLocation_column :: proc(self: ^FunctionLogDebugLocation) -> NS.Integer { +FunctionLogDebugLocation_column :: #force_inline proc(self: ^FunctionLogDebugLocation) -> NS.Integer { return msgSend(NS.Integer, self, "column") } @(objc_type=FunctionLogDebugLocation, objc_name="functionName") -FunctionLogDebugLocation_functionName :: proc(self: ^FunctionLogDebugLocation) -> ^NS.String { +FunctionLogDebugLocation_functionName :: #force_inline proc(self: ^FunctionLogDebugLocation) -> ^NS.String { return msgSend(^NS.String, self, "functionName") } @(objc_type=FunctionLogDebugLocation, objc_name="line") -FunctionLogDebugLocation_line :: proc(self: ^FunctionLogDebugLocation) -> NS.Integer { +FunctionLogDebugLocation_line :: #force_inline proc(self: ^FunctionLogDebugLocation) -> NS.Integer { return msgSend(NS.Integer, self, "line") } @@ -6757,71 +6743,71 @@ Methods: Heap :: struct { using _: NS.Object } @(objc_type=Heap, objc_name="cpuCacheMode") -Heap_cpuCacheMode :: proc(self: ^Heap) -> CPUCacheMode { +Heap_cpuCacheMode :: #force_inline proc(self: ^Heap) -> CPUCacheMode { return msgSend(CPUCacheMode, self, "cpuCacheMode") } @(objc_type=Heap, objc_name="currentAllocatedSize") -Heap_currentAllocatedSize :: proc(self: ^Heap) -> NS.Integer { +Heap_currentAllocatedSize :: #force_inline proc(self: ^Heap) -> NS.Integer { return msgSend(NS.Integer, self, "currentAllocatedSize") } @(objc_type=Heap, objc_name="device") -Heap_device :: proc(self: ^Heap) -> ^Heap { +Heap_device :: #force_inline proc(self: ^Heap) -> ^Heap { return msgSend(^Heap, self, "device") } @(objc_type=Heap, objc_name="hazardTrackingMode") -Heap_hazardTrackingMode :: proc(self: ^Heap) -> HazardTrackingMode { +Heap_hazardTrackingMode :: #force_inline proc(self: ^Heap) -> HazardTrackingMode { return msgSend(HazardTrackingMode, self, "hazardTrackingMode") } @(objc_type=Heap, objc_name="label") -Heap_label :: proc(self: ^Heap) -> ^NS.String { +Heap_label :: #force_inline proc(self: ^Heap) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=Heap, objc_name="maxAvailableSizeWithAlignment") -Heap_maxAvailableSizeWithAlignment :: proc(self: ^Heap, alignment: ^NS.Object) -> ^Heap { +Heap_maxAvailableSizeWithAlignment :: #force_inline proc(self: ^Heap, alignment: ^NS.Object) -> ^Heap { return msgSend(^Heap, self, "maxAvailableSizeWithAlignment:", alignment) } @(objc_type=Heap, objc_name="newBufferWithLength") -Heap_newBufferWithLength :: proc(self: ^Heap, length: ^NS.Object, options: ResourceOptions) -> ^Heap { +Heap_newBufferWithLength :: #force_inline proc(self: ^Heap, length: ^NS.Object, options: ResourceOptions) -> ^Heap { return msgSend(^Heap, self, "newBufferWithLength:options:", length, options) } @(objc_type=Heap, objc_name="newBufferWithLength_options_offset_") -Heap_newBufferWithLength_options_offset_ :: proc(self: ^Heap, length: ^NS.Object, options: ResourceOptions, offset: ^NS.Object) -> ^Heap { +Heap_newBufferWithLength_options_offset_ :: #force_inline proc(self: ^Heap, length: ^NS.Object, options: ResourceOptions, offset: ^NS.Object) -> ^Heap { return msgSend(^Heap, self, "newBufferWithLength:options:offset:", length, options, offset) } @(objc_type=Heap, objc_name="newTextureWithDescriptor") -Heap_newTextureWithDescriptor :: proc(self: ^Heap, desc: ^TextureDescriptor) -> ^Heap { +Heap_newTextureWithDescriptor :: #force_inline proc(self: ^Heap, desc: ^TextureDescriptor) -> ^Heap { return msgSend(^Heap, self, "newTextureWithDescriptor:", desc) } @(objc_type=Heap, objc_name="newTextureWithDescriptor_offset_") -Heap_newTextureWithDescriptor_offset_ :: proc(self: ^Heap, descriptor: ^TextureDescriptor, offset: ^NS.Object) -> ^Heap { +Heap_newTextureWithDescriptor_offset_ :: #force_inline proc(self: ^Heap, descriptor: ^TextureDescriptor, offset: ^NS.Object) -> ^Heap { return msgSend(^Heap, self, "newTextureWithDescriptor:offset:", descriptor, offset) } @(objc_type=Heap, objc_name="resourceOptions") -Heap_resourceOptions :: proc(self: ^Heap) -> ResourceOptions { +Heap_resourceOptions :: #force_inline proc(self: ^Heap) -> ResourceOptions { return msgSend(ResourceOptions, self, "resourceOptions") } @(objc_type=Heap, objc_name="setLabel") -Heap_setLabel :: proc(self: ^Heap, label: ^NS.String) { +Heap_setLabel :: #force_inline proc(self: ^Heap, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @(objc_type=Heap, objc_name="setPurgeableState") -Heap_setPurgeableState :: proc(self: ^Heap, state: PurgeableState) -> PurgeableState { +Heap_setPurgeableState :: #force_inline proc(self: ^Heap, state: PurgeableState) -> PurgeableState { return msgSend(PurgeableState, self, "setPurgeableState:", state) } @(objc_type=Heap, objc_name="size") -Heap_size :: proc(self: ^Heap) -> NS.Integer { +Heap_size :: #force_inline proc(self: ^Heap) -> NS.Integer { return msgSend(NS.Integer, self, "size") } @(objc_type=Heap, objc_name="storageMode") -Heap_storageMode :: proc(self: ^Heap) -> StorageMode { +Heap_storageMode :: #force_inline proc(self: ^Heap) -> StorageMode { return msgSend(StorageMode, self, "storageMode") } @(objc_type=Heap, objc_name="type") -Heap_type :: proc(self: ^Heap) -> FunctionLogType { +Heap_type :: #force_inline proc(self: ^Heap) -> FunctionLogType { return msgSend(FunctionLogType, self, "type") } @(objc_type=Heap, objc_name="usedSize") -Heap_usedSize :: proc(self: ^Heap) -> NS.Integer { +Heap_usedSize :: #force_inline proc(self: ^Heap) -> NS.Integer { return msgSend(NS.Integer, self, "usedSize") } @@ -6841,19 +6827,19 @@ Methods: IndirectCommandBuffer :: struct { using _: NS.Object } @(objc_type=IndirectCommandBuffer, objc_name="indirectComputeCommandAtIndex") -IndirectCommandBuffer_indirectComputeCommandAtIndex :: proc(self: ^IndirectCommandBuffer, commandIndex: ^NS.Object) -> ^IndirectCommandBuffer { +IndirectCommandBuffer_indirectComputeCommandAtIndex :: #force_inline proc(self: ^IndirectCommandBuffer, commandIndex: ^NS.Object) -> ^IndirectCommandBuffer { return msgSend(^IndirectCommandBuffer, self, "indirectComputeCommandAtIndex:", commandIndex) } @(objc_type=IndirectCommandBuffer, objc_name="indirectRenderCommandAtIndex") -IndirectCommandBuffer_indirectRenderCommandAtIndex :: proc(self: ^IndirectCommandBuffer, commandIndex: ^NS.Object) -> ^IndirectCommandBuffer { +IndirectCommandBuffer_indirectRenderCommandAtIndex :: #force_inline proc(self: ^IndirectCommandBuffer, commandIndex: ^NS.Object) -> ^IndirectCommandBuffer { return msgSend(^IndirectCommandBuffer, self, "indirectRenderCommandAtIndex:", commandIndex) } @(objc_type=IndirectCommandBuffer, objc_name="resetWithRange") -IndirectCommandBuffer_resetWithRange :: proc(self: ^IndirectCommandBuffer, range: NS.Range) { +IndirectCommandBuffer_resetWithRange :: #force_inline proc(self: ^IndirectCommandBuffer, range: NS.Range) { msgSend(nil, self, "resetWithRange:", range) } @(objc_type=IndirectCommandBuffer, objc_name="size") -IndirectCommandBuffer_size :: proc(self: ^IndirectCommandBuffer) -> NS.Integer { +IndirectCommandBuffer_size :: #force_inline proc(self: ^IndirectCommandBuffer) -> NS.Integer { return msgSend(NS.Integer, self, "size") } @@ -6879,43 +6865,43 @@ Methods: IndirectComputeCommand :: struct { using _: NS.Object } @(objc_type=IndirectComputeCommand, objc_name="clearBarrier") -IndirectComputeCommand_clearBarrier :: proc(self: ^IndirectComputeCommand) { +IndirectComputeCommand_clearBarrier :: #force_inline proc(self: ^IndirectComputeCommand) { msgSend(nil, self, "clearBarrier") } @(objc_type=IndirectComputeCommand, objc_name="concurrentDispatchThreadgroups") -IndirectComputeCommand_concurrentDispatchThreadgroups :: proc(self: ^IndirectComputeCommand, threadgroupsPerGrid: Size, threadsPerThreadgroup: Size) { +IndirectComputeCommand_concurrentDispatchThreadgroups :: #force_inline proc(self: ^IndirectComputeCommand, threadgroupsPerGrid: Size, threadsPerThreadgroup: Size) { msgSend(nil, self, "concurrentDispatchThreadgroups:threadsPerThreadgroup:", threadgroupsPerGrid, threadsPerThreadgroup) } @(objc_type=IndirectComputeCommand, objc_name="concurrentDispatchThreads") -IndirectComputeCommand_concurrentDispatchThreads :: proc(self: ^IndirectComputeCommand, threadsPerGrid: Size, threadsPerThreadgroup: Size) { +IndirectComputeCommand_concurrentDispatchThreads :: #force_inline proc(self: ^IndirectComputeCommand, threadsPerGrid: Size, threadsPerThreadgroup: Size) { msgSend(nil, self, "concurrentDispatchThreads:threadsPerThreadgroup:", threadsPerGrid, threadsPerThreadgroup) } @(objc_type=IndirectComputeCommand, objc_name="reset") -IndirectComputeCommand_reset :: proc(self: ^IndirectComputeCommand) { +IndirectComputeCommand_reset :: #force_inline proc(self: ^IndirectComputeCommand) { msgSend(nil, self, "reset") } @(objc_type=IndirectComputeCommand, objc_name="setBarrier") -IndirectComputeCommand_setBarrier :: proc(self: ^IndirectComputeCommand) { +IndirectComputeCommand_setBarrier :: #force_inline proc(self: ^IndirectComputeCommand) { msgSend(nil, self, "setBarrier") } @(objc_type=IndirectComputeCommand, objc_name="setComputePipelineState") -IndirectComputeCommand_setComputePipelineState :: proc(self: ^IndirectComputeCommand, pipelineState: ^NS.Object) { +IndirectComputeCommand_setComputePipelineState :: #force_inline proc(self: ^IndirectComputeCommand, pipelineState: ^NS.Object) { msgSend(nil, self, "setComputePipelineState:", pipelineState) } @(objc_type=IndirectComputeCommand, objc_name="setImageblockWidth") -IndirectComputeCommand_setImageblockWidth :: proc(self: ^IndirectComputeCommand, width: ^NS.Object, height: ^NS.Object) { +IndirectComputeCommand_setImageblockWidth :: #force_inline proc(self: ^IndirectComputeCommand, width: ^NS.Object, height: ^NS.Object) { msgSend(nil, self, "setImageblockWidth:height:", width, height) } @(objc_type=IndirectComputeCommand, objc_name="setKernelBuffer") -IndirectComputeCommand_setKernelBuffer :: proc(self: ^IndirectComputeCommand, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +IndirectComputeCommand_setKernelBuffer :: #force_inline proc(self: ^IndirectComputeCommand, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setKernelBuffer:offset:atIndex:", buffer, offset, index) } @(objc_type=IndirectComputeCommand, objc_name="setStageInRegion") -IndirectComputeCommand_setStageInRegion :: proc(self: ^IndirectComputeCommand, region: Region) { +IndirectComputeCommand_setStageInRegion :: #force_inline proc(self: ^IndirectComputeCommand, region: Region) { msgSend(nil, self, "setStageInRegion:", region) } @(objc_type=IndirectComputeCommand, objc_name="setThreadgroupMemoryLength") -IndirectComputeCommand_setThreadgroupMemoryLength :: proc(self: ^IndirectComputeCommand, length: ^NS.Object, index: ^NS.Object) { +IndirectComputeCommand_setThreadgroupMemoryLength :: #force_inline proc(self: ^IndirectComputeCommand, length: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setThreadgroupMemoryLength:atIndex:", length, index) } @@ -6939,35 +6925,35 @@ Methods: IndirectRenderCommand :: struct { using _: NS.Object } @(objc_type=IndirectRenderCommand, objc_name="drawIndexedPatches") -IndirectRenderCommand_drawIndexedPatches :: proc(self: ^IndirectRenderCommand, numberOfPatchControlPoints: ^NS.Object, patchStart: ^NS.Object, patchCount: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, controlPointIndexBuffer: ^NS.Object, controlPointIndexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object, buffer: ^NS.Object, offset: ^NS.Object, instanceStride: ^NS.Object) { +IndirectRenderCommand_drawIndexedPatches :: #force_inline proc(self: ^IndirectRenderCommand, numberOfPatchControlPoints: ^NS.Object, patchStart: ^NS.Object, patchCount: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, controlPointIndexBuffer: ^NS.Object, controlPointIndexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object, buffer: ^NS.Object, offset: ^NS.Object, instanceStride: ^NS.Object) { msgSend(nil, self, "drawIndexedPatches:patchStart:patchCount:patchIndexBuffer:patchIndexBufferOffset:controlPointIndexBuffer:controlPointIndexBufferOffset:instanceCount:baseInstance:tessellationFactorBuffer:tessellationFactorBufferOffset:tessellationFactorBufferInstanceStride:", numberOfPatchControlPoints, patchStart, patchCount, patchIndexBuffer, patchIndexBufferOffset, controlPointIndexBuffer, controlPointIndexBufferOffset, instanceCount, baseInstance, buffer, offset, instanceStride) } @(objc_type=IndirectRenderCommand, objc_name="drawIndexedPrimitives") -IndirectRenderCommand_drawIndexedPrimitives :: proc(self: ^IndirectRenderCommand, primitiveType: PrimitiveType, indexCount: ^NS.Object, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseVertex: ^NS.Object, baseInstance: ^NS.Object) { +IndirectRenderCommand_drawIndexedPrimitives :: #force_inline proc(self: ^IndirectRenderCommand, primitiveType: PrimitiveType, indexCount: ^NS.Object, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseVertex: ^NS.Object, baseInstance: ^NS.Object) { msgSend(nil, self, "drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:instanceCount:baseVertex:baseInstance:", primitiveType, indexCount, indexType, indexBuffer, indexBufferOffset, instanceCount, baseVertex, baseInstance) } @(objc_type=IndirectRenderCommand, objc_name="drawPatches") -IndirectRenderCommand_drawPatches :: proc(self: ^IndirectRenderCommand, numberOfPatchControlPoints: ^NS.Object, patchStart: ^NS.Object, patchCount: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object, buffer: ^NS.Object, offset: ^NS.Object, instanceStride: ^NS.Object) { +IndirectRenderCommand_drawPatches :: #force_inline proc(self: ^IndirectRenderCommand, numberOfPatchControlPoints: ^NS.Object, patchStart: ^NS.Object, patchCount: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object, buffer: ^NS.Object, offset: ^NS.Object, instanceStride: ^NS.Object) { msgSend(nil, self, "drawPatches:patchStart:patchCount:patchIndexBuffer:patchIndexBufferOffset:instanceCount:baseInstance:tessellationFactorBuffer:tessellationFactorBufferOffset:tessellationFactorBufferInstanceStride:", numberOfPatchControlPoints, patchStart, patchCount, patchIndexBuffer, patchIndexBufferOffset, instanceCount, baseInstance, buffer, offset, instanceStride) } @(objc_type=IndirectRenderCommand, objc_name="drawPrimitives") -IndirectRenderCommand_drawPrimitives :: proc(self: ^IndirectRenderCommand, primitiveType: PrimitiveType, vertexStart: ^NS.Object, vertexCount: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object) { +IndirectRenderCommand_drawPrimitives :: #force_inline proc(self: ^IndirectRenderCommand, primitiveType: PrimitiveType, vertexStart: ^NS.Object, vertexCount: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object) { msgSend(nil, self, "drawPrimitives:vertexStart:vertexCount:instanceCount:baseInstance:", primitiveType, vertexStart, vertexCount, instanceCount, baseInstance) } @(objc_type=IndirectRenderCommand, objc_name="reset") -IndirectRenderCommand_reset :: proc(self: ^IndirectRenderCommand) { +IndirectRenderCommand_reset :: #force_inline proc(self: ^IndirectRenderCommand) { msgSend(nil, self, "reset") } @(objc_type=IndirectRenderCommand, objc_name="setFragmentBuffer") -IndirectRenderCommand_setFragmentBuffer :: proc(self: ^IndirectRenderCommand, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +IndirectRenderCommand_setFragmentBuffer :: #force_inline proc(self: ^IndirectRenderCommand, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setFragmentBuffer:offset:atIndex:", buffer, offset, index) } @(objc_type=IndirectRenderCommand, objc_name="setRenderPipelineState") -IndirectRenderCommand_setRenderPipelineState :: proc(self: ^IndirectRenderCommand, pipelineState: ^NS.Object) { +IndirectRenderCommand_setRenderPipelineState :: #force_inline proc(self: ^IndirectRenderCommand, pipelineState: ^NS.Object) { msgSend(nil, self, "setRenderPipelineState:", pipelineState) } @(objc_type=IndirectRenderCommand, objc_name="setVertexBuffer") -IndirectRenderCommand_setVertexBuffer :: proc(self: ^IndirectRenderCommand, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +IndirectRenderCommand_setVertexBuffer :: #force_inline proc(self: ^IndirectRenderCommand, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setVertexBuffer:offset:atIndex:", buffer, offset, index) } @@ -6991,35 +6977,35 @@ Methods: IntersectionFunctionTable :: struct { using _: NS.Object } @(objc_type=IntersectionFunctionTable, objc_name="setBuffer") -IntersectionFunctionTable_setBuffer :: proc(self: ^IntersectionFunctionTable, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +IntersectionFunctionTable_setBuffer :: #force_inline proc(self: ^IntersectionFunctionTable, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setBuffer:offset:atIndex:", buffer, offset, index) } @(objc_type=IntersectionFunctionTable, objc_name="setBuffers") -IntersectionFunctionTable_setBuffers :: proc(self: ^IntersectionFunctionTable, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { +IntersectionFunctionTable_setBuffers :: #force_inline proc(self: ^IntersectionFunctionTable, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { msgSend(nil, self, "setBuffers:offsets:withRange:", buffers, offsets, range) } @(objc_type=IntersectionFunctionTable, objc_name="setFunction") -IntersectionFunctionTable_setFunction :: proc(self: ^IntersectionFunctionTable, function: ^NS.Object, index: ^NS.Object) { +IntersectionFunctionTable_setFunction :: #force_inline proc(self: ^IntersectionFunctionTable, function: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setFunction:atIndex:", function, index) } @(objc_type=IntersectionFunctionTable, objc_name="setFunctions") -IntersectionFunctionTable_setFunctions :: proc(self: ^IntersectionFunctionTable, functions: ^^NS.Object, range: NS.Range) { +IntersectionFunctionTable_setFunctions :: #force_inline proc(self: ^IntersectionFunctionTable, functions: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setFunctions:withRange:", functions, range) } @(objc_type=IntersectionFunctionTable, objc_name="setOpaqueTriangleIntersectionFunctionWithSignature_atIndex_") -IntersectionFunctionTable_setOpaqueTriangleIntersectionFunctionWithSignature_atIndex_ :: proc(self: ^IntersectionFunctionTable, signature: IntersectionFunctionSignature, index: ^NS.Object) { +IntersectionFunctionTable_setOpaqueTriangleIntersectionFunctionWithSignature_atIndex_ :: #force_inline proc(self: ^IntersectionFunctionTable, signature: IntersectionFunctionSignature, index: ^NS.Object) { msgSend(nil, self, "setOpaqueTriangleIntersectionFunctionWithSignature:atIndex:", signature, index) } @(objc_type=IntersectionFunctionTable, objc_name="setOpaqueTriangleIntersectionFunctionWithSignature_withRange_") -IntersectionFunctionTable_setOpaqueTriangleIntersectionFunctionWithSignature_withRange_ :: proc(self: ^IntersectionFunctionTable, signature: IntersectionFunctionSignature, range: NS.Range) { +IntersectionFunctionTable_setOpaqueTriangleIntersectionFunctionWithSignature_withRange_ :: #force_inline proc(self: ^IntersectionFunctionTable, signature: IntersectionFunctionSignature, range: NS.Range) { msgSend(nil, self, "setOpaqueTriangleIntersectionFunctionWithSignature:withRange:", signature, range) } @(objc_type=IntersectionFunctionTable, objc_name="setVisibleFunctionTable") -IntersectionFunctionTable_setVisibleFunctionTable :: proc(self: ^IntersectionFunctionTable, visibleFunctionTable: ^NS.Object, bufferIndex: ^NS.Object) { +IntersectionFunctionTable_setVisibleFunctionTable :: #force_inline proc(self: ^IntersectionFunctionTable, visibleFunctionTable: ^NS.Object, bufferIndex: ^NS.Object) { msgSend(nil, self, "setVisibleFunctionTable:atBufferIndex:", visibleFunctionTable, bufferIndex) } @(objc_type=IntersectionFunctionTable, objc_name="setVisibleFunctionTables") -IntersectionFunctionTable_setVisibleFunctionTables :: proc(self: ^IntersectionFunctionTable, visibleFunctionTables: ^^NS.Object, range: NS.Range) { +IntersectionFunctionTable_setVisibleFunctionTables :: #force_inline proc(self: ^IntersectionFunctionTable, visibleFunctionTables: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setVisibleFunctionTables:withBufferRange:", visibleFunctionTables, range) } @@ -7048,55 +7034,55 @@ Methods: Library :: struct { using _: NS.Object } @(objc_type=Library, objc_name="device") -Library_device :: proc(self: ^Library) -> ^Library { +Library_device :: #force_inline proc(self: ^Library) -> ^Library { return msgSend(^Library, self, "device") } @(objc_type=Library, objc_name="functionNames") -Library_functionNames :: proc(self: ^Library) -> ^NS.Array { +Library_functionNames :: #force_inline proc(self: ^Library) -> ^NS.Array { return msgSend(^NS.Array, self, "functionNames") } @(objc_type=Library, objc_name="installName") -Library_installName :: proc(self: ^Library) -> ^NS.String { +Library_installName :: #force_inline proc(self: ^Library) -> ^NS.String { return msgSend(^NS.String, self, "installName") } @(objc_type=Library, objc_name="label") -Library_label :: proc(self: ^Library) -> ^NS.String { +Library_label :: #force_inline proc(self: ^Library) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=Library, objc_name="newFunctionWithDescriptor_completionHandler_") -Library_newFunctionWithDescriptor_completionHandler_ :: proc(self: ^Library, descriptor: ^FunctionDescriptor, completionHandler: rawptr) { +Library_newFunctionWithDescriptor_completionHandler_ :: #force_inline proc(self: ^Library, descriptor: ^FunctionDescriptor, completionHandler: rawptr) { msgSend(nil, self, "newFunctionWithDescriptor:completionHandler:", descriptor, completionHandler) } @(objc_type=Library, objc_name="newFunctionWithDescriptor_error_") -Library_newFunctionWithDescriptor_error_ :: proc(self: ^Library, descriptor: ^FunctionDescriptor, error: ^^NS.Error ) -> ^Library { +Library_newFunctionWithDescriptor_error_ :: #force_inline proc(self: ^Library, descriptor: ^FunctionDescriptor, error: ^^NS.Error ) -> ^Library { return msgSend(^Library, self, "newFunctionWithDescriptor:error:", descriptor, error) } @(objc_type=Library, objc_name="newFunctionWithName") -Library_newFunctionWithName :: proc(self: ^Library, functionName: ^NS.String) -> ^Library { +Library_newFunctionWithName :: #force_inline proc(self: ^Library, functionName: ^NS.String) -> ^Library { return msgSend(^Library, self, "newFunctionWithName:", functionName) } @(objc_type=Library, objc_name="newFunctionWithName_constantValues_completionHandler_") -Library_newFunctionWithName_constantValues_completionHandler_ :: proc(self: ^Library, name: ^NS.String, constantValues: ^FunctionConstantValues, completionHandler: rawptr) { +Library_newFunctionWithName_constantValues_completionHandler_ :: #force_inline proc(self: ^Library, name: ^NS.String, constantValues: ^FunctionConstantValues, completionHandler: rawptr) { msgSend(nil, self, "newFunctionWithName:constantValues:completionHandler:", name, constantValues, completionHandler) } @(objc_type=Library, objc_name="newFunctionWithName_constantValues_error_") -Library_newFunctionWithName_constantValues_error_ :: proc(self: ^Library, name: ^NS.String, constantValues: ^FunctionConstantValues, error: ^^NS.Error ) -> ^Library { +Library_newFunctionWithName_constantValues_error_ :: #force_inline proc(self: ^Library, name: ^NS.String, constantValues: ^FunctionConstantValues, error: ^^NS.Error ) -> ^Library { return msgSend(^Library, self, "newFunctionWithName:constantValues:error:", name, constantValues, error) } @(objc_type=Library, objc_name="newIntersectionFunctionWithDescriptor_completionHandler_") -Library_newIntersectionFunctionWithDescriptor_completionHandler_ :: proc(self: ^Library, descriptor: ^IntersectionFunctionDescriptor, completionHandler: rawptr) { +Library_newIntersectionFunctionWithDescriptor_completionHandler_ :: #force_inline proc(self: ^Library, descriptor: ^IntersectionFunctionDescriptor, completionHandler: rawptr) { msgSend(nil, self, "newIntersectionFunctionWithDescriptor:completionHandler:", descriptor, completionHandler) } @(objc_type=Library, objc_name="newIntersectionFunctionWithDescriptor_error_") -Library_newIntersectionFunctionWithDescriptor_error_ :: proc(self: ^Library, descriptor: ^IntersectionFunctionDescriptor, error: ^^NS.Error ) -> ^Library { +Library_newIntersectionFunctionWithDescriptor_error_ :: #force_inline proc(self: ^Library, descriptor: ^IntersectionFunctionDescriptor, error: ^^NS.Error ) -> ^Library { return msgSend(^Library, self, "newIntersectionFunctionWithDescriptor:error:", descriptor, error) } @(objc_type=Library, objc_name="setLabel") -Library_setLabel :: proc(self: ^Library, label: ^NS.String) { +Library_setLabel :: #force_inline proc(self: ^Library, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @(objc_type=Library, objc_name="type") -Library_type :: proc(self: ^Library) -> LibraryType { +Library_type :: #force_inline proc(self: ^Library) -> LibraryType { return msgSend(LibraryType, self, "type") } @@ -7119,31 +7105,31 @@ Methods: ParallelRenderCommandEncoder :: struct { using _: NS.Object } @(objc_type=ParallelRenderCommandEncoder, objc_name="renderCommandEncoder") -ParallelRenderCommandEncoder_renderCommandEncoder :: proc(self: ^ParallelRenderCommandEncoder) -> ^ParallelRenderCommandEncoder { +ParallelRenderCommandEncoder_renderCommandEncoder :: #force_inline proc(self: ^ParallelRenderCommandEncoder) -> ^ParallelRenderCommandEncoder { return msgSend(^ParallelRenderCommandEncoder, self, "renderCommandEncoder") } @(objc_type=ParallelRenderCommandEncoder, objc_name="setColorStoreAction") -ParallelRenderCommandEncoder_setColorStoreAction :: proc(self: ^ParallelRenderCommandEncoder, storeAction: StoreAction, colorAttachmentIndex: ^NS.Object) { +ParallelRenderCommandEncoder_setColorStoreAction :: #force_inline proc(self: ^ParallelRenderCommandEncoder, storeAction: StoreAction, colorAttachmentIndex: ^NS.Object) { msgSend(nil, self, "setColorStoreAction:atIndex:", storeAction, colorAttachmentIndex) } @(objc_type=ParallelRenderCommandEncoder, objc_name="setColorStoreActionOptions") -ParallelRenderCommandEncoder_setColorStoreActionOptions :: proc(self: ^ParallelRenderCommandEncoder, storeActionOptions: StoreActionOptions, colorAttachmentIndex: ^NS.Object) { +ParallelRenderCommandEncoder_setColorStoreActionOptions :: #force_inline proc(self: ^ParallelRenderCommandEncoder, storeActionOptions: StoreActionOptions, colorAttachmentIndex: ^NS.Object) { msgSend(nil, self, "setColorStoreActionOptions:atIndex:", storeActionOptions, colorAttachmentIndex) } @(objc_type=ParallelRenderCommandEncoder, objc_name="setDepthStoreAction") -ParallelRenderCommandEncoder_setDepthStoreAction :: proc(self: ^ParallelRenderCommandEncoder, storeAction: StoreAction) { +ParallelRenderCommandEncoder_setDepthStoreAction :: #force_inline proc(self: ^ParallelRenderCommandEncoder, storeAction: StoreAction) { msgSend(nil, self, "setDepthStoreAction:", storeAction) } @(objc_type=ParallelRenderCommandEncoder, objc_name="setDepthStoreActionOptions") -ParallelRenderCommandEncoder_setDepthStoreActionOptions :: proc(self: ^ParallelRenderCommandEncoder, storeActionOptions: StoreActionOptions) { +ParallelRenderCommandEncoder_setDepthStoreActionOptions :: #force_inline proc(self: ^ParallelRenderCommandEncoder, storeActionOptions: StoreActionOptions) { msgSend(nil, self, "setDepthStoreActionOptions:", storeActionOptions) } @(objc_type=ParallelRenderCommandEncoder, objc_name="setStencilStoreAction") -ParallelRenderCommandEncoder_setStencilStoreAction :: proc(self: ^ParallelRenderCommandEncoder, storeAction: StoreAction) { +ParallelRenderCommandEncoder_setStencilStoreAction :: #force_inline proc(self: ^ParallelRenderCommandEncoder, storeAction: StoreAction) { msgSend(nil, self, "setStencilStoreAction:", storeAction) } @(objc_type=ParallelRenderCommandEncoder, objc_name="setStencilStoreActionOptions") -ParallelRenderCommandEncoder_setStencilStoreActionOptions :: proc(self: ^ParallelRenderCommandEncoder, storeActionOptions: StoreActionOptions) { +ParallelRenderCommandEncoder_setStencilStoreActionOptions :: #force_inline proc(self: ^ParallelRenderCommandEncoder, storeActionOptions: StoreActionOptions) { msgSend(nil, self, "setStencilStoreActionOptions:", storeActionOptions) } @@ -7169,43 +7155,43 @@ Methods: RasterizationRateMap :: struct { using _: NS.Object } @(objc_type=RasterizationRateMap, objc_name="copyParameterDataToBuffer") -RasterizationRateMap_copyParameterDataToBuffer :: proc(self: ^RasterizationRateMap, buffer: ^NS.Object, offset: ^NS.Object) { +RasterizationRateMap_copyParameterDataToBuffer :: #force_inline proc(self: ^RasterizationRateMap, buffer: ^NS.Object, offset: ^NS.Object) { msgSend(nil, self, "copyParameterDataToBuffer:offset:", buffer, offset) } @(objc_type=RasterizationRateMap, objc_name="device") -RasterizationRateMap_device :: proc(self: ^RasterizationRateMap) -> ^RasterizationRateMap { +RasterizationRateMap_device :: #force_inline proc(self: ^RasterizationRateMap) -> ^RasterizationRateMap { return msgSend(^RasterizationRateMap, self, "device") } @(objc_type=RasterizationRateMap, objc_name="label") -RasterizationRateMap_label :: proc(self: ^RasterizationRateMap) -> ^NS.String { +RasterizationRateMap_label :: #force_inline proc(self: ^RasterizationRateMap) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=RasterizationRateMap, objc_name="layerCount") -RasterizationRateMap_layerCount :: proc(self: ^RasterizationRateMap) -> NS.Integer { +RasterizationRateMap_layerCount :: #force_inline proc(self: ^RasterizationRateMap) -> NS.Integer { return msgSend(NS.Integer, self, "layerCount") } @(objc_type=RasterizationRateMap, objc_name="mapPhysicalToScreenCoordinates") -RasterizationRateMap_mapPhysicalToScreenCoordinates :: proc(self: ^RasterizationRateMap, physicalCoordinates: Coordinate2D, layerIndex: ^NS.Object) -> Coordinate2D { +RasterizationRateMap_mapPhysicalToScreenCoordinates :: #force_inline proc(self: ^RasterizationRateMap, physicalCoordinates: Coordinate2D, layerIndex: ^NS.Object) -> Coordinate2D { return msgSend(Coordinate2D, self, "mapPhysicalToScreenCoordinates:forLayer:", physicalCoordinates, layerIndex) } @(objc_type=RasterizationRateMap, objc_name="mapScreenToPhysicalCoordinates") -RasterizationRateMap_mapScreenToPhysicalCoordinates :: proc(self: ^RasterizationRateMap, screenCoordinates: Coordinate2D, layerIndex: ^NS.Object) -> Coordinate2D { +RasterizationRateMap_mapScreenToPhysicalCoordinates :: #force_inline proc(self: ^RasterizationRateMap, screenCoordinates: Coordinate2D, layerIndex: ^NS.Object) -> Coordinate2D { return msgSend(Coordinate2D, self, "mapScreenToPhysicalCoordinates:forLayer:", screenCoordinates, layerIndex) } @(objc_type=RasterizationRateMap, objc_name="parameterBufferSizeAndAlign") -RasterizationRateMap_parameterBufferSizeAndAlign :: proc(self: ^RasterizationRateMap) -> SizeAndAlign { +RasterizationRateMap_parameterBufferSizeAndAlign :: #force_inline proc(self: ^RasterizationRateMap) -> SizeAndAlign { return msgSend(SizeAndAlign, self, "parameterBufferSizeAndAlign") } @(objc_type=RasterizationRateMap, objc_name="physicalGranularity") -RasterizationRateMap_physicalGranularity :: proc(self: ^RasterizationRateMap) -> Size { +RasterizationRateMap_physicalGranularity :: #force_inline proc(self: ^RasterizationRateMap) -> Size { return msgSend(Size, self, "physicalGranularity") } @(objc_type=RasterizationRateMap, objc_name="physicalSizeForLayer") -RasterizationRateMap_physicalSizeForLayer :: proc(self: ^RasterizationRateMap, layerIndex: ^NS.Object) -> Size { +RasterizationRateMap_physicalSizeForLayer :: #force_inline proc(self: ^RasterizationRateMap, layerIndex: ^NS.Object) -> Size { return msgSend(Size, self, "physicalSizeForLayer:", layerIndex) } @(objc_type=RasterizationRateMap, objc_name="screenSize") -RasterizationRateMap_screenSize :: proc(self: ^RasterizationRateMap) -> Size { +RasterizationRateMap_screenSize :: #force_inline proc(self: ^RasterizationRateMap) -> Size { return msgSend(Size, self, "screenSize") } @@ -7307,347 +7293,347 @@ Methods: RenderCommandEncoder :: struct { using _: NS.Object } @(objc_type=RenderCommandEncoder, objc_name="dispatchThreadsPerTile") -RenderCommandEncoder_dispatchThreadsPerTile :: proc(self: ^RenderCommandEncoder, threadsPerTile: Size) { +RenderCommandEncoder_dispatchThreadsPerTile :: #force_inline proc(self: ^RenderCommandEncoder, threadsPerTile: Size) { msgSend(nil, self, "dispatchThreadsPerTile:", threadsPerTile) } @(objc_type=RenderCommandEncoder, objc_name="drawIndexedPatches_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_indirectBuffer_indirectBufferOffset_") -RenderCommandEncoder_drawIndexedPatches_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_indirectBuffer_indirectBufferOffset_ :: proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, controlPointIndexBuffer: ^NS.Object, controlPointIndexBufferOffset: ^NS.Object, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { +RenderCommandEncoder_drawIndexedPatches_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, controlPointIndexBuffer: ^NS.Object, controlPointIndexBufferOffset: ^NS.Object, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { msgSend(nil, self, "drawIndexedPatches:patchIndexBuffer:patchIndexBufferOffset:controlPointIndexBuffer:controlPointIndexBufferOffset:indirectBuffer:indirectBufferOffset:", numberOfPatchControlPoints, patchIndexBuffer, patchIndexBufferOffset, controlPointIndexBuffer, controlPointIndexBufferOffset, indirectBuffer, indirectBufferOffset) } @(objc_type=RenderCommandEncoder, objc_name="drawIndexedPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_instanceCount_baseInstance_") -RenderCommandEncoder_drawIndexedPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_instanceCount_baseInstance_ :: proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: ^NS.Object, patchStart: ^NS.Object, patchCount: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, controlPointIndexBuffer: ^NS.Object, controlPointIndexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object) { +RenderCommandEncoder_drawIndexedPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_instanceCount_baseInstance_ :: #force_inline proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: ^NS.Object, patchStart: ^NS.Object, patchCount: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, controlPointIndexBuffer: ^NS.Object, controlPointIndexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object) { msgSend(nil, self, "drawIndexedPatches:patchStart:patchCount:patchIndexBuffer:patchIndexBufferOffset:controlPointIndexBuffer:controlPointIndexBufferOffset:instanceCount:baseInstance:", numberOfPatchControlPoints, patchStart, patchCount, patchIndexBuffer, patchIndexBufferOffset, controlPointIndexBuffer, controlPointIndexBufferOffset, instanceCount, baseInstance) } @(objc_type=RenderCommandEncoder, objc_name="drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_") -RenderCommandEncoder_drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_ :: proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexCount: ^NS.Object, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object) { +RenderCommandEncoder_drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexCount: ^NS.Object, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object) { msgSend(nil, self, "drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:", primitiveType, indexCount, indexType, indexBuffer, indexBufferOffset) } @(objc_type=RenderCommandEncoder, objc_name="drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_") -RenderCommandEncoder_drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_ :: proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexCount: ^NS.Object, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object, instanceCount: ^NS.Object) { +RenderCommandEncoder_drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexCount: ^NS.Object, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object, instanceCount: ^NS.Object) { msgSend(nil, self, "drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:instanceCount:", primitiveType, indexCount, indexType, indexBuffer, indexBufferOffset, instanceCount) } @(objc_type=RenderCommandEncoder, objc_name="drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_baseVertex_baseInstance_") -RenderCommandEncoder_drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_baseVertex_baseInstance_ :: proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexCount: ^NS.Object, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseVertex: ^NS.Object, baseInstance: ^NS.Object) { +RenderCommandEncoder_drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_baseVertex_baseInstance_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexCount: ^NS.Object, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseVertex: ^NS.Object, baseInstance: ^NS.Object) { msgSend(nil, self, "drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:instanceCount:baseVertex:baseInstance:", primitiveType, indexCount, indexType, indexBuffer, indexBufferOffset, instanceCount, baseVertex, baseInstance) } @(objc_type=RenderCommandEncoder, objc_name="drawIndexedPrimitives_indexType_indexBuffer_indexBufferOffset_indirectBuffer_indirectBufferOffset_") -RenderCommandEncoder_drawIndexedPrimitives_indexType_indexBuffer_indexBufferOffset_indirectBuffer_indirectBufferOffset_ :: proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { +RenderCommandEncoder_drawIndexedPrimitives_indexType_indexBuffer_indexBufferOffset_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { msgSend(nil, self, "drawIndexedPrimitives:indexType:indexBuffer:indexBufferOffset:indirectBuffer:indirectBufferOffset:", primitiveType, indexType, indexBuffer, indexBufferOffset, indirectBuffer, indirectBufferOffset) } @(objc_type=RenderCommandEncoder, objc_name="drawPatches_patchIndexBuffer_patchIndexBufferOffset_indirectBuffer_indirectBufferOffset_") -RenderCommandEncoder_drawPatches_patchIndexBuffer_patchIndexBufferOffset_indirectBuffer_indirectBufferOffset_ :: proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { +RenderCommandEncoder_drawPatches_patchIndexBuffer_patchIndexBufferOffset_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { msgSend(nil, self, "drawPatches:patchIndexBuffer:patchIndexBufferOffset:indirectBuffer:indirectBufferOffset:", numberOfPatchControlPoints, patchIndexBuffer, patchIndexBufferOffset, indirectBuffer, indirectBufferOffset) } @(objc_type=RenderCommandEncoder, objc_name="drawPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_instanceCount_baseInstance_") -RenderCommandEncoder_drawPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_instanceCount_baseInstance_ :: proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: ^NS.Object, patchStart: ^NS.Object, patchCount: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object) { +RenderCommandEncoder_drawPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_instanceCount_baseInstance_ :: #force_inline proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: ^NS.Object, patchStart: ^NS.Object, patchCount: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object) { msgSend(nil, self, "drawPatches:patchStart:patchCount:patchIndexBuffer:patchIndexBufferOffset:instanceCount:baseInstance:", numberOfPatchControlPoints, patchStart, patchCount, patchIndexBuffer, patchIndexBufferOffset, instanceCount, baseInstance) } @(objc_type=RenderCommandEncoder, objc_name="drawPrimitives_indirectBuffer_indirectBufferOffset_") -RenderCommandEncoder_drawPrimitives_indirectBuffer_indirectBufferOffset_ :: proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { +RenderCommandEncoder_drawPrimitives_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { msgSend(nil, self, "drawPrimitives:indirectBuffer:indirectBufferOffset:", primitiveType, indirectBuffer, indirectBufferOffset) } @(objc_type=RenderCommandEncoder, objc_name="drawPrimitives_vertexStart_vertexCount_") -RenderCommandEncoder_drawPrimitives_vertexStart_vertexCount_ :: proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, vertexStart: ^NS.Object, vertexCount: ^NS.Object) { +RenderCommandEncoder_drawPrimitives_vertexStart_vertexCount_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, vertexStart: ^NS.Object, vertexCount: ^NS.Object) { msgSend(nil, self, "drawPrimitives:vertexStart:vertexCount:", primitiveType, vertexStart, vertexCount) } @(objc_type=RenderCommandEncoder, objc_name="drawPrimitives_vertexStart_vertexCount_instanceCount_") -RenderCommandEncoder_drawPrimitives_vertexStart_vertexCount_instanceCount_ :: proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, vertexStart: ^NS.Object, vertexCount: ^NS.Object, instanceCount: ^NS.Object) { +RenderCommandEncoder_drawPrimitives_vertexStart_vertexCount_instanceCount_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, vertexStart: ^NS.Object, vertexCount: ^NS.Object, instanceCount: ^NS.Object) { msgSend(nil, self, "drawPrimitives:vertexStart:vertexCount:instanceCount:", primitiveType, vertexStart, vertexCount, instanceCount) } @(objc_type=RenderCommandEncoder, objc_name="drawPrimitives_vertexStart_vertexCount_instanceCount_baseInstance_") -RenderCommandEncoder_drawPrimitives_vertexStart_vertexCount_instanceCount_baseInstance_ :: proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, vertexStart: ^NS.Object, vertexCount: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object) { +RenderCommandEncoder_drawPrimitives_vertexStart_vertexCount_instanceCount_baseInstance_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, vertexStart: ^NS.Object, vertexCount: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object) { msgSend(nil, self, "drawPrimitives:vertexStart:vertexCount:instanceCount:baseInstance:", primitiveType, vertexStart, vertexCount, instanceCount, baseInstance) } @(objc_type=RenderCommandEncoder, objc_name="executeCommandsInBuffer_indirectBuffer_indirectBufferOffset_") -RenderCommandEncoder_executeCommandsInBuffer_indirectBuffer_indirectBufferOffset_ :: proc(self: ^RenderCommandEncoder, indirectCommandbuffer: ^NS.Object, indirectRangeBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { +RenderCommandEncoder_executeCommandsInBuffer_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, indirectCommandbuffer: ^NS.Object, indirectRangeBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { msgSend(nil, self, "executeCommandsInBuffer:indirectBuffer:indirectBufferOffset:", indirectCommandbuffer, indirectRangeBuffer, indirectBufferOffset) } @(objc_type=RenderCommandEncoder, objc_name="executeCommandsInBuffer_withRange_") -RenderCommandEncoder_executeCommandsInBuffer_withRange_ :: proc(self: ^RenderCommandEncoder, indirectCommandBuffer: ^NS.Object, executionRange: NS.Range) { +RenderCommandEncoder_executeCommandsInBuffer_withRange_ :: #force_inline proc(self: ^RenderCommandEncoder, indirectCommandBuffer: ^NS.Object, executionRange: NS.Range) { msgSend(nil, self, "executeCommandsInBuffer:withRange:", indirectCommandBuffer, executionRange) } @(objc_type=RenderCommandEncoder, objc_name="memoryBarrierWithResources") -RenderCommandEncoder_memoryBarrierWithResources :: proc(self: ^RenderCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, after: RenderStages, before: RenderStages) { +RenderCommandEncoder_memoryBarrierWithResources :: #force_inline proc(self: ^RenderCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, after: RenderStages, before: RenderStages) { msgSend(nil, self, "memoryBarrierWithResources:count:afterStages:beforeStages:", resources, count, after, before) } @(objc_type=RenderCommandEncoder, objc_name="memoryBarrierWithScope") -RenderCommandEncoder_memoryBarrierWithScope :: proc(self: ^RenderCommandEncoder, scope: BarrierScope, after: RenderStages, before: RenderStages) { +RenderCommandEncoder_memoryBarrierWithScope :: #force_inline proc(self: ^RenderCommandEncoder, scope: BarrierScope, after: RenderStages, before: RenderStages) { msgSend(nil, self, "memoryBarrierWithScope:afterStages:beforeStages:", scope, after, before) } @(objc_type=RenderCommandEncoder, objc_name="sampleCountersInBuffer") -RenderCommandEncoder_sampleCountersInBuffer :: proc(self: ^RenderCommandEncoder, sampleBuffer: ^NS.Object, sampleIndex: ^NS.Object, barrier: BOOL) { +RenderCommandEncoder_sampleCountersInBuffer :: #force_inline proc(self: ^RenderCommandEncoder, sampleBuffer: ^NS.Object, sampleIndex: ^NS.Object, barrier: BOOL) { msgSend(nil, self, "sampleCountersInBuffer:atSampleIndex:withBarrier:", sampleBuffer, sampleIndex, barrier) } @(objc_type=RenderCommandEncoder, objc_name="setBlendColorRed") -RenderCommandEncoder_setBlendColorRed :: proc(self: ^RenderCommandEncoder, red: f32, green: f32, blue: f32, alpha: f32) { +RenderCommandEncoder_setBlendColorRed :: #force_inline proc(self: ^RenderCommandEncoder, red: f32, green: f32, blue: f32, alpha: f32) { msgSend(nil, self, "setBlendColorRed:green:blue:alpha:", red, green, blue, alpha) } @(objc_type=RenderCommandEncoder, objc_name="setColorStoreAction") -RenderCommandEncoder_setColorStoreAction :: proc(self: ^RenderCommandEncoder, storeAction: StoreAction, colorAttachmentIndex: ^NS.Object) { +RenderCommandEncoder_setColorStoreAction :: #force_inline proc(self: ^RenderCommandEncoder, storeAction: StoreAction, colorAttachmentIndex: ^NS.Object) { msgSend(nil, self, "setColorStoreAction:atIndex:", storeAction, colorAttachmentIndex) } @(objc_type=RenderCommandEncoder, objc_name="setColorStoreActionOptions") -RenderCommandEncoder_setColorStoreActionOptions :: proc(self: ^RenderCommandEncoder, storeActionOptions: StoreActionOptions, colorAttachmentIndex: ^NS.Object) { +RenderCommandEncoder_setColorStoreActionOptions :: #force_inline proc(self: ^RenderCommandEncoder, storeActionOptions: StoreActionOptions, colorAttachmentIndex: ^NS.Object) { msgSend(nil, self, "setColorStoreActionOptions:atIndex:", storeActionOptions, colorAttachmentIndex) } @(objc_type=RenderCommandEncoder, objc_name="setCullMode") -RenderCommandEncoder_setCullMode :: proc(self: ^RenderCommandEncoder, cullMode: CullMode) { +RenderCommandEncoder_setCullMode :: #force_inline proc(self: ^RenderCommandEncoder, cullMode: CullMode) { msgSend(nil, self, "setCullMode:", cullMode) } @(objc_type=RenderCommandEncoder, objc_name="setDepthBias") -RenderCommandEncoder_setDepthBias :: proc(self: ^RenderCommandEncoder, depthBias: f32, slopeScale: f32, clamp: f32) { +RenderCommandEncoder_setDepthBias :: #force_inline proc(self: ^RenderCommandEncoder, depthBias: f32, slopeScale: f32, clamp: f32) { msgSend(nil, self, "setDepthBias:slopeScale:clamp:", depthBias, slopeScale, clamp) } @(objc_type=RenderCommandEncoder, objc_name="setDepthClipMode") -RenderCommandEncoder_setDepthClipMode :: proc(self: ^RenderCommandEncoder, depthClipMode: DepthClipMode) { +RenderCommandEncoder_setDepthClipMode :: #force_inline proc(self: ^RenderCommandEncoder, depthClipMode: DepthClipMode) { msgSend(nil, self, "setDepthClipMode:", depthClipMode) } @(objc_type=RenderCommandEncoder, objc_name="setDepthStencilState") -RenderCommandEncoder_setDepthStencilState :: proc(self: ^RenderCommandEncoder, depthStencilState: ^NS.Object) { +RenderCommandEncoder_setDepthStencilState :: #force_inline proc(self: ^RenderCommandEncoder, depthStencilState: ^NS.Object) { msgSend(nil, self, "setDepthStencilState:", depthStencilState) } @(objc_type=RenderCommandEncoder, objc_name="setDepthStoreAction") -RenderCommandEncoder_setDepthStoreAction :: proc(self: ^RenderCommandEncoder, storeAction: StoreAction) { +RenderCommandEncoder_setDepthStoreAction :: #force_inline proc(self: ^RenderCommandEncoder, storeAction: StoreAction) { msgSend(nil, self, "setDepthStoreAction:", storeAction) } @(objc_type=RenderCommandEncoder, objc_name="setDepthStoreActionOptions") -RenderCommandEncoder_setDepthStoreActionOptions :: proc(self: ^RenderCommandEncoder, storeActionOptions: StoreActionOptions) { +RenderCommandEncoder_setDepthStoreActionOptions :: #force_inline proc(self: ^RenderCommandEncoder, storeActionOptions: StoreActionOptions) { msgSend(nil, self, "setDepthStoreActionOptions:", storeActionOptions) } @(objc_type=RenderCommandEncoder, objc_name="setFragmentBuffer") -RenderCommandEncoder_setFragmentBuffer :: proc(self: ^RenderCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setFragmentBuffer :: #force_inline proc(self: ^RenderCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setFragmentBuffer:offset:atIndex:", buffer, offset, index) } @(objc_type=RenderCommandEncoder, objc_name="setFragmentBufferOffset") -RenderCommandEncoder_setFragmentBufferOffset :: proc(self: ^RenderCommandEncoder, offset: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setFragmentBufferOffset :: #force_inline proc(self: ^RenderCommandEncoder, offset: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setFragmentBufferOffset:atIndex:", offset, index) } @(objc_type=RenderCommandEncoder, objc_name="setFragmentBuffers") -RenderCommandEncoder_setFragmentBuffers :: proc(self: ^RenderCommandEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { +RenderCommandEncoder_setFragmentBuffers :: #force_inline proc(self: ^RenderCommandEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { msgSend(nil, self, "setFragmentBuffers:offsets:withRange:", buffers, offsets, range) } @(objc_type=RenderCommandEncoder, objc_name="setFragmentBytes") -RenderCommandEncoder_setFragmentBytes :: proc(self: ^RenderCommandEncoder, bytes: rawptr, length: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setFragmentBytes :: #force_inline proc(self: ^RenderCommandEncoder, bytes: rawptr, length: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setFragmentBytes:length:atIndex:", bytes, length, index) } @(objc_type=RenderCommandEncoder, objc_name="setFragmentSamplerState_atIndex_") -RenderCommandEncoder_setFragmentSamplerState_atIndex_ :: proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setFragmentSamplerState_atIndex_ :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setFragmentSamplerState:atIndex:", sampler, index) } @(objc_type=RenderCommandEncoder, objc_name="setFragmentSamplerState_lodMinClamp_lodMaxClamp_atIndex_") -RenderCommandEncoder_setFragmentSamplerState_lodMinClamp_lodMaxClamp_atIndex_ :: proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, lodMinClamp: f32, lodMaxClamp: f32, index: ^NS.Object) { +RenderCommandEncoder_setFragmentSamplerState_lodMinClamp_lodMaxClamp_atIndex_ :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, lodMinClamp: f32, lodMaxClamp: f32, index: ^NS.Object) { msgSend(nil, self, "setFragmentSamplerState:lodMinClamp:lodMaxClamp:atIndex:", sampler, lodMinClamp, lodMaxClamp, index) } @(objc_type=RenderCommandEncoder, objc_name="setFragmentSamplerStates_lodMinClamps_lodMaxClamps_withRange_") -RenderCommandEncoder_setFragmentSamplerStates_lodMinClamps_lodMaxClamps_withRange_ :: proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { +RenderCommandEncoder_setFragmentSamplerStates_lodMinClamps_lodMaxClamps_withRange_ :: #force_inline proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { msgSend(nil, self, "setFragmentSamplerStates:lodMinClamps:lodMaxClamps:withRange:", samplers, lodMinClamps, lodMaxClamps, range) } @(objc_type=RenderCommandEncoder, objc_name="setFragmentSamplerStates_withRange_") -RenderCommandEncoder_setFragmentSamplerStates_withRange_ :: proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, range: NS.Range) { +RenderCommandEncoder_setFragmentSamplerStates_withRange_ :: #force_inline proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setFragmentSamplerStates:withRange:", samplers, range) } @(objc_type=RenderCommandEncoder, objc_name="setFragmentTexture") -RenderCommandEncoder_setFragmentTexture :: proc(self: ^RenderCommandEncoder, texture: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setFragmentTexture :: #force_inline proc(self: ^RenderCommandEncoder, texture: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setFragmentTexture:atIndex:", texture, index) } @(objc_type=RenderCommandEncoder, objc_name="setFragmentTextures") -RenderCommandEncoder_setFragmentTextures :: proc(self: ^RenderCommandEncoder, textures: ^^NS.Object, range: NS.Range) { +RenderCommandEncoder_setFragmentTextures :: #force_inline proc(self: ^RenderCommandEncoder, textures: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setFragmentTextures:withRange:", textures, range) } @(objc_type=RenderCommandEncoder, objc_name="setFrontFacingWinding") -RenderCommandEncoder_setFrontFacingWinding :: proc(self: ^RenderCommandEncoder, frontFacingWinding: Winding) { +RenderCommandEncoder_setFrontFacingWinding :: #force_inline proc(self: ^RenderCommandEncoder, frontFacingWinding: Winding) { msgSend(nil, self, "setFrontFacingWinding:", frontFacingWinding) } @(objc_type=RenderCommandEncoder, objc_name="setRenderPipelineState") -RenderCommandEncoder_setRenderPipelineState :: proc(self: ^RenderCommandEncoder, pipelineState: ^NS.Object) { +RenderCommandEncoder_setRenderPipelineState :: #force_inline proc(self: ^RenderCommandEncoder, pipelineState: ^NS.Object) { msgSend(nil, self, "setRenderPipelineState:", pipelineState) } @(objc_type=RenderCommandEncoder, objc_name="setScissorRect") -RenderCommandEncoder_setScissorRect :: proc(self: ^RenderCommandEncoder, rect: ScissorRect) { +RenderCommandEncoder_setScissorRect :: #force_inline proc(self: ^RenderCommandEncoder, rect: ScissorRect) { msgSend(nil, self, "setScissorRect:", rect) } @(objc_type=RenderCommandEncoder, objc_name="setScissorRects") -RenderCommandEncoder_setScissorRects :: proc(self: ^RenderCommandEncoder, scissorRects: ^ScissorRect, count: ^NS.Object) { +RenderCommandEncoder_setScissorRects :: #force_inline proc(self: ^RenderCommandEncoder, scissorRects: ^ScissorRect, count: ^NS.Object) { msgSend(nil, self, "setScissorRects:count:", scissorRects, count) } @(objc_type=RenderCommandEncoder, objc_name="setStencilFrontReferenceValue") -RenderCommandEncoder_setStencilFrontReferenceValue :: proc(self: ^RenderCommandEncoder, frontReferenceValue: u32, backReferenceValue: u32) { +RenderCommandEncoder_setStencilFrontReferenceValue :: #force_inline proc(self: ^RenderCommandEncoder, frontReferenceValue: u32, backReferenceValue: u32) { msgSend(nil, self, "setStencilFrontReferenceValue:backReferenceValue:", frontReferenceValue, backReferenceValue) } @(objc_type=RenderCommandEncoder, objc_name="setStencilReferenceValue") -RenderCommandEncoder_setStencilReferenceValue :: proc(self: ^RenderCommandEncoder, referenceValue: u32) { +RenderCommandEncoder_setStencilReferenceValue :: #force_inline proc(self: ^RenderCommandEncoder, referenceValue: u32) { msgSend(nil, self, "setStencilReferenceValue:", referenceValue) } @(objc_type=RenderCommandEncoder, objc_name="setStencilStoreAction") -RenderCommandEncoder_setStencilStoreAction :: proc(self: ^RenderCommandEncoder, storeAction: StoreAction) { +RenderCommandEncoder_setStencilStoreAction :: #force_inline proc(self: ^RenderCommandEncoder, storeAction: StoreAction) { msgSend(nil, self, "setStencilStoreAction:", storeAction) } @(objc_type=RenderCommandEncoder, objc_name="setStencilStoreActionOptions") -RenderCommandEncoder_setStencilStoreActionOptions :: proc(self: ^RenderCommandEncoder, storeActionOptions: StoreActionOptions) { +RenderCommandEncoder_setStencilStoreActionOptions :: #force_inline proc(self: ^RenderCommandEncoder, storeActionOptions: StoreActionOptions) { msgSend(nil, self, "setStencilStoreActionOptions:", storeActionOptions) } @(objc_type=RenderCommandEncoder, objc_name="setTessellationFactorBuffer") -RenderCommandEncoder_setTessellationFactorBuffer :: proc(self: ^RenderCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, instanceStride: ^NS.Object) { +RenderCommandEncoder_setTessellationFactorBuffer :: #force_inline proc(self: ^RenderCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, instanceStride: ^NS.Object) { msgSend(nil, self, "setTessellationFactorBuffer:offset:instanceStride:", buffer, offset, instanceStride) } @(objc_type=RenderCommandEncoder, objc_name="setTessellationFactorScale") -RenderCommandEncoder_setTessellationFactorScale :: proc(self: ^RenderCommandEncoder, scale: f32) { +RenderCommandEncoder_setTessellationFactorScale :: #force_inline proc(self: ^RenderCommandEncoder, scale: f32) { msgSend(nil, self, "setTessellationFactorScale:", scale) } @(objc_type=RenderCommandEncoder, objc_name="setThreadgroupMemoryLength") -RenderCommandEncoder_setThreadgroupMemoryLength :: proc(self: ^RenderCommandEncoder, length: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setThreadgroupMemoryLength :: #force_inline proc(self: ^RenderCommandEncoder, length: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setThreadgroupMemoryLength:offset:atIndex:", length, offset, index) } @(objc_type=RenderCommandEncoder, objc_name="setTileBuffer") -RenderCommandEncoder_setTileBuffer :: proc(self: ^RenderCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setTileBuffer :: #force_inline proc(self: ^RenderCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setTileBuffer:offset:atIndex:", buffer, offset, index) } @(objc_type=RenderCommandEncoder, objc_name="setTileBufferOffset") -RenderCommandEncoder_setTileBufferOffset :: proc(self: ^RenderCommandEncoder, offset: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setTileBufferOffset :: #force_inline proc(self: ^RenderCommandEncoder, offset: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setTileBufferOffset:atIndex:", offset, index) } @(objc_type=RenderCommandEncoder, objc_name="setTileBuffers") -RenderCommandEncoder_setTileBuffers :: proc(self: ^RenderCommandEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { +RenderCommandEncoder_setTileBuffers :: #force_inline proc(self: ^RenderCommandEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { msgSend(nil, self, "setTileBuffers:offsets:withRange:", buffers, offsets, range) } @(objc_type=RenderCommandEncoder, objc_name="setTileBytes") -RenderCommandEncoder_setTileBytes :: proc(self: ^RenderCommandEncoder, bytes: rawptr, length: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setTileBytes :: #force_inline proc(self: ^RenderCommandEncoder, bytes: rawptr, length: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setTileBytes:length:atIndex:", bytes, length, index) } @(objc_type=RenderCommandEncoder, objc_name="setTileSamplerState_atIndex_") -RenderCommandEncoder_setTileSamplerState_atIndex_ :: proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setTileSamplerState_atIndex_ :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setTileSamplerState:atIndex:", sampler, index) } @(objc_type=RenderCommandEncoder, objc_name="setTileSamplerState_lodMinClamp_lodMaxClamp_atIndex_") -RenderCommandEncoder_setTileSamplerState_lodMinClamp_lodMaxClamp_atIndex_ :: proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, lodMinClamp: f32, lodMaxClamp: f32, index: ^NS.Object) { +RenderCommandEncoder_setTileSamplerState_lodMinClamp_lodMaxClamp_atIndex_ :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, lodMinClamp: f32, lodMaxClamp: f32, index: ^NS.Object) { msgSend(nil, self, "setTileSamplerState:lodMinClamp:lodMaxClamp:atIndex:", sampler, lodMinClamp, lodMaxClamp, index) } @(objc_type=RenderCommandEncoder, objc_name="setTileSamplerStates_lodMinClamps_lodMaxClamps_withRange_") -RenderCommandEncoder_setTileSamplerStates_lodMinClamps_lodMaxClamps_withRange_ :: proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { +RenderCommandEncoder_setTileSamplerStates_lodMinClamps_lodMaxClamps_withRange_ :: #force_inline proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { msgSend(nil, self, "setTileSamplerStates:lodMinClamps:lodMaxClamps:withRange:", samplers, lodMinClamps, lodMaxClamps, range) } @(objc_type=RenderCommandEncoder, objc_name="setTileSamplerStates_withRange_") -RenderCommandEncoder_setTileSamplerStates_withRange_ :: proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, range: NS.Range) { +RenderCommandEncoder_setTileSamplerStates_withRange_ :: #force_inline proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setTileSamplerStates:withRange:", samplers, range) } @(objc_type=RenderCommandEncoder, objc_name="setTileTexture") -RenderCommandEncoder_setTileTexture :: proc(self: ^RenderCommandEncoder, texture: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setTileTexture :: #force_inline proc(self: ^RenderCommandEncoder, texture: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setTileTexture:atIndex:", texture, index) } @(objc_type=RenderCommandEncoder, objc_name="setTileTextures") -RenderCommandEncoder_setTileTextures :: proc(self: ^RenderCommandEncoder, textures: ^^NS.Object, range: NS.Range) { +RenderCommandEncoder_setTileTextures :: #force_inline proc(self: ^RenderCommandEncoder, textures: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setTileTextures:withRange:", textures, range) } @(objc_type=RenderCommandEncoder, objc_name="setTriangleFillMode") -RenderCommandEncoder_setTriangleFillMode :: proc(self: ^RenderCommandEncoder, fillMode: TriangleFillMode) { +RenderCommandEncoder_setTriangleFillMode :: #force_inline proc(self: ^RenderCommandEncoder, fillMode: TriangleFillMode) { msgSend(nil, self, "setTriangleFillMode:", fillMode) } @(objc_type=RenderCommandEncoder, objc_name="setVertexAmplificationCount") -RenderCommandEncoder_setVertexAmplificationCount :: proc(self: ^RenderCommandEncoder, count: ^NS.Object, viewMappings: ^VertexAmplificationViewMapping) { +RenderCommandEncoder_setVertexAmplificationCount :: #force_inline proc(self: ^RenderCommandEncoder, count: ^NS.Object, viewMappings: ^VertexAmplificationViewMapping) { msgSend(nil, self, "setVertexAmplificationCount:viewMappings:", count, viewMappings) } @(objc_type=RenderCommandEncoder, objc_name="setVertexBuffer") -RenderCommandEncoder_setVertexBuffer :: proc(self: ^RenderCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setVertexBuffer :: #force_inline proc(self: ^RenderCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setVertexBuffer:offset:atIndex:", buffer, offset, index) } @(objc_type=RenderCommandEncoder, objc_name="setVertexBufferOffset") -RenderCommandEncoder_setVertexBufferOffset :: proc(self: ^RenderCommandEncoder, offset: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setVertexBufferOffset :: #force_inline proc(self: ^RenderCommandEncoder, offset: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setVertexBufferOffset:atIndex:", offset, index) } @(objc_type=RenderCommandEncoder, objc_name="setVertexBuffers") -RenderCommandEncoder_setVertexBuffers :: proc(self: ^RenderCommandEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { +RenderCommandEncoder_setVertexBuffers :: #force_inline proc(self: ^RenderCommandEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { msgSend(nil, self, "setVertexBuffers:offsets:withRange:", buffers, offsets, range) } @(objc_type=RenderCommandEncoder, objc_name="setVertexBytes") -RenderCommandEncoder_setVertexBytes :: proc(self: ^RenderCommandEncoder, bytes: rawptr, length: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setVertexBytes :: #force_inline proc(self: ^RenderCommandEncoder, bytes: rawptr, length: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setVertexBytes:length:atIndex:", bytes, length, index) } @(objc_type=RenderCommandEncoder, objc_name="setVertexSamplerState_atIndex_") -RenderCommandEncoder_setVertexSamplerState_atIndex_ :: proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setVertexSamplerState_atIndex_ :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setVertexSamplerState:atIndex:", sampler, index) } @(objc_type=RenderCommandEncoder, objc_name="setVertexSamplerState_lodMinClamp_lodMaxClamp_atIndex_") -RenderCommandEncoder_setVertexSamplerState_lodMinClamp_lodMaxClamp_atIndex_ :: proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, lodMinClamp: f32, lodMaxClamp: f32, index: ^NS.Object) { +RenderCommandEncoder_setVertexSamplerState_lodMinClamp_lodMaxClamp_atIndex_ :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, lodMinClamp: f32, lodMaxClamp: f32, index: ^NS.Object) { msgSend(nil, self, "setVertexSamplerState:lodMinClamp:lodMaxClamp:atIndex:", sampler, lodMinClamp, lodMaxClamp, index) } @(objc_type=RenderCommandEncoder, objc_name="setVertexSamplerStates_lodMinClamps_lodMaxClamps_withRange_") -RenderCommandEncoder_setVertexSamplerStates_lodMinClamps_lodMaxClamps_withRange_ :: proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { +RenderCommandEncoder_setVertexSamplerStates_lodMinClamps_lodMaxClamps_withRange_ :: #force_inline proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { msgSend(nil, self, "setVertexSamplerStates:lodMinClamps:lodMaxClamps:withRange:", samplers, lodMinClamps, lodMaxClamps, range) } @(objc_type=RenderCommandEncoder, objc_name="setVertexSamplerStates_withRange_") -RenderCommandEncoder_setVertexSamplerStates_withRange_ :: proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, range: NS.Range) { +RenderCommandEncoder_setVertexSamplerStates_withRange_ :: #force_inline proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setVertexSamplerStates:withRange:", samplers, range) } @(objc_type=RenderCommandEncoder, objc_name="setVertexTexture") -RenderCommandEncoder_setVertexTexture :: proc(self: ^RenderCommandEncoder, texture: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setVertexTexture :: #force_inline proc(self: ^RenderCommandEncoder, texture: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setVertexTexture:atIndex:", texture, index) } @(objc_type=RenderCommandEncoder, objc_name="setVertexTextures") -RenderCommandEncoder_setVertexTextures :: proc(self: ^RenderCommandEncoder, textures: ^^NS.Object, range: NS.Range) { +RenderCommandEncoder_setVertexTextures :: #force_inline proc(self: ^RenderCommandEncoder, textures: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setVertexTextures:withRange:", textures, range) } @(objc_type=RenderCommandEncoder, objc_name="setViewport") -RenderCommandEncoder_setViewport :: proc(self: ^RenderCommandEncoder, viewport: Viewport) { +RenderCommandEncoder_setViewport :: #force_inline proc(self: ^RenderCommandEncoder, viewport: Viewport) { msgSend(nil, self, "setViewport:", viewport) } @(objc_type=RenderCommandEncoder, objc_name="setViewports") -RenderCommandEncoder_setViewports :: proc(self: ^RenderCommandEncoder, viewports: ^Viewport, count: ^NS.Object) { +RenderCommandEncoder_setViewports :: #force_inline proc(self: ^RenderCommandEncoder, viewports: ^Viewport, count: ^NS.Object) { msgSend(nil, self, "setViewports:count:", viewports, count) } @(objc_type=RenderCommandEncoder, objc_name="setVisibilityResultMode") -RenderCommandEncoder_setVisibilityResultMode :: proc(self: ^RenderCommandEncoder, mode: VisibilityResultMode, offset: ^NS.Object) { +RenderCommandEncoder_setVisibilityResultMode :: #force_inline proc(self: ^RenderCommandEncoder, mode: VisibilityResultMode, offset: ^NS.Object) { msgSend(nil, self, "setVisibilityResultMode:offset:", mode, offset) } @(objc_type=RenderCommandEncoder, objc_name="textureBarrier") -RenderCommandEncoder_textureBarrier :: proc(self: ^RenderCommandEncoder) { +RenderCommandEncoder_textureBarrier :: #force_inline proc(self: ^RenderCommandEncoder) { msgSend(nil, self, "textureBarrier") } @(objc_type=RenderCommandEncoder, objc_name="tileHeight") -RenderCommandEncoder_tileHeight :: proc(self: ^RenderCommandEncoder) -> NS.Integer { +RenderCommandEncoder_tileHeight :: #force_inline proc(self: ^RenderCommandEncoder) -> NS.Integer { return msgSend(NS.Integer, self, "tileHeight") } @(objc_type=RenderCommandEncoder, objc_name="tileWidth") -RenderCommandEncoder_tileWidth :: proc(self: ^RenderCommandEncoder) -> NS.Integer { +RenderCommandEncoder_tileWidth :: #force_inline proc(self: ^RenderCommandEncoder) -> NS.Integer { return msgSend(NS.Integer, self, "tileWidth") } @(objc_type=RenderCommandEncoder, objc_name="updateFence") -RenderCommandEncoder_updateFence :: proc(self: ^RenderCommandEncoder, fence: ^NS.Object, stages: RenderStages) { +RenderCommandEncoder_updateFence :: #force_inline proc(self: ^RenderCommandEncoder, fence: ^NS.Object, stages: RenderStages) { msgSend(nil, self, "updateFence:afterStages:", fence, stages) } @(objc_type=RenderCommandEncoder, objc_name="useHeap") -RenderCommandEncoder_useHeap :: proc(self: ^RenderCommandEncoder, heap: ^NS.Object) { +RenderCommandEncoder_useHeap :: #force_inline proc(self: ^RenderCommandEncoder, heap: ^NS.Object) { msgSend(nil, self, "useHeap:", heap) } @(objc_type=RenderCommandEncoder, objc_name="useHeap_stages_") -RenderCommandEncoder_useHeap_stages_ :: proc(self: ^RenderCommandEncoder, heap: ^NS.Object, stages: RenderStages) { +RenderCommandEncoder_useHeap_stages_ :: #force_inline proc(self: ^RenderCommandEncoder, heap: ^NS.Object, stages: RenderStages) { msgSend(nil, self, "useHeap:stages:", heap, stages) } @(objc_type=RenderCommandEncoder, objc_name="useHeaps") -RenderCommandEncoder_useHeaps :: proc(self: ^RenderCommandEncoder, heaps: ^^NS.Object, count: ^NS.Object) { +RenderCommandEncoder_useHeaps :: #force_inline proc(self: ^RenderCommandEncoder, heaps: ^^NS.Object, count: ^NS.Object) { msgSend(nil, self, "useHeaps:count:", heaps, count) } @(objc_type=RenderCommandEncoder, objc_name="useHeaps_count_stages_") -RenderCommandEncoder_useHeaps_count_stages_ :: proc(self: ^RenderCommandEncoder, heaps: ^^NS.Object, count: ^NS.Object, stages: RenderStages) { +RenderCommandEncoder_useHeaps_count_stages_ :: #force_inline proc(self: ^RenderCommandEncoder, heaps: ^^NS.Object, count: ^NS.Object, stages: RenderStages) { msgSend(nil, self, "useHeaps:count:stages:", heaps, count, stages) } @(objc_type=RenderCommandEncoder, objc_name="useResource") -RenderCommandEncoder_useResource :: proc(self: ^RenderCommandEncoder, resource: ^NS.Object, usage: ResourceUsage) { +RenderCommandEncoder_useResource :: #force_inline proc(self: ^RenderCommandEncoder, resource: ^NS.Object, usage: ResourceUsage) { msgSend(nil, self, "useResource:usage:", resource, usage) } @(objc_type=RenderCommandEncoder, objc_name="useResource_usage_stages_") -RenderCommandEncoder_useResource_usage_stages_ :: proc(self: ^RenderCommandEncoder, resource: ^NS.Object, usage: ResourceUsage, stages: RenderStages) { +RenderCommandEncoder_useResource_usage_stages_ :: #force_inline proc(self: ^RenderCommandEncoder, resource: ^NS.Object, usage: ResourceUsage, stages: RenderStages) { msgSend(nil, self, "useResource:usage:stages:", resource, usage, stages) } @(objc_type=RenderCommandEncoder, objc_name="useResources") -RenderCommandEncoder_useResources :: proc(self: ^RenderCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, usage: ResourceUsage) { +RenderCommandEncoder_useResources :: #force_inline proc(self: ^RenderCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, usage: ResourceUsage) { msgSend(nil, self, "useResources:count:usage:", resources, count, usage) } @(objc_type=RenderCommandEncoder, objc_name="useResources_count_usage_stages_") -RenderCommandEncoder_useResources_count_usage_stages_ :: proc(self: ^RenderCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, usage: ResourceUsage, stages: RenderStages) { +RenderCommandEncoder_useResources_count_usage_stages_ :: #force_inline proc(self: ^RenderCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, usage: ResourceUsage, stages: RenderStages) { msgSend(nil, self, "useResources:count:usage:stages:", resources, count, usage, stages) } @(objc_type=RenderCommandEncoder, objc_name="waitForFence") -RenderCommandEncoder_waitForFence :: proc(self: ^RenderCommandEncoder, fence: ^NS.Object, stages: RenderStages) { +RenderCommandEncoder_waitForFence :: #force_inline proc(self: ^RenderCommandEncoder, fence: ^NS.Object, stages: RenderStages) { msgSend(nil, self, "waitForFence:beforeStages:", fence, stages) } @@ -7670,31 +7656,31 @@ Methods: RenderPipelineState :: struct { using _: NS.Object } @(objc_type=RenderPipelineState, objc_name="device") -RenderPipelineState_device :: proc(self: ^RenderPipelineState) -> ^RenderPipelineState { +RenderPipelineState_device :: #force_inline proc(self: ^RenderPipelineState) -> ^RenderPipelineState { return msgSend(^RenderPipelineState, self, "device") } @(objc_type=RenderPipelineState, objc_name="imageblockMemoryLengthForDimensions") -RenderPipelineState_imageblockMemoryLengthForDimensions :: proc(self: ^RenderPipelineState, imageblockDimensions: Size) -> ^RenderPipelineState { +RenderPipelineState_imageblockMemoryLengthForDimensions :: #force_inline proc(self: ^RenderPipelineState, imageblockDimensions: Size) -> ^RenderPipelineState { return msgSend(^RenderPipelineState, self, "imageblockMemoryLengthForDimensions:", imageblockDimensions) } @(objc_type=RenderPipelineState, objc_name="imageblockSampleLength") -RenderPipelineState_imageblockSampleLength :: proc(self: ^RenderPipelineState) -> NS.Integer { +RenderPipelineState_imageblockSampleLength :: #force_inline proc(self: ^RenderPipelineState) -> NS.Integer { return msgSend(NS.Integer, self, "imageblockSampleLength") } @(objc_type=RenderPipelineState, objc_name="label") -RenderPipelineState_label :: proc(self: ^RenderPipelineState) -> ^NS.String { +RenderPipelineState_label :: #force_inline proc(self: ^RenderPipelineState) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=RenderPipelineState, objc_name="maxTotalThreadsPerThreadgroup") -RenderPipelineState_maxTotalThreadsPerThreadgroup :: proc(self: ^RenderPipelineState) -> NS.Integer { +RenderPipelineState_maxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^RenderPipelineState) -> NS.Integer { return msgSend(NS.Integer, self, "maxTotalThreadsPerThreadgroup") } @(objc_type=RenderPipelineState, objc_name="supportIndirectCommandBuffers") -RenderPipelineState_supportIndirectCommandBuffers :: proc(self: ^RenderPipelineState) -> BOOL { +RenderPipelineState_supportIndirectCommandBuffers :: #force_inline proc(self: ^RenderPipelineState) -> BOOL { return msgSend(BOOL, self, "supportIndirectCommandBuffers") } @(objc_type=RenderPipelineState, objc_name="threadgroupSizeMatchesTileSize") -RenderPipelineState_threadgroupSizeMatchesTileSize :: proc(self: ^RenderPipelineState) -> BOOL { +RenderPipelineState_threadgroupSizeMatchesTileSize :: #force_inline proc(self: ^RenderPipelineState) -> BOOL { return msgSend(BOOL, self, "threadgroupSizeMatchesTileSize") } @@ -7723,55 +7709,55 @@ Methods: Resource :: struct { using _: NS.Object } @(objc_type=Resource, objc_name="allocatedSize") -Resource_allocatedSize :: proc(self: ^Resource) -> NS.Integer { +Resource_allocatedSize :: #force_inline proc(self: ^Resource) -> NS.Integer { return msgSend(NS.Integer, self, "allocatedSize") } @(objc_type=Resource, objc_name="cpuCacheMode") -Resource_cpuCacheMode :: proc(self: ^Resource) -> CPUCacheMode { +Resource_cpuCacheMode :: #force_inline proc(self: ^Resource) -> CPUCacheMode { return msgSend(CPUCacheMode, self, "cpuCacheMode") } @(objc_type=Resource, objc_name="device") -Resource_device :: proc(self: ^Resource) -> ^Resource { +Resource_device :: #force_inline proc(self: ^Resource) -> ^Resource { return msgSend(^Resource, self, "device") } @(objc_type=Resource, objc_name="hazardTrackingMode") -Resource_hazardTrackingMode :: proc(self: ^Resource) -> HazardTrackingMode { +Resource_hazardTrackingMode :: #force_inline proc(self: ^Resource) -> HazardTrackingMode { return msgSend(HazardTrackingMode, self, "hazardTrackingMode") } @(objc_type=Resource, objc_name="heap") -Resource_heap :: proc(self: ^Resource) -> ^Resource { +Resource_heap :: #force_inline proc(self: ^Resource) -> ^Resource { return msgSend(^Resource, self, "heap") } @(objc_type=Resource, objc_name="heapOffset") -Resource_heapOffset :: proc(self: ^Resource) -> NS.Integer { +Resource_heapOffset :: #force_inline proc(self: ^Resource) -> NS.Integer { return msgSend(NS.Integer, self, "heapOffset") } @(objc_type=Resource, objc_name="isAliasable") -Resource_isAliasable :: proc(self: ^Resource) -> BOOL { +Resource_isAliasable :: #force_inline proc(self: ^Resource) -> BOOL { return msgSend(BOOL, self, "isAliasable") } @(objc_type=Resource, objc_name="label") -Resource_label :: proc(self: ^Resource) -> ^NS.String { +Resource_label :: #force_inline proc(self: ^Resource) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=Resource, objc_name="makeAliasable") -Resource_makeAliasable :: proc(self: ^Resource) { +Resource_makeAliasable :: #force_inline proc(self: ^Resource) { msgSend(nil, self, "makeAliasable") } @(objc_type=Resource, objc_name="resourceOptions") -Resource_resourceOptions :: proc(self: ^Resource) -> ResourceOptions { +Resource_resourceOptions :: #force_inline proc(self: ^Resource) -> ResourceOptions { return msgSend(ResourceOptions, self, "resourceOptions") } @(objc_type=Resource, objc_name="setLabel") -Resource_setLabel :: proc(self: ^Resource, label: ^NS.String) { +Resource_setLabel :: #force_inline proc(self: ^Resource, label: ^NS.String) { msgSend(nil, self, "setLabel:", label) } @(objc_type=Resource, objc_name="setPurgeableState") -Resource_setPurgeableState :: proc(self: ^Resource, state: PurgeableState) -> PurgeableState { +Resource_setPurgeableState :: #force_inline proc(self: ^Resource, state: PurgeableState) -> PurgeableState { return msgSend(PurgeableState, self, "setPurgeableState:", state) } @(objc_type=Resource, objc_name="storageMode") -Resource_storageMode :: proc(self: ^Resource) -> StorageMode { +Resource_storageMode :: #force_inline proc(self: ^Resource) -> StorageMode { return msgSend(StorageMode, self, "storageMode") } @@ -7792,23 +7778,23 @@ Methods: ResourceStateCommandEncoder :: struct { using _: NS.Object } @(objc_type=ResourceStateCommandEncoder, objc_name="updateFence") -ResourceStateCommandEncoder_updateFence :: proc(self: ^ResourceStateCommandEncoder, fence: ^NS.Object) { +ResourceStateCommandEncoder_updateFence :: #force_inline proc(self: ^ResourceStateCommandEncoder, fence: ^NS.Object) { msgSend(nil, self, "updateFence:", fence) } @(objc_type=ResourceStateCommandEncoder, objc_name="updateTextureMapping_mode_indirectBuffer_indirectBufferOffset_") -ResourceStateCommandEncoder_updateTextureMapping_mode_indirectBuffer_indirectBufferOffset_ :: proc(self: ^ResourceStateCommandEncoder, texture: ^NS.Object, mode: SparseTextureMappingMode, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { +ResourceStateCommandEncoder_updateTextureMapping_mode_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^ResourceStateCommandEncoder, texture: ^NS.Object, mode: SparseTextureMappingMode, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { msgSend(nil, self, "updateTextureMapping:mode:indirectBuffer:indirectBufferOffset:", texture, mode, indirectBuffer, indirectBufferOffset) } @(objc_type=ResourceStateCommandEncoder, objc_name="updateTextureMapping_mode_region_mipLevel_slice_") -ResourceStateCommandEncoder_updateTextureMapping_mode_region_mipLevel_slice_ :: proc(self: ^ResourceStateCommandEncoder, texture: ^NS.Object, mode: SparseTextureMappingMode, region: Region, mipLevel: NS.Integer, slice: NS.Integer) { +ResourceStateCommandEncoder_updateTextureMapping_mode_region_mipLevel_slice_ :: #force_inline proc(self: ^ResourceStateCommandEncoder, texture: ^NS.Object, mode: SparseTextureMappingMode, region: Region, mipLevel: NS.Integer, slice: NS.Integer) { msgSend(nil, self, "updateTextureMapping:mode:region:mipLevel:slice:", texture, mode, region, mipLevel, slice) } @(objc_type=ResourceStateCommandEncoder, objc_name="updateTextureMappings") -ResourceStateCommandEncoder_updateTextureMappings :: proc(self: ^ResourceStateCommandEncoder, texture: ^NS.Object, mode: SparseTextureMappingMode, regions: ^Region, mipLevels: NS.Integer, slices: NS.Integer, numRegions: ^NS.Object) { +ResourceStateCommandEncoder_updateTextureMappings :: #force_inline proc(self: ^ResourceStateCommandEncoder, texture: ^NS.Object, mode: SparseTextureMappingMode, regions: ^Region, mipLevels: NS.Integer, slices: NS.Integer, numRegions: ^NS.Object) { msgSend(nil, self, "updateTextureMappings:mode:regions:mipLevels:slices:numRegions:", texture, mode, regions, mipLevels, slices, numRegions) } @(objc_type=ResourceStateCommandEncoder, objc_name="waitForFence") -ResourceStateCommandEncoder_waitForFence :: proc(self: ^ResourceStateCommandEncoder, fence: ^NS.Object) { +ResourceStateCommandEncoder_waitForFence :: #force_inline proc(self: ^ResourceStateCommandEncoder, fence: ^NS.Object) { msgSend(nil, self, "waitForFence:", fence) } @@ -7826,11 +7812,11 @@ Methods: SamplerState :: struct { using _: NS.Object } @(objc_type=SamplerState, objc_name="device") -SamplerState_device :: proc(self: ^SamplerState) -> ^SamplerState { +SamplerState_device :: #force_inline proc(self: ^SamplerState) -> ^SamplerState { return msgSend(^SamplerState, self, "device") } @(objc_type=SamplerState, objc_name="label") -SamplerState_label :: proc(self: ^SamplerState) -> ^NS.String { +SamplerState_label :: #force_inline proc(self: ^SamplerState) -> ^NS.String { return msgSend(^NS.String, self, "label") } @@ -7850,19 +7836,19 @@ Methods: SharedEvent :: struct { using _: NS.Object } @(objc_type=SharedEvent, objc_name="newSharedEventHandle") -SharedEvent_newSharedEventHandle :: proc(self: ^SharedEvent) -> ^SharedEventHandle { +SharedEvent_newSharedEventHandle :: #force_inline proc(self: ^SharedEvent) -> ^SharedEventHandle { return msgSend(^SharedEventHandle, self, "newSharedEventHandle") } @(objc_type=SharedEvent, objc_name="notifyListener") -SharedEvent_notifyListener :: proc(self: ^SharedEvent, listener: ^SharedEventListener, value: u64, block: SharedEventNotificationBlock) { +SharedEvent_notifyListener :: #force_inline proc(self: ^SharedEvent, listener: ^SharedEventListener, value: u64, block: SharedEventNotificationBlock) { msgSend(nil, self, "notifyListener:atValue:block:", listener, value, block) } @(objc_type=SharedEvent, objc_name="setSignaledValue") -SharedEvent_setSignaledValue :: proc(self: ^SharedEvent, signaledValue: u64) { +SharedEvent_setSignaledValue :: #force_inline proc(self: ^SharedEvent, signaledValue: u64) { msgSend(nil, self, "setSignaledValue:", signaledValue) } @(objc_type=SharedEvent, objc_name="signaledValue") -SharedEvent_signaledValue :: proc(self: ^SharedEvent) -> u64 { +SharedEvent_signaledValue :: #force_inline proc(self: ^SharedEvent) -> u64 { return msgSend(u64, self, "signaledValue") } @@ -7913,143 +7899,143 @@ Methods: Texture :: struct { using _: NS.Object } @(objc_type=Texture, objc_name="allowGPUOptimizedContents") -Texture_allowGPUOptimizedContents :: proc(self: ^Texture) -> BOOL { +Texture_allowGPUOptimizedContents :: #force_inline proc(self: ^Texture) -> BOOL { return msgSend(BOOL, self, "allowGPUOptimizedContents") } @(objc_type=Texture, objc_name="arrayLength") -Texture_arrayLength :: proc(self: ^Texture) -> NS.Integer { +Texture_arrayLength :: #force_inline proc(self: ^Texture) -> NS.Integer { return msgSend(NS.Integer, self, "arrayLength") } @(objc_type=Texture, objc_name="buffer") -Texture_buffer :: proc(self: ^Texture) -> ^Texture { +Texture_buffer :: #force_inline proc(self: ^Texture) -> ^Texture { return msgSend(^Texture, self, "buffer") } @(objc_type=Texture, objc_name="bufferBytesPerRow") -Texture_bufferBytesPerRow :: proc(self: ^Texture) -> NS.Integer { +Texture_bufferBytesPerRow :: #force_inline proc(self: ^Texture) -> NS.Integer { return msgSend(NS.Integer, self, "bufferBytesPerRow") } @(objc_type=Texture, objc_name="bufferOffset") -Texture_bufferOffset :: proc(self: ^Texture) -> NS.Integer { +Texture_bufferOffset :: #force_inline proc(self: ^Texture) -> NS.Integer { return msgSend(NS.Integer, self, "bufferOffset") } @(objc_type=Texture, objc_name="depth") -Texture_depth :: proc(self: ^Texture) -> NS.Integer { +Texture_depth :: #force_inline proc(self: ^Texture) -> NS.Integer { return msgSend(NS.Integer, self, "depth") } @(objc_type=Texture, objc_name="firstMipmapInTail") -Texture_firstMipmapInTail :: proc(self: ^Texture) -> NS.Integer { +Texture_firstMipmapInTail :: #force_inline proc(self: ^Texture) -> NS.Integer { return msgSend(NS.Integer, self, "firstMipmapInTail") } @(objc_type=Texture, objc_name="getBytes_bytesPerRow_bytesPerImage_fromRegion_mipmapLevel_slice_") -Texture_getBytes_bytesPerRow_bytesPerImage_fromRegion_mipmapLevel_slice_ :: proc(self: ^Texture, pixelBytes: rawptr, bytesPerRow: ^NS.Object, bytesPerImage: ^NS.Object, region: Region, level: ^NS.Object, slice: ^NS.Object) { +Texture_getBytes_bytesPerRow_bytesPerImage_fromRegion_mipmapLevel_slice_ :: #force_inline proc(self: ^Texture, pixelBytes: rawptr, bytesPerRow: ^NS.Object, bytesPerImage: ^NS.Object, region: Region, level: ^NS.Object, slice: ^NS.Object) { msgSend(nil, self, "getBytes:bytesPerRow:bytesPerImage:fromRegion:mipmapLevel:slice:", pixelBytes, bytesPerRow, bytesPerImage, region, level, slice) } @(objc_type=Texture, objc_name="getBytes_bytesPerRow_fromRegion_mipmapLevel_") -Texture_getBytes_bytesPerRow_fromRegion_mipmapLevel_ :: proc(self: ^Texture, pixelBytes: rawptr, bytesPerRow: ^NS.Object, region: Region, level: ^NS.Object) { +Texture_getBytes_bytesPerRow_fromRegion_mipmapLevel_ :: #force_inline proc(self: ^Texture, pixelBytes: rawptr, bytesPerRow: ^NS.Object, region: Region, level: ^NS.Object) { msgSend(nil, self, "getBytes:bytesPerRow:fromRegion:mipmapLevel:", pixelBytes, bytesPerRow, region, level) } @(objc_type=Texture, objc_name="height") -Texture_height :: proc(self: ^Texture) -> NS.Integer { +Texture_height :: #force_inline proc(self: ^Texture) -> NS.Integer { return msgSend(NS.Integer, self, "height") } @(objc_type=Texture, objc_name="iosurface") -Texture_iosurface :: proc(self: ^Texture) -> IOSurfaceRef { +Texture_iosurface :: #force_inline proc(self: ^Texture) -> IOSurfaceRef { return msgSend(IOSurfaceRef, self, "iosurface") } @(objc_type=Texture, objc_name="iosurfacePlane") -Texture_iosurfacePlane :: proc(self: ^Texture) -> NS.Integer { +Texture_iosurfacePlane :: #force_inline proc(self: ^Texture) -> NS.Integer { return msgSend(NS.Integer, self, "iosurfacePlane") } @(objc_type=Texture, objc_name="isFramebufferOnly") -Texture_isFramebufferOnly :: proc(self: ^Texture) -> BOOL { +Texture_isFramebufferOnly :: #force_inline proc(self: ^Texture) -> BOOL { return msgSend(BOOL, self, "isFramebufferOnly") } @(objc_type=Texture, objc_name="isShareable") -Texture_isShareable :: proc(self: ^Texture) -> BOOL { +Texture_isShareable :: #force_inline proc(self: ^Texture) -> BOOL { return msgSend(BOOL, self, "isShareable") } @(objc_type=Texture, objc_name="isSparse") -Texture_isSparse :: proc(self: ^Texture) -> BOOL { +Texture_isSparse :: #force_inline proc(self: ^Texture) -> BOOL { return msgSend(BOOL, self, "isSparse") } @(objc_type=Texture, objc_name="mipmapLevelCount") -Texture_mipmapLevelCount :: proc(self: ^Texture) -> NS.Integer { +Texture_mipmapLevelCount :: #force_inline proc(self: ^Texture) -> NS.Integer { return msgSend(NS.Integer, self, "mipmapLevelCount") } @(objc_type=Texture, objc_name="newRemoteTextureViewForDevice") -Texture_newRemoteTextureViewForDevice :: proc(self: ^Texture, device: ^NS.Object) -> ^Texture { +Texture_newRemoteTextureViewForDevice :: #force_inline proc(self: ^Texture, device: ^NS.Object) -> ^Texture { return msgSend(^Texture, self, "newRemoteTextureViewForDevice:", device) } @(objc_type=Texture, objc_name="newSharedTextureHandle") -Texture_newSharedTextureHandle :: proc(self: ^Texture) -> ^SharedTextureHandle { +Texture_newSharedTextureHandle :: #force_inline proc(self: ^Texture) -> ^SharedTextureHandle { return msgSend(^SharedTextureHandle, self, "newSharedTextureHandle") } @(objc_type=Texture, objc_name="newTextureViewWithPixelFormat") -Texture_newTextureViewWithPixelFormat :: proc(self: ^Texture, pixelFormat: PixelFormat) -> ^Texture { +Texture_newTextureViewWithPixelFormat :: #force_inline proc(self: ^Texture, pixelFormat: PixelFormat) -> ^Texture { return msgSend(^Texture, self, "newTextureViewWithPixelFormat:", pixelFormat) } @(objc_type=Texture, objc_name="newTextureViewWithPixelFormat_textureType_levels_slices_") -Texture_newTextureViewWithPixelFormat_textureType_levels_slices_ :: proc(self: ^Texture, pixelFormat: PixelFormat, textureType: TextureType, levelRange: NS.Range, sliceRange: NS.Range) -> ^Texture { +Texture_newTextureViewWithPixelFormat_textureType_levels_slices_ :: #force_inline proc(self: ^Texture, pixelFormat: PixelFormat, textureType: TextureType, levelRange: NS.Range, sliceRange: NS.Range) -> ^Texture { return msgSend(^Texture, self, "newTextureViewWithPixelFormat:textureType:levels:slices:", pixelFormat, textureType, levelRange, sliceRange) } @(objc_type=Texture, objc_name="newTextureViewWithPixelFormat_textureType_levels_slices_swizzle_") -Texture_newTextureViewWithPixelFormat_textureType_levels_slices_swizzle_ :: proc(self: ^Texture, pixelFormat: PixelFormat, textureType: TextureType, levelRange: NS.Range, sliceRange: NS.Range, swizzle: TextureSwizzleChannels) -> ^Texture { +Texture_newTextureViewWithPixelFormat_textureType_levels_slices_swizzle_ :: #force_inline proc(self: ^Texture, pixelFormat: PixelFormat, textureType: TextureType, levelRange: NS.Range, sliceRange: NS.Range, swizzle: TextureSwizzleChannels) -> ^Texture { return msgSend(^Texture, self, "newTextureViewWithPixelFormat:textureType:levels:slices:swizzle:", pixelFormat, textureType, levelRange, sliceRange, swizzle) } @(objc_type=Texture, objc_name="parentRelativeLevel") -Texture_parentRelativeLevel :: proc(self: ^Texture) -> NS.Integer { +Texture_parentRelativeLevel :: #force_inline proc(self: ^Texture) -> NS.Integer { return msgSend(NS.Integer, self, "parentRelativeLevel") } @(objc_type=Texture, objc_name="parentRelativeSlice") -Texture_parentRelativeSlice :: proc(self: ^Texture) -> NS.Integer { +Texture_parentRelativeSlice :: #force_inline proc(self: ^Texture) -> NS.Integer { return msgSend(NS.Integer, self, "parentRelativeSlice") } @(objc_type=Texture, objc_name="parentTexture") -Texture_parentTexture :: proc(self: ^Texture) -> ^Texture { +Texture_parentTexture :: #force_inline proc(self: ^Texture) -> ^Texture { return msgSend(^Texture, self, "parentTexture") } @(objc_type=Texture, objc_name="pixelFormat") -Texture_pixelFormat :: proc(self: ^Texture) -> PixelFormat { +Texture_pixelFormat :: #force_inline proc(self: ^Texture) -> PixelFormat { return msgSend(PixelFormat, self, "pixelFormat") } @(objc_type=Texture, objc_name="remoteStorageTexture") -Texture_remoteStorageTexture :: proc(self: ^Texture) -> ^Texture { +Texture_remoteStorageTexture :: #force_inline proc(self: ^Texture) -> ^Texture { return msgSend(^Texture, self, "remoteStorageTexture") } @(objc_type=Texture, objc_name="replaceRegion_mipmapLevel_slice_withBytes_bytesPerRow_bytesPerImage_") -Texture_replaceRegion_mipmapLevel_slice_withBytes_bytesPerRow_bytesPerImage_ :: proc(self: ^Texture, region: Region, level: ^NS.Object, slice: ^NS.Object, pixelBytes: rawptr, bytesPerRow: ^NS.Object, bytesPerImage: ^NS.Object) { +Texture_replaceRegion_mipmapLevel_slice_withBytes_bytesPerRow_bytesPerImage_ :: #force_inline proc(self: ^Texture, region: Region, level: ^NS.Object, slice: ^NS.Object, pixelBytes: rawptr, bytesPerRow: ^NS.Object, bytesPerImage: ^NS.Object) { msgSend(nil, self, "replaceRegion:mipmapLevel:slice:withBytes:bytesPerRow:bytesPerImage:", region, level, slice, pixelBytes, bytesPerRow, bytesPerImage) } @(objc_type=Texture, objc_name="replaceRegion_mipmapLevel_withBytes_bytesPerRow_") -Texture_replaceRegion_mipmapLevel_withBytes_bytesPerRow_ :: proc(self: ^Texture, region: Region, level: ^NS.Object, pixelBytes: rawptr, bytesPerRow: ^NS.Object) { +Texture_replaceRegion_mipmapLevel_withBytes_bytesPerRow_ :: #force_inline proc(self: ^Texture, region: Region, level: ^NS.Object, pixelBytes: rawptr, bytesPerRow: ^NS.Object) { msgSend(nil, self, "replaceRegion:mipmapLevel:withBytes:bytesPerRow:", region, level, pixelBytes, bytesPerRow) } @(objc_type=Texture, objc_name="rootResource") -Texture_rootResource :: proc(self: ^Texture) -> ^Texture { +Texture_rootResource :: #force_inline proc(self: ^Texture) -> ^Texture { return msgSend(^Texture, self, "rootResource") } @(objc_type=Texture, objc_name="sampleCount") -Texture_sampleCount :: proc(self: ^Texture) -> NS.Integer { +Texture_sampleCount :: #force_inline proc(self: ^Texture) -> NS.Integer { return msgSend(NS.Integer, self, "sampleCount") } @(objc_type=Texture, objc_name="swizzle") -Texture_swizzle :: proc(self: ^Texture) -> TextureSwizzleChannels { +Texture_swizzle :: #force_inline proc(self: ^Texture) -> TextureSwizzleChannels { return msgSend(TextureSwizzleChannels, self, "swizzle") } @(objc_type=Texture, objc_name="tailSizeInBytes") -Texture_tailSizeInBytes :: proc(self: ^Texture) -> NS.Integer { +Texture_tailSizeInBytes :: #force_inline proc(self: ^Texture) -> NS.Integer { return msgSend(NS.Integer, self, "tailSizeInBytes") } @(objc_type=Texture, objc_name="textureType") -Texture_textureType :: proc(self: ^Texture) -> TextureType { +Texture_textureType :: #force_inline proc(self: ^Texture) -> TextureType { return msgSend(TextureType, self, "textureType") } @(objc_type=Texture, objc_name="usage") -Texture_usage :: proc(self: ^Texture) -> TextureUsage { +Texture_usage :: #force_inline proc(self: ^Texture) -> TextureUsage { return msgSend(TextureUsage, self, "usage") } @(objc_type=Texture, objc_name="width") -Texture_width :: proc(self: ^Texture) -> NS.Integer { +Texture_width :: #force_inline proc(self: ^Texture) -> NS.Integer { return msgSend(NS.Integer, self, "width") } @@ -8067,10 +8053,10 @@ Methods: VisibleFunctionTable :: struct { using _: NS.Object } @(objc_type=VisibleFunctionTable, objc_name="setFunction") -VisibleFunctionTable_setFunction :: proc(self: ^VisibleFunctionTable, function: ^NS.Object, index: ^NS.Object) { +VisibleFunctionTable_setFunction :: #force_inline proc(self: ^VisibleFunctionTable, function: ^NS.Object, index: ^NS.Object) { msgSend(nil, self, "setFunction:atIndex:", function, index) } @(objc_type=VisibleFunctionTable, objc_name="setFunctions") -VisibleFunctionTable_setFunctions :: proc(self: ^VisibleFunctionTable, functions: ^^NS.Object, range: NS.Range) { +VisibleFunctionTable_setFunctions :: #force_inline proc(self: ^VisibleFunctionTable, functions: ^^NS.Object, range: NS.Range) { msgSend(nil, self, "setFunctions:withRange:", functions, range) } diff --git a/vendor/Metal/MetalProcedures.odin b/vendor/Metal/MetalProcedures.odin new file mode 100644 index 000000000..120396b5d --- /dev/null +++ b/vendor/Metal/MetalProcedures.odin @@ -0,0 +1,14 @@ +package objc_Metal + +import NS "core:sys/darwin/Foundation" + +@(require) +foreign import "system:Metal.framework" + +@(default_calling_convention="c", link_prefix="MTL") +foreign Metal { + CopyAllDevices :: proc() -> ^NS.Array --- + CopyAllDevicesWithObserver :: proc(observer: ^^NS.Object, handler: DeviceNotificationHandler) -> ^NS.Array --- + CreateSystemDefaultDevice :: proc() -> ^NS.Object --- + RemoveDeviceObserver :: proc(observer: ^NS.Object) --- +} \ No newline at end of file From ff5d6a994bbaf379729a56e151bb888ce12fa975 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 12 Feb 2022 17:59:40 +0000 Subject: [PATCH 036/190] Move vendor:Metal to core:sys/darwin/Metal --- {vendor => core/sys/darwin}/Metal/MetalClasses.odin | 0 {vendor => core/sys/darwin}/Metal/MetalEnums.odin | 4 ++-- {vendor => core/sys/darwin}/Metal/MetalErrors.odin | 0 {vendor => core/sys/darwin}/Metal/MetalProcedures.odin | 0 {vendor => core/sys/darwin}/Metal/MetalTypes.odin | 0 5 files changed, 2 insertions(+), 2 deletions(-) rename {vendor => core/sys/darwin}/Metal/MetalClasses.odin (100%) rename {vendor => core/sys/darwin}/Metal/MetalEnums.odin (99%) rename {vendor => core/sys/darwin}/Metal/MetalErrors.odin (100%) rename {vendor => core/sys/darwin}/Metal/MetalProcedures.odin (100%) rename {vendor => core/sys/darwin}/Metal/MetalTypes.odin (100%) diff --git a/vendor/Metal/MetalClasses.odin b/core/sys/darwin/Metal/MetalClasses.odin similarity index 100% rename from vendor/Metal/MetalClasses.odin rename to core/sys/darwin/Metal/MetalClasses.odin diff --git a/vendor/Metal/MetalEnums.odin b/core/sys/darwin/Metal/MetalEnums.odin similarity index 99% rename from vendor/Metal/MetalEnums.odin rename to core/sys/darwin/Metal/MetalEnums.odin index a0bd7b970..0e3aec321 100644 --- a/vendor/Metal/MetalEnums.odin +++ b/core/sys/darwin/Metal/MetalEnums.odin @@ -197,7 +197,7 @@ CommandEncoderErrorState :: enum NS.Integer { CommandBufferHandler :: distinct rawptr DispatchType :: enum NS.UInteger { - Serial = 0, + Serial = 0, Concurrent = 1, } @@ -220,7 +220,7 @@ BarrierScope :: distinct bit_set[BarrierScopeFlag; NS.UInteger] CounterSampleBufferError :: enum NS.Integer { OutOfMemory = 0, - Invalid = 1, + Invalid = 1, } CompareFunction :: enum NS.UInteger { diff --git a/vendor/Metal/MetalErrors.odin b/core/sys/darwin/Metal/MetalErrors.odin similarity index 100% rename from vendor/Metal/MetalErrors.odin rename to core/sys/darwin/Metal/MetalErrors.odin diff --git a/vendor/Metal/MetalProcedures.odin b/core/sys/darwin/Metal/MetalProcedures.odin similarity index 100% rename from vendor/Metal/MetalProcedures.odin rename to core/sys/darwin/Metal/MetalProcedures.odin diff --git a/vendor/Metal/MetalTypes.odin b/core/sys/darwin/Metal/MetalTypes.odin similarity index 100% rename from vendor/Metal/MetalTypes.odin rename to core/sys/darwin/Metal/MetalTypes.odin From 5fe9aa919b97dcfac7db3b49a8e339ec45f98a6b Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 12 Feb 2022 21:24:28 +0000 Subject: [PATCH 037/190] Correct types in methods --- core/sys/darwin/Metal/MetalClasses.odin | 1483 ++++++++++---------- core/sys/darwin/Metal/MetalProcedures.odin | 6 +- core/sys/darwin/Metal/MetalTypes.odin | 4 + examples/objc/objc_main.odin | 8 + 4 files changed, 793 insertions(+), 708 deletions(-) create mode 100644 examples/objc/objc_main.odin diff --git a/core/sys/darwin/Metal/MetalClasses.odin b/core/sys/darwin/Metal/MetalClasses.odin index 4f788cb55..5695cbb6f 100644 --- a/core/sys/darwin/Metal/MetalClasses.odin +++ b/core/sys/darwin/Metal/MetalClasses.odin @@ -37,40 +37,88 @@ AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxBuffer :: #force_i return msgSend(^AccelerationStructureBoundingBoxGeometryDescriptor, self, "boundingBoxBuffer") } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="boundingBoxBufferOffset") -AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxBufferOffset :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "boundingBoxBufferOffset") +AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxBufferOffset :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "boundingBoxBufferOffset") } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="boundingBoxCount") -AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxCount :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "boundingBoxCount") +AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxCount :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "boundingBoxCount") } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="boundingBoxStride") -AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxStride :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "boundingBoxStride") +AccelerationStructureBoundingBoxGeometryDescriptor_boundingBoxStride :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "boundingBoxStride") } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_class_name="descriptor") AccelerationStructureBoundingBoxGeometryDescriptor_descriptor :: #force_inline proc() -> ^AccelerationStructureBoundingBoxGeometryDescriptor { return msgSend(^AccelerationStructureBoundingBoxGeometryDescriptor, AccelerationStructureBoundingBoxGeometryDescriptor, "descriptor") } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="setBoundingBoxBuffer") -AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxBuffer :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxBuffer: ^NS.Object) { +AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxBuffer :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxBuffer: ^Buffer) { msgSend(nil, self, "setBoundingBoxBuffer:", boundingBoxBuffer) } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="setBoundingBoxBufferOffset") -AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxBufferOffset :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxBufferOffset: NS.Integer) { +AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxBufferOffset :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxBufferOffset: NS.UInteger) { msgSend(nil, self, "setBoundingBoxBufferOffset:", boundingBoxBufferOffset) } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="setBoundingBoxCount") -AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxCount :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxCount: NS.Integer) { +AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxCount :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxCount: NS.UInteger) { msgSend(nil, self, "setBoundingBoxCount:", boundingBoxCount) } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_name="setBoundingBoxStride") -AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxStride :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxStride: NS.Integer) { +AccelerationStructureBoundingBoxGeometryDescriptor_setBoundingBoxStride :: #force_inline proc(self: ^AccelerationStructureBoundingBoxGeometryDescriptor, boundingBoxStride: NS.UInteger) { msgSend(nil, self, "setBoundingBoxStride:", boundingBoxStride) } //////////////////////////////////////////////////////////////////////////////// +/* +Class: + MotionKeyframeData +Class Methods: + alloc + data +Methods: + init + buffer + setBuffer + offset + setOffset +*/ + +@(objc_class="MTLMotionKeyframeData") +MotionKeyframeData :: struct { using _: NS.Object } + +@(objc_type=MotionKeyframeData, objc_class_name="alloc") +MotionKeyframeData_alloc :: #force_inline proc() -> ^MotionKeyframeData { + return msgSend(^MotionKeyframeData, MotionKeyframeData, "alloc") +} +@(objc_type=MotionKeyframeData, objc_class_name="data") +MotionKeyframeData_data :: #force_inline proc() -> ^MotionKeyframeData { + return msgSend(^MotionKeyframeData, MotionKeyframeData, "data") +} +@(objc_type=MotionKeyframeData, objc_class_name="init") +MotionKeyframeData_init :: #force_inline proc(self: ^MotionKeyframeData) -> ^MotionKeyframeData { + return msgSend(^MotionKeyframeData, self, "init") +} +@(objc_type=MotionKeyframeData, objc_class_name="buffer") +MotionKeyframeData_buffer :: #force_inline proc(self: ^MotionKeyframeData) -> ^Buffer { + return msgSend(^Buffer, self, "buffer") +} +@(objc_type=MotionKeyframeData, objc_class_name="setBuffer") +MotionKeyframeData_setBuffer :: #force_inline proc(self: ^MotionKeyframeData, buffer: ^Buffer) { + msgSend(nil, self, "setBuffer:", buffer) +} +@(objc_type=MotionKeyframeData, objc_class_name="offset") +MotionKeyframeData_offset :: #force_inline proc(self: ^MotionKeyframeData) -> NS.UInteger { + return msgSend(NS.UInteger, self, "offset") +} +@(objc_type=MotionKeyframeData, objc_class_name="setOffset") +MotionKeyframeData_setOffset :: #force_inline proc(self: ^MotionKeyframeData, offset: NS.UInteger) { + msgSend(nil, self, "setOffset:", offset) +} + +//////////////////////////////////////////////////////////////////////////////// + /* Class: AccelerationStructureDescriptor @@ -133,8 +181,8 @@ AccelerationStructureGeometryDescriptor_allowDuplicateIntersectionFunctionInvoca return msgSend(BOOL, self, "allowDuplicateIntersectionFunctionInvocation") } @(objc_type=AccelerationStructureGeometryDescriptor, objc_name="intersectionFunctionTableOffset") -AccelerationStructureGeometryDescriptor_intersectionFunctionTableOffset :: #force_inline proc(self: ^AccelerationStructureGeometryDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "intersectionFunctionTableOffset") +AccelerationStructureGeometryDescriptor_intersectionFunctionTableOffset :: #force_inline proc(self: ^AccelerationStructureGeometryDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "intersectionFunctionTableOffset") } @(objc_type=AccelerationStructureGeometryDescriptor, objc_name="opaque") AccelerationStructureGeometryDescriptor_opaque :: #force_inline proc(self: ^AccelerationStructureGeometryDescriptor) -> BOOL { @@ -145,7 +193,7 @@ AccelerationStructureGeometryDescriptor_setAllowDuplicateIntersectionFunctionInv msgSend(nil, self, "setAllowDuplicateIntersectionFunctionInvocation:", allowDuplicateIntersectionFunctionInvocation) } @(objc_type=AccelerationStructureGeometryDescriptor, objc_name="setIntersectionFunctionTableOffset") -AccelerationStructureGeometryDescriptor_setIntersectionFunctionTableOffset :: #force_inline proc(self: ^AccelerationStructureGeometryDescriptor, intersectionFunctionTableOffset: NS.Integer) { +AccelerationStructureGeometryDescriptor_setIntersectionFunctionTableOffset :: #force_inline proc(self: ^AccelerationStructureGeometryDescriptor, intersectionFunctionTableOffset: NS.UInteger) { msgSend(nil, self, "setIntersectionFunctionTableOffset:", intersectionFunctionTableOffset) } @(objc_type=AccelerationStructureGeometryDescriptor, objc_name="setOpaque") @@ -198,19 +246,19 @@ AccelerationStructureTriangleGeometryDescriptor_indexBuffer :: #force_inline pro return msgSend(^AccelerationStructureTriangleGeometryDescriptor, self, "indexBuffer") } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="indexBufferOffset") -AccelerationStructureTriangleGeometryDescriptor_indexBufferOffset :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "indexBufferOffset") +AccelerationStructureTriangleGeometryDescriptor_indexBufferOffset :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "indexBufferOffset") } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="indexType") AccelerationStructureTriangleGeometryDescriptor_indexType :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> IndexType { return msgSend(IndexType, self, "indexType") } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setIndexBuffer") -AccelerationStructureTriangleGeometryDescriptor_setIndexBuffer :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indexBuffer: ^NS.Object) { +AccelerationStructureTriangleGeometryDescriptor_setIndexBuffer :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indexBuffer: ^Buffer) { msgSend(nil, self, "setIndexBuffer:", indexBuffer) } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setIndexBufferOffset") -AccelerationStructureTriangleGeometryDescriptor_setIndexBufferOffset :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indexBufferOffset: NS.Integer) { +AccelerationStructureTriangleGeometryDescriptor_setIndexBufferOffset :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, indexBufferOffset: NS.UInteger) { msgSend(nil, self, "setIndexBufferOffset:", indexBufferOffset) } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setIndexType") @@ -218,36 +266,36 @@ AccelerationStructureTriangleGeometryDescriptor_setIndexType :: #force_inline pr msgSend(nil, self, "setIndexType:", indexType) } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setTriangleCount") -AccelerationStructureTriangleGeometryDescriptor_setTriangleCount :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, triangleCount: NS.Integer) { +AccelerationStructureTriangleGeometryDescriptor_setTriangleCount :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, triangleCount: NS.UInteger) { msgSend(nil, self, "setTriangleCount:", triangleCount) } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setVertexBuffer") -AccelerationStructureTriangleGeometryDescriptor_setVertexBuffer :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexBuffer: ^NS.Object) { +AccelerationStructureTriangleGeometryDescriptor_setVertexBuffer :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexBuffer: ^Buffer) { msgSend(nil, self, "setVertexBuffer:", vertexBuffer) } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setVertexBufferOffset") -AccelerationStructureTriangleGeometryDescriptor_setVertexBufferOffset :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexBufferOffset: NS.Integer) { +AccelerationStructureTriangleGeometryDescriptor_setVertexBufferOffset :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexBufferOffset: NS.UInteger) { msgSend(nil, self, "setVertexBufferOffset:", vertexBufferOffset) } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="setVertexStride") -AccelerationStructureTriangleGeometryDescriptor_setVertexStride :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexStride: NS.Integer) { +AccelerationStructureTriangleGeometryDescriptor_setVertexStride :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor, vertexStride: NS.UInteger) { msgSend(nil, self, "setVertexStride:", vertexStride) } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="triangleCount") -AccelerationStructureTriangleGeometryDescriptor_triangleCount :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "triangleCount") +AccelerationStructureTriangleGeometryDescriptor_triangleCount :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "triangleCount") } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="vertexBuffer") AccelerationStructureTriangleGeometryDescriptor_vertexBuffer :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> ^AccelerationStructureTriangleGeometryDescriptor { return msgSend(^AccelerationStructureTriangleGeometryDescriptor, self, "vertexBuffer") } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="vertexBufferOffset") -AccelerationStructureTriangleGeometryDescriptor_vertexBufferOffset :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "vertexBufferOffset") +AccelerationStructureTriangleGeometryDescriptor_vertexBufferOffset :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "vertexBufferOffset") } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_name="vertexStride") -AccelerationStructureTriangleGeometryDescriptor_vertexStride :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "vertexStride") +AccelerationStructureTriangleGeometryDescriptor_vertexStride :: #force_inline proc(self: ^AccelerationStructureTriangleGeometryDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "vertexStride") } //////////////////////////////////////////////////////////////////////////////// @@ -292,16 +340,16 @@ Argument_access :: #force_inline proc(self: ^Argument) -> ArgumentAccess { return msgSend(ArgumentAccess, self, "access") } @(objc_type=Argument, objc_name="arrayLength") -Argument_arrayLength :: #force_inline proc(self: ^Argument) -> NS.Integer { - return msgSend(NS.Integer, self, "arrayLength") +Argument_arrayLength :: #force_inline proc(self: ^Argument) -> NS.UInteger { + return msgSend(NS.UInteger, self, "arrayLength") } @(objc_type=Argument, objc_name="bufferAlignment") -Argument_bufferAlignment :: #force_inline proc(self: ^Argument) -> NS.Integer { - return msgSend(NS.Integer, self, "bufferAlignment") +Argument_bufferAlignment :: #force_inline proc(self: ^Argument) -> NS.UInteger { + return msgSend(NS.UInteger, self, "bufferAlignment") } @(objc_type=Argument, objc_name="bufferDataSize") -Argument_bufferDataSize :: #force_inline proc(self: ^Argument) -> NS.Integer { - return msgSend(NS.Integer, self, "bufferDataSize") +Argument_bufferDataSize :: #force_inline proc(self: ^Argument) -> NS.UInteger { + return msgSend(NS.UInteger, self, "bufferDataSize") } @(objc_type=Argument, objc_name="bufferDataType") Argument_bufferDataType :: #force_inline proc(self: ^Argument) -> DataType { @@ -316,8 +364,8 @@ Argument_bufferStructType :: #force_inline proc(self: ^Argument) -> ^StructType return msgSend(^StructType, self, "bufferStructType") } @(objc_type=Argument, objc_name="index") -Argument_index :: #force_inline proc(self: ^Argument) -> NS.Integer { - return msgSend(NS.Integer, self, "index") +Argument_index :: #force_inline proc(self: ^Argument) -> NS.UInteger { + return msgSend(NS.UInteger, self, "index") } @(objc_type=Argument, objc_name="isActive") Argument_isActive :: #force_inline proc(self: ^Argument) -> BOOL { @@ -340,12 +388,12 @@ Argument_textureType :: #force_inline proc(self: ^Argument) -> TextureType { return msgSend(TextureType, self, "textureType") } @(objc_type=Argument, objc_name="threadgroupMemoryAlignment") -Argument_threadgroupMemoryAlignment :: #force_inline proc(self: ^Argument) -> NS.Integer { - return msgSend(NS.Integer, self, "threadgroupMemoryAlignment") +Argument_threadgroupMemoryAlignment :: #force_inline proc(self: ^Argument) -> NS.UInteger { + return msgSend(NS.UInteger, self, "threadgroupMemoryAlignment") } @(objc_type=Argument, objc_name="threadgroupMemoryDataSize") -Argument_threadgroupMemoryDataSize :: #force_inline proc(self: ^Argument) -> NS.Integer { - return msgSend(NS.Integer, self, "threadgroupMemoryDataSize") +Argument_threadgroupMemoryDataSize :: #force_inline proc(self: ^Argument) -> NS.UInteger { + return msgSend(NS.UInteger, self, "threadgroupMemoryDataSize") } @(objc_type=Argument, objc_name="type") Argument_type :: #force_inline proc(self: ^Argument) -> ArgumentType { @@ -395,31 +443,31 @@ ArgumentDescriptor_argumentDescriptor :: #force_inline proc() -> ^ArgumentDescri return msgSend(^ArgumentDescriptor, ArgumentDescriptor, "argumentDescriptor") } @(objc_type=ArgumentDescriptor, objc_name="arrayLength") -ArgumentDescriptor_arrayLength :: #force_inline proc(self: ^ArgumentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "arrayLength") +ArgumentDescriptor_arrayLength :: #force_inline proc(self: ^ArgumentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "arrayLength") } @(objc_type=ArgumentDescriptor, objc_name="constantBlockAlignment") -ArgumentDescriptor_constantBlockAlignment :: #force_inline proc(self: ^ArgumentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "constantBlockAlignment") +ArgumentDescriptor_constantBlockAlignment :: #force_inline proc(self: ^ArgumentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "constantBlockAlignment") } @(objc_type=ArgumentDescriptor, objc_name="dataType") ArgumentDescriptor_dataType :: #force_inline proc(self: ^ArgumentDescriptor) -> DataType { return msgSend(DataType, self, "dataType") } @(objc_type=ArgumentDescriptor, objc_name="index") -ArgumentDescriptor_index :: #force_inline proc(self: ^ArgumentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "index") +ArgumentDescriptor_index :: #force_inline proc(self: ^ArgumentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "index") } @(objc_type=ArgumentDescriptor, objc_name="setAccess") ArgumentDescriptor_setAccess :: #force_inline proc(self: ^ArgumentDescriptor, access: ArgumentAccess) { msgSend(nil, self, "setAccess:", access) } @(objc_type=ArgumentDescriptor, objc_name="setArrayLength") -ArgumentDescriptor_setArrayLength :: #force_inline proc(self: ^ArgumentDescriptor, arrayLength: NS.Integer) { +ArgumentDescriptor_setArrayLength :: #force_inline proc(self: ^ArgumentDescriptor, arrayLength: NS.UInteger) { msgSend(nil, self, "setArrayLength:", arrayLength) } @(objc_type=ArgumentDescriptor, objc_name="setConstantBlockAlignment") -ArgumentDescriptor_setConstantBlockAlignment :: #force_inline proc(self: ^ArgumentDescriptor, constantBlockAlignment: NS.Integer) { +ArgumentDescriptor_setConstantBlockAlignment :: #force_inline proc(self: ^ArgumentDescriptor, constantBlockAlignment: NS.UInteger) { msgSend(nil, self, "setConstantBlockAlignment:", constantBlockAlignment) } @(objc_type=ArgumentDescriptor, objc_name="setDataType") @@ -427,7 +475,7 @@ ArgumentDescriptor_setDataType :: #force_inline proc(self: ^ArgumentDescriptor, msgSend(nil, self, "setDataType:", dataType) } @(objc_type=ArgumentDescriptor, objc_name="setIndex") -ArgumentDescriptor_setIndex :: #force_inline proc(self: ^ArgumentDescriptor, index: NS.Integer) { +ArgumentDescriptor_setIndex :: #force_inline proc(self: ^ArgumentDescriptor, index: NS.UInteger) { msgSend(nil, self, "setIndex:", index) } @(objc_type=ArgumentDescriptor, objc_name="setTextureType") @@ -469,12 +517,12 @@ ArrayType_init :: #force_inline proc(self: ^ArrayType) -> ^ArrayType { return msgSend(^ArrayType, self, "init") } @(objc_type=ArrayType, objc_name="argumentIndexStride") -ArrayType_argumentIndexStride :: #force_inline proc(self: ^ArrayType) -> NS.Integer { - return msgSend(NS.Integer, self, "argumentIndexStride") +ArrayType_argumentIndexStride :: #force_inline proc(self: ^ArrayType) -> NS.UInteger { + return msgSend(NS.UInteger, self, "argumentIndexStride") } @(objc_type=ArrayType, objc_name="arrayLength") -ArrayType_arrayLength :: #force_inline proc(self: ^ArrayType) -> NS.Integer { - return msgSend(NS.Integer, self, "arrayLength") +ArrayType_arrayLength :: #force_inline proc(self: ^ArrayType) -> NS.UInteger { + return msgSend(NS.UInteger, self, "arrayLength") } @(objc_type=ArrayType, objc_name="elementArrayType") ArrayType_elementArrayType :: #force_inline proc(self: ^ArrayType) -> ^ArrayType { @@ -497,8 +545,8 @@ ArrayType_elementType :: #force_inline proc(self: ^ArrayType) -> DataType { return msgSend(DataType, self, "elementType") } @(objc_type=ArrayType, objc_name="stride") -ArrayType_stride :: #force_inline proc(self: ^ArrayType) -> NS.Integer { - return msgSend(NS.Integer, self, "stride") +ArrayType_stride :: #force_inline proc(self: ^ArrayType) -> NS.UInteger { + return msgSend(NS.UInteger, self, "stride") } //////////////////////////////////////////////////////////////////////////////// @@ -529,8 +577,8 @@ Attribute_init :: #force_inline proc(self: ^Attribute) -> ^Attribute { return msgSend(^Attribute, self, "init") } @(objc_type=Attribute, objc_name="attributeIndex") -Attribute_attributeIndex :: #force_inline proc(self: ^Attribute) -> NS.Integer { - return msgSend(NS.Integer, self, "attributeIndex") +Attribute_attributeIndex :: #force_inline proc(self: ^Attribute) -> NS.UInteger { + return msgSend(NS.UInteger, self, "attributeIndex") } @(objc_type=Attribute, objc_name="attributeType") Attribute_attributeType :: #force_inline proc(self: ^Attribute) -> DataType { @@ -581,19 +629,19 @@ AttributeDescriptor_init :: #force_inline proc(self: ^AttributeDescriptor) -> ^A return msgSend(^AttributeDescriptor, self, "init") } @(objc_type=AttributeDescriptor, objc_name="bufferIndex") -AttributeDescriptor_bufferIndex :: #force_inline proc(self: ^AttributeDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "bufferIndex") +AttributeDescriptor_bufferIndex :: #force_inline proc(self: ^AttributeDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "bufferIndex") } @(objc_type=AttributeDescriptor, objc_name="format") AttributeDescriptor_format :: #force_inline proc(self: ^AttributeDescriptor) -> AttributeFormat { return msgSend(AttributeFormat, self, "format") } @(objc_type=AttributeDescriptor, objc_name="offset") -AttributeDescriptor_offset :: #force_inline proc(self: ^AttributeDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "offset") +AttributeDescriptor_offset :: #force_inline proc(self: ^AttributeDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "offset") } @(objc_type=AttributeDescriptor, objc_name="setBufferIndex") -AttributeDescriptor_setBufferIndex :: #force_inline proc(self: ^AttributeDescriptor, bufferIndex: NS.Integer) { +AttributeDescriptor_setBufferIndex :: #force_inline proc(self: ^AttributeDescriptor, bufferIndex: NS.UInteger) { msgSend(nil, self, "setBufferIndex:", bufferIndex) } @(objc_type=AttributeDescriptor, objc_name="setFormat") @@ -601,7 +649,7 @@ AttributeDescriptor_setFormat :: #force_inline proc(self: ^AttributeDescriptor, msgSend(nil, self, "setFormat:", format) } @(objc_type=AttributeDescriptor, objc_name="setOffset") -AttributeDescriptor_setOffset :: #force_inline proc(self: ^AttributeDescriptor, offset: NS.Integer) { +AttributeDescriptor_setOffset :: #force_inline proc(self: ^AttributeDescriptor, offset: NS.UInteger) { msgSend(nil, self, "setOffset:", offset) } @@ -629,11 +677,11 @@ AttributeDescriptorArray_init :: #force_inline proc(self: ^AttributeDescriptorAr return msgSend(^AttributeDescriptorArray, self, "init") } @(objc_type=AttributeDescriptorArray, objc_name="objectAtIndexedSubscript") -AttributeDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^AttributeDescriptorArray, index: ^NS.Object) -> ^AttributeDescriptor { +AttributeDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^AttributeDescriptorArray, index: NS.UInteger) -> ^AttributeDescriptor { return msgSend(^AttributeDescriptor, self, "objectAtIndexedSubscript:", index) } @(objc_type=AttributeDescriptorArray, objc_name="setObject") -AttributeDescriptorArray_setObject :: #force_inline proc(self: ^AttributeDescriptorArray, attributeDesc: ^AttributeDescriptor, index: ^NS.Object) { +AttributeDescriptorArray_setObject :: #force_inline proc(self: ^AttributeDescriptorArray, attributeDesc: ^AttributeDescriptor, index: NS.UInteger) { msgSend(nil, self, "setObject:atIndexedSubscript:", attributeDesc, index) } @@ -729,28 +777,28 @@ BlitPassSampleBufferAttachmentDescriptor_init :: #force_inline proc(self: ^BlitP return msgSend(^BlitPassSampleBufferAttachmentDescriptor, self, "init") } @(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="endOfEncoderSampleIndex") -BlitPassSampleBufferAttachmentDescriptor_endOfEncoderSampleIndex :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "endOfEncoderSampleIndex") +BlitPassSampleBufferAttachmentDescriptor_endOfEncoderSampleIndex :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "endOfEncoderSampleIndex") } @(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="sampleBuffer") BlitPassSampleBufferAttachmentDescriptor_sampleBuffer :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> ^BlitPassSampleBufferAttachmentDescriptor { return msgSend(^BlitPassSampleBufferAttachmentDescriptor, self, "sampleBuffer") } @(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="setEndOfEncoderSampleIndex") -BlitPassSampleBufferAttachmentDescriptor_setEndOfEncoderSampleIndex :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor, endOfEncoderSampleIndex: NS.Integer) { +BlitPassSampleBufferAttachmentDescriptor_setEndOfEncoderSampleIndex :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor, endOfEncoderSampleIndex: NS.UInteger) { msgSend(nil, self, "setEndOfEncoderSampleIndex:", endOfEncoderSampleIndex) } @(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="setSampleBuffer") -BlitPassSampleBufferAttachmentDescriptor_setSampleBuffer :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor, sampleBuffer: ^NS.Object) { +BlitPassSampleBufferAttachmentDescriptor_setSampleBuffer :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor, sampleBuffer: ^Buffer) { msgSend(nil, self, "setSampleBuffer:", sampleBuffer) } @(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="setStartOfEncoderSampleIndex") -BlitPassSampleBufferAttachmentDescriptor_setStartOfEncoderSampleIndex :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor, startOfEncoderSampleIndex: NS.Integer) { +BlitPassSampleBufferAttachmentDescriptor_setStartOfEncoderSampleIndex :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor, startOfEncoderSampleIndex: NS.UInteger) { msgSend(nil, self, "setStartOfEncoderSampleIndex:", startOfEncoderSampleIndex) } @(objc_type=BlitPassSampleBufferAttachmentDescriptor, objc_name="startOfEncoderSampleIndex") -BlitPassSampleBufferAttachmentDescriptor_startOfEncoderSampleIndex :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "startOfEncoderSampleIndex") +BlitPassSampleBufferAttachmentDescriptor_startOfEncoderSampleIndex :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "startOfEncoderSampleIndex") } //////////////////////////////////////////////////////////////////////////////// @@ -777,11 +825,11 @@ BlitPassSampleBufferAttachmentDescriptorArray_init :: #force_inline proc(self: ^ return msgSend(^BlitPassSampleBufferAttachmentDescriptorArray, self, "init") } @(objc_type=BlitPassSampleBufferAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") -BlitPassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^BlitPassSampleBufferAttachmentDescriptor { +BlitPassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptorArray, attachmentIndex: NS.UInteger) -> ^BlitPassSampleBufferAttachmentDescriptor { return msgSend(^BlitPassSampleBufferAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) } @(objc_type=BlitPassSampleBufferAttachmentDescriptorArray, objc_name="setObject") -BlitPassSampleBufferAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptorArray, attachment: ^BlitPassSampleBufferAttachmentDescriptor, attachmentIndex: ^NS.Object) { +BlitPassSampleBufferAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^BlitPassSampleBufferAttachmentDescriptorArray, attachment: ^BlitPassSampleBufferAttachmentDescriptor, attachmentIndex: NS.UInteger) { msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) } @@ -817,11 +865,11 @@ BufferLayoutDescriptor_setStepFunction :: #force_inline proc(self: ^BufferLayout msgSend(nil, self, "setStepFunction:", stepFunction) } @(objc_type=BufferLayoutDescriptor, objc_name="setStepRate") -BufferLayoutDescriptor_setStepRate :: #force_inline proc(self: ^BufferLayoutDescriptor, stepRate: NS.Integer) { +BufferLayoutDescriptor_setStepRate :: #force_inline proc(self: ^BufferLayoutDescriptor, stepRate: NS.UInteger) { msgSend(nil, self, "setStepRate:", stepRate) } @(objc_type=BufferLayoutDescriptor, objc_name="setStride") -BufferLayoutDescriptor_setStride :: #force_inline proc(self: ^BufferLayoutDescriptor, stride: NS.Integer) { +BufferLayoutDescriptor_setStride :: #force_inline proc(self: ^BufferLayoutDescriptor, stride: NS.UInteger) { msgSend(nil, self, "setStride:", stride) } @(objc_type=BufferLayoutDescriptor, objc_name="stepFunction") @@ -829,12 +877,12 @@ BufferLayoutDescriptor_stepFunction :: #force_inline proc(self: ^BufferLayoutDes return msgSend(StepFunction, self, "stepFunction") } @(objc_type=BufferLayoutDescriptor, objc_name="stepRate") -BufferLayoutDescriptor_stepRate :: #force_inline proc(self: ^BufferLayoutDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "stepRate") +BufferLayoutDescriptor_stepRate :: #force_inline proc(self: ^BufferLayoutDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "stepRate") } @(objc_type=BufferLayoutDescriptor, objc_name="stride") -BufferLayoutDescriptor_stride :: #force_inline proc(self: ^BufferLayoutDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "stride") +BufferLayoutDescriptor_stride :: #force_inline proc(self: ^BufferLayoutDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "stride") } //////////////////////////////////////////////////////////////////////////////// @@ -861,11 +909,11 @@ BufferLayoutDescriptorArray_init :: #force_inline proc(self: ^BufferLayoutDescri return msgSend(^BufferLayoutDescriptorArray, self, "init") } @(objc_type=BufferLayoutDescriptorArray, objc_name="objectAtIndexedSubscript") -BufferLayoutDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^BufferLayoutDescriptorArray, index: ^NS.Object) -> ^BufferLayoutDescriptor { +BufferLayoutDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^BufferLayoutDescriptorArray, index: NS.UInteger) -> ^BufferLayoutDescriptor { return msgSend(^BufferLayoutDescriptor, self, "objectAtIndexedSubscript:", index) } @(objc_type=BufferLayoutDescriptorArray, objc_name="setObject") -BufferLayoutDescriptorArray_setObject :: #force_inline proc(self: ^BufferLayoutDescriptorArray, bufferDesc: ^BufferLayoutDescriptor, index: ^NS.Object) { +BufferLayoutDescriptorArray_setObject :: #force_inline proc(self: ^BufferLayoutDescriptorArray, bufferDesc: ^BufferLayoutDescriptor, index: NS.UInteger) { msgSend(nil, self, "setObject:atIndexedSubscript:", bufferDesc, index) } @@ -909,7 +957,7 @@ CaptureDescriptor_outputURL :: #force_inline proc(self: ^CaptureDescriptor) -> ^ return msgSend(^NS.URL, self, "outputURL") } @(objc_type=CaptureDescriptor, objc_name="setCaptureObject") -CaptureDescriptor_setCaptureObject :: #force_inline proc(self: ^CaptureDescriptor, captureObject: ^NS.Object) { +CaptureDescriptor_setCaptureObject :: #force_inline proc(self: ^CaptureDescriptor, captureObject: id) { msgSend(nil, self, "setCaptureObject:", captureObject) } @(objc_type=CaptureDescriptor, objc_name="setDestination") @@ -963,15 +1011,15 @@ CaptureManager_isCapturing :: #force_inline proc(self: ^CaptureManager) -> BOOL return msgSend(BOOL, self, "isCapturing") } @(objc_type=CaptureManager, objc_name="newCaptureScopeWithCommandQueue") -CaptureManager_newCaptureScopeWithCommandQueue :: #force_inline proc(self: ^CaptureManager, commandQueue: ^NS.Object) -> ^CaptureManager { +CaptureManager_newCaptureScopeWithCommandQueue :: #force_inline proc(self: ^CaptureManager, commandQueue: ^CommandQueue) -> ^CaptureManager { return msgSend(^CaptureManager, self, "newCaptureScopeWithCommandQueue:", commandQueue) } @(objc_type=CaptureManager, objc_name="newCaptureScopeWithDevice") -CaptureManager_newCaptureScopeWithDevice :: #force_inline proc(self: ^CaptureManager, device: ^NS.Object) -> ^CaptureManager { +CaptureManager_newCaptureScopeWithDevice :: #force_inline proc(self: ^CaptureManager, device: ^Device) -> ^CaptureManager { return msgSend(^CaptureManager, self, "newCaptureScopeWithDevice:", device) } @(objc_type=CaptureManager, objc_name="setDefaultCaptureScope") -CaptureManager_setDefaultCaptureScope :: #force_inline proc(self: ^CaptureManager, defaultCaptureScope: ^NS.Object) { +CaptureManager_setDefaultCaptureScope :: #force_inline proc(self: ^CaptureManager, defaultCaptureScope: ^CaptureScope) { msgSend(nil, self, "setDefaultCaptureScope:", defaultCaptureScope) } @(objc_type=CaptureManager, objc_class_name="sharedCaptureManager") @@ -979,19 +1027,20 @@ CaptureManager_sharedCaptureManager :: #force_inline proc() -> ^CaptureManager { return msgSend(^CaptureManager, CaptureManager, "sharedCaptureManager") } @(objc_type=CaptureManager, objc_name="startCaptureWithCommandQueue") -CaptureManager_startCaptureWithCommandQueue :: #force_inline proc(self: ^CaptureManager, commandQueue: ^NS.Object) { +CaptureManager_startCaptureWithCommandQueue :: #force_inline proc(self: ^CaptureManager, commandQueue: ^CommandQueue) { msgSend(nil, self, "startCaptureWithCommandQueue:", commandQueue) } @(objc_type=CaptureManager, objc_name="startCaptureWithDescriptor") -CaptureManager_startCaptureWithDescriptor :: #force_inline proc(self: ^CaptureManager, descriptor: ^CaptureDescriptor, error: ^^NS.Error ) -> BOOL { - return msgSend(BOOL, self, "startCaptureWithDescriptor:error:", descriptor, error) +CaptureManager_startCaptureWithDescriptor :: #force_inline proc(self: ^CaptureManager, descriptor: ^CaptureDescriptor) -> (ok: bool, error: ^NS.Error) { + ok = msgSend(BOOL, self, "startCaptureWithDescriptor:error:", descriptor, &error) + return } @(objc_type=CaptureManager, objc_name="startCaptureWithDevice") -CaptureManager_startCaptureWithDevice :: #force_inline proc(self: ^CaptureManager, device: ^NS.Object) { +CaptureManager_startCaptureWithDevice :: #force_inline proc(self: ^CaptureManager, device: ^Device) { msgSend(nil, self, "startCaptureWithDevice:", device) } @(objc_type=CaptureManager, objc_name="startCaptureWithScope") -CaptureManager_startCaptureWithScope :: #force_inline proc(self: ^CaptureManager, captureScope: ^NS.Object) { +CaptureManager_startCaptureWithScope :: #force_inline proc(self: ^CaptureManager, captureScope: ^CaptureScope) { msgSend(nil, self, "startCaptureWithScope:", captureScope) } @(objc_type=CaptureManager, objc_name="stopCapture") @@ -1207,28 +1256,28 @@ ComputePassSampleBufferAttachmentDescriptor_init :: #force_inline proc(self: ^Co return msgSend(^ComputePassSampleBufferAttachmentDescriptor, self, "init") } @(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="endOfEncoderSampleIndex") -ComputePassSampleBufferAttachmentDescriptor_endOfEncoderSampleIndex :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "endOfEncoderSampleIndex") +ComputePassSampleBufferAttachmentDescriptor_endOfEncoderSampleIndex :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "endOfEncoderSampleIndex") } @(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="sampleBuffer") ComputePassSampleBufferAttachmentDescriptor_sampleBuffer :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> ^ComputePassSampleBufferAttachmentDescriptor { return msgSend(^ComputePassSampleBufferAttachmentDescriptor, self, "sampleBuffer") } @(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="setEndOfEncoderSampleIndex") -ComputePassSampleBufferAttachmentDescriptor_setEndOfEncoderSampleIndex :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor, endOfEncoderSampleIndex: NS.Integer) { +ComputePassSampleBufferAttachmentDescriptor_setEndOfEncoderSampleIndex :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor, endOfEncoderSampleIndex: NS.UInteger) { msgSend(nil, self, "setEndOfEncoderSampleIndex:", endOfEncoderSampleIndex) } @(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="setSampleBuffer") -ComputePassSampleBufferAttachmentDescriptor_setSampleBuffer :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor, sampleBuffer: ^NS.Object) { +ComputePassSampleBufferAttachmentDescriptor_setSampleBuffer :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor, sampleBuffer: ^Buffer) { msgSend(nil, self, "setSampleBuffer:", sampleBuffer) } @(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="setStartOfEncoderSampleIndex") -ComputePassSampleBufferAttachmentDescriptor_setStartOfEncoderSampleIndex :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor, startOfEncoderSampleIndex: NS.Integer) { +ComputePassSampleBufferAttachmentDescriptor_setStartOfEncoderSampleIndex :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor, startOfEncoderSampleIndex: NS.UInteger) { msgSend(nil, self, "setStartOfEncoderSampleIndex:", startOfEncoderSampleIndex) } @(objc_type=ComputePassSampleBufferAttachmentDescriptor, objc_name="startOfEncoderSampleIndex") -ComputePassSampleBufferAttachmentDescriptor_startOfEncoderSampleIndex :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "startOfEncoderSampleIndex") +ComputePassSampleBufferAttachmentDescriptor_startOfEncoderSampleIndex :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "startOfEncoderSampleIndex") } //////////////////////////////////////////////////////////////////////////////// @@ -1255,11 +1304,11 @@ ComputePassSampleBufferAttachmentDescriptorArray_init :: #force_inline proc(self return msgSend(^ComputePassSampleBufferAttachmentDescriptorArray, self, "init") } @(objc_type=ComputePassSampleBufferAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") -ComputePassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^ComputePassSampleBufferAttachmentDescriptor { +ComputePassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptorArray, attachmentIndex: NS.UInteger) -> ^ComputePassSampleBufferAttachmentDescriptor { return msgSend(^ComputePassSampleBufferAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) } @(objc_type=ComputePassSampleBufferAttachmentDescriptorArray, objc_name="setObject") -ComputePassSampleBufferAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptorArray, attachment: ^ComputePassSampleBufferAttachmentDescriptor, attachmentIndex: ^NS.Object) { +ComputePassSampleBufferAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^ComputePassSampleBufferAttachmentDescriptorArray, attachment: ^ComputePassSampleBufferAttachmentDescriptor, attachmentIndex: NS.UInteger) { msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) } @@ -1333,12 +1382,12 @@ ComputePipelineDescriptor_linkedFunctions :: #force_inline proc(self: ^ComputePi return msgSend(^LinkedFunctions, self, "linkedFunctions") } @(objc_type=ComputePipelineDescriptor, objc_name="maxCallStackDepth") -ComputePipelineDescriptor_maxCallStackDepth :: #force_inline proc(self: ^ComputePipelineDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "maxCallStackDepth") +ComputePipelineDescriptor_maxCallStackDepth :: #force_inline proc(self: ^ComputePipelineDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "maxCallStackDepth") } @(objc_type=ComputePipelineDescriptor, objc_name="maxTotalThreadsPerThreadgroup") -ComputePipelineDescriptor_maxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^ComputePipelineDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "maxTotalThreadsPerThreadgroup") +ComputePipelineDescriptor_maxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^ComputePipelineDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "maxTotalThreadsPerThreadgroup") } @(objc_type=ComputePipelineDescriptor, objc_name="reset") ComputePipelineDescriptor_reset :: #force_inline proc(self: ^ComputePipelineDescriptor) { @@ -1349,7 +1398,7 @@ ComputePipelineDescriptor_setBinaryArchives :: #force_inline proc(self: ^Compute msgSend(nil, self, "setBinaryArchives:", binaryArchives) } @(objc_type=ComputePipelineDescriptor, objc_name="setComputeFunction") -ComputePipelineDescriptor_setComputeFunction :: #force_inline proc(self: ^ComputePipelineDescriptor, computeFunction: ^NS.Object) { +ComputePipelineDescriptor_setComputeFunction :: #force_inline proc(self: ^ComputePipelineDescriptor, computeFunction: ^Function) { msgSend(nil, self, "setComputeFunction:", computeFunction) } @(objc_type=ComputePipelineDescriptor, objc_name="setInsertLibraries") @@ -1365,11 +1414,11 @@ ComputePipelineDescriptor_setLinkedFunctions :: #force_inline proc(self: ^Comput msgSend(nil, self, "setLinkedFunctions:", linkedFunctions) } @(objc_type=ComputePipelineDescriptor, objc_name="setMaxCallStackDepth") -ComputePipelineDescriptor_setMaxCallStackDepth :: #force_inline proc(self: ^ComputePipelineDescriptor, maxCallStackDepth: NS.Integer) { +ComputePipelineDescriptor_setMaxCallStackDepth :: #force_inline proc(self: ^ComputePipelineDescriptor, maxCallStackDepth: NS.UInteger) { msgSend(nil, self, "setMaxCallStackDepth:", maxCallStackDepth) } @(objc_type=ComputePipelineDescriptor, objc_name="setMaxTotalThreadsPerThreadgroup") -ComputePipelineDescriptor_setMaxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^ComputePipelineDescriptor, maxTotalThreadsPerThreadgroup: NS.Integer) { +ComputePipelineDescriptor_setMaxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^ComputePipelineDescriptor, maxTotalThreadsPerThreadgroup: NS.UInteger) { msgSend(nil, self, "setMaxTotalThreadsPerThreadgroup:", maxTotalThreadsPerThreadgroup) } @(objc_type=ComputePipelineDescriptor, objc_name="setStageInputDescriptor") @@ -1470,11 +1519,11 @@ CounterSampleBufferDescriptor_label :: #force_inline proc(self: ^CounterSampleBu return msgSend(^NS.String, self, "label") } @(objc_type=CounterSampleBufferDescriptor, objc_name="sampleCount") -CounterSampleBufferDescriptor_sampleCount :: #force_inline proc(self: ^CounterSampleBufferDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "sampleCount") +CounterSampleBufferDescriptor_sampleCount :: #force_inline proc(self: ^CounterSampleBufferDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "sampleCount") } @(objc_type=CounterSampleBufferDescriptor, objc_name="setCounterSet") -CounterSampleBufferDescriptor_setCounterSet :: #force_inline proc(self: ^CounterSampleBufferDescriptor, counterSet: ^NS.Object) { +CounterSampleBufferDescriptor_setCounterSet :: #force_inline proc(self: ^CounterSampleBufferDescriptor, counterSet: ^CounterSet) { msgSend(nil, self, "setCounterSet:", counterSet) } @(objc_type=CounterSampleBufferDescriptor, objc_name="setLabel") @@ -1482,7 +1531,7 @@ CounterSampleBufferDescriptor_setLabel :: #force_inline proc(self: ^CounterSampl msgSend(nil, self, "setLabel:", label) } @(objc_type=CounterSampleBufferDescriptor, objc_name="setSampleCount") -CounterSampleBufferDescriptor_setSampleCount :: #force_inline proc(self: ^CounterSampleBufferDescriptor, sampleCount: NS.Integer) { +CounterSampleBufferDescriptor_setSampleCount :: #force_inline proc(self: ^CounterSampleBufferDescriptor, sampleCount: NS.UInteger) { msgSend(nil, self, "setSampleCount:", sampleCount) } @(objc_type=CounterSampleBufferDescriptor, objc_name="setStorageMode") @@ -1592,8 +1641,8 @@ FunctionConstant_init :: #force_inline proc(self: ^FunctionConstant) -> ^Functio return msgSend(^FunctionConstant, self, "init") } @(objc_type=FunctionConstant, objc_name="index") -FunctionConstant_index :: #force_inline proc(self: ^FunctionConstant) -> NS.Integer { - return msgSend(NS.Integer, self, "index") +FunctionConstant_index :: #force_inline proc(self: ^FunctionConstant) -> NS.UInteger { + return msgSend(NS.UInteger, self, "index") } @(objc_type=FunctionConstant, objc_name="name") FunctionConstant_name :: #force_inline proc(self: ^FunctionConstant) -> ^NS.String { @@ -1637,12 +1686,12 @@ FunctionConstantValues_init :: #force_inline proc(self: ^FunctionConstantValues) FunctionConstantValues_reset :: #force_inline proc(self: ^FunctionConstantValues) { msgSend(nil, self, "reset") } -@(objc_type=FunctionConstantValues, objc_name="setConstantValue_type_atIndex_") -FunctionConstantValues_setConstantValue_type_atIndex_ :: #force_inline proc(self: ^FunctionConstantValues, value: rawptr, type: DataType, index: ^NS.Object) { +@(objc_type=FunctionConstantValues, objc_name="setConstantValueAtIndex") +FunctionConstantValues_setConstantValueAtIndex :: #force_inline proc(self: ^FunctionConstantValues, value: rawptr, type: DataType, index: NS.UInteger) { msgSend(nil, self, "setConstantValue:type:atIndex:", value, type, index) } -@(objc_type=FunctionConstantValues, objc_name="setConstantValue_type_withName_") -FunctionConstantValues_setConstantValue_type_withName_ :: #force_inline proc(self: ^FunctionConstantValues, value: rawptr, type: DataType, name: ^NS.String) { +@(objc_type=FunctionConstantValues, objc_name="setConstantValueWithName") +FunctionConstantValues_setConstantValueWithName :: #force_inline proc(self: ^FunctionConstantValues, value: rawptr, type: DataType, name: ^NS.String) { msgSend(nil, self, "setConstantValue:type:withName:", value, type, name) } @(objc_type=FunctionConstantValues, objc_name="setConstantValues") @@ -1797,7 +1846,7 @@ HeapDescriptor_setResourceOptions :: #force_inline proc(self: ^HeapDescriptor, r msgSend(nil, self, "setResourceOptions:", resourceOptions) } @(objc_type=HeapDescriptor, objc_name="setSize") -HeapDescriptor_setSize :: #force_inline proc(self: ^HeapDescriptor, size: NS.Integer) { +HeapDescriptor_setSize :: #force_inline proc(self: ^HeapDescriptor, size: NS.UInteger) { msgSend(nil, self, "setSize:", size) } @(objc_type=HeapDescriptor, objc_name="setStorageMode") @@ -1809,8 +1858,8 @@ HeapDescriptor_setType :: #force_inline proc(self: ^HeapDescriptor, type: HeapTy msgSend(nil, self, "setType:", type) } @(objc_type=HeapDescriptor, objc_name="size") -HeapDescriptor_size :: #force_inline proc(self: ^HeapDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "size") +HeapDescriptor_size :: #force_inline proc(self: ^HeapDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "size") } @(objc_type=HeapDescriptor, objc_name="storageMode") HeapDescriptor_storageMode :: #force_inline proc(self: ^HeapDescriptor) -> StorageMode { @@ -1867,16 +1916,16 @@ IndirectCommandBufferDescriptor_inheritPipelineState :: #force_inline proc(self: return msgSend(BOOL, self, "inheritPipelineState") } @(objc_type=IndirectCommandBufferDescriptor, objc_name="maxFragmentBufferBindCount") -IndirectCommandBufferDescriptor_maxFragmentBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "maxFragmentBufferBindCount") +IndirectCommandBufferDescriptor_maxFragmentBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "maxFragmentBufferBindCount") } @(objc_type=IndirectCommandBufferDescriptor, objc_name="maxKernelBufferBindCount") -IndirectCommandBufferDescriptor_maxKernelBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "maxKernelBufferBindCount") +IndirectCommandBufferDescriptor_maxKernelBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "maxKernelBufferBindCount") } @(objc_type=IndirectCommandBufferDescriptor, objc_name="maxVertexBufferBindCount") -IndirectCommandBufferDescriptor_maxVertexBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "maxVertexBufferBindCount") +IndirectCommandBufferDescriptor_maxVertexBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "maxVertexBufferBindCount") } @(objc_type=IndirectCommandBufferDescriptor, objc_name="setCommandTypes") IndirectCommandBufferDescriptor_setCommandTypes :: #force_inline proc(self: ^IndirectCommandBufferDescriptor, commandTypes: IndirectCommandType) { @@ -1891,15 +1940,15 @@ IndirectCommandBufferDescriptor_setInheritPipelineState :: #force_inline proc(se msgSend(nil, self, "setInheritPipelineState:", inheritPipelineState) } @(objc_type=IndirectCommandBufferDescriptor, objc_name="setMaxFragmentBufferBindCount") -IndirectCommandBufferDescriptor_setMaxFragmentBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor, maxFragmentBufferBindCount: NS.Integer) { +IndirectCommandBufferDescriptor_setMaxFragmentBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor, maxFragmentBufferBindCount: NS.UInteger) { msgSend(nil, self, "setMaxFragmentBufferBindCount:", maxFragmentBufferBindCount) } @(objc_type=IndirectCommandBufferDescriptor, objc_name="setMaxKernelBufferBindCount") -IndirectCommandBufferDescriptor_setMaxKernelBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor, maxKernelBufferBindCount: NS.Integer) { +IndirectCommandBufferDescriptor_setMaxKernelBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor, maxKernelBufferBindCount: NS.UInteger) { msgSend(nil, self, "setMaxKernelBufferBindCount:", maxKernelBufferBindCount) } @(objc_type=IndirectCommandBufferDescriptor, objc_name="setMaxVertexBufferBindCount") -IndirectCommandBufferDescriptor_setMaxVertexBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor, maxVertexBufferBindCount: NS.Integer) { +IndirectCommandBufferDescriptor_setMaxVertexBufferBindCount :: #force_inline proc(self: ^IndirectCommandBufferDescriptor, maxVertexBufferBindCount: NS.UInteger) { msgSend(nil, self, "setMaxVertexBufferBindCount:", maxVertexBufferBindCount) } @@ -1940,39 +1989,39 @@ InstanceAccelerationStructureDescriptor_descriptor :: #force_inline proc() -> ^I return msgSend(^InstanceAccelerationStructureDescriptor, InstanceAccelerationStructureDescriptor, "descriptor") } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="instanceCount") -InstanceAccelerationStructureDescriptor_instanceCount :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "instanceCount") +InstanceAccelerationStructureDescriptor_instanceCount :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "instanceCount") } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="instanceDescriptorBuffer") InstanceAccelerationStructureDescriptor_instanceDescriptorBuffer :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor) -> ^InstanceAccelerationStructureDescriptor { return msgSend(^InstanceAccelerationStructureDescriptor, self, "instanceDescriptorBuffer") } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="instanceDescriptorBufferOffset") -InstanceAccelerationStructureDescriptor_instanceDescriptorBufferOffset :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "instanceDescriptorBufferOffset") +InstanceAccelerationStructureDescriptor_instanceDescriptorBufferOffset :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "instanceDescriptorBufferOffset") } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="instanceDescriptorStride") -InstanceAccelerationStructureDescriptor_instanceDescriptorStride :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "instanceDescriptorStride") +InstanceAccelerationStructureDescriptor_instanceDescriptorStride :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "instanceDescriptorStride") } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="instancedAccelerationStructures") InstanceAccelerationStructureDescriptor_instancedAccelerationStructures :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor) -> ^NS.Array { return msgSend(^NS.Array, self, "instancedAccelerationStructures") } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="setInstanceCount") -InstanceAccelerationStructureDescriptor_setInstanceCount :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor, instanceCount: NS.Integer) { +InstanceAccelerationStructureDescriptor_setInstanceCount :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor, instanceCount: NS.UInteger) { msgSend(nil, self, "setInstanceCount:", instanceCount) } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="setInstanceDescriptorBuffer") -InstanceAccelerationStructureDescriptor_setInstanceDescriptorBuffer :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor, instanceDescriptorBuffer: ^NS.Object) { +InstanceAccelerationStructureDescriptor_setInstanceDescriptorBuffer :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor, instanceDescriptorBuffer: ^Buffer) { msgSend(nil, self, "setInstanceDescriptorBuffer:", instanceDescriptorBuffer) } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="setInstanceDescriptorBufferOffset") -InstanceAccelerationStructureDescriptor_setInstanceDescriptorBufferOffset :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor, instanceDescriptorBufferOffset: NS.Integer) { +InstanceAccelerationStructureDescriptor_setInstanceDescriptorBufferOffset :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor, instanceDescriptorBufferOffset: NS.UInteger) { msgSend(nil, self, "setInstanceDescriptorBufferOffset:", instanceDescriptorBufferOffset) } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="setInstanceDescriptorStride") -InstanceAccelerationStructureDescriptor_setInstanceDescriptorStride :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor, instanceDescriptorStride: NS.Integer) { +InstanceAccelerationStructureDescriptor_setInstanceDescriptorStride :: #force_inline proc(self: ^InstanceAccelerationStructureDescriptor, instanceDescriptorStride: NS.UInteger) { msgSend(nil, self, "setInstanceDescriptorStride:", instanceDescriptorStride) } @(objc_type=InstanceAccelerationStructureDescriptor, objc_name="setInstancedAccelerationStructures") @@ -2005,15 +2054,15 @@ IntersectionFunctionTableDescriptor_init :: #force_inline proc(self: ^Intersecti return msgSend(^IntersectionFunctionTableDescriptor, self, "init") } @(objc_type=IntersectionFunctionTableDescriptor, objc_name="functionCount") -IntersectionFunctionTableDescriptor_functionCount :: #force_inline proc(self: ^IntersectionFunctionTableDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "functionCount") +IntersectionFunctionTableDescriptor_functionCount :: #force_inline proc(self: ^IntersectionFunctionTableDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "functionCount") } @(objc_type=IntersectionFunctionTableDescriptor, objc_class_name="intersectionFunctionTableDescriptor") IntersectionFunctionTableDescriptor_intersectionFunctionTableDescriptor :: #force_inline proc() -> ^IntersectionFunctionTableDescriptor { return msgSend(^IntersectionFunctionTableDescriptor, IntersectionFunctionTableDescriptor, "intersectionFunctionTableDescriptor") } @(objc_type=IntersectionFunctionTableDescriptor, objc_name="setFunctionCount") -IntersectionFunctionTableDescriptor_setFunctionCount :: #force_inline proc(self: ^IntersectionFunctionTableDescriptor, functionCount: NS.Integer) { +IntersectionFunctionTableDescriptor_setFunctionCount :: #force_inline proc(self: ^IntersectionFunctionTableDescriptor, functionCount: NS.UInteger) { msgSend(nil, self, "setFunctionCount:", functionCount) } @@ -2130,11 +2179,11 @@ PipelineBufferDescriptorArray_init :: #force_inline proc(self: ^PipelineBufferDe return msgSend(^PipelineBufferDescriptorArray, self, "init") } @(objc_type=PipelineBufferDescriptorArray, objc_name="objectAtIndexedSubscript") -PipelineBufferDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^PipelineBufferDescriptorArray, bufferIndex: ^NS.Object) -> ^PipelineBufferDescriptor { +PipelineBufferDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^PipelineBufferDescriptorArray, bufferIndex: NS.UInteger) -> ^PipelineBufferDescriptor { return msgSend(^PipelineBufferDescriptor, self, "objectAtIndexedSubscript:", bufferIndex) } @(objc_type=PipelineBufferDescriptorArray, objc_name="setObject") -PipelineBufferDescriptorArray_setObject :: #force_inline proc(self: ^PipelineBufferDescriptorArray, buffer: ^PipelineBufferDescriptor, bufferIndex: ^NS.Object) { +PipelineBufferDescriptorArray_setObject :: #force_inline proc(self: ^PipelineBufferDescriptorArray, buffer: ^PipelineBufferDescriptor, bufferIndex: NS.UInteger) { msgSend(nil, self, "setObject:atIndexedSubscript:", buffer, bufferIndex) } @@ -2171,12 +2220,12 @@ PointerType_access :: #force_inline proc(self: ^PointerType) -> ArgumentAccess { return msgSend(ArgumentAccess, self, "access") } @(objc_type=PointerType, objc_name="alignment") -PointerType_alignment :: #force_inline proc(self: ^PointerType) -> NS.Integer { - return msgSend(NS.Integer, self, "alignment") +PointerType_alignment :: #force_inline proc(self: ^PointerType) -> NS.UInteger { + return msgSend(NS.UInteger, self, "alignment") } @(objc_type=PointerType, objc_name="dataSize") -PointerType_dataSize :: #force_inline proc(self: ^PointerType) -> NS.Integer { - return msgSend(NS.Integer, self, "dataSize") +PointerType_dataSize :: #force_inline proc(self: ^PointerType) -> NS.UInteger { + return msgSend(NS.UInteger, self, "dataSize") } @(objc_type=PointerType, objc_name="elementArrayType") PointerType_elementArrayType :: #force_inline proc(self: ^PointerType) -> ^ArrayType { @@ -2256,11 +2305,11 @@ RasterizationRateLayerArray_init :: #force_inline proc(self: ^RasterizationRateL return msgSend(^RasterizationRateLayerArray, self, "init") } @(objc_type=RasterizationRateLayerArray, objc_name="objectAtIndexedSubscript") -RasterizationRateLayerArray_objectAtIndexedSubscript :: #force_inline proc(self: ^RasterizationRateLayerArray, layerIndex: ^NS.Object) -> ^RasterizationRateLayerDescriptor { +RasterizationRateLayerArray_objectAtIndexedSubscript :: #force_inline proc(self: ^RasterizationRateLayerArray, layerIndex: NS.UInteger) -> ^RasterizationRateLayerDescriptor { return msgSend(^RasterizationRateLayerDescriptor, self, "objectAtIndexedSubscript:", layerIndex) } @(objc_type=RasterizationRateLayerArray, objc_name="setObject") -RasterizationRateLayerArray_setObject :: #force_inline proc(self: ^RasterizationRateLayerArray, layer: ^RasterizationRateLayerDescriptor, layerIndex: ^NS.Object) { +RasterizationRateLayerArray_setObject :: #force_inline proc(self: ^RasterizationRateLayerArray, layer: ^RasterizationRateLayerDescriptor, layerIndex: NS.UInteger) { msgSend(nil, self, "setObject:atIndexedSubscript:", layer, layerIndex) } @@ -2358,12 +2407,12 @@ RasterizationRateMapDescriptor_label :: #force_inline proc(self: ^RasterizationR return msgSend(^NS.String, self, "label") } @(objc_type=RasterizationRateMapDescriptor, objc_name="layerAtIndex") -RasterizationRateMapDescriptor_layerAtIndex :: #force_inline proc(self: ^RasterizationRateMapDescriptor, layerIndex: ^NS.Object) -> ^RasterizationRateLayerDescriptor { +RasterizationRateMapDescriptor_layerAtIndex :: #force_inline proc(self: ^RasterizationRateMapDescriptor, layerIndex: NS.UInteger) -> ^RasterizationRateLayerDescriptor { return msgSend(^RasterizationRateLayerDescriptor, self, "layerAtIndex:", layerIndex) } @(objc_type=RasterizationRateMapDescriptor, objc_name="layerCount") -RasterizationRateMapDescriptor_layerCount :: #force_inline proc(self: ^RasterizationRateMapDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "layerCount") +RasterizationRateMapDescriptor_layerCount :: #force_inline proc(self: ^RasterizationRateMapDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "layerCount") } @(objc_type=RasterizationRateMapDescriptor, objc_name="layers") RasterizationRateMapDescriptor_layers :: #force_inline proc(self: ^RasterizationRateMapDescriptor) -> ^RasterizationRateLayerArray { @@ -2373,12 +2422,12 @@ RasterizationRateMapDescriptor_layers :: #force_inline proc(self: ^Rasterization RasterizationRateMapDescriptor_rasterizationRateMapDescriptorWithScreenSize :: #force_inline proc(screenSize: Size) -> ^RasterizationRateMapDescriptor { return msgSend(^RasterizationRateMapDescriptor, RasterizationRateMapDescriptor, "rasterizationRateMapDescriptorWithScreenSize:", screenSize) } -@(objc_type=RasterizationRateMapDescriptor, objc_class_name="rasterizationRateMapDescriptorWithScreenSize_layer_") -RasterizationRateMapDescriptor_rasterizationRateMapDescriptorWithScreenSize_layer_ :: #force_inline proc(screenSize: Size, layer: ^RasterizationRateLayerDescriptor) -> ^RasterizationRateMapDescriptor { +@(objc_type=RasterizationRateMapDescriptor, objc_class_name="rasterizationRateMapDescriptorWithScreenSizeWithLayer") +RasterizationRateMapDescriptor_rasterizationRateMapDescriptorWithScreenSizeWithLayer :: #force_inline proc(screenSize: Size, layer: ^RasterizationRateLayerDescriptor) -> ^RasterizationRateMapDescriptor { return msgSend(^RasterizationRateMapDescriptor, RasterizationRateMapDescriptor, "rasterizationRateMapDescriptorWithScreenSize:layer:", screenSize, layer) } -@(objc_type=RasterizationRateMapDescriptor, objc_class_name="rasterizationRateMapDescriptorWithScreenSize_layerCount_layers_") -RasterizationRateMapDescriptor_rasterizationRateMapDescriptorWithScreenSize_layerCount_layers_ :: #force_inline proc(screenSize: Size, layerCount: ^NS.Object, layers: ^^RasterizationRateLayerDescriptor ) -> ^RasterizationRateMapDescriptor { +@(objc_type=RasterizationRateMapDescriptor, objc_class_name="rasterizationRateMapDescriptorWithScreenSizeWithLayers") +RasterizationRateMapDescriptor_rasterizationRateMapDescriptorWithScreenSizeWithLayers :: #force_inline proc(screenSize: Size, layerCount: NS.UInteger, layers: [^]^RasterizationRateLayerDescriptor) -> ^RasterizationRateMapDescriptor { return msgSend(^RasterizationRateMapDescriptor, RasterizationRateMapDescriptor, "rasterizationRateMapDescriptorWithScreenSize:layerCount:layers:", screenSize, layerCount, layers) } @(objc_type=RasterizationRateMapDescriptor, objc_name="screenSize") @@ -2390,7 +2439,7 @@ RasterizationRateMapDescriptor_setLabel :: #force_inline proc(self: ^Rasterizati msgSend(nil, self, "setLabel:", label) } @(objc_type=RasterizationRateMapDescriptor, objc_name="setLayer") -RasterizationRateMapDescriptor_setLayer :: #force_inline proc(self: ^RasterizationRateMapDescriptor, layer: ^RasterizationRateLayerDescriptor, layerIndex: ^NS.Object) { +RasterizationRateMapDescriptor_setLayer :: #force_inline proc(self: ^RasterizationRateMapDescriptor, layer: ^RasterizationRateLayerDescriptor, layerIndex: NS.UInteger) { msgSend(nil, self, "setLayer:atIndex:", layer, layerIndex) } @(objc_type=RasterizationRateMapDescriptor, objc_name="setScreenSize") @@ -2422,11 +2471,11 @@ RasterizationRateSampleArray_init :: #force_inline proc(self: ^RasterizationRate return msgSend(^RasterizationRateSampleArray, self, "init") } @(objc_type=RasterizationRateSampleArray, objc_name="objectAtIndexedSubscript") -RasterizationRateSampleArray_objectAtIndexedSubscript :: #force_inline proc(self: ^RasterizationRateSampleArray, index: ^NS.Object) -> ^NS.Number { - return msgSend(^NS.Number, self, "objectAtIndexedSubscript:", index) +RasterizationRateSampleArray_objectAtIndexedSubscript :: #force_inline proc(self: ^RasterizationRateSampleArray, index: NS.UInteger) -> NS.UInteger { + return msgSend(NS.UInteger, self, "objectAtIndexedSubscript:", index) } @(objc_type=RasterizationRateSampleArray, objc_name="setObject") -RasterizationRateSampleArray_setObject :: #force_inline proc(self: ^RasterizationRateSampleArray, value: ^NS.Number, index: ^NS.Object) { +RasterizationRateSampleArray_setObject :: #force_inline proc(self: ^RasterizationRateSampleArray, value: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setObject:atIndexedSubscript:", value, index) } @@ -2474,39 +2523,39 @@ RenderPassAttachmentDescriptor_init :: #force_inline proc(self: ^RenderPassAttac return msgSend(^RenderPassAttachmentDescriptor, self, "init") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="depthPlane") -RenderPassAttachmentDescriptor_depthPlane :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "depthPlane") +RenderPassAttachmentDescriptor_depthPlane :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "depthPlane") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="level") -RenderPassAttachmentDescriptor_level :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "level") +RenderPassAttachmentDescriptor_level :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "level") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="loadAction") RenderPassAttachmentDescriptor_loadAction :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> LoadAction { return msgSend(LoadAction, self, "loadAction") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="resolveDepthPlane") -RenderPassAttachmentDescriptor_resolveDepthPlane :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "resolveDepthPlane") +RenderPassAttachmentDescriptor_resolveDepthPlane :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "resolveDepthPlane") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="resolveLevel") -RenderPassAttachmentDescriptor_resolveLevel :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "resolveLevel") +RenderPassAttachmentDescriptor_resolveLevel :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "resolveLevel") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="resolveSlice") -RenderPassAttachmentDescriptor_resolveSlice :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "resolveSlice") +RenderPassAttachmentDescriptor_resolveSlice :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "resolveSlice") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="resolveTexture") RenderPassAttachmentDescriptor_resolveTexture :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> ^RenderPassAttachmentDescriptor { return msgSend(^RenderPassAttachmentDescriptor, self, "resolveTexture") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setDepthPlane") -RenderPassAttachmentDescriptor_setDepthPlane :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, depthPlane: NS.Integer) { +RenderPassAttachmentDescriptor_setDepthPlane :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, depthPlane: NS.UInteger) { msgSend(nil, self, "setDepthPlane:", depthPlane) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setLevel") -RenderPassAttachmentDescriptor_setLevel :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, level: NS.Integer) { +RenderPassAttachmentDescriptor_setLevel :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, level: NS.UInteger) { msgSend(nil, self, "setLevel:", level) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setLoadAction") @@ -2514,23 +2563,23 @@ RenderPassAttachmentDescriptor_setLoadAction :: #force_inline proc(self: ^Render msgSend(nil, self, "setLoadAction:", loadAction) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setResolveDepthPlane") -RenderPassAttachmentDescriptor_setResolveDepthPlane :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, resolveDepthPlane: NS.Integer) { +RenderPassAttachmentDescriptor_setResolveDepthPlane :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, resolveDepthPlane: NS.UInteger) { msgSend(nil, self, "setResolveDepthPlane:", resolveDepthPlane) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setResolveLevel") -RenderPassAttachmentDescriptor_setResolveLevel :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, resolveLevel: NS.Integer) { +RenderPassAttachmentDescriptor_setResolveLevel :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, resolveLevel: NS.UInteger) { msgSend(nil, self, "setResolveLevel:", resolveLevel) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setResolveSlice") -RenderPassAttachmentDescriptor_setResolveSlice :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, resolveSlice: NS.Integer) { +RenderPassAttachmentDescriptor_setResolveSlice :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, resolveSlice: NS.UInteger) { msgSend(nil, self, "setResolveSlice:", resolveSlice) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setResolveTexture") -RenderPassAttachmentDescriptor_setResolveTexture :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, resolveTexture: ^NS.Object) { +RenderPassAttachmentDescriptor_setResolveTexture :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, resolveTexture: ^Texture) { msgSend(nil, self, "setResolveTexture:", resolveTexture) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setSlice") -RenderPassAttachmentDescriptor_setSlice :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, slice: NS.Integer) { +RenderPassAttachmentDescriptor_setSlice :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, slice: NS.UInteger) { msgSend(nil, self, "setSlice:", slice) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setStoreAction") @@ -2542,12 +2591,12 @@ RenderPassAttachmentDescriptor_setStoreActionOptions :: #force_inline proc(self: msgSend(nil, self, "setStoreActionOptions:", storeActionOptions) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="setTexture") -RenderPassAttachmentDescriptor_setTexture :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, texture: ^NS.Object) { +RenderPassAttachmentDescriptor_setTexture :: #force_inline proc(self: ^RenderPassAttachmentDescriptor, texture: ^Texture) { msgSend(nil, self, "setTexture:", texture) } @(objc_type=RenderPassAttachmentDescriptor, objc_name="slice") -RenderPassAttachmentDescriptor_slice :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "slice") +RenderPassAttachmentDescriptor_slice :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "slice") } @(objc_type=RenderPassAttachmentDescriptor, objc_name="storeAction") RenderPassAttachmentDescriptor_storeAction :: #force_inline proc(self: ^RenderPassAttachmentDescriptor) -> StoreAction { @@ -2618,11 +2667,11 @@ RenderPassColorAttachmentDescriptorArray_init :: #force_inline proc(self: ^Rende return msgSend(^RenderPassColorAttachmentDescriptorArray, self, "init") } @(objc_type=RenderPassColorAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") -RenderPassColorAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^RenderPassColorAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^RenderPassColorAttachmentDescriptor { +RenderPassColorAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^RenderPassColorAttachmentDescriptorArray, attachmentIndex: NS.UInteger) -> ^RenderPassColorAttachmentDescriptor { return msgSend(^RenderPassColorAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) } @(objc_type=RenderPassColorAttachmentDescriptorArray, objc_name="setObject") -RenderPassColorAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^RenderPassColorAttachmentDescriptorArray, attachment: ^RenderPassColorAttachmentDescriptor, attachmentIndex: ^NS.Object) { +RenderPassColorAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^RenderPassColorAttachmentDescriptorArray, attachment: ^RenderPassColorAttachmentDescriptor, attachmentIndex: NS.UInteger) { msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) } @@ -2723,20 +2772,20 @@ RenderPassDescriptor_colorAttachments :: #force_inline proc(self: ^RenderPassDes return msgSend(^RenderPassColorAttachmentDescriptorArray, self, "colorAttachments") } @(objc_type=RenderPassDescriptor, objc_name="defaultRasterSampleCount") -RenderPassDescriptor_defaultRasterSampleCount :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "defaultRasterSampleCount") +RenderPassDescriptor_defaultRasterSampleCount :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "defaultRasterSampleCount") } @(objc_type=RenderPassDescriptor, objc_name="depthAttachment") RenderPassDescriptor_depthAttachment :: #force_inline proc(self: ^RenderPassDescriptor) -> ^RenderPassDepthAttachmentDescriptor { return msgSend(^RenderPassDepthAttachmentDescriptor, self, "depthAttachment") } @(objc_type=RenderPassDescriptor, objc_name="getSamplePositions") -RenderPassDescriptor_getSamplePositions :: #force_inline proc(self: ^RenderPassDescriptor, positions: ^SamplePosition, count: ^NS.Object) -> ^RenderPassDescriptor { +RenderPassDescriptor_getSamplePositions :: #force_inline proc(self: ^RenderPassDescriptor, positions: ^SamplePosition, count: NS.UInteger) -> ^RenderPassDescriptor { return msgSend(^RenderPassDescriptor, self, "getSamplePositions:count:", positions, count) } @(objc_type=RenderPassDescriptor, objc_name="imageblockSampleLength") -RenderPassDescriptor_imageblockSampleLength :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "imageblockSampleLength") +RenderPassDescriptor_imageblockSampleLength :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "imageblockSampleLength") } @(objc_type=RenderPassDescriptor, objc_name="rasterizationRateMap") RenderPassDescriptor_rasterizationRateMap :: #force_inline proc(self: ^RenderPassDescriptor) -> ^RenderPassDescriptor { @@ -2747,23 +2796,23 @@ RenderPassDescriptor_renderPassDescriptor :: #force_inline proc() -> ^RenderPass return msgSend(^RenderPassDescriptor, RenderPassDescriptor, "renderPassDescriptor") } @(objc_type=RenderPassDescriptor, objc_name="renderTargetArrayLength") -RenderPassDescriptor_renderTargetArrayLength :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "renderTargetArrayLength") +RenderPassDescriptor_renderTargetArrayLength :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "renderTargetArrayLength") } @(objc_type=RenderPassDescriptor, objc_name="renderTargetHeight") -RenderPassDescriptor_renderTargetHeight :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "renderTargetHeight") +RenderPassDescriptor_renderTargetHeight :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "renderTargetHeight") } @(objc_type=RenderPassDescriptor, objc_name="renderTargetWidth") -RenderPassDescriptor_renderTargetWidth :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "renderTargetWidth") +RenderPassDescriptor_renderTargetWidth :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "renderTargetWidth") } @(objc_type=RenderPassDescriptor, objc_name="sampleBufferAttachments") RenderPassDescriptor_sampleBufferAttachments :: #force_inline proc(self: ^RenderPassDescriptor) -> ^RenderPassSampleBufferAttachmentDescriptorArray { return msgSend(^RenderPassSampleBufferAttachmentDescriptorArray, self, "sampleBufferAttachments") } @(objc_type=RenderPassDescriptor, objc_name="setDefaultRasterSampleCount") -RenderPassDescriptor_setDefaultRasterSampleCount :: #force_inline proc(self: ^RenderPassDescriptor, defaultRasterSampleCount: NS.Integer) { +RenderPassDescriptor_setDefaultRasterSampleCount :: #force_inline proc(self: ^RenderPassDescriptor, defaultRasterSampleCount: NS.UInteger) { msgSend(nil, self, "setDefaultRasterSampleCount:", defaultRasterSampleCount) } @(objc_type=RenderPassDescriptor, objc_name="setDepthAttachment") @@ -2771,27 +2820,27 @@ RenderPassDescriptor_setDepthAttachment :: #force_inline proc(self: ^RenderPassD msgSend(nil, self, "setDepthAttachment:", depthAttachment) } @(objc_type=RenderPassDescriptor, objc_name="setImageblockSampleLength") -RenderPassDescriptor_setImageblockSampleLength :: #force_inline proc(self: ^RenderPassDescriptor, imageblockSampleLength: NS.Integer) { +RenderPassDescriptor_setImageblockSampleLength :: #force_inline proc(self: ^RenderPassDescriptor, imageblockSampleLength: NS.UInteger) { msgSend(nil, self, "setImageblockSampleLength:", imageblockSampleLength) } @(objc_type=RenderPassDescriptor, objc_name="setRasterizationRateMap") -RenderPassDescriptor_setRasterizationRateMap :: #force_inline proc(self: ^RenderPassDescriptor, rasterizationRateMap: ^NS.Object) { +RenderPassDescriptor_setRasterizationRateMap :: #force_inline proc(self: ^RenderPassDescriptor, rasterizationRateMap: ^RasterizationRateMap) { msgSend(nil, self, "setRasterizationRateMap:", rasterizationRateMap) } @(objc_type=RenderPassDescriptor, objc_name="setRenderTargetArrayLength") -RenderPassDescriptor_setRenderTargetArrayLength :: #force_inline proc(self: ^RenderPassDescriptor, renderTargetArrayLength: NS.Integer) { +RenderPassDescriptor_setRenderTargetArrayLength :: #force_inline proc(self: ^RenderPassDescriptor, renderTargetArrayLength: NS.UInteger) { msgSend(nil, self, "setRenderTargetArrayLength:", renderTargetArrayLength) } @(objc_type=RenderPassDescriptor, objc_name="setRenderTargetHeight") -RenderPassDescriptor_setRenderTargetHeight :: #force_inline proc(self: ^RenderPassDescriptor, renderTargetHeight: NS.Integer) { +RenderPassDescriptor_setRenderTargetHeight :: #force_inline proc(self: ^RenderPassDescriptor, renderTargetHeight: NS.UInteger) { msgSend(nil, self, "setRenderTargetHeight:", renderTargetHeight) } @(objc_type=RenderPassDescriptor, objc_name="setRenderTargetWidth") -RenderPassDescriptor_setRenderTargetWidth :: #force_inline proc(self: ^RenderPassDescriptor, renderTargetWidth: NS.Integer) { +RenderPassDescriptor_setRenderTargetWidth :: #force_inline proc(self: ^RenderPassDescriptor, renderTargetWidth: NS.UInteger) { msgSend(nil, self, "setRenderTargetWidth:", renderTargetWidth) } @(objc_type=RenderPassDescriptor, objc_name="setSamplePositions") -RenderPassDescriptor_setSamplePositions :: #force_inline proc(self: ^RenderPassDescriptor, positions: ^SamplePosition, count: ^NS.Object) { +RenderPassDescriptor_setSamplePositions :: #force_inline proc(self: ^RenderPassDescriptor, positions: ^SamplePosition, count: NS.UInteger) { msgSend(nil, self, "setSamplePositions:count:", positions, count) } @(objc_type=RenderPassDescriptor, objc_name="setStencilAttachment") @@ -2799,19 +2848,19 @@ RenderPassDescriptor_setStencilAttachment :: #force_inline proc(self: ^RenderPas msgSend(nil, self, "setStencilAttachment:", stencilAttachment) } @(objc_type=RenderPassDescriptor, objc_name="setThreadgroupMemoryLength") -RenderPassDescriptor_setThreadgroupMemoryLength :: #force_inline proc(self: ^RenderPassDescriptor, threadgroupMemoryLength: NS.Integer) { +RenderPassDescriptor_setThreadgroupMemoryLength :: #force_inline proc(self: ^RenderPassDescriptor, threadgroupMemoryLength: NS.UInteger) { msgSend(nil, self, "setThreadgroupMemoryLength:", threadgroupMemoryLength) } @(objc_type=RenderPassDescriptor, objc_name="setTileHeight") -RenderPassDescriptor_setTileHeight :: #force_inline proc(self: ^RenderPassDescriptor, tileHeight: NS.Integer) { +RenderPassDescriptor_setTileHeight :: #force_inline proc(self: ^RenderPassDescriptor, tileHeight: NS.UInteger) { msgSend(nil, self, "setTileHeight:", tileHeight) } @(objc_type=RenderPassDescriptor, objc_name="setTileWidth") -RenderPassDescriptor_setTileWidth :: #force_inline proc(self: ^RenderPassDescriptor, tileWidth: NS.Integer) { +RenderPassDescriptor_setTileWidth :: #force_inline proc(self: ^RenderPassDescriptor, tileWidth: NS.UInteger) { msgSend(nil, self, "setTileWidth:", tileWidth) } @(objc_type=RenderPassDescriptor, objc_name="setVisibilityResultBuffer") -RenderPassDescriptor_setVisibilityResultBuffer :: #force_inline proc(self: ^RenderPassDescriptor, visibilityResultBuffer: ^NS.Object) { +RenderPassDescriptor_setVisibilityResultBuffer :: #force_inline proc(self: ^RenderPassDescriptor, visibilityResultBuffer: ^Buffer) { msgSend(nil, self, "setVisibilityResultBuffer:", visibilityResultBuffer) } @(objc_type=RenderPassDescriptor, objc_name="stencilAttachment") @@ -2819,16 +2868,16 @@ RenderPassDescriptor_stencilAttachment :: #force_inline proc(self: ^RenderPassDe return msgSend(^RenderPassStencilAttachmentDescriptor, self, "stencilAttachment") } @(objc_type=RenderPassDescriptor, objc_name="threadgroupMemoryLength") -RenderPassDescriptor_threadgroupMemoryLength :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "threadgroupMemoryLength") +RenderPassDescriptor_threadgroupMemoryLength :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "threadgroupMemoryLength") } @(objc_type=RenderPassDescriptor, objc_name="tileHeight") -RenderPassDescriptor_tileHeight :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "tileHeight") +RenderPassDescriptor_tileHeight :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "tileHeight") } @(objc_type=RenderPassDescriptor, objc_name="tileWidth") -RenderPassDescriptor_tileWidth :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "tileWidth") +RenderPassDescriptor_tileWidth :: #force_inline proc(self: ^RenderPassDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "tileWidth") } @(objc_type=RenderPassDescriptor, objc_name="visibilityResultBuffer") RenderPassDescriptor_visibilityResultBuffer :: #force_inline proc(self: ^RenderPassDescriptor) -> ^RenderPassDescriptor { @@ -2867,44 +2916,44 @@ RenderPassSampleBufferAttachmentDescriptor_init :: #force_inline proc(self: ^Ren return msgSend(^RenderPassSampleBufferAttachmentDescriptor, self, "init") } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="endOfFragmentSampleIndex") -RenderPassSampleBufferAttachmentDescriptor_endOfFragmentSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "endOfFragmentSampleIndex") +RenderPassSampleBufferAttachmentDescriptor_endOfFragmentSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "endOfFragmentSampleIndex") } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="endOfVertexSampleIndex") -RenderPassSampleBufferAttachmentDescriptor_endOfVertexSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "endOfVertexSampleIndex") +RenderPassSampleBufferAttachmentDescriptor_endOfVertexSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "endOfVertexSampleIndex") } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="sampleBuffer") RenderPassSampleBufferAttachmentDescriptor_sampleBuffer :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> ^RenderPassSampleBufferAttachmentDescriptor { return msgSend(^RenderPassSampleBufferAttachmentDescriptor, self, "sampleBuffer") } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="setEndOfFragmentSampleIndex") -RenderPassSampleBufferAttachmentDescriptor_setEndOfFragmentSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor, endOfFragmentSampleIndex: NS.Integer) { +RenderPassSampleBufferAttachmentDescriptor_setEndOfFragmentSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor, endOfFragmentSampleIndex: NS.UInteger) { msgSend(nil, self, "setEndOfFragmentSampleIndex:", endOfFragmentSampleIndex) } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="setEndOfVertexSampleIndex") -RenderPassSampleBufferAttachmentDescriptor_setEndOfVertexSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor, endOfVertexSampleIndex: NS.Integer) { +RenderPassSampleBufferAttachmentDescriptor_setEndOfVertexSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor, endOfVertexSampleIndex: NS.UInteger) { msgSend(nil, self, "setEndOfVertexSampleIndex:", endOfVertexSampleIndex) } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="setSampleBuffer") -RenderPassSampleBufferAttachmentDescriptor_setSampleBuffer :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor, sampleBuffer: ^NS.Object) { +RenderPassSampleBufferAttachmentDescriptor_setSampleBuffer :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor, sampleBuffer: ^Buffer) { msgSend(nil, self, "setSampleBuffer:", sampleBuffer) } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="setStartOfFragmentSampleIndex") -RenderPassSampleBufferAttachmentDescriptor_setStartOfFragmentSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor, startOfFragmentSampleIndex: NS.Integer) { +RenderPassSampleBufferAttachmentDescriptor_setStartOfFragmentSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor, startOfFragmentSampleIndex: NS.UInteger) { msgSend(nil, self, "setStartOfFragmentSampleIndex:", startOfFragmentSampleIndex) } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="setStartOfVertexSampleIndex") -RenderPassSampleBufferAttachmentDescriptor_setStartOfVertexSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor, startOfVertexSampleIndex: NS.Integer) { +RenderPassSampleBufferAttachmentDescriptor_setStartOfVertexSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor, startOfVertexSampleIndex: NS.UInteger) { msgSend(nil, self, "setStartOfVertexSampleIndex:", startOfVertexSampleIndex) } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="startOfFragmentSampleIndex") -RenderPassSampleBufferAttachmentDescriptor_startOfFragmentSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "startOfFragmentSampleIndex") +RenderPassSampleBufferAttachmentDescriptor_startOfFragmentSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "startOfFragmentSampleIndex") } @(objc_type=RenderPassSampleBufferAttachmentDescriptor, objc_name="startOfVertexSampleIndex") -RenderPassSampleBufferAttachmentDescriptor_startOfVertexSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "startOfVertexSampleIndex") +RenderPassSampleBufferAttachmentDescriptor_startOfVertexSampleIndex :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "startOfVertexSampleIndex") } //////////////////////////////////////////////////////////////////////////////// @@ -2931,11 +2980,11 @@ RenderPassSampleBufferAttachmentDescriptorArray_init :: #force_inline proc(self: return msgSend(^RenderPassSampleBufferAttachmentDescriptorArray, self, "init") } @(objc_type=RenderPassSampleBufferAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") -RenderPassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^RenderPassSampleBufferAttachmentDescriptor { +RenderPassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptorArray, attachmentIndex: NS.UInteger) -> ^RenderPassSampleBufferAttachmentDescriptor { return msgSend(^RenderPassSampleBufferAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) } @(objc_type=RenderPassSampleBufferAttachmentDescriptorArray, objc_name="setObject") -RenderPassSampleBufferAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptorArray, attachment: ^RenderPassSampleBufferAttachmentDescriptor, attachmentIndex: ^NS.Object) { +RenderPassSampleBufferAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^RenderPassSampleBufferAttachmentDescriptorArray, attachment: ^RenderPassSampleBufferAttachmentDescriptor, attachmentIndex: NS.UInteger) { msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) } @@ -3117,11 +3166,11 @@ RenderPipelineColorAttachmentDescriptorArray_init :: #force_inline proc(self: ^R return msgSend(^RenderPipelineColorAttachmentDescriptorArray, self, "init") } @(objc_type=RenderPipelineColorAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") -RenderPipelineColorAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^RenderPipelineColorAttachmentDescriptor { +RenderPipelineColorAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptorArray, attachmentIndex: NS.UInteger) -> ^RenderPipelineColorAttachmentDescriptor { return msgSend(^RenderPipelineColorAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) } @(objc_type=RenderPipelineColorAttachmentDescriptorArray, objc_name="setObject") -RenderPipelineColorAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptorArray, attachment: ^RenderPipelineColorAttachmentDescriptor, attachmentIndex: ^NS.Object) { +RenderPipelineColorAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^RenderPipelineColorAttachmentDescriptorArray, attachment: ^RenderPipelineColorAttachmentDescriptor, attachmentIndex: NS.UInteger) { msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) } @@ -3239,24 +3288,24 @@ RenderPipelineDescriptor_label :: #force_inline proc(self: ^RenderPipelineDescri return msgSend(^NS.String, self, "label") } @(objc_type=RenderPipelineDescriptor, objc_name="maxTessellationFactor") -RenderPipelineDescriptor_maxTessellationFactor :: #force_inline proc(self: ^RenderPipelineDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "maxTessellationFactor") +RenderPipelineDescriptor_maxTessellationFactor :: #force_inline proc(self: ^RenderPipelineDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "maxTessellationFactor") } @(objc_type=RenderPipelineDescriptor, objc_name="maxVertexAmplificationCount") -RenderPipelineDescriptor_maxVertexAmplificationCount :: #force_inline proc(self: ^RenderPipelineDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "maxVertexAmplificationCount") +RenderPipelineDescriptor_maxVertexAmplificationCount :: #force_inline proc(self: ^RenderPipelineDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "maxVertexAmplificationCount") } @(objc_type=RenderPipelineDescriptor, objc_name="rasterSampleCount") -RenderPipelineDescriptor_rasterSampleCount :: #force_inline proc(self: ^RenderPipelineDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "rasterSampleCount") +RenderPipelineDescriptor_rasterSampleCount :: #force_inline proc(self: ^RenderPipelineDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "rasterSampleCount") } @(objc_type=RenderPipelineDescriptor, objc_name="reset") RenderPipelineDescriptor_reset :: #force_inline proc(self: ^RenderPipelineDescriptor) { msgSend(nil, self, "reset") } @(objc_type=RenderPipelineDescriptor, objc_name="sampleCount") -RenderPipelineDescriptor_sampleCount :: #force_inline proc(self: ^RenderPipelineDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "sampleCount") +RenderPipelineDescriptor_sampleCount :: #force_inline proc(self: ^RenderPipelineDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "sampleCount") } @(objc_type=RenderPipelineDescriptor, objc_name="setAlphaToCoverageEnabled") RenderPipelineDescriptor_setAlphaToCoverageEnabled :: #force_inline proc(self: ^RenderPipelineDescriptor, alphaToCoverageEnabled: BOOL) { @@ -3275,7 +3324,7 @@ RenderPipelineDescriptor_setDepthAttachmentPixelFormat :: #force_inline proc(sel msgSend(nil, self, "setDepthAttachmentPixelFormat:", depthAttachmentPixelFormat) } @(objc_type=RenderPipelineDescriptor, objc_name="setFragmentFunction") -RenderPipelineDescriptor_setFragmentFunction :: #force_inline proc(self: ^RenderPipelineDescriptor, fragmentFunction: ^NS.Object) { +RenderPipelineDescriptor_setFragmentFunction :: #force_inline proc(self: ^RenderPipelineDescriptor, fragmentFunction: ^Function) { msgSend(nil, self, "setFragmentFunction:", fragmentFunction) } @(objc_type=RenderPipelineDescriptor, objc_name="setInputPrimitiveTopology") @@ -3287,15 +3336,15 @@ RenderPipelineDescriptor_setLabel :: #force_inline proc(self: ^RenderPipelineDes msgSend(nil, self, "setLabel:", label) } @(objc_type=RenderPipelineDescriptor, objc_name="setMaxTessellationFactor") -RenderPipelineDescriptor_setMaxTessellationFactor :: #force_inline proc(self: ^RenderPipelineDescriptor, maxTessellationFactor: NS.Integer) { +RenderPipelineDescriptor_setMaxTessellationFactor :: #force_inline proc(self: ^RenderPipelineDescriptor, maxTessellationFactor: NS.UInteger) { msgSend(nil, self, "setMaxTessellationFactor:", maxTessellationFactor) } @(objc_type=RenderPipelineDescriptor, objc_name="setMaxVertexAmplificationCount") -RenderPipelineDescriptor_setMaxVertexAmplificationCount :: #force_inline proc(self: ^RenderPipelineDescriptor, maxVertexAmplificationCount: NS.Integer) { +RenderPipelineDescriptor_setMaxVertexAmplificationCount :: #force_inline proc(self: ^RenderPipelineDescriptor, maxVertexAmplificationCount: NS.UInteger) { msgSend(nil, self, "setMaxVertexAmplificationCount:", maxVertexAmplificationCount) } @(objc_type=RenderPipelineDescriptor, objc_name="setRasterSampleCount") -RenderPipelineDescriptor_setRasterSampleCount :: #force_inline proc(self: ^RenderPipelineDescriptor, rasterSampleCount: NS.Integer) { +RenderPipelineDescriptor_setRasterSampleCount :: #force_inline proc(self: ^RenderPipelineDescriptor, rasterSampleCount: NS.UInteger) { msgSend(nil, self, "setRasterSampleCount:", rasterSampleCount) } @(objc_type=RenderPipelineDescriptor, objc_name="setRasterizationEnabled") @@ -3303,7 +3352,7 @@ RenderPipelineDescriptor_setRasterizationEnabled :: #force_inline proc(self: ^Re msgSend(nil, self, "setRasterizationEnabled:", rasterizationEnabled) } @(objc_type=RenderPipelineDescriptor, objc_name="setSampleCount") -RenderPipelineDescriptor_setSampleCount :: #force_inline proc(self: ^RenderPipelineDescriptor, sampleCount: NS.Integer) { +RenderPipelineDescriptor_setSampleCount :: #force_inline proc(self: ^RenderPipelineDescriptor, sampleCount: NS.UInteger) { msgSend(nil, self, "setSampleCount:", sampleCount) } @(objc_type=RenderPipelineDescriptor, objc_name="setStencilAttachmentPixelFormat") @@ -3343,7 +3392,7 @@ RenderPipelineDescriptor_setVertexDescriptor :: #force_inline proc(self: ^Render msgSend(nil, self, "setVertexDescriptor:", vertexDescriptor) } @(objc_type=RenderPipelineDescriptor, objc_name="setVertexFunction") -RenderPipelineDescriptor_setVertexFunction :: #force_inline proc(self: ^RenderPipelineDescriptor, vertexFunction: ^NS.Object) { +RenderPipelineDescriptor_setVertexFunction :: #force_inline proc(self: ^RenderPipelineDescriptor, vertexFunction: ^Function) { msgSend(nil, self, "setVertexFunction:", vertexFunction) } @(objc_type=RenderPipelineDescriptor, objc_name="stencilAttachmentPixelFormat") @@ -3484,28 +3533,28 @@ ResourceStatePassSampleBufferAttachmentDescriptor_init :: #force_inline proc(sel return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptor, self, "init") } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="endOfEncoderSampleIndex") -ResourceStatePassSampleBufferAttachmentDescriptor_endOfEncoderSampleIndex :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "endOfEncoderSampleIndex") +ResourceStatePassSampleBufferAttachmentDescriptor_endOfEncoderSampleIndex :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "endOfEncoderSampleIndex") } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="sampleBuffer") ResourceStatePassSampleBufferAttachmentDescriptor_sampleBuffer :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> ^ResourceStatePassSampleBufferAttachmentDescriptor { return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptor, self, "sampleBuffer") } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="setEndOfEncoderSampleIndex") -ResourceStatePassSampleBufferAttachmentDescriptor_setEndOfEncoderSampleIndex :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor, endOfEncoderSampleIndex: NS.Integer) { +ResourceStatePassSampleBufferAttachmentDescriptor_setEndOfEncoderSampleIndex :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor, endOfEncoderSampleIndex: NS.UInteger) { msgSend(nil, self, "setEndOfEncoderSampleIndex:", endOfEncoderSampleIndex) } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="setSampleBuffer") -ResourceStatePassSampleBufferAttachmentDescriptor_setSampleBuffer :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor, sampleBuffer: ^NS.Object) { +ResourceStatePassSampleBufferAttachmentDescriptor_setSampleBuffer :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor, sampleBuffer: ^Buffer) { msgSend(nil, self, "setSampleBuffer:", sampleBuffer) } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="setStartOfEncoderSampleIndex") -ResourceStatePassSampleBufferAttachmentDescriptor_setStartOfEncoderSampleIndex :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor, startOfEncoderSampleIndex: NS.Integer) { +ResourceStatePassSampleBufferAttachmentDescriptor_setStartOfEncoderSampleIndex :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor, startOfEncoderSampleIndex: NS.UInteger) { msgSend(nil, self, "setStartOfEncoderSampleIndex:", startOfEncoderSampleIndex) } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptor, objc_name="startOfEncoderSampleIndex") -ResourceStatePassSampleBufferAttachmentDescriptor_startOfEncoderSampleIndex :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "startOfEncoderSampleIndex") +ResourceStatePassSampleBufferAttachmentDescriptor_startOfEncoderSampleIndex :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "startOfEncoderSampleIndex") } //////////////////////////////////////////////////////////////////////////////// @@ -3532,11 +3581,11 @@ ResourceStatePassSampleBufferAttachmentDescriptorArray_init :: #force_inline pro return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptorArray, self, "init") } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") -ResourceStatePassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^ResourceStatePassSampleBufferAttachmentDescriptor { +ResourceStatePassSampleBufferAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptorArray, attachmentIndex: NS.UInteger) -> ^ResourceStatePassSampleBufferAttachmentDescriptor { return msgSend(^ResourceStatePassSampleBufferAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) } @(objc_type=ResourceStatePassSampleBufferAttachmentDescriptorArray, objc_name="setObject") -ResourceStatePassSampleBufferAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptorArray, attachment: ^ResourceStatePassSampleBufferAttachmentDescriptor, attachmentIndex: ^NS.Object) { +ResourceStatePassSampleBufferAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^ResourceStatePassSampleBufferAttachmentDescriptorArray, attachment: ^ResourceStatePassSampleBufferAttachmentDescriptor, attachmentIndex: NS.UInteger) { msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) } @@ -3620,8 +3669,8 @@ SamplerDescriptor_magFilter :: #force_inline proc(self: ^SamplerDescriptor) -> S return msgSend(SamplerMinMagFilter, self, "magFilter") } @(objc_type=SamplerDescriptor, objc_name="maxAnisotropy") -SamplerDescriptor_maxAnisotropy :: #force_inline proc(self: ^SamplerDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "maxAnisotropy") +SamplerDescriptor_maxAnisotropy :: #force_inline proc(self: ^SamplerDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "maxAnisotropy") } @(objc_type=SamplerDescriptor, objc_name="minFilter") SamplerDescriptor_minFilter :: #force_inline proc(self: ^SamplerDescriptor) -> SamplerMinMagFilter { @@ -3672,7 +3721,7 @@ SamplerDescriptor_setMagFilter :: #force_inline proc(self: ^SamplerDescriptor, m msgSend(nil, self, "setMagFilter:", magFilter) } @(objc_type=SamplerDescriptor, objc_name="setMaxAnisotropy") -SamplerDescriptor_setMaxAnisotropy :: #force_inline proc(self: ^SamplerDescriptor, maxAnisotropy: NS.Integer) { +SamplerDescriptor_setMaxAnisotropy :: #force_inline proc(self: ^SamplerDescriptor, maxAnisotropy: NS.UInteger) { msgSend(nil, self, "setMaxAnisotropy:", maxAnisotropy) } @(objc_type=SamplerDescriptor, objc_name="setMinFilter") @@ -3759,15 +3808,15 @@ SharedEventListener_alloc :: #force_inline proc() -> ^SharedEventListener { return msgSend(^SharedEventListener, SharedEventListener, "alloc") } @(objc_type=SharedEventListener, objc_name="dispatchQueue") -SharedEventListener_dispatchQueue :: #force_inline proc(self: ^SharedEventListener) -> NS.Integer { - return msgSend(NS.Integer, self, "dispatchQueue") +SharedEventListener_dispatchQueue :: #force_inline proc(self: ^SharedEventListener) -> NS.UInteger { + return msgSend(NS.UInteger, self, "dispatchQueue") } @(objc_type=SharedEventListener, objc_name="init") SharedEventListener_init :: #force_inline proc(self: ^SharedEventListener) -> ^SharedEventListener { return msgSend(^SharedEventListener, self, "init") } @(objc_type=SharedEventListener, objc_name="initWithDispatchQueue") -SharedEventListener_initWithDispatchQueue :: #force_inline proc(self: ^SharedEventListener, dispatchQueue: ^NS.Object) -> ^SharedEventListener { +SharedEventListener_initWithDispatchQueue :: #force_inline proc(self: ^SharedEventListener, dispatchQueue: dispatch_queue_t) -> ^SharedEventListener { return msgSend(^SharedEventListener, self, "initWithDispatchQueue:", dispatchQueue) } @@ -3837,8 +3886,8 @@ StageInputOutputDescriptor_attributes :: #force_inline proc(self: ^StageInputOut return msgSend(^AttributeDescriptorArray, self, "attributes") } @(objc_type=StageInputOutputDescriptor, objc_name="indexBufferIndex") -StageInputOutputDescriptor_indexBufferIndex :: #force_inline proc(self: ^StageInputOutputDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "indexBufferIndex") +StageInputOutputDescriptor_indexBufferIndex :: #force_inline proc(self: ^StageInputOutputDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "indexBufferIndex") } @(objc_type=StageInputOutputDescriptor, objc_name="indexType") StageInputOutputDescriptor_indexType :: #force_inline proc(self: ^StageInputOutputDescriptor) -> IndexType { @@ -3853,7 +3902,7 @@ StageInputOutputDescriptor_reset :: #force_inline proc(self: ^StageInputOutputDe msgSend(nil, self, "reset") } @(objc_type=StageInputOutputDescriptor, objc_name="setIndexBufferIndex") -StageInputOutputDescriptor_setIndexBufferIndex :: #force_inline proc(self: ^StageInputOutputDescriptor, indexBufferIndex: NS.Integer) { +StageInputOutputDescriptor_setIndexBufferIndex :: #force_inline proc(self: ^StageInputOutputDescriptor, indexBufferIndex: NS.UInteger) { msgSend(nil, self, "setIndexBufferIndex:", indexBufferIndex) } @(objc_type=StageInputOutputDescriptor, objc_name="setIndexType") @@ -3977,8 +4026,8 @@ StructMember_init :: #force_inline proc(self: ^StructMember) -> ^StructMember { return msgSend(^StructMember, self, "init") } @(objc_type=StructMember, objc_name="argumentIndex") -StructMember_argumentIndex :: #force_inline proc(self: ^StructMember) -> NS.Integer { - return msgSend(NS.Integer, self, "argumentIndex") +StructMember_argumentIndex :: #force_inline proc(self: ^StructMember) -> NS.UInteger { + return msgSend(NS.UInteger, self, "argumentIndex") } @(objc_type=StructMember, objc_name="arrayType") StructMember_arrayType :: #force_inline proc(self: ^StructMember) -> ^ArrayType { @@ -3993,8 +4042,8 @@ StructMember_name :: #force_inline proc(self: ^StructMember) -> ^NS.String { return msgSend(^NS.String, self, "name") } @(objc_type=StructMember, objc_name="offset") -StructMember_offset :: #force_inline proc(self: ^StructMember) -> NS.Integer { - return msgSend(NS.Integer, self, "offset") +StructMember_offset :: #force_inline proc(self: ^StructMember) -> NS.UInteger { + return msgSend(NS.UInteger, self, "offset") } @(objc_type=StructMember, objc_name="pointerType") StructMember_pointerType :: #force_inline proc(self: ^StructMember) -> ^PointerType { @@ -4100,28 +4149,28 @@ TextureDescriptor_allowGPUOptimizedContents :: #force_inline proc(self: ^Texture return msgSend(BOOL, self, "allowGPUOptimizedContents") } @(objc_type=TextureDescriptor, objc_name="arrayLength") -TextureDescriptor_arrayLength :: #force_inline proc(self: ^TextureDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "arrayLength") +TextureDescriptor_arrayLength :: #force_inline proc(self: ^TextureDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "arrayLength") } @(objc_type=TextureDescriptor, objc_name="cpuCacheMode") TextureDescriptor_cpuCacheMode :: #force_inline proc(self: ^TextureDescriptor) -> CPUCacheMode { return msgSend(CPUCacheMode, self, "cpuCacheMode") } @(objc_type=TextureDescriptor, objc_name="depth") -TextureDescriptor_depth :: #force_inline proc(self: ^TextureDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "depth") +TextureDescriptor_depth :: #force_inline proc(self: ^TextureDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "depth") } @(objc_type=TextureDescriptor, objc_name="hazardTrackingMode") TextureDescriptor_hazardTrackingMode :: #force_inline proc(self: ^TextureDescriptor) -> HazardTrackingMode { return msgSend(HazardTrackingMode, self, "hazardTrackingMode") } @(objc_type=TextureDescriptor, objc_name="height") -TextureDescriptor_height :: #force_inline proc(self: ^TextureDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "height") +TextureDescriptor_height :: #force_inline proc(self: ^TextureDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "height") } @(objc_type=TextureDescriptor, objc_name="mipmapLevelCount") -TextureDescriptor_mipmapLevelCount :: #force_inline proc(self: ^TextureDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "mipmapLevelCount") +TextureDescriptor_mipmapLevelCount :: #force_inline proc(self: ^TextureDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "mipmapLevelCount") } @(objc_type=TextureDescriptor, objc_name="pixelFormat") TextureDescriptor_pixelFormat :: #force_inline proc(self: ^TextureDescriptor) -> PixelFormat { @@ -4132,15 +4181,15 @@ TextureDescriptor_resourceOptions :: #force_inline proc(self: ^TextureDescriptor return msgSend(ResourceOptions, self, "resourceOptions") } @(objc_type=TextureDescriptor, objc_name="sampleCount") -TextureDescriptor_sampleCount :: #force_inline proc(self: ^TextureDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "sampleCount") +TextureDescriptor_sampleCount :: #force_inline proc(self: ^TextureDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "sampleCount") } @(objc_type=TextureDescriptor, objc_name="setAllowGPUOptimizedContents") TextureDescriptor_setAllowGPUOptimizedContents :: #force_inline proc(self: ^TextureDescriptor, allowGPUOptimizedContents: BOOL) { msgSend(nil, self, "setAllowGPUOptimizedContents:", allowGPUOptimizedContents) } @(objc_type=TextureDescriptor, objc_name="setArrayLength") -TextureDescriptor_setArrayLength :: #force_inline proc(self: ^TextureDescriptor, arrayLength: NS.Integer) { +TextureDescriptor_setArrayLength :: #force_inline proc(self: ^TextureDescriptor, arrayLength: NS.UInteger) { msgSend(nil, self, "setArrayLength:", arrayLength) } @(objc_type=TextureDescriptor, objc_name="setCpuCacheMode") @@ -4148,7 +4197,7 @@ TextureDescriptor_setCpuCacheMode :: #force_inline proc(self: ^TextureDescriptor msgSend(nil, self, "setCpuCacheMode:", cpuCacheMode) } @(objc_type=TextureDescriptor, objc_name="setDepth") -TextureDescriptor_setDepth :: #force_inline proc(self: ^TextureDescriptor, depth: NS.Integer) { +TextureDescriptor_setDepth :: #force_inline proc(self: ^TextureDescriptor, depth: NS.UInteger) { msgSend(nil, self, "setDepth:", depth) } @(objc_type=TextureDescriptor, objc_name="setHazardTrackingMode") @@ -4156,11 +4205,11 @@ TextureDescriptor_setHazardTrackingMode :: #force_inline proc(self: ^TextureDesc msgSend(nil, self, "setHazardTrackingMode:", hazardTrackingMode) } @(objc_type=TextureDescriptor, objc_name="setHeight") -TextureDescriptor_setHeight :: #force_inline proc(self: ^TextureDescriptor, height: NS.Integer) { +TextureDescriptor_setHeight :: #force_inline proc(self: ^TextureDescriptor, height: NS.UInteger) { msgSend(nil, self, "setHeight:", height) } @(objc_type=TextureDescriptor, objc_name="setMipmapLevelCount") -TextureDescriptor_setMipmapLevelCount :: #force_inline proc(self: ^TextureDescriptor, mipmapLevelCount: NS.Integer) { +TextureDescriptor_setMipmapLevelCount :: #force_inline proc(self: ^TextureDescriptor, mipmapLevelCount: NS.UInteger) { msgSend(nil, self, "setMipmapLevelCount:", mipmapLevelCount) } @(objc_type=TextureDescriptor, objc_name="setPixelFormat") @@ -4172,7 +4221,7 @@ TextureDescriptor_setResourceOptions :: #force_inline proc(self: ^TextureDescrip msgSend(nil, self, "setResourceOptions:", resourceOptions) } @(objc_type=TextureDescriptor, objc_name="setSampleCount") -TextureDescriptor_setSampleCount :: #force_inline proc(self: ^TextureDescriptor, sampleCount: NS.Integer) { +TextureDescriptor_setSampleCount :: #force_inline proc(self: ^TextureDescriptor, sampleCount: NS.UInteger) { msgSend(nil, self, "setSampleCount:", sampleCount) } @(objc_type=TextureDescriptor, objc_name="setStorageMode") @@ -4192,7 +4241,7 @@ TextureDescriptor_setUsage :: #force_inline proc(self: ^TextureDescriptor, usage msgSend(nil, self, "setUsage:", usage) } @(objc_type=TextureDescriptor, objc_name="setWidth") -TextureDescriptor_setWidth :: #force_inline proc(self: ^TextureDescriptor, width: NS.Integer) { +TextureDescriptor_setWidth :: #force_inline proc(self: ^TextureDescriptor, width: NS.UInteger) { msgSend(nil, self, "setWidth:", width) } @(objc_type=TextureDescriptor, objc_name="storageMode") @@ -4204,15 +4253,15 @@ TextureDescriptor_swizzle :: #force_inline proc(self: ^TextureDescriptor) -> Tex return msgSend(TextureSwizzleChannels, self, "swizzle") } @(objc_type=TextureDescriptor, objc_class_name="texture2DDescriptorWithPixelFormat") -TextureDescriptor_texture2DDescriptorWithPixelFormat :: #force_inline proc(pixelFormat: PixelFormat, width: ^NS.Object, height: ^NS.Object, mipmapped: BOOL) -> ^TextureDescriptor { +TextureDescriptor_texture2DDescriptorWithPixelFormat :: #force_inline proc(pixelFormat: PixelFormat, width: NS.UInteger, height: NS.UInteger, mipmapped: BOOL) -> ^TextureDescriptor { return msgSend(^TextureDescriptor, TextureDescriptor, "texture2DDescriptorWithPixelFormat:width:height:mipmapped:", pixelFormat, width, height, mipmapped) } @(objc_type=TextureDescriptor, objc_class_name="textureBufferDescriptorWithPixelFormat") -TextureDescriptor_textureBufferDescriptorWithPixelFormat :: #force_inline proc(pixelFormat: PixelFormat, width: ^NS.Object, resourceOptions: ResourceOptions, usage: TextureUsage) -> ^TextureDescriptor { +TextureDescriptor_textureBufferDescriptorWithPixelFormat :: #force_inline proc(pixelFormat: PixelFormat, width: NS.UInteger, resourceOptions: ResourceOptions, usage: TextureUsage) -> ^TextureDescriptor { return msgSend(^TextureDescriptor, TextureDescriptor, "textureBufferDescriptorWithPixelFormat:width:resourceOptions:usage:", pixelFormat, width, resourceOptions, usage) } @(objc_type=TextureDescriptor, objc_class_name="textureCubeDescriptorWithPixelFormat") -TextureDescriptor_textureCubeDescriptorWithPixelFormat :: #force_inline proc(pixelFormat: PixelFormat, size: ^NS.Object, mipmapped: BOOL) -> ^TextureDescriptor { +TextureDescriptor_textureCubeDescriptorWithPixelFormat :: #force_inline proc(pixelFormat: PixelFormat, size: NS.UInteger, mipmapped: BOOL) -> ^TextureDescriptor { return msgSend(^TextureDescriptor, TextureDescriptor, "textureCubeDescriptorWithPixelFormat:size:mipmapped:", pixelFormat, size, mipmapped) } @(objc_type=TextureDescriptor, objc_name="textureType") @@ -4224,8 +4273,8 @@ TextureDescriptor_usage :: #force_inline proc(self: ^TextureDescriptor) -> Textu return msgSend(TextureUsage, self, "usage") } @(objc_type=TextureDescriptor, objc_name="width") -TextureDescriptor_width :: #force_inline proc(self: ^TextureDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "width") +TextureDescriptor_width :: #force_inline proc(self: ^TextureDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "width") } //////////////////////////////////////////////////////////////////////////////// @@ -4326,11 +4375,11 @@ TileRenderPipelineColorAttachmentDescriptorArray_init :: #force_inline proc(self return msgSend(^TileRenderPipelineColorAttachmentDescriptorArray, self, "init") } @(objc_type=TileRenderPipelineColorAttachmentDescriptorArray, objc_name="objectAtIndexedSubscript") -TileRenderPipelineColorAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^TileRenderPipelineColorAttachmentDescriptorArray, attachmentIndex: ^NS.Object) -> ^TileRenderPipelineColorAttachmentDescriptor { +TileRenderPipelineColorAttachmentDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^TileRenderPipelineColorAttachmentDescriptorArray, attachmentIndex: NS.UInteger) -> ^TileRenderPipelineColorAttachmentDescriptor { return msgSend(^TileRenderPipelineColorAttachmentDescriptor, self, "objectAtIndexedSubscript:", attachmentIndex) } @(objc_type=TileRenderPipelineColorAttachmentDescriptorArray, objc_name="setObject") -TileRenderPipelineColorAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^TileRenderPipelineColorAttachmentDescriptorArray, attachment: ^TileRenderPipelineColorAttachmentDescriptor, attachmentIndex: ^NS.Object) { +TileRenderPipelineColorAttachmentDescriptorArray_setObject :: #force_inline proc(self: ^TileRenderPipelineColorAttachmentDescriptorArray, attachment: ^TileRenderPipelineColorAttachmentDescriptor, attachmentIndex: NS.UInteger) { msgSend(nil, self, "setObject:atIndexedSubscript:", attachment, attachmentIndex) } @@ -4383,12 +4432,12 @@ TileRenderPipelineDescriptor_label :: #force_inline proc(self: ^TileRenderPipeli return msgSend(^NS.String, self, "label") } @(objc_type=TileRenderPipelineDescriptor, objc_name="maxTotalThreadsPerThreadgroup") -TileRenderPipelineDescriptor_maxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^TileRenderPipelineDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "maxTotalThreadsPerThreadgroup") +TileRenderPipelineDescriptor_maxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^TileRenderPipelineDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "maxTotalThreadsPerThreadgroup") } @(objc_type=TileRenderPipelineDescriptor, objc_name="rasterSampleCount") -TileRenderPipelineDescriptor_rasterSampleCount :: #force_inline proc(self: ^TileRenderPipelineDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "rasterSampleCount") +TileRenderPipelineDescriptor_rasterSampleCount :: #force_inline proc(self: ^TileRenderPipelineDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "rasterSampleCount") } @(objc_type=TileRenderPipelineDescriptor, objc_name="reset") TileRenderPipelineDescriptor_reset :: #force_inline proc(self: ^TileRenderPipelineDescriptor) { @@ -4403,11 +4452,11 @@ TileRenderPipelineDescriptor_setLabel :: #force_inline proc(self: ^TileRenderPip msgSend(nil, self, "setLabel:", label) } @(objc_type=TileRenderPipelineDescriptor, objc_name="setMaxTotalThreadsPerThreadgroup") -TileRenderPipelineDescriptor_setMaxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^TileRenderPipelineDescriptor, maxTotalThreadsPerThreadgroup: NS.Integer) { +TileRenderPipelineDescriptor_setMaxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^TileRenderPipelineDescriptor, maxTotalThreadsPerThreadgroup: NS.UInteger) { msgSend(nil, self, "setMaxTotalThreadsPerThreadgroup:", maxTotalThreadsPerThreadgroup) } @(objc_type=TileRenderPipelineDescriptor, objc_name="setRasterSampleCount") -TileRenderPipelineDescriptor_setRasterSampleCount :: #force_inline proc(self: ^TileRenderPipelineDescriptor, rasterSampleCount: NS.Integer) { +TileRenderPipelineDescriptor_setRasterSampleCount :: #force_inline proc(self: ^TileRenderPipelineDescriptor, rasterSampleCount: NS.UInteger) { msgSend(nil, self, "setRasterSampleCount:", rasterSampleCount) } @(objc_type=TileRenderPipelineDescriptor, objc_name="setThreadgroupSizeMatchesTileSize") @@ -4415,7 +4464,7 @@ TileRenderPipelineDescriptor_setThreadgroupSizeMatchesTileSize :: #force_inline msgSend(nil, self, "setThreadgroupSizeMatchesTileSize:", threadgroupSizeMatchesTileSize) } @(objc_type=TileRenderPipelineDescriptor, objc_name="setTileFunction") -TileRenderPipelineDescriptor_setTileFunction :: #force_inline proc(self: ^TileRenderPipelineDescriptor, tileFunction: ^NS.Object) { +TileRenderPipelineDescriptor_setTileFunction :: #force_inline proc(self: ^TileRenderPipelineDescriptor, tileFunction: ^Function) { msgSend(nil, self, "setTileFunction:", tileFunction) } @(objc_type=TileRenderPipelineDescriptor, objc_name="threadgroupSizeMatchesTileSize") @@ -4486,8 +4535,8 @@ VertexAttribute_init :: #force_inline proc(self: ^VertexAttribute) -> ^VertexAtt return msgSend(^VertexAttribute, self, "init") } @(objc_type=VertexAttribute, objc_name="attributeIndex") -VertexAttribute_attributeIndex :: #force_inline proc(self: ^VertexAttribute) -> NS.Integer { - return msgSend(NS.Integer, self, "attributeIndex") +VertexAttribute_attributeIndex :: #force_inline proc(self: ^VertexAttribute) -> NS.UInteger { + return msgSend(NS.UInteger, self, "attributeIndex") } @(objc_type=VertexAttribute, objc_name="attributeType") VertexAttribute_attributeType :: #force_inline proc(self: ^VertexAttribute) -> DataType { @@ -4538,19 +4587,19 @@ VertexAttributeDescriptor_init :: #force_inline proc(self: ^VertexAttributeDescr return msgSend(^VertexAttributeDescriptor, self, "init") } @(objc_type=VertexAttributeDescriptor, objc_name="bufferIndex") -VertexAttributeDescriptor_bufferIndex :: #force_inline proc(self: ^VertexAttributeDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "bufferIndex") +VertexAttributeDescriptor_bufferIndex :: #force_inline proc(self: ^VertexAttributeDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "bufferIndex") } @(objc_type=VertexAttributeDescriptor, objc_name="format") VertexAttributeDescriptor_format :: #force_inline proc(self: ^VertexAttributeDescriptor) -> VertexFormat { return msgSend(VertexFormat, self, "format") } @(objc_type=VertexAttributeDescriptor, objc_name="offset") -VertexAttributeDescriptor_offset :: #force_inline proc(self: ^VertexAttributeDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "offset") +VertexAttributeDescriptor_offset :: #force_inline proc(self: ^VertexAttributeDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "offset") } @(objc_type=VertexAttributeDescriptor, objc_name="setBufferIndex") -VertexAttributeDescriptor_setBufferIndex :: #force_inline proc(self: ^VertexAttributeDescriptor, bufferIndex: NS.Integer) { +VertexAttributeDescriptor_setBufferIndex :: #force_inline proc(self: ^VertexAttributeDescriptor, bufferIndex: NS.UInteger) { msgSend(nil, self, "setBufferIndex:", bufferIndex) } @(objc_type=VertexAttributeDescriptor, objc_name="setFormat") @@ -4558,7 +4607,7 @@ VertexAttributeDescriptor_setFormat :: #force_inline proc(self: ^VertexAttribute msgSend(nil, self, "setFormat:", format) } @(objc_type=VertexAttributeDescriptor, objc_name="setOffset") -VertexAttributeDescriptor_setOffset :: #force_inline proc(self: ^VertexAttributeDescriptor, offset: NS.Integer) { +VertexAttributeDescriptor_setOffset :: #force_inline proc(self: ^VertexAttributeDescriptor, offset: NS.UInteger) { msgSend(nil, self, "setOffset:", offset) } @@ -4586,11 +4635,11 @@ VertexAttributeDescriptorArray_init :: #force_inline proc(self: ^VertexAttribute return msgSend(^VertexAttributeDescriptorArray, self, "init") } @(objc_type=VertexAttributeDescriptorArray, objc_name="objectAtIndexedSubscript") -VertexAttributeDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^VertexAttributeDescriptorArray, index: ^NS.Object) -> ^VertexAttributeDescriptor { +VertexAttributeDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^VertexAttributeDescriptorArray, index: NS.UInteger) -> ^VertexAttributeDescriptor { return msgSend(^VertexAttributeDescriptor, self, "objectAtIndexedSubscript:", index) } @(objc_type=VertexAttributeDescriptorArray, objc_name="setObject") -VertexAttributeDescriptorArray_setObject :: #force_inline proc(self: ^VertexAttributeDescriptorArray, attributeDesc: ^VertexAttributeDescriptor, index: ^NS.Object) { +VertexAttributeDescriptorArray_setObject :: #force_inline proc(self: ^VertexAttributeDescriptorArray, attributeDesc: ^VertexAttributeDescriptor, index: NS.UInteger) { msgSend(nil, self, "setObject:atIndexedSubscript:", attributeDesc, index) } @@ -4626,11 +4675,11 @@ VertexBufferLayoutDescriptor_setStepFunction :: #force_inline proc(self: ^Vertex msgSend(nil, self, "setStepFunction:", stepFunction) } @(objc_type=VertexBufferLayoutDescriptor, objc_name="setStepRate") -VertexBufferLayoutDescriptor_setStepRate :: #force_inline proc(self: ^VertexBufferLayoutDescriptor, stepRate: NS.Integer) { +VertexBufferLayoutDescriptor_setStepRate :: #force_inline proc(self: ^VertexBufferLayoutDescriptor, stepRate: NS.UInteger) { msgSend(nil, self, "setStepRate:", stepRate) } @(objc_type=VertexBufferLayoutDescriptor, objc_name="setStride") -VertexBufferLayoutDescriptor_setStride :: #force_inline proc(self: ^VertexBufferLayoutDescriptor, stride: NS.Integer) { +VertexBufferLayoutDescriptor_setStride :: #force_inline proc(self: ^VertexBufferLayoutDescriptor, stride: NS.UInteger) { msgSend(nil, self, "setStride:", stride) } @(objc_type=VertexBufferLayoutDescriptor, objc_name="stepFunction") @@ -4638,12 +4687,12 @@ VertexBufferLayoutDescriptor_stepFunction :: #force_inline proc(self: ^VertexBuf return msgSend(VertexStepFunction, self, "stepFunction") } @(objc_type=VertexBufferLayoutDescriptor, objc_name="stepRate") -VertexBufferLayoutDescriptor_stepRate :: #force_inline proc(self: ^VertexBufferLayoutDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "stepRate") +VertexBufferLayoutDescriptor_stepRate :: #force_inline proc(self: ^VertexBufferLayoutDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "stepRate") } @(objc_type=VertexBufferLayoutDescriptor, objc_name="stride") -VertexBufferLayoutDescriptor_stride :: #force_inline proc(self: ^VertexBufferLayoutDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "stride") +VertexBufferLayoutDescriptor_stride :: #force_inline proc(self: ^VertexBufferLayoutDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "stride") } //////////////////////////////////////////////////////////////////////////////// @@ -4670,11 +4719,11 @@ VertexBufferLayoutDescriptorArray_init :: #force_inline proc(self: ^VertexBuffer return msgSend(^VertexBufferLayoutDescriptorArray, self, "init") } @(objc_type=VertexBufferLayoutDescriptorArray, objc_name="objectAtIndexedSubscript") -VertexBufferLayoutDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^VertexBufferLayoutDescriptorArray, index: ^NS.Object) -> ^VertexBufferLayoutDescriptor { +VertexBufferLayoutDescriptorArray_objectAtIndexedSubscript :: #force_inline proc(self: ^VertexBufferLayoutDescriptorArray, index: NS.UInteger) -> ^VertexBufferLayoutDescriptor { return msgSend(^VertexBufferLayoutDescriptor, self, "objectAtIndexedSubscript:", index) } @(objc_type=VertexBufferLayoutDescriptorArray, objc_name="setObject") -VertexBufferLayoutDescriptorArray_setObject :: #force_inline proc(self: ^VertexBufferLayoutDescriptorArray, bufferDesc: ^VertexBufferLayoutDescriptor, index: ^NS.Object) { +VertexBufferLayoutDescriptorArray_setObject :: #force_inline proc(self: ^VertexBufferLayoutDescriptorArray, bufferDesc: ^VertexBufferLayoutDescriptor, index: NS.UInteger) { msgSend(nil, self, "setObject:atIndexedSubscript:", bufferDesc, index) } @@ -4745,11 +4794,11 @@ VisibleFunctionTableDescriptor_init :: #force_inline proc(self: ^VisibleFunction return msgSend(^VisibleFunctionTableDescriptor, self, "init") } @(objc_type=VisibleFunctionTableDescriptor, objc_name="functionCount") -VisibleFunctionTableDescriptor_functionCount :: #force_inline proc(self: ^VisibleFunctionTableDescriptor) -> NS.Integer { - return msgSend(NS.Integer, self, "functionCount") +VisibleFunctionTableDescriptor_functionCount :: #force_inline proc(self: ^VisibleFunctionTableDescriptor) -> NS.UInteger { + return msgSend(NS.UInteger, self, "functionCount") } @(objc_type=VisibleFunctionTableDescriptor, objc_name="setFunctionCount") -VisibleFunctionTableDescriptor_setFunctionCount :: #force_inline proc(self: ^VisibleFunctionTableDescriptor, functionCount: NS.Integer) { +VisibleFunctionTableDescriptor_setFunctionCount :: #force_inline proc(self: ^VisibleFunctionTableDescriptor, functionCount: NS.UInteger) { msgSend(nil, self, "setFunctionCount:", functionCount) } @(objc_type=VisibleFunctionTableDescriptor, objc_class_name="visibleFunctionTableDescriptor") @@ -4767,11 +4816,11 @@ Methods: size */ @(objc_class="MTLAccelerationStructure") -AccelerationStructure :: struct { using _: NS.Object } +AccelerationStructure :: struct { using _: Resource } @(objc_type=AccelerationStructure, objc_name="size") -AccelerationStructure_size :: #force_inline proc(self: ^AccelerationStructure) -> NS.Integer { - return msgSend(NS.Integer, self, "size") +AccelerationStructure_size :: #force_inline proc(self: ^AccelerationStructure) -> NS.UInteger { + return msgSend(NS.UInteger, self, "size") } //////////////////////////////////////////////////////////////////////////////// @@ -4798,51 +4847,51 @@ Methods: AccelerationStructureCommandEncoder :: struct { using _: NS.Object } @(objc_type=AccelerationStructureCommandEncoder, objc_name="buildAccelerationStructure") -AccelerationStructureCommandEncoder_buildAccelerationStructure :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, accelerationStructure: ^NS.Object, descriptor: ^AccelerationStructureDescriptor, scratchBuffer: ^NS.Object, scratchBufferOffset: ^NS.Object) { +AccelerationStructureCommandEncoder_buildAccelerationStructure :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, accelerationStructure: ^AccelerationStructure, descriptor: ^AccelerationStructureDescriptor, scratchBuffer: ^Buffer, scratchBufferOffset: NS.UInteger) { msgSend(nil, self, "buildAccelerationStructure:descriptor:scratchBuffer:scratchBufferOffset:", accelerationStructure, descriptor, scratchBuffer, scratchBufferOffset) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="copyAccelerationStructure") -AccelerationStructureCommandEncoder_copyAccelerationStructure :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, sourceAccelerationStructure: ^NS.Object, destinationAccelerationStructure: ^NS.Object) { +AccelerationStructureCommandEncoder_copyAccelerationStructure :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, sourceAccelerationStructure: ^AccelerationStructure, destinationAccelerationStructure: ^AccelerationStructure) { msgSend(nil, self, "copyAccelerationStructure:toAccelerationStructure:", sourceAccelerationStructure, destinationAccelerationStructure) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="copyAndCompactAccelerationStructure") -AccelerationStructureCommandEncoder_copyAndCompactAccelerationStructure :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, sourceAccelerationStructure: ^NS.Object, destinationAccelerationStructure: ^NS.Object) { +AccelerationStructureCommandEncoder_copyAndCompactAccelerationStructure :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, sourceAccelerationStructure: ^AccelerationStructure, destinationAccelerationStructure: ^AccelerationStructure) { msgSend(nil, self, "copyAndCompactAccelerationStructure:toAccelerationStructure:", sourceAccelerationStructure, destinationAccelerationStructure) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="refitAccelerationStructure") -AccelerationStructureCommandEncoder_refitAccelerationStructure :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, sourceAccelerationStructure: ^NS.Object, descriptor: ^AccelerationStructureDescriptor, destinationAccelerationStructure: ^NS.Object, scratchBuffer: ^NS.Object, scratchBufferOffset: ^NS.Object) { +AccelerationStructureCommandEncoder_refitAccelerationStructure :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, sourceAccelerationStructure: ^AccelerationStructure, descriptor: ^AccelerationStructureDescriptor, destinationAccelerationStructure: ^AccelerationStructure, scratchBuffer: ^Buffer, scratchBufferOffset: NS.UInteger) { msgSend(nil, self, "refitAccelerationStructure:descriptor:destination:scratchBuffer:scratchBufferOffset:", sourceAccelerationStructure, descriptor, destinationAccelerationStructure, scratchBuffer, scratchBufferOffset) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="sampleCountersInBuffer") -AccelerationStructureCommandEncoder_sampleCountersInBuffer :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, sampleBuffer: ^NS.Object, sampleIndex: ^NS.Object, barrier: BOOL) { +AccelerationStructureCommandEncoder_sampleCountersInBuffer :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, sampleBuffer: ^Buffer, sampleIndex: NS.UInteger, barrier: BOOL) { msgSend(nil, self, "sampleCountersInBuffer:atSampleIndex:withBarrier:", sampleBuffer, sampleIndex, barrier) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="updateFence") -AccelerationStructureCommandEncoder_updateFence :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, fence: ^NS.Object) { +AccelerationStructureCommandEncoder_updateFence :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, fence: ^Fence) { msgSend(nil, self, "updateFence:", fence) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="useHeap") -AccelerationStructureCommandEncoder_useHeap :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, heap: ^NS.Object) { +AccelerationStructureCommandEncoder_useHeap :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, heap: ^Heap) { msgSend(nil, self, "useHeap:", heap) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="useHeaps") -AccelerationStructureCommandEncoder_useHeaps :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, heaps: ^^NS.Object, count: ^NS.Object) { +AccelerationStructureCommandEncoder_useHeaps :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, heaps: [^]^Heap, count: NS.UInteger) { msgSend(nil, self, "useHeaps:count:", heaps, count) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="useResource") -AccelerationStructureCommandEncoder_useResource :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, resource: ^NS.Object, usage: ResourceUsage) { +AccelerationStructureCommandEncoder_useResource :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, resource: ^Resource, usage: ResourceUsage) { msgSend(nil, self, "useResource:usage:", resource, usage) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="useResources") -AccelerationStructureCommandEncoder_useResources :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, usage: ResourceUsage) { +AccelerationStructureCommandEncoder_useResources :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, resources: [^]^Resource, count: NS.UInteger, usage: ResourceUsage) { msgSend(nil, self, "useResources:count:usage:", resources, count, usage) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="waitForFence") -AccelerationStructureCommandEncoder_waitForFence :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, fence: ^NS.Object) { +AccelerationStructureCommandEncoder_waitForFence :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, fence: ^Fence) { msgSend(nil, self, "waitForFence:", fence) } @(objc_type=AccelerationStructureCommandEncoder, objc_name="writeCompactedAccelerationStructureSize") -AccelerationStructureCommandEncoder_writeCompactedAccelerationStructureSize :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, accelerationStructure: ^NS.Object, buffer: ^NS.Object, offset: ^NS.Object) { +AccelerationStructureCommandEncoder_writeCompactedAccelerationStructureSize :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, accelerationStructure: ^AccelerationStructure, buffer: ^Buffer, offset: NS.UInteger) { msgSend(nil, self, "writeCompactedAccelerationStructureSize:toBuffer:offset:", accelerationStructure, buffer, offset) } @@ -4884,11 +4933,11 @@ Methods: ArgumentEncoder :: struct { using _: NS.Object } @(objc_type=ArgumentEncoder, objc_name="alignment") -ArgumentEncoder_alignment :: #force_inline proc(self: ^ArgumentEncoder) -> NS.Integer { - return msgSend(NS.Integer, self, "alignment") +ArgumentEncoder_alignment :: #force_inline proc(self: ^ArgumentEncoder) -> NS.UInteger { + return msgSend(NS.UInteger, self, "alignment") } @(objc_type=ArgumentEncoder, objc_name="constantDataAtIndex") -ArgumentEncoder_constantDataAtIndex :: #force_inline proc(self: ^ArgumentEncoder, index: ^NS.Object) -> rawptr { +ArgumentEncoder_constantDataAtIndex :: #force_inline proc(self: ^ArgumentEncoder, index: NS.UInteger) -> rawptr { return msgSend(rawptr, self, "constantDataAtIndex:", index) } @(objc_type=ArgumentEncoder, objc_name="device") @@ -4896,59 +4945,59 @@ ArgumentEncoder_device :: #force_inline proc(self: ^ArgumentEncoder) -> ^Argumen return msgSend(^ArgumentEncoder, self, "device") } @(objc_type=ArgumentEncoder, objc_name="encodedLength") -ArgumentEncoder_encodedLength :: #force_inline proc(self: ^ArgumentEncoder) -> NS.Integer { - return msgSend(NS.Integer, self, "encodedLength") +ArgumentEncoder_encodedLength :: #force_inline proc(self: ^ArgumentEncoder) -> NS.UInteger { + return msgSend(NS.UInteger, self, "encodedLength") } @(objc_type=ArgumentEncoder, objc_name="label") ArgumentEncoder_label :: #force_inline proc(self: ^ArgumentEncoder) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=ArgumentEncoder, objc_name="newArgumentEncoderForBufferAtIndex") -ArgumentEncoder_newArgumentEncoderForBufferAtIndex :: #force_inline proc(self: ^ArgumentEncoder, index: ^NS.Object) -> ^ArgumentEncoder { +ArgumentEncoder_newArgumentEncoderForBufferAtIndex :: #force_inline proc(self: ^ArgumentEncoder, index: NS.UInteger) -> ^ArgumentEncoder { return msgSend(^ArgumentEncoder, self, "newArgumentEncoderForBufferAtIndex:", index) } @(objc_type=ArgumentEncoder, objc_name="setAccelerationStructure") -ArgumentEncoder_setAccelerationStructure :: #force_inline proc(self: ^ArgumentEncoder, accelerationStructure: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setAccelerationStructure :: #force_inline proc(self: ^ArgumentEncoder, accelerationStructure: ^AccelerationStructure, index: NS.UInteger) { msgSend(nil, self, "setAccelerationStructure:atIndex:", accelerationStructure, index) } -@(objc_type=ArgumentEncoder, objc_name="setArgumentBuffer_offset_") -ArgumentEncoder_setArgumentBuffer_offset_ :: #force_inline proc(self: ^ArgumentEncoder, argumentBuffer: ^NS.Object, offset: ^NS.Object) { +@(objc_type=ArgumentEncoder, objc_name="setArgumentBufferWithOffset") +ArgumentEncoder_setArgumentBufferWithOffset :: #force_inline proc(self: ^ArgumentEncoder, argumentBuffer: ^Buffer, offset: NS.UInteger) { msgSend(nil, self, "setArgumentBuffer:offset:", argumentBuffer, offset) } -@(objc_type=ArgumentEncoder, objc_name="setArgumentBuffer_startOffset_arrayElement_") -ArgumentEncoder_setArgumentBuffer_startOffset_arrayElement_ :: #force_inline proc(self: ^ArgumentEncoder, argumentBuffer: ^NS.Object, startOffset: ^NS.Object, arrayElement: ^NS.Object) { +@(objc_type=ArgumentEncoder, objc_name="setArgumentBuffer_startOffsetWithStartOffset") +ArgumentEncoder_setArgumentBuffer_startOffsetWithStartOffset :: #force_inline proc(self: ^ArgumentEncoder, argumentBuffer: ^Buffer, startOffset: NS.UInteger, arrayElement: NS.UInteger) { msgSend(nil, self, "setArgumentBuffer:startOffset:arrayElement:", argumentBuffer, startOffset, arrayElement) } @(objc_type=ArgumentEncoder, objc_name="setBuffer") -ArgumentEncoder_setBuffer :: #force_inline proc(self: ^ArgumentEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setBuffer :: #force_inline proc(self: ^ArgumentEncoder, buffer: ^Buffer, offset: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setBuffer:offset:atIndex:", buffer, offset, index) } @(objc_type=ArgumentEncoder, objc_name="setBuffers") -ArgumentEncoder_setBuffers :: #force_inline proc(self: ^ArgumentEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { +ArgumentEncoder_setBuffers :: #force_inline proc(self: ^ArgumentEncoder, buffers: [^]^Buffer, offsets: [^]NS.UInteger, range: NS.Range) { msgSend(nil, self, "setBuffers:offsets:withRange:", buffers, offsets, range) } @(objc_type=ArgumentEncoder, objc_name="setComputePipelineState") -ArgumentEncoder_setComputePipelineState :: #force_inline proc(self: ^ArgumentEncoder, pipeline: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setComputePipelineState :: #force_inline proc(self: ^ArgumentEncoder, pipeline: ^ComputePipelineState, index: NS.UInteger) { msgSend(nil, self, "setComputePipelineState:atIndex:", pipeline, index) } @(objc_type=ArgumentEncoder, objc_name="setComputePipelineStates") -ArgumentEncoder_setComputePipelineStates :: #force_inline proc(self: ^ArgumentEncoder, pipelines: ^^NS.Object, range: NS.Range) { +ArgumentEncoder_setComputePipelineStates :: #force_inline proc(self: ^ArgumentEncoder, pipelines: [^]^ComputePipelineState, range: NS.Range) { msgSend(nil, self, "setComputePipelineStates:withRange:", pipelines, range) } @(objc_type=ArgumentEncoder, objc_name="setIndirectCommandBuffer") -ArgumentEncoder_setIndirectCommandBuffer :: #force_inline proc(self: ^ArgumentEncoder, indirectCommandBuffer: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setIndirectCommandBuffer :: #force_inline proc(self: ^ArgumentEncoder, indirectCommandBuffer: ^Buffer, index: NS.UInteger) { msgSend(nil, self, "setIndirectCommandBuffer:atIndex:", indirectCommandBuffer, index) } @(objc_type=ArgumentEncoder, objc_name="setIndirectCommandBuffers") -ArgumentEncoder_setIndirectCommandBuffers :: #force_inline proc(self: ^ArgumentEncoder, buffers: ^^NS.Object, range: NS.Range) { +ArgumentEncoder_setIndirectCommandBuffers :: #force_inline proc(self: ^ArgumentEncoder, buffers: [^]^Buffer, range: NS.Range) { msgSend(nil, self, "setIndirectCommandBuffers:withRange:", buffers, range) } @(objc_type=ArgumentEncoder, objc_name="setIntersectionFunctionTable") -ArgumentEncoder_setIntersectionFunctionTable :: #force_inline proc(self: ^ArgumentEncoder, intersectionFunctionTable: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setIntersectionFunctionTable :: #force_inline proc(self: ^ArgumentEncoder, intersectionFunctionTable: ^IntersectionFunctionTable, index: NS.UInteger) { msgSend(nil, self, "setIntersectionFunctionTable:atIndex:", intersectionFunctionTable, index) } @(objc_type=ArgumentEncoder, objc_name="setIntersectionFunctionTables") -ArgumentEncoder_setIntersectionFunctionTables :: #force_inline proc(self: ^ArgumentEncoder, intersectionFunctionTables: ^^NS.Object, range: NS.Range) { +ArgumentEncoder_setIntersectionFunctionTables :: #force_inline proc(self: ^ArgumentEncoder, intersectionFunctionTables: [^]^IntersectionFunctionTable, range: NS.Range) { msgSend(nil, self, "setIntersectionFunctionTables:withRange:", intersectionFunctionTables, range) } @(objc_type=ArgumentEncoder, objc_name="setLabel") @@ -4956,35 +5005,35 @@ ArgumentEncoder_setLabel :: #force_inline proc(self: ^ArgumentEncoder, label: ^N msgSend(nil, self, "setLabel:", label) } @(objc_type=ArgumentEncoder, objc_name="setRenderPipelineState") -ArgumentEncoder_setRenderPipelineState :: #force_inline proc(self: ^ArgumentEncoder, pipeline: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setRenderPipelineState :: #force_inline proc(self: ^ArgumentEncoder, pipeline: ^RenderPipelineState, index: NS.UInteger) { msgSend(nil, self, "setRenderPipelineState:atIndex:", pipeline, index) } @(objc_type=ArgumentEncoder, objc_name="setRenderPipelineStates") -ArgumentEncoder_setRenderPipelineStates :: #force_inline proc(self: ^ArgumentEncoder, pipelines: ^^NS.Object, range: NS.Range) { +ArgumentEncoder_setRenderPipelineStates :: #force_inline proc(self: ^ArgumentEncoder, pipelines: [^]^RenderPipelineState, range: NS.Range) { msgSend(nil, self, "setRenderPipelineStates:withRange:", pipelines, range) } @(objc_type=ArgumentEncoder, objc_name="setSamplerState") -ArgumentEncoder_setSamplerState :: #force_inline proc(self: ^ArgumentEncoder, sampler: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setSamplerState :: #force_inline proc(self: ^ArgumentEncoder, sampler: ^SamplerState, index: NS.UInteger) { msgSend(nil, self, "setSamplerState:atIndex:", sampler, index) } @(objc_type=ArgumentEncoder, objc_name="setSamplerStates") -ArgumentEncoder_setSamplerStates :: #force_inline proc(self: ^ArgumentEncoder, samplers: ^^NS.Object, range: NS.Range) { +ArgumentEncoder_setSamplerStates :: #force_inline proc(self: ^ArgumentEncoder, samplers: [^]^SamplerState, range: NS.Range) { msgSend(nil, self, "setSamplerStates:withRange:", samplers, range) } @(objc_type=ArgumentEncoder, objc_name="setTexture") -ArgumentEncoder_setTexture :: #force_inline proc(self: ^ArgumentEncoder, texture: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setTexture :: #force_inline proc(self: ^ArgumentEncoder, texture: ^Texture, index: NS.UInteger) { msgSend(nil, self, "setTexture:atIndex:", texture, index) } @(objc_type=ArgumentEncoder, objc_name="setTextures") -ArgumentEncoder_setTextures :: #force_inline proc(self: ^ArgumentEncoder, textures: ^^NS.Object, range: NS.Range) { +ArgumentEncoder_setTextures :: #force_inline proc(self: ^ArgumentEncoder, textures: [^]^Texture, range: NS.Range) { msgSend(nil, self, "setTextures:withRange:", textures, range) } @(objc_type=ArgumentEncoder, objc_name="setVisibleFunctionTable") -ArgumentEncoder_setVisibleFunctionTable :: #force_inline proc(self: ^ArgumentEncoder, visibleFunctionTable: ^NS.Object, index: ^NS.Object) { +ArgumentEncoder_setVisibleFunctionTable :: #force_inline proc(self: ^ArgumentEncoder, visibleFunctionTable: ^VisibleFunctionTable, index: NS.UInteger) { msgSend(nil, self, "setVisibleFunctionTable:atIndex:", visibleFunctionTable, index) } @(objc_type=ArgumentEncoder, objc_name="setVisibleFunctionTables") -ArgumentEncoder_setVisibleFunctionTables :: #force_inline proc(self: ^ArgumentEncoder, visibleFunctionTables: ^^NS.Object, range: NS.Range) { +ArgumentEncoder_setVisibleFunctionTables :: #force_inline proc(self: ^ArgumentEncoder, visibleFunctionTables: [^]^VisibleFunctionTable, range: NS.Range) { msgSend(nil, self, "setVisibleFunctionTables:withRange:", visibleFunctionTables, range) } @@ -5007,16 +5056,19 @@ Methods: BinaryArchive :: struct { using _: NS.Copying(BinaryArchive) } @(objc_type=BinaryArchive, objc_name="addComputePipelineFunctionsWithDescriptor") -BinaryArchive_addComputePipelineFunctionsWithDescriptor :: #force_inline proc(self: ^BinaryArchive, descriptor: ^ComputePipelineDescriptor, error: ^^NS.Error ) -> BOOL { - return msgSend(BOOL, self, "addComputePipelineFunctionsWithDescriptor:error:", descriptor, error) +BinaryArchive_addComputePipelineFunctionsWithDescriptor :: #force_inline proc(self: ^BinaryArchive, descriptor: ^ComputePipelineDescriptor) -> (ok: bool, error: ^NS.Error) { + ok = msgSend(BOOL, self, "addComputePipelineFunctionsWithDescriptor:error:", descriptor, &error) + return } @(objc_type=BinaryArchive, objc_name="addRenderPipelineFunctionsWithDescriptor") -BinaryArchive_addRenderPipelineFunctionsWithDescriptor :: #force_inline proc(self: ^BinaryArchive, descriptor: ^RenderPipelineDescriptor, error: ^^NS.Error ) -> BOOL { - return msgSend(BOOL, self, "addRenderPipelineFunctionsWithDescriptor:error:", descriptor, error) +BinaryArchive_addRenderPipelineFunctionsWithDescriptor :: #force_inline proc(self: ^BinaryArchive, descriptor: ^RenderPipelineDescriptor) -> (ok: bool, error: ^NS.Error) { + ok = msgSend(BOOL, self, "addRenderPipelineFunctionsWithDescriptor:error:", descriptor, &error) + return } @(objc_type=BinaryArchive, objc_name="addTileRenderPipelineFunctionsWithDescriptor") -BinaryArchive_addTileRenderPipelineFunctionsWithDescriptor :: #force_inline proc(self: ^BinaryArchive, descriptor: ^TileRenderPipelineDescriptor, error: ^^NS.Error ) -> BOOL { - return msgSend(BOOL, self, "addTileRenderPipelineFunctionsWithDescriptor:error:", descriptor, error) +BinaryArchive_addTileRenderPipelineFunctionsWithDescriptor :: #force_inline proc(self: ^BinaryArchive, descriptor: ^TileRenderPipelineDescriptor) -> (ok: bool, error: ^NS.Error) { + ok = msgSend(BOOL, self, "addTileRenderPipelineFunctionsWithDescriptor:error:", descriptor, &error) + return } @(objc_type=BinaryArchive, objc_name="device") BinaryArchive_device :: #force_inline proc(self: ^BinaryArchive) -> ^BinaryArchive { @@ -5027,8 +5079,9 @@ BinaryArchive_label :: #force_inline proc(self: ^BinaryArchive) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=BinaryArchive, objc_name="serializeToURL") -BinaryArchive_serializeToURL :: #force_inline proc(self: ^BinaryArchive, url: ^NS.URL, error: ^^NS.Error ) -> BOOL { - return msgSend(BOOL, self, "serializeToURL:error:", url, error) +BinaryArchive_serializeToURL :: #force_inline proc(self: ^BinaryArchive, url: ^NS.URL) -> (ok: bool, error: ^NS.Error) { + ok = msgSend(BOOL, self, "serializeToURL:error:", url, &error) + return } @(objc_type=BinaryArchive, objc_name="setLabel") BinaryArchive_setLabel :: #force_inline proc(self: ^BinaryArchive, label: ^NS.String) { @@ -5072,103 +5125,103 @@ Methods: BlitCommandEncoder :: struct { using _: NS.Object } @(objc_type=BlitCommandEncoder, objc_name="copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_") -BlitCommandEncoder_copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceBuffer: ^NS.Object, sourceOffset: ^NS.Object, sourceBytesPerRow: ^NS.Object, sourceBytesPerImage: ^NS.Object, sourceSize: Size, destinationTexture: ^NS.Object, destinationSlice: ^NS.Object, destinationLevel: ^NS.Object, destinationOrigin: Origin) { +BlitCommandEncoder_copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceBuffer: ^Buffer, sourceOffset: NS.UInteger, sourceBytesPerRow: NS.UInteger, sourceBytesPerImage: NS.UInteger, sourceSize: Size, destinationTexture: ^Texture, destinationSlice: NS.UInteger, destinationLevel: NS.UInteger, destinationOrigin: Origin) { msgSend(nil, self, "copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:", sourceBuffer, sourceOffset, sourceBytesPerRow, sourceBytesPerImage, sourceSize, destinationTexture, destinationSlice, destinationLevel, destinationOrigin) } @(objc_type=BlitCommandEncoder, objc_name="copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_options_") -BlitCommandEncoder_copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_options_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceBuffer: ^NS.Object, sourceOffset: ^NS.Object, sourceBytesPerRow: ^NS.Object, sourceBytesPerImage: ^NS.Object, sourceSize: Size, destinationTexture: ^NS.Object, destinationSlice: ^NS.Object, destinationLevel: ^NS.Object, destinationOrigin: Origin, options: BlitOption) { +BlitCommandEncoder_copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_options_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceBuffer: ^Buffer, sourceOffset: NS.UInteger, sourceBytesPerRow: NS.UInteger, sourceBytesPerImage: NS.UInteger, sourceSize: Size, destinationTexture: ^Texture, destinationSlice: NS.UInteger, destinationLevel: NS.UInteger, destinationOrigin: Origin, options: BlitOption) { msgSend(nil, self, "copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:options:", sourceBuffer, sourceOffset, sourceBytesPerRow, sourceBytesPerImage, sourceSize, destinationTexture, destinationSlice, destinationLevel, destinationOrigin, options) } @(objc_type=BlitCommandEncoder, objc_name="copyFromBuffer_sourceOffset_toBuffer_destinationOffset_size_") -BlitCommandEncoder_copyFromBuffer_sourceOffset_toBuffer_destinationOffset_size_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceBuffer: ^NS.Object, sourceOffset: ^NS.Object, destinationBuffer: ^NS.Object, destinationOffset: ^NS.Object, size: ^NS.Object) { +BlitCommandEncoder_copyFromBuffer_sourceOffset_toBuffer_destinationOffset_size_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceBuffer: ^Buffer, sourceOffset: NS.UInteger, destinationBuffer: ^Buffer, destinationOffset: NS.UInteger, size: NS.UInteger) { msgSend(nil, self, "copyFromBuffer:sourceOffset:toBuffer:destinationOffset:size:", sourceBuffer, sourceOffset, destinationBuffer, destinationOffset, size) } @(objc_type=BlitCommandEncoder, objc_name="copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_") -BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, sourceSlice: ^NS.Object, sourceLevel: ^NS.Object, sourceOrigin: Origin, sourceSize: Size, destinationBuffer: ^NS.Object, destinationOffset: ^NS.Object, destinationBytesPerRow: ^NS.Object, destinationBytesPerImage: ^NS.Object) { +BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceTexture: ^Texture, sourceSlice: NS.UInteger, sourceLevel: NS.UInteger, sourceOrigin: Origin, sourceSize: Size, destinationBuffer: ^Buffer, destinationOffset: NS.UInteger, destinationBytesPerRow: NS.UInteger, destinationBytesPerImage: NS.UInteger) { msgSend(nil, self, "copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:", sourceTexture, sourceSlice, sourceLevel, sourceOrigin, sourceSize, destinationBuffer, destinationOffset, destinationBytesPerRow, destinationBytesPerImage) } @(objc_type=BlitCommandEncoder, objc_name="copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_options_") -BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_options_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, sourceSlice: ^NS.Object, sourceLevel: ^NS.Object, sourceOrigin: Origin, sourceSize: Size, destinationBuffer: ^NS.Object, destinationOffset: ^NS.Object, destinationBytesPerRow: ^NS.Object, destinationBytesPerImage: ^NS.Object, options: BlitOption) { +BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_options_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceTexture: ^Texture, sourceSlice: NS.UInteger, sourceLevel: NS.UInteger, sourceOrigin: Origin, sourceSize: Size, destinationBuffer: ^Buffer, destinationOffset: NS.UInteger, destinationBytesPerRow: NS.UInteger, destinationBytesPerImage: NS.UInteger, options: BlitOption) { msgSend(nil, self, "copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:options:", sourceTexture, sourceSlice, sourceLevel, sourceOrigin, sourceSize, destinationBuffer, destinationOffset, destinationBytesPerRow, destinationBytesPerImage, options) } @(objc_type=BlitCommandEncoder, objc_name="copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_") -BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, sourceSlice: ^NS.Object, sourceLevel: ^NS.Object, sourceOrigin: Origin, sourceSize: Size, destinationTexture: ^NS.Object, destinationSlice: ^NS.Object, destinationLevel: ^NS.Object, destinationOrigin: Origin) { +BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceTexture: ^Texture, sourceSlice: NS.UInteger, sourceLevel: NS.UInteger, sourceOrigin: Origin, sourceSize: Size, destinationTexture: ^Texture, destinationSlice: NS.UInteger, destinationLevel: NS.UInteger, destinationOrigin: Origin) { msgSend(nil, self, "copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:", sourceTexture, sourceSlice, sourceLevel, sourceOrigin, sourceSize, destinationTexture, destinationSlice, destinationLevel, destinationOrigin) } @(objc_type=BlitCommandEncoder, objc_name="copyFromTexture_sourceSlice_sourceLevel_toTexture_destinationSlice_destinationLevel_sliceCount_levelCount_") -BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_toTexture_destinationSlice_destinationLevel_sliceCount_levelCount_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, sourceSlice: ^NS.Object, sourceLevel: ^NS.Object, destinationTexture: ^NS.Object, destinationSlice: ^NS.Object, destinationLevel: ^NS.Object, sliceCount: ^NS.Object, levelCount: ^NS.Object) { +BlitCommandEncoder_copyFromTexture_sourceSlice_sourceLevel_toTexture_destinationSlice_destinationLevel_sliceCount_levelCount_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceTexture: ^Texture, sourceSlice: NS.UInteger, sourceLevel: NS.UInteger, destinationTexture: ^Texture, destinationSlice: NS.UInteger, destinationLevel: NS.UInteger, sliceCount: NS.UInteger, levelCount: NS.UInteger) { msgSend(nil, self, "copyFromTexture:sourceSlice:sourceLevel:toTexture:destinationSlice:destinationLevel:sliceCount:levelCount:", sourceTexture, sourceSlice, sourceLevel, destinationTexture, destinationSlice, destinationLevel, sliceCount, levelCount) } -@(objc_type=BlitCommandEncoder, objc_name="copyFromTexture_toTexture_") -BlitCommandEncoder_copyFromTexture_toTexture_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceTexture: ^NS.Object, destinationTexture: ^NS.Object) { +@(objc_type=BlitCommandEncoder, objc_name="copyFromTexture") +BlitCommandEncoder_copyFromTexture :: #force_inline proc(self: ^BlitCommandEncoder, sourceTexture: ^Texture, destinationTexture: ^Texture) { msgSend(nil, self, "copyFromTexture:toTexture:", sourceTexture, destinationTexture) } @(objc_type=BlitCommandEncoder, objc_name="copyIndirectCommandBuffer") -BlitCommandEncoder_copyIndirectCommandBuffer :: #force_inline proc(self: ^BlitCommandEncoder, source: ^NS.Object, sourceRange: NS.Range, destination: ^NS.Object, destinationIndex: ^NS.Object) { +BlitCommandEncoder_copyIndirectCommandBuffer :: #force_inline proc(self: ^BlitCommandEncoder, source: ^IndirectCommandBuffer, sourceRange: NS.Range, destination: ^IndirectCommandBuffer, destinationIndex: NS.UInteger) { msgSend(nil, self, "copyIndirectCommandBuffer:sourceRange:destination:destinationIndex:", source, sourceRange, destination, destinationIndex) } @(objc_type=BlitCommandEncoder, objc_name="fillBuffer") -BlitCommandEncoder_fillBuffer :: #force_inline proc(self: ^BlitCommandEncoder, buffer: ^NS.Object, range: NS.Range, value: u8) { +BlitCommandEncoder_fillBuffer :: #force_inline proc(self: ^BlitCommandEncoder, buffer: ^Buffer, range: NS.Range, value: u8) { msgSend(nil, self, "fillBuffer:range:value:", buffer, range, value) } @(objc_type=BlitCommandEncoder, objc_name="generateMipmapsForTexture") -BlitCommandEncoder_generateMipmapsForTexture :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^NS.Object) { +BlitCommandEncoder_generateMipmapsForTexture :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^Texture) { msgSend(nil, self, "generateMipmapsForTexture:", texture) } @(objc_type=BlitCommandEncoder, objc_name="getTextureAccessCounters") -BlitCommandEncoder_getTextureAccessCounters :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^NS.Object, region: Region, mipLevel: ^NS.Object, slice: ^NS.Object, resetCounters: BOOL, countersBuffer: ^NS.Object, countersBufferOffset: ^NS.Object) { +BlitCommandEncoder_getTextureAccessCounters :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^Texture, region: Region, mipLevel: NS.UInteger, slice: NS.UInteger, resetCounters: BOOL, countersBuffer: ^Buffer, countersBufferOffset: NS.UInteger) { msgSend(nil, self, "getTextureAccessCounters:region:mipLevel:slice:resetCounters:countersBuffer:countersBufferOffset:", texture, region, mipLevel, slice, resetCounters, countersBuffer, countersBufferOffset) } @(objc_type=BlitCommandEncoder, objc_name="optimizeContentsForCPUAccess") -BlitCommandEncoder_optimizeContentsForCPUAccess :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^NS.Object) { +BlitCommandEncoder_optimizeContentsForCPUAccess :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^Texture) { msgSend(nil, self, "optimizeContentsForCPUAccess:", texture) } -@(objc_type=BlitCommandEncoder, objc_name="optimizeContentsForCPUAccess_slice_level_") -BlitCommandEncoder_optimizeContentsForCPUAccess_slice_level_ :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^NS.Object, slice: ^NS.Object, level: ^NS.Object) { +@(objc_type=BlitCommandEncoder, objc_name="optimizeContentsForCPUAccessWithSliceAndLevel") +BlitCommandEncoder_optimizeContentsForCPUAccessWithSliceAndLevel :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^Texture, slice: NS.UInteger, level: NS.UInteger) { msgSend(nil, self, "optimizeContentsForCPUAccess:slice:level:", texture, slice, level) } @(objc_type=BlitCommandEncoder, objc_name="optimizeContentsForGPUAccess") -BlitCommandEncoder_optimizeContentsForGPUAccess :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^NS.Object) { +BlitCommandEncoder_optimizeContentsForGPUAccess :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^Texture) { msgSend(nil, self, "optimizeContentsForGPUAccess:", texture) } -@(objc_type=BlitCommandEncoder, objc_name="optimizeContentsForGPUAccess_slice_level_") -BlitCommandEncoder_optimizeContentsForGPUAccess_slice_level_ :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^NS.Object, slice: ^NS.Object, level: ^NS.Object) { +@(objc_type=BlitCommandEncoder, objc_name="optimizeContentsForGPUAccessWithSliceAndLevel") +BlitCommandEncoder_optimizeContentsForGPUAccessWithSliceAndLevel :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^Texture, slice: NS.UInteger, level: NS.UInteger) { msgSend(nil, self, "optimizeContentsForGPUAccess:slice:level:", texture, slice, level) } @(objc_type=BlitCommandEncoder, objc_name="optimizeIndirectCommandBuffer") -BlitCommandEncoder_optimizeIndirectCommandBuffer :: #force_inline proc(self: ^BlitCommandEncoder, indirectCommandBuffer: ^NS.Object, range: NS.Range) { +BlitCommandEncoder_optimizeIndirectCommandBuffer :: #force_inline proc(self: ^BlitCommandEncoder, indirectCommandBuffer: ^Buffer, range: NS.Range) { msgSend(nil, self, "optimizeIndirectCommandBuffer:withRange:", indirectCommandBuffer, range) } @(objc_type=BlitCommandEncoder, objc_name="resetCommandsInBuffer") -BlitCommandEncoder_resetCommandsInBuffer :: #force_inline proc(self: ^BlitCommandEncoder, buffer: ^NS.Object, range: NS.Range) { +BlitCommandEncoder_resetCommandsInBuffer :: #force_inline proc(self: ^BlitCommandEncoder, buffer: ^Buffer, range: NS.Range) { msgSend(nil, self, "resetCommandsInBuffer:withRange:", buffer, range) } @(objc_type=BlitCommandEncoder, objc_name="resetTextureAccessCounters") -BlitCommandEncoder_resetTextureAccessCounters :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^NS.Object, region: Region, mipLevel: ^NS.Object, slice: ^NS.Object) { +BlitCommandEncoder_resetTextureAccessCounters :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^Texture, region: Region, mipLevel: NS.UInteger, slice: NS.UInteger) { msgSend(nil, self, "resetTextureAccessCounters:region:mipLevel:slice:", texture, region, mipLevel, slice) } @(objc_type=BlitCommandEncoder, objc_name="resolveCounters") -BlitCommandEncoder_resolveCounters :: #force_inline proc(self: ^BlitCommandEncoder, sampleBuffer: ^NS.Object, range: NS.Range, destinationBuffer: ^NS.Object, destinationOffset: ^NS.Object) { +BlitCommandEncoder_resolveCounters :: #force_inline proc(self: ^BlitCommandEncoder, sampleBuffer: ^Buffer, range: NS.Range, destinationBuffer: ^Buffer, destinationOffset: NS.UInteger) { msgSend(nil, self, "resolveCounters:inRange:destinationBuffer:destinationOffset:", sampleBuffer, range, destinationBuffer, destinationOffset) } @(objc_type=BlitCommandEncoder, objc_name="sampleCountersInBuffer") -BlitCommandEncoder_sampleCountersInBuffer :: #force_inline proc(self: ^BlitCommandEncoder, sampleBuffer: ^NS.Object, sampleIndex: ^NS.Object, barrier: BOOL) { +BlitCommandEncoder_sampleCountersInBuffer :: #force_inline proc(self: ^BlitCommandEncoder, sampleBuffer: ^Buffer, sampleIndex: NS.UInteger, barrier: BOOL) { msgSend(nil, self, "sampleCountersInBuffer:atSampleIndex:withBarrier:", sampleBuffer, sampleIndex, barrier) } @(objc_type=BlitCommandEncoder, objc_name="synchronizeResource") -BlitCommandEncoder_synchronizeResource :: #force_inline proc(self: ^BlitCommandEncoder, resource: ^NS.Object) { +BlitCommandEncoder_synchronizeResource :: #force_inline proc(self: ^BlitCommandEncoder, resource: ^Resource) { msgSend(nil, self, "synchronizeResource:", resource) } @(objc_type=BlitCommandEncoder, objc_name="synchronizeTexture") -BlitCommandEncoder_synchronizeTexture :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^NS.Object, slice: ^NS.Object, level: ^NS.Object) { +BlitCommandEncoder_synchronizeTexture :: #force_inline proc(self: ^BlitCommandEncoder, texture: ^Texture, slice: NS.UInteger, level: NS.UInteger) { msgSend(nil, self, "synchronizeTexture:slice:level:", texture, slice, level) } @(objc_type=BlitCommandEncoder, objc_name="updateFence") -BlitCommandEncoder_updateFence :: #force_inline proc(self: ^BlitCommandEncoder, fence: ^NS.Object) { +BlitCommandEncoder_updateFence :: #force_inline proc(self: ^BlitCommandEncoder, fence: ^Fence) { msgSend(nil, self, "updateFence:", fence) } @(objc_type=BlitCommandEncoder, objc_name="waitForFence") -BlitCommandEncoder_waitForFence :: #force_inline proc(self: ^BlitCommandEncoder, fence: ^NS.Object) { +BlitCommandEncoder_waitForFence :: #force_inline proc(self: ^BlitCommandEncoder, fence: ^Fence) { msgSend(nil, self, "waitForFence:", fence) } @@ -5189,7 +5242,7 @@ Methods: removeAllDebugMarkers */ @(objc_class="MTLBuffer") -Buffer :: struct { using _: NS.Object } +Buffer :: struct { using _: Resource } @(objc_type=Buffer, objc_name="addDebugMarker") Buffer_addDebugMarker :: #force_inline proc(self: ^Buffer, marker: ^NS.String, range: NS.Range) { @@ -5204,15 +5257,15 @@ Buffer_didModifyRange :: #force_inline proc(self: ^Buffer, range: NS.Range) { msgSend(nil, self, "didModifyRange:", range) } @(objc_type=Buffer, objc_name="length") -Buffer_length :: #force_inline proc(self: ^Buffer) -> NS.Integer { - return msgSend(NS.Integer, self, "length") +Buffer_length :: #force_inline proc(self: ^Buffer) -> NS.UInteger { + return msgSend(NS.UInteger, self, "length") } @(objc_type=Buffer, objc_name="newRemoteBufferViewForDevice") -Buffer_newRemoteBufferViewForDevice :: #force_inline proc(self: ^Buffer, device: ^NS.Object) -> ^Buffer { +Buffer_newRemoteBufferViewForDevice :: #force_inline proc(self: ^Buffer, device: ^Device) -> ^Buffer { return msgSend(^Buffer, self, "newRemoteBufferViewForDevice:", device) } @(objc_type=Buffer, objc_name="newTextureWithDescriptor") -Buffer_newTextureWithDescriptor :: #force_inline proc(self: ^Buffer, descriptor: ^TextureDescriptor, offset: ^NS.Object, bytesPerRow: ^NS.Object) -> ^Buffer { +Buffer_newTextureWithDescriptor :: #force_inline proc(self: ^Buffer, descriptor: ^TextureDescriptor, offset: NS.UInteger, bytesPerRow: NS.UInteger) -> ^Buffer { return msgSend(^Buffer, self, "newTextureWithDescriptor:offset:bytesPerRow:", descriptor, offset, bytesPerRow) } @(objc_type=Buffer, objc_name="remoteStorageBuffer") @@ -5366,11 +5419,11 @@ CommandBuffer_device :: #force_inline proc(self: ^CommandBuffer) -> ^CommandBuff return msgSend(^CommandBuffer, self, "device") } @(objc_type=CommandBuffer, objc_name="encodeSignalEvent") -CommandBuffer_encodeSignalEvent :: #force_inline proc(self: ^CommandBuffer, event: ^NS.Object, value: u64) { +CommandBuffer_encodeSignalEvent :: #force_inline proc(self: ^CommandBuffer, event: ^Event, value: u64) { msgSend(nil, self, "encodeSignalEvent:value:", event, value) } @(objc_type=CommandBuffer, objc_name="encodeWaitForEvent") -CommandBuffer_encodeWaitForEvent :: #force_inline proc(self: ^CommandBuffer, event: ^NS.Object, value: u64) { +CommandBuffer_encodeWaitForEvent :: #force_inline proc(self: ^CommandBuffer, event: ^Event, value: u64) { msgSend(nil, self, "encodeWaitForEvent:value:", event, value) } @(objc_type=CommandBuffer, objc_name="enqueue") @@ -5410,15 +5463,15 @@ CommandBuffer_popDebugGroup :: #force_inline proc(self: ^CommandBuffer) { msgSend(nil, self, "popDebugGroup") } @(objc_type=CommandBuffer, objc_name="presentDrawable") -CommandBuffer_presentDrawable :: #force_inline proc(self: ^CommandBuffer, drawable: ^NS.Object) { +CommandBuffer_presentDrawable :: #force_inline proc(self: ^CommandBuffer, drawable: ^Drawable) { msgSend(nil, self, "presentDrawable:", drawable) } -@(objc_type=CommandBuffer, objc_name="presentDrawable_afterMinimumDuration_") -CommandBuffer_presentDrawable_afterMinimumDuration_ :: #force_inline proc(self: ^CommandBuffer, drawable: ^NS.Object, duration: CFTimeInterval) { +@(objc_type=CommandBuffer, objc_name="presentDrawableAfterMinimumDuration") +CommandBuffer_presentDrawableAfterMinimumDuration :: #force_inline proc(self: ^CommandBuffer, drawable: ^Drawable, duration: CFTimeInterval) { msgSend(nil, self, "presentDrawable:afterMinimumDuration:", drawable, duration) } -@(objc_type=CommandBuffer, objc_name="presentDrawable_atTime_") -CommandBuffer_presentDrawable_atTime_ :: #force_inline proc(self: ^CommandBuffer, drawable: ^NS.Object, presentationTime: CFTimeInterval) { +@(objc_type=CommandBuffer, objc_name="presentDrawableAtTime") +CommandBuffer_presentDrawableAtTime :: #force_inline proc(self: ^CommandBuffer, drawable: ^Drawable, presentationTime: CFTimeInterval) { msgSend(nil, self, "presentDrawable:atTime:", drawable, presentationTime) } @(objc_type=CommandBuffer, objc_name="pushDebugGroup") @@ -5630,7 +5683,7 @@ ComputeCommandEncoder_dispatchThreadgroups :: #force_inline proc(self: ^ComputeC msgSend(nil, self, "dispatchThreadgroups:threadsPerThreadgroup:", threadgroupsPerGrid, threadsPerThreadgroup) } @(objc_type=ComputeCommandEncoder, objc_name="dispatchThreadgroupsWithIndirectBuffer") -ComputeCommandEncoder_dispatchThreadgroupsWithIndirectBuffer :: #force_inline proc(self: ^ComputeCommandEncoder, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object, threadsPerThreadgroup: Size) { +ComputeCommandEncoder_dispatchThreadgroupsWithIndirectBuffer :: #force_inline proc(self: ^ComputeCommandEncoder, indirectBuffer: ^Buffer, indirectBufferOffset: NS.UInteger, threadsPerThreadgroup: Size) { msgSend(nil, self, "dispatchThreadgroupsWithIndirectBuffer:indirectBufferOffset:threadsPerThreadgroup:", indirectBuffer, indirectBufferOffset, threadsPerThreadgroup) } @(objc_type=ComputeCommandEncoder, objc_name="dispatchThreads") @@ -5641,16 +5694,16 @@ ComputeCommandEncoder_dispatchThreads :: #force_inline proc(self: ^ComputeComman ComputeCommandEncoder_dispatchType :: #force_inline proc(self: ^ComputeCommandEncoder) -> DispatchType { return msgSend(DispatchType, self, "dispatchType") } -@(objc_type=ComputeCommandEncoder, objc_name="executeCommandsInBuffer_indirectBuffer_indirectBufferOffset_") -ComputeCommandEncoder_executeCommandsInBuffer_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^ComputeCommandEncoder, indirectCommandbuffer: ^NS.Object, indirectRangeBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { +@(objc_type=ComputeCommandEncoder, objc_name="executeCommandsInBuffer") +ComputeCommandEncoder_executeCommandsInBuffer :: #force_inline proc(self: ^ComputeCommandEncoder, indirectCommandbuffer: ^Buffer, indirectRangeBuffer: ^Buffer, indirectBufferOffset: NS.UInteger) { msgSend(nil, self, "executeCommandsInBuffer:indirectBuffer:indirectBufferOffset:", indirectCommandbuffer, indirectRangeBuffer, indirectBufferOffset) } -@(objc_type=ComputeCommandEncoder, objc_name="executeCommandsInBuffer_withRange_") -ComputeCommandEncoder_executeCommandsInBuffer_withRange_ :: #force_inline proc(self: ^ComputeCommandEncoder, indirectCommandBuffer: ^NS.Object, executionRange: NS.Range) { +@(objc_type=ComputeCommandEncoder, objc_name="executeCommandsInBufferWithRange") +ComputeCommandEncoder_executeCommandsInBufferWithRange :: #force_inline proc(self: ^ComputeCommandEncoder, indirectCommandBuffer: ^Buffer, executionRange: NS.Range) { msgSend(nil, self, "executeCommandsInBuffer:withRange:", indirectCommandBuffer, executionRange) } @(objc_type=ComputeCommandEncoder, objc_name="memoryBarrierWithResources") -ComputeCommandEncoder_memoryBarrierWithResources :: #force_inline proc(self: ^ComputeCommandEncoder, resources: ^^NS.Object, count: ^NS.Object) { +ComputeCommandEncoder_memoryBarrierWithResources :: #force_inline proc(self: ^ComputeCommandEncoder, resources: [^]^Resource, count: NS.UInteger) { msgSend(nil, self, "memoryBarrierWithResources:count:", resources, count) } @(objc_type=ComputeCommandEncoder, objc_name="memoryBarrierWithScope") @@ -5658,59 +5711,59 @@ ComputeCommandEncoder_memoryBarrierWithScope :: #force_inline proc(self: ^Comput msgSend(nil, self, "memoryBarrierWithScope:", scope) } @(objc_type=ComputeCommandEncoder, objc_name="sampleCountersInBuffer") -ComputeCommandEncoder_sampleCountersInBuffer :: #force_inline proc(self: ^ComputeCommandEncoder, sampleBuffer: ^NS.Object, sampleIndex: ^NS.Object, barrier: BOOL) { +ComputeCommandEncoder_sampleCountersInBuffer :: #force_inline proc(self: ^ComputeCommandEncoder, sampleBuffer: ^Buffer, sampleIndex: NS.UInteger, barrier: BOOL) { msgSend(nil, self, "sampleCountersInBuffer:atSampleIndex:withBarrier:", sampleBuffer, sampleIndex, barrier) } @(objc_type=ComputeCommandEncoder, objc_name="setAccelerationStructure") -ComputeCommandEncoder_setAccelerationStructure :: #force_inline proc(self: ^ComputeCommandEncoder, accelerationStructure: ^NS.Object, bufferIndex: ^NS.Object) { +ComputeCommandEncoder_setAccelerationStructure :: #force_inline proc(self: ^ComputeCommandEncoder, accelerationStructure: ^AccelerationStructure, bufferIndex: NS.UInteger) { msgSend(nil, self, "setAccelerationStructure:atBufferIndex:", accelerationStructure, bufferIndex) } @(objc_type=ComputeCommandEncoder, objc_name="setBuffer") -ComputeCommandEncoder_setBuffer :: #force_inline proc(self: ^ComputeCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +ComputeCommandEncoder_setBuffer :: #force_inline proc(self: ^ComputeCommandEncoder, buffer: ^Buffer, offset: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setBuffer:offset:atIndex:", buffer, offset, index) } @(objc_type=ComputeCommandEncoder, objc_name="setBufferOffset") -ComputeCommandEncoder_setBufferOffset :: #force_inline proc(self: ^ComputeCommandEncoder, offset: ^NS.Object, index: ^NS.Object) { +ComputeCommandEncoder_setBufferOffset :: #force_inline proc(self: ^ComputeCommandEncoder, offset: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setBufferOffset:atIndex:", offset, index) } @(objc_type=ComputeCommandEncoder, objc_name="setBuffers") -ComputeCommandEncoder_setBuffers :: #force_inline proc(self: ^ComputeCommandEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { +ComputeCommandEncoder_setBuffers :: #force_inline proc(self: ^ComputeCommandEncoder, buffers: [^]^Buffer, offsets: [^]NS.UInteger, range: NS.Range) { msgSend(nil, self, "setBuffers:offsets:withRange:", buffers, offsets, range) } @(objc_type=ComputeCommandEncoder, objc_name="setBytes") -ComputeCommandEncoder_setBytes :: #force_inline proc(self: ^ComputeCommandEncoder, bytes: rawptr, length: ^NS.Object, index: ^NS.Object) { +ComputeCommandEncoder_setBytes :: #force_inline proc(self: ^ComputeCommandEncoder, bytes: rawptr, length: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setBytes:length:atIndex:", bytes, length, index) } @(objc_type=ComputeCommandEncoder, objc_name="setComputePipelineState") -ComputeCommandEncoder_setComputePipelineState :: #force_inline proc(self: ^ComputeCommandEncoder, pipelineState: ^NS.Object) { +ComputeCommandEncoder_setComputePipelineState :: #force_inline proc(self: ^ComputeCommandEncoder, pipelineState: ^ComputePipelineState) { msgSend(nil, self, "setComputePipelineState:", pipelineState) } @(objc_type=ComputeCommandEncoder, objc_name="setImageblockWidth") -ComputeCommandEncoder_setImageblockWidth :: #force_inline proc(self: ^ComputeCommandEncoder, width: ^NS.Object, height: ^NS.Object) { +ComputeCommandEncoder_setImageblockWidth :: #force_inline proc(self: ^ComputeCommandEncoder, width: NS.UInteger, height: NS.UInteger) { msgSend(nil, self, "setImageblockWidth:height:", width, height) } @(objc_type=ComputeCommandEncoder, objc_name="setIntersectionFunctionTable") -ComputeCommandEncoder_setIntersectionFunctionTable :: #force_inline proc(self: ^ComputeCommandEncoder, intersectionFunctionTable: ^NS.Object, bufferIndex: ^NS.Object) { +ComputeCommandEncoder_setIntersectionFunctionTable :: #force_inline proc(self: ^ComputeCommandEncoder, intersectionFunctionTable: ^IntersectionFunctionTable, bufferIndex: NS.UInteger) { msgSend(nil, self, "setIntersectionFunctionTable:atBufferIndex:", intersectionFunctionTable, bufferIndex) } @(objc_type=ComputeCommandEncoder, objc_name="setIntersectionFunctionTables") -ComputeCommandEncoder_setIntersectionFunctionTables :: #force_inline proc(self: ^ComputeCommandEncoder, intersectionFunctionTables: ^^NS.Object, range: NS.Range) { +ComputeCommandEncoder_setIntersectionFunctionTables :: #force_inline proc(self: ^ComputeCommandEncoder, intersectionFunctionTables: [^]^IntersectionFunctionTable, range: NS.Range) { msgSend(nil, self, "setIntersectionFunctionTables:withBufferRange:", intersectionFunctionTables, range) } -@(objc_type=ComputeCommandEncoder, objc_name="setSamplerState_atIndex_") -ComputeCommandEncoder_setSamplerState_atIndex_ :: #force_inline proc(self: ^ComputeCommandEncoder, sampler: ^NS.Object, index: ^NS.Object) { +@(objc_type=ComputeCommandEncoder, objc_name="setSamplerStateAtIndex") +ComputeCommandEncoder_setSamplerStateAtIndex :: #force_inline proc(self: ^ComputeCommandEncoder, sampler: ^SamplerState, index: NS.UInteger) { msgSend(nil, self, "setSamplerState:atIndex:", sampler, index) } -@(objc_type=ComputeCommandEncoder, objc_name="setSamplerState_lodMinClamp_lodMaxClamp_atIndex_") -ComputeCommandEncoder_setSamplerState_lodMinClamp_lodMaxClamp_atIndex_ :: #force_inline proc(self: ^ComputeCommandEncoder, sampler: ^NS.Object, lodMinClamp: f32, lodMaxClamp: f32, index: ^NS.Object) { +@(objc_type=ComputeCommandEncoder, objc_name="setSamplerState_lodMinClamp_lodMaxClampAtIndex") +ComputeCommandEncoder_setSamplerState_lodMinClamp_lodMaxClampAtIndex :: #force_inline proc(self: ^ComputeCommandEncoder, sampler: ^SamplerState, lodMinClamp: f32, lodMaxClamp: f32, index: NS.UInteger) { msgSend(nil, self, "setSamplerState:lodMinClamp:lodMaxClamp:atIndex:", sampler, lodMinClamp, lodMaxClamp, index) } -@(objc_type=ComputeCommandEncoder, objc_name="setSamplerStates_lodMinClamps_lodMaxClamps_withRange_") -ComputeCommandEncoder_setSamplerStates_lodMinClamps_lodMaxClamps_withRange_ :: #force_inline proc(self: ^ComputeCommandEncoder, samplers: ^^NS.Object, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { +@(objc_type=ComputeCommandEncoder, objc_name="setSamplerStates_lodMinClamps_lodMaxClampsWithRange") +ComputeCommandEncoder_setSamplerStates_lodMinClamps_lodMaxClampsWithRange :: #force_inline proc(self: ^ComputeCommandEncoder, samplers: [^]^SamplerState, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { msgSend(nil, self, "setSamplerStates:lodMinClamps:lodMaxClamps:withRange:", samplers, lodMinClamps, lodMaxClamps, range) } -@(objc_type=ComputeCommandEncoder, objc_name="setSamplerStates_withRange_") -ComputeCommandEncoder_setSamplerStates_withRange_ :: #force_inline proc(self: ^ComputeCommandEncoder, samplers: ^^NS.Object, range: NS.Range) { +@(objc_type=ComputeCommandEncoder, objc_name="setSamplerStatesWithRange") +ComputeCommandEncoder_setSamplerStatesWithRange :: #force_inline proc(self: ^ComputeCommandEncoder, samplers: [^]^SamplerState, range: NS.Range) { msgSend(nil, self, "setSamplerStates:withRange:", samplers, range) } @(objc_type=ComputeCommandEncoder, objc_name="setStageInRegion") @@ -5718,51 +5771,51 @@ ComputeCommandEncoder_setStageInRegion :: #force_inline proc(self: ^ComputeComma msgSend(nil, self, "setStageInRegion:", region) } @(objc_type=ComputeCommandEncoder, objc_name="setStageInRegionWithIndirectBuffer") -ComputeCommandEncoder_setStageInRegionWithIndirectBuffer :: #force_inline proc(self: ^ComputeCommandEncoder, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { +ComputeCommandEncoder_setStageInRegionWithIndirectBuffer :: #force_inline proc(self: ^ComputeCommandEncoder, indirectBuffer: ^Buffer, indirectBufferOffset: NS.UInteger) { msgSend(nil, self, "setStageInRegionWithIndirectBuffer:indirectBufferOffset:", indirectBuffer, indirectBufferOffset) } @(objc_type=ComputeCommandEncoder, objc_name="setTexture") -ComputeCommandEncoder_setTexture :: #force_inline proc(self: ^ComputeCommandEncoder, texture: ^NS.Object, index: ^NS.Object) { +ComputeCommandEncoder_setTexture :: #force_inline proc(self: ^ComputeCommandEncoder, texture: ^Texture, index: NS.UInteger) { msgSend(nil, self, "setTexture:atIndex:", texture, index) } @(objc_type=ComputeCommandEncoder, objc_name="setTextures") -ComputeCommandEncoder_setTextures :: #force_inline proc(self: ^ComputeCommandEncoder, textures: ^^NS.Object, range: NS.Range) { +ComputeCommandEncoder_setTextures :: #force_inline proc(self: ^ComputeCommandEncoder, textures: [^]^Texture, range: NS.Range) { msgSend(nil, self, "setTextures:withRange:", textures, range) } @(objc_type=ComputeCommandEncoder, objc_name="setThreadgroupMemoryLength") -ComputeCommandEncoder_setThreadgroupMemoryLength :: #force_inline proc(self: ^ComputeCommandEncoder, length: ^NS.Object, index: ^NS.Object) { +ComputeCommandEncoder_setThreadgroupMemoryLength :: #force_inline proc(self: ^ComputeCommandEncoder, length: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setThreadgroupMemoryLength:atIndex:", length, index) } @(objc_type=ComputeCommandEncoder, objc_name="setVisibleFunctionTable") -ComputeCommandEncoder_setVisibleFunctionTable :: #force_inline proc(self: ^ComputeCommandEncoder, visibleFunctionTable: ^NS.Object, bufferIndex: ^NS.Object) { +ComputeCommandEncoder_setVisibleFunctionTable :: #force_inline proc(self: ^ComputeCommandEncoder, visibleFunctionTable: ^VisibleFunctionTable, bufferIndex: NS.UInteger) { msgSend(nil, self, "setVisibleFunctionTable:atBufferIndex:", visibleFunctionTable, bufferIndex) } @(objc_type=ComputeCommandEncoder, objc_name="setVisibleFunctionTables") -ComputeCommandEncoder_setVisibleFunctionTables :: #force_inline proc(self: ^ComputeCommandEncoder, visibleFunctionTables: ^^NS.Object, range: NS.Range) { +ComputeCommandEncoder_setVisibleFunctionTables :: #force_inline proc(self: ^ComputeCommandEncoder, visibleFunctionTables: [^]^VisibleFunctionTable, range: NS.Range) { msgSend(nil, self, "setVisibleFunctionTables:withBufferRange:", visibleFunctionTables, range) } @(objc_type=ComputeCommandEncoder, objc_name="updateFence") -ComputeCommandEncoder_updateFence :: #force_inline proc(self: ^ComputeCommandEncoder, fence: ^NS.Object) { +ComputeCommandEncoder_updateFence :: #force_inline proc(self: ^ComputeCommandEncoder, fence: ^Fence) { msgSend(nil, self, "updateFence:", fence) } @(objc_type=ComputeCommandEncoder, objc_name="useHeap") -ComputeCommandEncoder_useHeap :: #force_inline proc(self: ^ComputeCommandEncoder, heap: ^NS.Object) { +ComputeCommandEncoder_useHeap :: #force_inline proc(self: ^ComputeCommandEncoder, heap: ^Heap) { msgSend(nil, self, "useHeap:", heap) } @(objc_type=ComputeCommandEncoder, objc_name="useHeaps") -ComputeCommandEncoder_useHeaps :: #force_inline proc(self: ^ComputeCommandEncoder, heaps: ^^NS.Object, count: ^NS.Object) { +ComputeCommandEncoder_useHeaps :: #force_inline proc(self: ^ComputeCommandEncoder, heaps: [^]^Heap, count: NS.UInteger) { msgSend(nil, self, "useHeaps:count:", heaps, count) } @(objc_type=ComputeCommandEncoder, objc_name="useResource") -ComputeCommandEncoder_useResource :: #force_inline proc(self: ^ComputeCommandEncoder, resource: ^NS.Object, usage: ResourceUsage) { +ComputeCommandEncoder_useResource :: #force_inline proc(self: ^ComputeCommandEncoder, resource: ^Resource, usage: ResourceUsage) { msgSend(nil, self, "useResource:usage:", resource, usage) } @(objc_type=ComputeCommandEncoder, objc_name="useResources") -ComputeCommandEncoder_useResources :: #force_inline proc(self: ^ComputeCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, usage: ResourceUsage) { +ComputeCommandEncoder_useResources :: #force_inline proc(self: ^ComputeCommandEncoder, resources: [^]^Resource, count: NS.UInteger, usage: ResourceUsage) { msgSend(nil, self, "useResources:count:usage:", resources, count, usage) } @(objc_type=ComputeCommandEncoder, objc_name="waitForFence") -ComputeCommandEncoder_waitForFence :: #force_inline proc(self: ^ComputeCommandEncoder, fence: ^NS.Object) { +ComputeCommandEncoder_waitForFence :: #force_inline proc(self: ^ComputeCommandEncoder, fence: ^Fence) { msgSend(nil, self, "waitForFence:", fence) } @@ -5793,7 +5846,7 @@ ComputePipelineState_device :: #force_inline proc(self: ^ComputePipelineState) - return msgSend(^ComputePipelineState, self, "device") } @(objc_type=ComputePipelineState, objc_name="functionHandleWithFunction") -ComputePipelineState_functionHandleWithFunction :: #force_inline proc(self: ^ComputePipelineState, function: ^NS.Object) -> ^ComputePipelineState { +ComputePipelineState_functionHandleWithFunction :: #force_inline proc(self: ^ComputePipelineState, function: ^Function) -> ^ComputePipelineState { return msgSend(^ComputePipelineState, self, "functionHandleWithFunction:", function) } @(objc_type=ComputePipelineState, objc_name="imageblockMemoryLengthForDimensions") @@ -5805,12 +5858,13 @@ ComputePipelineState_label :: #force_inline proc(self: ^ComputePipelineState) -> return msgSend(^NS.String, self, "label") } @(objc_type=ComputePipelineState, objc_name="maxTotalThreadsPerThreadgroup") -ComputePipelineState_maxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^ComputePipelineState) -> NS.Integer { - return msgSend(NS.Integer, self, "maxTotalThreadsPerThreadgroup") +ComputePipelineState_maxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^ComputePipelineState) -> NS.UInteger { + return msgSend(NS.UInteger, self, "maxTotalThreadsPerThreadgroup") } @(objc_type=ComputePipelineState, objc_name="newComputePipelineStateWithAdditionalBinaryFunctions") -ComputePipelineState_newComputePipelineStateWithAdditionalBinaryFunctions :: #force_inline proc(self: ^ComputePipelineState, functions: ^NS.Array, error: ^^NS.Error ) -> ^ComputePipelineState { - return msgSend(^ComputePipelineState, self, "newComputePipelineStateWithAdditionalBinaryFunctions:error:", functions, error) +ComputePipelineState_newComputePipelineStateWithAdditionalBinaryFunctions :: #force_inline proc(self: ^ComputePipelineState, functions: ^NS.Array) -> (state: ^ComputePipelineState, error: ^NS.Error) { + state = msgSend(^ComputePipelineState, self, "newComputePipelineStateWithAdditionalBinaryFunctions:error:", functions, &error) + return } @(objc_type=ComputePipelineState, objc_name="newIntersectionFunctionTableWithDescriptor") ComputePipelineState_newIntersectionFunctionTableWithDescriptor :: #force_inline proc(self: ^ComputePipelineState, descriptor: ^IntersectionFunctionTableDescriptor) -> ^ComputePipelineState { @@ -5821,16 +5875,16 @@ ComputePipelineState_newVisibleFunctionTableWithDescriptor :: #force_inline proc return msgSend(^ComputePipelineState, self, "newVisibleFunctionTableWithDescriptor:", descriptor) } @(objc_type=ComputePipelineState, objc_name="staticThreadgroupMemoryLength") -ComputePipelineState_staticThreadgroupMemoryLength :: #force_inline proc(self: ^ComputePipelineState) -> NS.Integer { - return msgSend(NS.Integer, self, "staticThreadgroupMemoryLength") +ComputePipelineState_staticThreadgroupMemoryLength :: #force_inline proc(self: ^ComputePipelineState) -> NS.UInteger { + return msgSend(NS.UInteger, self, "staticThreadgroupMemoryLength") } @(objc_type=ComputePipelineState, objc_name="supportIndirectCommandBuffers") ComputePipelineState_supportIndirectCommandBuffers :: #force_inline proc(self: ^ComputePipelineState) -> BOOL { return msgSend(BOOL, self, "supportIndirectCommandBuffers") } @(objc_type=ComputePipelineState, objc_name="threadExecutionWidth") -ComputePipelineState_threadExecutionWidth :: #force_inline proc(self: ^ComputePipelineState) -> NS.Integer { - return msgSend(NS.Integer, self, "threadExecutionWidth") +ComputePipelineState_threadExecutionWidth :: #force_inline proc(self: ^ComputePipelineState) -> NS.UInteger { + return msgSend(NS.UInteger, self, "threadExecutionWidth") } //////////////////////////////////////////////////////////////////////////////// @@ -5878,8 +5932,8 @@ CounterSampleBuffer_resolveCounterRange :: #force_inline proc(self: ^CounterSamp return msgSend(^NS.Data, self, "resolveCounterRange:", range) } @(objc_type=CounterSampleBuffer, objc_name="sampleCount") -CounterSampleBuffer_sampleCount :: #force_inline proc(self: ^CounterSampleBuffer) -> NS.Integer { - return msgSend(NS.Integer, self, "sampleCount") +CounterSampleBuffer_sampleCount :: #force_inline proc(self: ^CounterSampleBuffer) -> NS.UInteger { + return msgSend(NS.UInteger, self, "sampleCount") } //////////////////////////////////////////////////////////////////////////////// @@ -6053,11 +6107,11 @@ Device_argumentBuffersSupport :: #force_inline proc(self: ^Device) -> ArgumentBu return msgSend(ArgumentBuffersTier, self, "argumentBuffersSupport") } @(objc_type=Device, objc_name="convertSparsePixelRegions") -Device_convertSparsePixelRegions :: #force_inline proc(self: ^Device, pixelRegions: ^Region, tileRegions: ^Region, tileSize: Size, mode: SparseTextureRegionAlignmentMode, numRegions: ^NS.Object) { +Device_convertSparsePixelRegions :: #force_inline proc(self: ^Device, pixelRegions: ^Region, tileRegions: ^Region, tileSize: Size, mode: SparseTextureRegionAlignmentMode, numRegions: NS.UInteger) { msgSend(nil, self, "convertSparsePixelRegions:toTileRegions:withTileSize:alignmentMode:numRegions:", pixelRegions, tileRegions, tileSize, mode, numRegions) } @(objc_type=Device, objc_name="convertSparseTileRegions") -Device_convertSparseTileRegions :: #force_inline proc(self: ^Device, tileRegions: ^Region, pixelRegions: ^Region, tileSize: Size, numRegions: ^NS.Object) { +Device_convertSparseTileRegions :: #force_inline proc(self: ^Device, tileRegions: ^Region, pixelRegions: ^Region, tileSize: Size, numRegions: NS.UInteger) { msgSend(nil, self, "convertSparseTileRegions:toPixelRegions:withTileSize:numRegions:", tileRegions, pixelRegions, tileSize, numRegions) } @(objc_type=Device, objc_name="counterSets") @@ -6065,11 +6119,11 @@ Device_counterSets :: #force_inline proc(self: ^Device) -> ^NS.Array { return msgSend(^NS.Array, self, "counterSets") } @(objc_type=Device, objc_name="currentAllocatedSize") -Device_currentAllocatedSize :: #force_inline proc(self: ^Device) -> NS.Integer { - return msgSend(NS.Integer, self, "currentAllocatedSize") +Device_currentAllocatedSize :: #force_inline proc(self: ^Device) -> NS.UInteger { + return msgSend(NS.UInteger, self, "currentAllocatedSize") } @(objc_type=Device, objc_name="getDefaultSamplePositions") -Device_getDefaultSamplePositions :: #force_inline proc(self: ^Device, positions: ^SamplePosition, count: ^NS.Object) { +Device_getDefaultSamplePositions :: #force_inline proc(self: ^Device, positions: ^SamplePosition, count: NS.UInteger) { msgSend(nil, self, "getDefaultSamplePositions:count:", positions, count) } @(objc_type=Device, objc_name="hasUnifiedMemory") @@ -6077,7 +6131,7 @@ Device_hasUnifiedMemory :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "hasUnifiedMemory") } @(objc_type=Device, objc_name="heapBufferSizeAndAlignWithLength") -Device_heapBufferSizeAndAlignWithLength :: #force_inline proc(self: ^Device, length: ^NS.Object, options: ResourceOptions) -> SizeAndAlign { +Device_heapBufferSizeAndAlignWithLength :: #force_inline proc(self: ^Device, length: NS.UInteger, options: ResourceOptions) -> SizeAndAlign { return msgSend(SizeAndAlign, self, "heapBufferSizeAndAlignWithLength:options:", length, options) } @(objc_type=Device, objc_name="heapTextureSizeAndAlignWithDescriptor") @@ -6105,20 +6159,20 @@ Device_location :: #force_inline proc(self: ^Device) -> DeviceLocation { return msgSend(DeviceLocation, self, "location") } @(objc_type=Device, objc_name="locationNumber") -Device_locationNumber :: #force_inline proc(self: ^Device) -> NS.Integer { - return msgSend(NS.Integer, self, "locationNumber") +Device_locationNumber :: #force_inline proc(self: ^Device) -> NS.UInteger { + return msgSend(NS.UInteger, self, "locationNumber") } @(objc_type=Device, objc_name="maxArgumentBufferSamplerCount") -Device_maxArgumentBufferSamplerCount :: #force_inline proc(self: ^Device) -> NS.Integer { - return msgSend(NS.Integer, self, "maxArgumentBufferSamplerCount") +Device_maxArgumentBufferSamplerCount :: #force_inline proc(self: ^Device) -> NS.UInteger { + return msgSend(NS.UInteger, self, "maxArgumentBufferSamplerCount") } @(objc_type=Device, objc_name="maxBufferLength") -Device_maxBufferLength :: #force_inline proc(self: ^Device) -> NS.Integer { - return msgSend(NS.Integer, self, "maxBufferLength") +Device_maxBufferLength :: #force_inline proc(self: ^Device) -> NS.UInteger { + return msgSend(NS.UInteger, self, "maxBufferLength") } @(objc_type=Device, objc_name="maxThreadgroupMemoryLength") -Device_maxThreadgroupMemoryLength :: #force_inline proc(self: ^Device) -> NS.Integer { - return msgSend(NS.Integer, self, "maxThreadgroupMemoryLength") +Device_maxThreadgroupMemoryLength :: #force_inline proc(self: ^Device) -> NS.UInteger { + return msgSend(NS.UInteger, self, "maxThreadgroupMemoryLength") } @(objc_type=Device, objc_name="maxThreadsPerThreadgroup") Device_maxThreadsPerThreadgroup :: #force_inline proc(self: ^Device) -> Size { @@ -6145,7 +6199,7 @@ Device_newAccelerationStructureWithDescriptor :: #force_inline proc(self: ^Devic return msgSend(^Device, self, "newAccelerationStructureWithDescriptor:", descriptor) } @(objc_type=Device, objc_name="newAccelerationStructureWithSize") -Device_newAccelerationStructureWithSize :: #force_inline proc(self: ^Device, size: ^NS.Object) -> ^Device { +Device_newAccelerationStructureWithSize :: #force_inline proc(self: ^Device, size: NS.UInteger) -> ^Device { return msgSend(^Device, self, "newAccelerationStructureWithSize:", size) } @(objc_type=Device, objc_name="newArgumentEncoderWithArguments") @@ -6153,19 +6207,20 @@ Device_newArgumentEncoderWithArguments :: #force_inline proc(self: ^Device, argu return msgSend(^Device, self, "newArgumentEncoderWithArguments:", arguments) } @(objc_type=Device, objc_name="newBinaryArchiveWithDescriptor") -Device_newBinaryArchiveWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^BinaryArchiveDescriptor, error: ^^NS.Error ) -> ^Device { - return msgSend(^Device, self, "newBinaryArchiveWithDescriptor:error:", descriptor, error) +Device_newBinaryArchiveWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^BinaryArchiveDescriptor) -> (device: ^Device, error: ^NS.Error) { + device = msgSend(^Device, self, "newBinaryArchiveWithDescriptor:error:", descriptor, &error) + return } @(objc_type=Device, objc_name="newBufferWithBytes") -Device_newBufferWithBytes :: #force_inline proc(self: ^Device, pointer: rawptr, length: ^NS.Object, options: ResourceOptions) -> ^Device { +Device_newBufferWithBytes :: #force_inline proc(self: ^Device, pointer: rawptr, length: NS.UInteger, options: ResourceOptions) -> ^Device { return msgSend(^Device, self, "newBufferWithBytes:length:options:", pointer, length, options) } @(objc_type=Device, objc_name="newBufferWithBytesNoCopy") -Device_newBufferWithBytesNoCopy :: #force_inline proc(self: ^Device, pointer: rawptr, length: ^NS.Object, options: ResourceOptions, deallocator: rawptr) -> ^Device { +Device_newBufferWithBytesNoCopy :: #force_inline proc(self: ^Device, pointer: rawptr, length: NS.UInteger, options: ResourceOptions, deallocator: rawptr) -> ^Device { return msgSend(^Device, self, "newBufferWithBytesNoCopy:length:options:deallocator:", pointer, length, options, deallocator) } @(objc_type=Device, objc_name="newBufferWithLength") -Device_newBufferWithLength :: #force_inline proc(self: ^Device, length: ^NS.Object, options: ResourceOptions) -> ^Device { +Device_newBufferWithLength :: #force_inline proc(self: ^Device, length: NS.UInteger, options: ResourceOptions) -> ^Device { return msgSend(^Device, self, "newBufferWithLength:options:", length, options) } @(objc_type=Device, objc_name="newCommandQueue") @@ -6173,7 +6228,7 @@ Device_newCommandQueue :: #force_inline proc(self: ^Device) -> ^Device { return msgSend(^Device, self, "newCommandQueue") } @(objc_type=Device, objc_name="newCommandQueueWithMaxCommandBufferCount") -Device_newCommandQueueWithMaxCommandBufferCount :: #force_inline proc(self: ^Device, maxCommandBufferCount: ^NS.Object) -> ^Device { +Device_newCommandQueueWithMaxCommandBufferCount :: #force_inline proc(self: ^Device, maxCommandBufferCount: NS.UInteger) -> ^Device { return msgSend(^Device, self, "newCommandQueueWithMaxCommandBufferCount:", maxCommandBufferCount) } @(objc_type=Device, objc_name="newComputePipelineStateWithDescriptor_options_completionHandler_") @@ -6181,48 +6236,55 @@ Device_newComputePipelineStateWithDescriptor_options_completionHandler_ :: #forc msgSend(nil, self, "newComputePipelineStateWithDescriptor:options:completionHandler:", descriptor, options, completionHandler) } @(objc_type=Device, objc_name="newComputePipelineStateWithDescriptor_options_reflection_error_") -Device_newComputePipelineStateWithDescriptor_options_reflection_error_ :: #force_inline proc(self: ^Device, descriptor: ^ComputePipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedComputePipelineReflection, error: ^^NS.Error ) -> ^Device { - return msgSend(^Device, self, "newComputePipelineStateWithDescriptor:options:reflection:error:", descriptor, options, reflection, error) +Device_newComputePipelineStateWithDescriptor_options_reflection_error_ :: #force_inline proc(self: ^Device, descriptor: ^ComputePipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedComputePipelineReflection) -> (device: ^Device, error: ^NS.Error) { + device = msgSend(^Device, self, "newComputePipelineStateWithDescriptor:options:reflection:error:", descriptor, options, reflection, &error) + return } @(objc_type=Device, objc_name="newComputePipelineStateWithFunction_completionHandler_") -Device_newComputePipelineStateWithFunction_completionHandler_ :: #force_inline proc(self: ^Device, computeFunction: ^NS.Object, completionHandler: NewComputePipelineStateCompletionHandler) { +Device_newComputePipelineStateWithFunction_completionHandler_ :: #force_inline proc(self: ^Device, computeFunction: ^Function, completionHandler: NewComputePipelineStateCompletionHandler) { msgSend(nil, self, "newComputePipelineStateWithFunction:completionHandler:", computeFunction, completionHandler) } @(objc_type=Device, objc_name="newComputePipelineStateWithFunction_error_") -Device_newComputePipelineStateWithFunction_error_ :: #force_inline proc(self: ^Device, computeFunction: ^NS.Object, error: ^^NS.Error ) -> ^Device { - return msgSend(^Device, self, "newComputePipelineStateWithFunction:error:", computeFunction, error) +Device_newComputePipelineStateWithFunction_error_ :: #force_inline proc(self: ^Device, computeFunction: ^Function) -> (device: ^Device, error: ^NS.Error) { + device = msgSend(^Device, self, "newComputePipelineStateWithFunction:error:", computeFunction, &error) + return } @(objc_type=Device, objc_name="newComputePipelineStateWithFunction_options_completionHandler_") -Device_newComputePipelineStateWithFunction_options_completionHandler_ :: #force_inline proc(self: ^Device, computeFunction: ^NS.Object, options: PipelineOption, completionHandler: NewComputePipelineStateWithReflectionCompletionHandler) { +Device_newComputePipelineStateWithFunction_options_completionHandler_ :: #force_inline proc(self: ^Device, computeFunction: ^Function, options: PipelineOption, completionHandler: NewComputePipelineStateWithReflectionCompletionHandler) { msgSend(nil, self, "newComputePipelineStateWithFunction:options:completionHandler:", computeFunction, options, completionHandler) } @(objc_type=Device, objc_name="newComputePipelineStateWithFunction_options_reflection_error_") -Device_newComputePipelineStateWithFunction_options_reflection_error_ :: #force_inline proc(self: ^Device, computeFunction: ^NS.Object, options: PipelineOption, reflection: ^AutoreleasedComputePipelineReflection, error: ^^NS.Error ) -> ^Device { - return msgSend(^Device, self, "newComputePipelineStateWithFunction:options:reflection:error:", computeFunction, options, reflection, error) +Device_newComputePipelineStateWithFunction_options_reflection_error_ :: #force_inline proc(self: ^Device, computeFunction: ^Function, options: PipelineOption, reflection: ^AutoreleasedComputePipelineReflection) -> (device: ^Device, error: ^NS.Error) { + device = msgSend(^Device, self, "newComputePipelineStateWithFunction:options:reflection:error:", computeFunction, options, reflection, &error) + return } @(objc_type=Device, objc_name="newCounterSampleBufferWithDescriptor") -Device_newCounterSampleBufferWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^CounterSampleBufferDescriptor, error: ^^NS.Error ) -> ^Device { - return msgSend(^Device, self, "newCounterSampleBufferWithDescriptor:error:", descriptor, error) +Device_newCounterSampleBufferWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^CounterSampleBufferDescriptor) -> (device: ^Device, error: ^NS.Error) { + device = msgSend(^Device, self, "newCounterSampleBufferWithDescriptor:error:", descriptor, &error) + return } @(objc_type=Device, objc_name="newDefaultLibrary") Device_newDefaultLibrary :: #force_inline proc(self: ^Device) -> ^Device { return msgSend(^Device, self, "newDefaultLibrary") } @(objc_type=Device, objc_name="newDefaultLibraryWithBundle") -Device_newDefaultLibraryWithBundle :: #force_inline proc(self: ^Device, bundle: ^NS.Bundle, error: ^^NS.Error ) -> ^Device { - return msgSend(^Device, self, "newDefaultLibraryWithBundle:error:", bundle, error) +Device_newDefaultLibraryWithBundle :: #force_inline proc(self: ^Device, bundle: ^NS.Bundle) -> (device: ^Device, error: ^NS.Error) { + device = msgSend(^Device, self, "newDefaultLibraryWithBundle:error:", bundle, &error) + return } @(objc_type=Device, objc_name="newDepthStencilStateWithDescriptor") Device_newDepthStencilStateWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^DepthStencilDescriptor) -> ^Device { return msgSend(^Device, self, "newDepthStencilStateWithDescriptor:", descriptor) } @(objc_type=Device, objc_name="newDynamicLibrary") -Device_newDynamicLibrary :: #force_inline proc(self: ^Device, library: ^NS.Object, error: ^^NS.Error ) -> ^Device { - return msgSend(^Device, self, "newDynamicLibrary:error:", library, error) +Device_newDynamicLibrary :: #force_inline proc(self: ^Device, library: ^Library) -> (device: ^Device, error: ^NS.Error) { + device = msgSend(^Device, self, "newDynamicLibrary:error:", library, &error) + return } @(objc_type=Device, objc_name="newDynamicLibraryWithURL") -Device_newDynamicLibraryWithURL :: #force_inline proc(self: ^Device, url: ^NS.URL, error: ^^NS.Error ) -> ^Device { - return msgSend(^Device, self, "newDynamicLibraryWithURL:error:", url, error) +Device_newDynamicLibraryWithURL :: #force_inline proc(self: ^Device, url: ^NS.URL) -> (device: ^Device, error: ^NS.Error) { + device = msgSend(^Device, self, "newDynamicLibraryWithURL:error:", url, &error) + return } @(objc_type=Device, objc_name="newEvent") Device_newEvent :: #force_inline proc(self: ^Device) -> ^Device { @@ -6237,28 +6299,32 @@ Device_newHeapWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^H return msgSend(^Device, self, "newHeapWithDescriptor:", descriptor) } @(objc_type=Device, objc_name="newIndirectCommandBufferWithDescriptor") -Device_newIndirectCommandBufferWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^IndirectCommandBufferDescriptor, maxCount: ^NS.Object, options: ResourceOptions) -> ^Device { +Device_newIndirectCommandBufferWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^IndirectCommandBufferDescriptor, maxCount: NS.UInteger, options: ResourceOptions) -> ^Device { return msgSend(^Device, self, "newIndirectCommandBufferWithDescriptor:maxCommandCount:options:", descriptor, maxCount, options) } @(objc_type=Device, objc_name="newLibraryWithData") -Device_newLibraryWithData :: #force_inline proc(self: ^Device, data: ^NS.Object, error: ^^NS.Error ) -> ^Device { - return msgSend(^Device, self, "newLibraryWithData:error:", data, error) +Device_newLibraryWithData :: #force_inline proc(self: ^Device, data: dispatch_data_t) -> (device: ^Device, error: ^NS.Error) { + device = msgSend(^Device, self, "newLibraryWithData:error:", data, &error) + return } @(objc_type=Device, objc_name="newLibraryWithFile") -Device_newLibraryWithFile :: #force_inline proc(self: ^Device, filepath: ^NS.String, error: ^^NS.Error ) -> ^Device { - return msgSend(^Device, self, "newLibraryWithFile:error:", filepath, error) +Device_newLibraryWithFile :: #force_inline proc(self: ^Device, filepath: ^NS.String) -> (device: ^Device, error: ^NS.Error) { + device = msgSend(^Device, self, "newLibraryWithFile:error:", filepath, &error) + return } @(objc_type=Device, objc_name="newLibraryWithSource_options_completionHandler_") Device_newLibraryWithSource_options_completionHandler_ :: #force_inline proc(self: ^Device, source: ^NS.String, options: ^CompileOptions, completionHandler: NewLibraryCompletionHandler) { msgSend(nil, self, "newLibraryWithSource:options:completionHandler:", source, options, completionHandler) } @(objc_type=Device, objc_name="newLibraryWithSource_options_error_") -Device_newLibraryWithSource_options_error_ :: #force_inline proc(self: ^Device, source: ^NS.String, options: ^CompileOptions, error: ^^NS.Error ) -> ^Device { - return msgSend(^Device, self, "newLibraryWithSource:options:error:", source, options, error) +Device_newLibraryWithSource_options_error_ :: #force_inline proc(self: ^Device, source: ^NS.String, options: ^CompileOptions) -> (device: ^Device, error: ^NS.Error) { + device = msgSend(^Device, self, "newLibraryWithSource:options:error:", source, options, &error) + return } @(objc_type=Device, objc_name="newLibraryWithURL") -Device_newLibraryWithURL :: #force_inline proc(self: ^Device, url: ^NS.URL, error: ^^NS.Error ) -> ^Device { - return msgSend(^Device, self, "newLibraryWithURL:error:", url, error) +Device_newLibraryWithURL :: #force_inline proc(self: ^Device, url: ^NS.URL) -> (device: ^Device, error: ^NS.Error) { + device = msgSend(^Device, self, "newLibraryWithURL:error:", url, &error) + return } @(objc_type=Device, objc_name="newRasterizationRateMapWithDescriptor") Device_newRasterizationRateMapWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^RasterizationRateMapDescriptor) -> ^Device { @@ -6269,24 +6335,27 @@ Device_newRenderPipelineStateWithDescriptor_completionHandler_ :: #force_inline msgSend(nil, self, "newRenderPipelineStateWithDescriptor:completionHandler:", descriptor, completionHandler) } @(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptor_error_") -Device_newRenderPipelineStateWithDescriptor_error_ :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, error: ^^NS.Error ) -> ^Device { - return msgSend(^Device, self, "newRenderPipelineStateWithDescriptor:error:", descriptor, error) +Device_newRenderPipelineStateWithDescriptor_error_ :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor) -> (device: ^Device, error: ^NS.Error) { + device = msgSend(^Device, self, "newRenderPipelineStateWithDescriptor:error:", descriptor, &error) + return } @(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptor_options_completionHandler_") Device_newRenderPipelineStateWithDescriptor_options_completionHandler_ :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, options: PipelineOption, completionHandler: NewRenderPipelineStateWithReflectionCompletionHandler) { msgSend(nil, self, "newRenderPipelineStateWithDescriptor:options:completionHandler:", descriptor, options, completionHandler) } @(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptor_options_reflection_error_") -Device_newRenderPipelineStateWithDescriptor_options_reflection_error_ :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedRenderPipelineReflection, error: ^^NS.Error ) -> ^Device { - return msgSend(^Device, self, "newRenderPipelineStateWithDescriptor:options:reflection:error:", descriptor, options, reflection, error) +Device_newRenderPipelineStateWithDescriptor_options_reflection_error_ :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedRenderPipelineReflection) -> (device: ^Device, error: ^NS.Error) { + device = msgSend(^Device, self, "newRenderPipelineStateWithDescriptor:options:reflection:error:", descriptor, options, reflection, &error) + return } @(objc_type=Device, objc_name="newRenderPipelineStateWithTileDescriptor_options_completionHandler_") Device_newRenderPipelineStateWithTileDescriptor_options_completionHandler_ :: #force_inline proc(self: ^Device, descriptor: ^TileRenderPipelineDescriptor, options: PipelineOption, completionHandler: NewRenderPipelineStateWithReflectionCompletionHandler) { msgSend(nil, self, "newRenderPipelineStateWithTileDescriptor:options:completionHandler:", descriptor, options, completionHandler) } @(objc_type=Device, objc_name="newRenderPipelineStateWithTileDescriptor_options_reflection_error_") -Device_newRenderPipelineStateWithTileDescriptor_options_reflection_error_ :: #force_inline proc(self: ^Device, descriptor: ^TileRenderPipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedRenderPipelineReflection, error: ^^NS.Error ) -> ^Device { - return msgSend(^Device, self, "newRenderPipelineStateWithTileDescriptor:options:reflection:error:", descriptor, options, reflection, error) +Device_newRenderPipelineStateWithTileDescriptor_options_reflection_error_ :: #force_inline proc(self: ^Device, descriptor: ^TileRenderPipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedRenderPipelineReflection) -> (device: ^Device, error: ^NS.Error) { + device = msgSend(^Device, self, "newRenderPipelineStateWithTileDescriptor:options:reflection:error:", descriptor, options, reflection, &error) + return } @(objc_type=Device, objc_name="newSamplerStateWithDescriptor") Device_newSamplerStateWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^SamplerDescriptor) -> ^Device { @@ -6313,7 +6382,7 @@ Device_newTextureWithDescriptor :: #force_inline proc(self: ^Device, desc: ^Text return msgSend(^Device, self, "newTextureWithDescriptor:", desc) } @(objc_type=Device, objc_name="newTextureWithDescriptor_iosurface_plane_") -Device_newTextureWithDescriptor_iosurface_plane_ :: #force_inline proc(self: ^Device, descriptor: ^TextureDescriptor, iosurface: IOSurfaceRef, plane: ^NS.Object) -> ^Device { +Device_newTextureWithDescriptor_iosurface_plane_ :: #force_inline proc(self: ^Device, descriptor: ^TextureDescriptor, iosurface: IOSurfaceRef, plane: NS.UInteger) -> ^Device { return msgSend(^Device, self, "newTextureWithDescriptor:iosurface:plane:", descriptor, iosurface, plane) } @(objc_type=Device, objc_name="peerCount") @@ -6345,11 +6414,11 @@ Device_sampleTimestamps :: #force_inline proc(self: ^Device, cpuTimestamp: ^Time msgSend(nil, self, "sampleTimestamps:gpuTimestamp:", cpuTimestamp, gpuTimestamp) } @(objc_type=Device, objc_name="sparseTileSizeInBytes") -Device_sparseTileSizeInBytes :: #force_inline proc(self: ^Device) -> NS.Integer { - return msgSend(NS.Integer, self, "sparseTileSizeInBytes") +Device_sparseTileSizeInBytes :: #force_inline proc(self: ^Device) -> NS.UInteger { + return msgSend(NS.UInteger, self, "sparseTileSizeInBytes") } @(objc_type=Device, objc_name="sparseTileSizeWithTextureType") -Device_sparseTileSizeWithTextureType :: #force_inline proc(self: ^Device, textureType: TextureType, pixelFormat: PixelFormat, sampleCount: ^NS.Object) -> Size { +Device_sparseTileSizeWithTextureType :: #force_inline proc(self: ^Device, textureType: TextureType, pixelFormat: PixelFormat, sampleCount: NS.UInteger) -> Size { return msgSend(Size, self, "sparseTileSizeWithTextureType:pixelFormat:sampleCount:", textureType, pixelFormat, sampleCount) } @(objc_type=Device, objc_name="supports32BitFloatFiltering") @@ -6393,7 +6462,7 @@ Device_supportsQueryTextureLOD :: #force_inline proc(self: ^Device) -> BOOL { return msgSend(BOOL, self, "supportsQueryTextureLOD") } @(objc_type=Device, objc_name="supportsRasterizationRateMapWithLayerCount") -Device_supportsRasterizationRateMapWithLayerCount :: #force_inline proc(self: ^Device, layerCount: ^NS.Object) -> BOOL { +Device_supportsRasterizationRateMapWithLayerCount :: #force_inline proc(self: ^Device, layerCount: NS.UInteger) -> BOOL { return msgSend(BOOL, self, "supportsRasterizationRateMapWithLayerCount:", layerCount) } @(objc_type=Device, objc_name="supportsRaytracing") @@ -6405,11 +6474,11 @@ Device_supportsShaderBarycentricCoordinates :: #force_inline proc(self: ^Device) return msgSend(BOOL, self, "supportsShaderBarycentricCoordinates") } @(objc_type=Device, objc_name="supportsTextureSampleCount") -Device_supportsTextureSampleCount :: #force_inline proc(self: ^Device, sampleCount: ^NS.Object) -> BOOL { +Device_supportsTextureSampleCount :: #force_inline proc(self: ^Device, sampleCount: NS.UInteger) -> BOOL { return msgSend(BOOL, self, "supportsTextureSampleCount:", sampleCount) } @(objc_type=Device, objc_name="supportsVertexAmplificationCount") -Device_supportsVertexAmplificationCount :: #force_inline proc(self: ^Device, count: ^NS.Object) -> BOOL { +Device_supportsVertexAmplificationCount :: #force_inline proc(self: ^Device, count: NS.UInteger) -> BOOL { return msgSend(BOOL, self, "supportsVertexAmplificationCount:", count) } @@ -6435,8 +6504,8 @@ Drawable_addPresentedHandler :: #force_inline proc(self: ^Drawable, block: Drawa msgSend(nil, self, "addPresentedHandler:", block) } @(objc_type=Drawable, objc_name="drawableID") -Drawable_drawableID :: #force_inline proc(self: ^Drawable) -> NS.Integer { - return msgSend(NS.Integer, self, "drawableID") +Drawable_drawableID :: #force_inline proc(self: ^Drawable) -> NS.UInteger { + return msgSend(NS.UInteger, self, "drawableID") } @(objc_type=Drawable, objc_name="present") Drawable_present :: #force_inline proc(self: ^Drawable) { @@ -6484,8 +6553,9 @@ DynamicLibrary_label :: #force_inline proc(self: ^DynamicLibrary) -> ^NS.String return msgSend(^NS.String, self, "label") } @(objc_type=DynamicLibrary, objc_name="serializeToURL") -DynamicLibrary_serializeToURL :: #force_inline proc(self: ^DynamicLibrary, url: ^NS.URL, error: ^^NS.Error ) -> BOOL { - return msgSend(BOOL, self, "serializeToURL:error:", url, error) +DynamicLibrary_serializeToURL :: #force_inline proc(self: ^DynamicLibrary, url: ^NS.URL) -> (ok: bool, error: ^NS.Error) { + ok = msgSend(BOOL, self, "serializeToURL:error:", url, &error) + return } @(objc_type=DynamicLibrary, objc_name="setLabel") DynamicLibrary_setLabel :: #force_inline proc(self: ^DynamicLibrary, label: ^NS.String) { @@ -6591,11 +6661,11 @@ Function_name :: #force_inline proc(self: ^Function) -> ^NS.String { return msgSend(^NS.String, self, "name") } @(objc_type=Function, objc_name="newArgumentEncoderWithBufferIndex") -Function_newArgumentEncoderWithBufferIndex :: #force_inline proc(self: ^Function, bufferIndex: ^NS.Object) -> ^Function { +Function_newArgumentEncoderWithBufferIndex :: #force_inline proc(self: ^Function, bufferIndex: NS.UInteger) -> ^Function { return msgSend(^Function, self, "newArgumentEncoderWithBufferIndex:", bufferIndex) } @(objc_type=Function, objc_name="newArgumentEncoderWithBufferIndex_reflection_") -Function_newArgumentEncoderWithBufferIndex_reflection_ :: #force_inline proc(self: ^Function, bufferIndex: ^NS.Object, reflection: ^AutoreleasedArgument) -> ^Function { +Function_newArgumentEncoderWithBufferIndex_reflection_ :: #force_inline proc(self: ^Function, bufferIndex: NS.UInteger, reflection: ^AutoreleasedArgument) -> ^Function { return msgSend(^Function, self, "newArgumentEncoderWithBufferIndex:reflection:", bufferIndex, reflection) } @(objc_type=Function, objc_name="options") @@ -6603,8 +6673,8 @@ Function_options :: #force_inline proc(self: ^Function) -> FunctionOptions { return msgSend(FunctionOptions, self, "options") } @(objc_type=Function, objc_name="patchControlPointCount") -Function_patchControlPointCount :: #force_inline proc(self: ^Function) -> NS.Integer { - return msgSend(NS.Integer, self, "patchControlPointCount") +Function_patchControlPointCount :: #force_inline proc(self: ^Function) -> NS.UInteger { + return msgSend(NS.UInteger, self, "patchControlPointCount") } @(objc_type=Function, objc_name="patchType") Function_patchType :: #force_inline proc(self: ^Function) -> PatchType { @@ -6702,16 +6772,16 @@ FunctionLogDebugLocation_URL :: #force_inline proc(self: ^FunctionLogDebugLocati return msgSend(^NS.URL, self, "URL") } @(objc_type=FunctionLogDebugLocation, objc_name="column") -FunctionLogDebugLocation_column :: #force_inline proc(self: ^FunctionLogDebugLocation) -> NS.Integer { - return msgSend(NS.Integer, self, "column") +FunctionLogDebugLocation_column :: #force_inline proc(self: ^FunctionLogDebugLocation) -> NS.UInteger { + return msgSend(NS.UInteger, self, "column") } @(objc_type=FunctionLogDebugLocation, objc_name="functionName") FunctionLogDebugLocation_functionName :: #force_inline proc(self: ^FunctionLogDebugLocation) -> ^NS.String { return msgSend(^NS.String, self, "functionName") } @(objc_type=FunctionLogDebugLocation, objc_name="line") -FunctionLogDebugLocation_line :: #force_inline proc(self: ^FunctionLogDebugLocation) -> NS.Integer { - return msgSend(NS.Integer, self, "line") +FunctionLogDebugLocation_line :: #force_inline proc(self: ^FunctionLogDebugLocation) -> NS.UInteger { + return msgSend(NS.UInteger, self, "line") } //////////////////////////////////////////////////////////////////////////////// @@ -6747,8 +6817,8 @@ Heap_cpuCacheMode :: #force_inline proc(self: ^Heap) -> CPUCacheMode { return msgSend(CPUCacheMode, self, "cpuCacheMode") } @(objc_type=Heap, objc_name="currentAllocatedSize") -Heap_currentAllocatedSize :: #force_inline proc(self: ^Heap) -> NS.Integer { - return msgSend(NS.Integer, self, "currentAllocatedSize") +Heap_currentAllocatedSize :: #force_inline proc(self: ^Heap) -> NS.UInteger { + return msgSend(NS.UInteger, self, "currentAllocatedSize") } @(objc_type=Heap, objc_name="device") Heap_device :: #force_inline proc(self: ^Heap) -> ^Heap { @@ -6763,15 +6833,15 @@ Heap_label :: #force_inline proc(self: ^Heap) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=Heap, objc_name="maxAvailableSizeWithAlignment") -Heap_maxAvailableSizeWithAlignment :: #force_inline proc(self: ^Heap, alignment: ^NS.Object) -> ^Heap { +Heap_maxAvailableSizeWithAlignment :: #force_inline proc(self: ^Heap, alignment: NS.UInteger) -> ^Heap { return msgSend(^Heap, self, "maxAvailableSizeWithAlignment:", alignment) } @(objc_type=Heap, objc_name="newBufferWithLength") -Heap_newBufferWithLength :: #force_inline proc(self: ^Heap, length: ^NS.Object, options: ResourceOptions) -> ^Heap { +Heap_newBufferWithLength :: #force_inline proc(self: ^Heap, length: NS.UInteger, options: ResourceOptions) -> ^Heap { return msgSend(^Heap, self, "newBufferWithLength:options:", length, options) } @(objc_type=Heap, objc_name="newBufferWithLength_options_offset_") -Heap_newBufferWithLength_options_offset_ :: #force_inline proc(self: ^Heap, length: ^NS.Object, options: ResourceOptions, offset: ^NS.Object) -> ^Heap { +Heap_newBufferWithLength_options_offset_ :: #force_inline proc(self: ^Heap, length: NS.UInteger, options: ResourceOptions, offset: NS.UInteger) -> ^Heap { return msgSend(^Heap, self, "newBufferWithLength:options:offset:", length, options, offset) } @(objc_type=Heap, objc_name="newTextureWithDescriptor") @@ -6779,7 +6849,7 @@ Heap_newTextureWithDescriptor :: #force_inline proc(self: ^Heap, desc: ^TextureD return msgSend(^Heap, self, "newTextureWithDescriptor:", desc) } @(objc_type=Heap, objc_name="newTextureWithDescriptor_offset_") -Heap_newTextureWithDescriptor_offset_ :: #force_inline proc(self: ^Heap, descriptor: ^TextureDescriptor, offset: ^NS.Object) -> ^Heap { +Heap_newTextureWithDescriptor_offset_ :: #force_inline proc(self: ^Heap, descriptor: ^TextureDescriptor, offset: NS.UInteger) -> ^Heap { return msgSend(^Heap, self, "newTextureWithDescriptor:offset:", descriptor, offset) } @(objc_type=Heap, objc_name="resourceOptions") @@ -6795,8 +6865,8 @@ Heap_setPurgeableState :: #force_inline proc(self: ^Heap, state: PurgeableState) return msgSend(PurgeableState, self, "setPurgeableState:", state) } @(objc_type=Heap, objc_name="size") -Heap_size :: #force_inline proc(self: ^Heap) -> NS.Integer { - return msgSend(NS.Integer, self, "size") +Heap_size :: #force_inline proc(self: ^Heap) -> NS.UInteger { + return msgSend(NS.UInteger, self, "size") } @(objc_type=Heap, objc_name="storageMode") Heap_storageMode :: #force_inline proc(self: ^Heap) -> StorageMode { @@ -6807,8 +6877,8 @@ Heap_type :: #force_inline proc(self: ^Heap) -> FunctionLogType { return msgSend(FunctionLogType, self, "type") } @(objc_type=Heap, objc_name="usedSize") -Heap_usedSize :: #force_inline proc(self: ^Heap) -> NS.Integer { - return msgSend(NS.Integer, self, "usedSize") +Heap_usedSize :: #force_inline proc(self: ^Heap) -> NS.UInteger { + return msgSend(NS.UInteger, self, "usedSize") } //////////////////////////////////////////////////////////////////////////////// @@ -6824,14 +6894,14 @@ Methods: size */ @(objc_class="MTLIndirectCommandBuffer") -IndirectCommandBuffer :: struct { using _: NS.Object } +IndirectCommandBuffer :: struct { using _: Resource } @(objc_type=IndirectCommandBuffer, objc_name="indirectComputeCommandAtIndex") -IndirectCommandBuffer_indirectComputeCommandAtIndex :: #force_inline proc(self: ^IndirectCommandBuffer, commandIndex: ^NS.Object) -> ^IndirectCommandBuffer { +IndirectCommandBuffer_indirectComputeCommandAtIndex :: #force_inline proc(self: ^IndirectCommandBuffer, commandIndex: NS.UInteger) -> ^IndirectCommandBuffer { return msgSend(^IndirectCommandBuffer, self, "indirectComputeCommandAtIndex:", commandIndex) } @(objc_type=IndirectCommandBuffer, objc_name="indirectRenderCommandAtIndex") -IndirectCommandBuffer_indirectRenderCommandAtIndex :: #force_inline proc(self: ^IndirectCommandBuffer, commandIndex: ^NS.Object) -> ^IndirectCommandBuffer { +IndirectCommandBuffer_indirectRenderCommandAtIndex :: #force_inline proc(self: ^IndirectCommandBuffer, commandIndex: NS.UInteger) -> ^IndirectCommandBuffer { return msgSend(^IndirectCommandBuffer, self, "indirectRenderCommandAtIndex:", commandIndex) } @(objc_type=IndirectCommandBuffer, objc_name="resetWithRange") @@ -6839,8 +6909,8 @@ IndirectCommandBuffer_resetWithRange :: #force_inline proc(self: ^IndirectComman msgSend(nil, self, "resetWithRange:", range) } @(objc_type=IndirectCommandBuffer, objc_name="size") -IndirectCommandBuffer_size :: #force_inline proc(self: ^IndirectCommandBuffer) -> NS.Integer { - return msgSend(NS.Integer, self, "size") +IndirectCommandBuffer_size :: #force_inline proc(self: ^IndirectCommandBuffer) -> NS.UInteger { + return msgSend(NS.UInteger, self, "size") } //////////////////////////////////////////////////////////////////////////////// @@ -6885,15 +6955,15 @@ IndirectComputeCommand_setBarrier :: #force_inline proc(self: ^IndirectComputeCo msgSend(nil, self, "setBarrier") } @(objc_type=IndirectComputeCommand, objc_name="setComputePipelineState") -IndirectComputeCommand_setComputePipelineState :: #force_inline proc(self: ^IndirectComputeCommand, pipelineState: ^NS.Object) { +IndirectComputeCommand_setComputePipelineState :: #force_inline proc(self: ^IndirectComputeCommand, pipelineState: ^ComputePipelineState) { msgSend(nil, self, "setComputePipelineState:", pipelineState) } @(objc_type=IndirectComputeCommand, objc_name="setImageblockWidth") -IndirectComputeCommand_setImageblockWidth :: #force_inline proc(self: ^IndirectComputeCommand, width: ^NS.Object, height: ^NS.Object) { +IndirectComputeCommand_setImageblockWidth :: #force_inline proc(self: ^IndirectComputeCommand, width: NS.UInteger, height: NS.UInteger) { msgSend(nil, self, "setImageblockWidth:height:", width, height) } @(objc_type=IndirectComputeCommand, objc_name="setKernelBuffer") -IndirectComputeCommand_setKernelBuffer :: #force_inline proc(self: ^IndirectComputeCommand, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +IndirectComputeCommand_setKernelBuffer :: #force_inline proc(self: ^IndirectComputeCommand, buffer: ^Buffer, offset: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setKernelBuffer:offset:atIndex:", buffer, offset, index) } @(objc_type=IndirectComputeCommand, objc_name="setStageInRegion") @@ -6901,7 +6971,7 @@ IndirectComputeCommand_setStageInRegion :: #force_inline proc(self: ^IndirectCom msgSend(nil, self, "setStageInRegion:", region) } @(objc_type=IndirectComputeCommand, objc_name="setThreadgroupMemoryLength") -IndirectComputeCommand_setThreadgroupMemoryLength :: #force_inline proc(self: ^IndirectComputeCommand, length: ^NS.Object, index: ^NS.Object) { +IndirectComputeCommand_setThreadgroupMemoryLength :: #force_inline proc(self: ^IndirectComputeCommand, length: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setThreadgroupMemoryLength:atIndex:", length, index) } @@ -6925,19 +6995,19 @@ Methods: IndirectRenderCommand :: struct { using _: NS.Object } @(objc_type=IndirectRenderCommand, objc_name="drawIndexedPatches") -IndirectRenderCommand_drawIndexedPatches :: #force_inline proc(self: ^IndirectRenderCommand, numberOfPatchControlPoints: ^NS.Object, patchStart: ^NS.Object, patchCount: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, controlPointIndexBuffer: ^NS.Object, controlPointIndexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object, buffer: ^NS.Object, offset: ^NS.Object, instanceStride: ^NS.Object) { +IndirectRenderCommand_drawIndexedPatches :: #force_inline proc(self: ^IndirectRenderCommand, numberOfPatchControlPoints: NS.UInteger, patchStart: NS.UInteger, patchCount: NS.UInteger, patchIndexBuffer: ^Buffer, patchIndexBufferOffset: NS.UInteger, controlPointIndexBuffer: ^Buffer, controlPointIndexBufferOffset: NS.UInteger, instanceCount: NS.UInteger, baseInstance: NS.UInteger, buffer: ^Buffer, offset: NS.UInteger, instanceStride: NS.UInteger) { msgSend(nil, self, "drawIndexedPatches:patchStart:patchCount:patchIndexBuffer:patchIndexBufferOffset:controlPointIndexBuffer:controlPointIndexBufferOffset:instanceCount:baseInstance:tessellationFactorBuffer:tessellationFactorBufferOffset:tessellationFactorBufferInstanceStride:", numberOfPatchControlPoints, patchStart, patchCount, patchIndexBuffer, patchIndexBufferOffset, controlPointIndexBuffer, controlPointIndexBufferOffset, instanceCount, baseInstance, buffer, offset, instanceStride) } @(objc_type=IndirectRenderCommand, objc_name="drawIndexedPrimitives") -IndirectRenderCommand_drawIndexedPrimitives :: #force_inline proc(self: ^IndirectRenderCommand, primitiveType: PrimitiveType, indexCount: ^NS.Object, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseVertex: ^NS.Object, baseInstance: ^NS.Object) { +IndirectRenderCommand_drawIndexedPrimitives :: #force_inline proc(self: ^IndirectRenderCommand, primitiveType: PrimitiveType, indexCount: NS.UInteger, indexType: IndexType, indexBuffer: ^Buffer, indexBufferOffset: NS.UInteger, instanceCount: NS.UInteger, baseVertex: NS.Integer, baseInstance: NS.UInteger) { msgSend(nil, self, "drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:instanceCount:baseVertex:baseInstance:", primitiveType, indexCount, indexType, indexBuffer, indexBufferOffset, instanceCount, baseVertex, baseInstance) } @(objc_type=IndirectRenderCommand, objc_name="drawPatches") -IndirectRenderCommand_drawPatches :: #force_inline proc(self: ^IndirectRenderCommand, numberOfPatchControlPoints: ^NS.Object, patchStart: ^NS.Object, patchCount: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object, buffer: ^NS.Object, offset: ^NS.Object, instanceStride: ^NS.Object) { +IndirectRenderCommand_drawPatches :: #force_inline proc(self: ^IndirectRenderCommand, numberOfPatchControlPoints: NS.UInteger, patchStart: NS.UInteger, patchCount: NS.UInteger, patchIndexBuffer: ^Buffer, patchIndexBufferOffset: NS.UInteger, instanceCount: NS.UInteger, baseInstance: NS.UInteger, buffer: ^Buffer, offset: NS.UInteger, instanceStride: NS.UInteger) { msgSend(nil, self, "drawPatches:patchStart:patchCount:patchIndexBuffer:patchIndexBufferOffset:instanceCount:baseInstance:tessellationFactorBuffer:tessellationFactorBufferOffset:tessellationFactorBufferInstanceStride:", numberOfPatchControlPoints, patchStart, patchCount, patchIndexBuffer, patchIndexBufferOffset, instanceCount, baseInstance, buffer, offset, instanceStride) } @(objc_type=IndirectRenderCommand, objc_name="drawPrimitives") -IndirectRenderCommand_drawPrimitives :: #force_inline proc(self: ^IndirectRenderCommand, primitiveType: PrimitiveType, vertexStart: ^NS.Object, vertexCount: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object) { +IndirectRenderCommand_drawPrimitives :: #force_inline proc(self: ^IndirectRenderCommand, primitiveType: PrimitiveType, vertexStart: NS.UInteger, vertexCount: NS.UInteger, instanceCount: NS.UInteger, baseInstance: NS.UInteger) { msgSend(nil, self, "drawPrimitives:vertexStart:vertexCount:instanceCount:baseInstance:", primitiveType, vertexStart, vertexCount, instanceCount, baseInstance) } @(objc_type=IndirectRenderCommand, objc_name="reset") @@ -6945,15 +7015,15 @@ IndirectRenderCommand_reset :: #force_inline proc(self: ^IndirectRenderCommand) msgSend(nil, self, "reset") } @(objc_type=IndirectRenderCommand, objc_name="setFragmentBuffer") -IndirectRenderCommand_setFragmentBuffer :: #force_inline proc(self: ^IndirectRenderCommand, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +IndirectRenderCommand_setFragmentBuffer :: #force_inline proc(self: ^IndirectRenderCommand, buffer: ^Buffer, offset: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setFragmentBuffer:offset:atIndex:", buffer, offset, index) } @(objc_type=IndirectRenderCommand, objc_name="setRenderPipelineState") -IndirectRenderCommand_setRenderPipelineState :: #force_inline proc(self: ^IndirectRenderCommand, pipelineState: ^NS.Object) { +IndirectRenderCommand_setRenderPipelineState :: #force_inline proc(self: ^IndirectRenderCommand, pipelineState: ^RenderPipelineState) { msgSend(nil, self, "setRenderPipelineState:", pipelineState) } @(objc_type=IndirectRenderCommand, objc_name="setVertexBuffer") -IndirectRenderCommand_setVertexBuffer :: #force_inline proc(self: ^IndirectRenderCommand, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +IndirectRenderCommand_setVertexBuffer :: #force_inline proc(self: ^IndirectRenderCommand, buffer: ^Buffer, offset: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setVertexBuffer:offset:atIndex:", buffer, offset, index) } @@ -6974,38 +7044,38 @@ Methods: setVisibleFunctionTables */ @(objc_class="MTLIntersectionFunctionTable") -IntersectionFunctionTable :: struct { using _: NS.Object } +IntersectionFunctionTable :: struct { using _: Resource } @(objc_type=IntersectionFunctionTable, objc_name="setBuffer") -IntersectionFunctionTable_setBuffer :: #force_inline proc(self: ^IntersectionFunctionTable, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +IntersectionFunctionTable_setBuffer :: #force_inline proc(self: ^IntersectionFunctionTable, buffer: ^Buffer, offset: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setBuffer:offset:atIndex:", buffer, offset, index) } @(objc_type=IntersectionFunctionTable, objc_name="setBuffers") -IntersectionFunctionTable_setBuffers :: #force_inline proc(self: ^IntersectionFunctionTable, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { +IntersectionFunctionTable_setBuffers :: #force_inline proc(self: ^IntersectionFunctionTable, buffers: [^]^Buffer, offsets: [^]NS.UInteger, range: NS.Range) { msgSend(nil, self, "setBuffers:offsets:withRange:", buffers, offsets, range) } @(objc_type=IntersectionFunctionTable, objc_name="setFunction") -IntersectionFunctionTable_setFunction :: #force_inline proc(self: ^IntersectionFunctionTable, function: ^NS.Object, index: ^NS.Object) { +IntersectionFunctionTable_setFunction :: #force_inline proc(self: ^IntersectionFunctionTable, function: ^FunctionHandle, index: NS.UInteger) { msgSend(nil, self, "setFunction:atIndex:", function, index) } @(objc_type=IntersectionFunctionTable, objc_name="setFunctions") -IntersectionFunctionTable_setFunctions :: #force_inline proc(self: ^IntersectionFunctionTable, functions: ^^NS.Object, range: NS.Range) { +IntersectionFunctionTable_setFunctions :: #force_inline proc(self: ^IntersectionFunctionTable, functions: [^]^FunctionHandle, range: NS.Range) { msgSend(nil, self, "setFunctions:withRange:", functions, range) } -@(objc_type=IntersectionFunctionTable, objc_name="setOpaqueTriangleIntersectionFunctionWithSignature_atIndex_") -IntersectionFunctionTable_setOpaqueTriangleIntersectionFunctionWithSignature_atIndex_ :: #force_inline proc(self: ^IntersectionFunctionTable, signature: IntersectionFunctionSignature, index: ^NS.Object) { +@(objc_type=IntersectionFunctionTable, objc_name="setOpaqueTriangleIntersectionFunctionWithSignatureAtIndex") +IntersectionFunctionTable_setOpaqueTriangleIntersectionFunctionWithSignatureAtIndex :: #force_inline proc(self: ^IntersectionFunctionTable, signature: IntersectionFunctionSignature, index: NS.UInteger) { msgSend(nil, self, "setOpaqueTriangleIntersectionFunctionWithSignature:atIndex:", signature, index) } -@(objc_type=IntersectionFunctionTable, objc_name="setOpaqueTriangleIntersectionFunctionWithSignature_withRange_") -IntersectionFunctionTable_setOpaqueTriangleIntersectionFunctionWithSignature_withRange_ :: #force_inline proc(self: ^IntersectionFunctionTable, signature: IntersectionFunctionSignature, range: NS.Range) { +@(objc_type=IntersectionFunctionTable, objc_name="setOpaqueTriangleIntersectionFunctionWithSignatureWithRange") +IntersectionFunctionTable_setOpaqueTriangleIntersectionFunctionWithSignatureWithRange :: #force_inline proc(self: ^IntersectionFunctionTable, signature: IntersectionFunctionSignature, range: NS.Range) { msgSend(nil, self, "setOpaqueTriangleIntersectionFunctionWithSignature:withRange:", signature, range) } @(objc_type=IntersectionFunctionTable, objc_name="setVisibleFunctionTable") -IntersectionFunctionTable_setVisibleFunctionTable :: #force_inline proc(self: ^IntersectionFunctionTable, visibleFunctionTable: ^NS.Object, bufferIndex: ^NS.Object) { +IntersectionFunctionTable_setVisibleFunctionTable :: #force_inline proc(self: ^IntersectionFunctionTable, visibleFunctionTable: ^VisibleFunctionTable, bufferIndex: NS.UInteger) { msgSend(nil, self, "setVisibleFunctionTable:atBufferIndex:", visibleFunctionTable, bufferIndex) } @(objc_type=IntersectionFunctionTable, objc_name="setVisibleFunctionTables") -IntersectionFunctionTable_setVisibleFunctionTables :: #force_inline proc(self: ^IntersectionFunctionTable, visibleFunctionTables: ^^NS.Object, range: NS.Range) { +IntersectionFunctionTable_setVisibleFunctionTables :: #force_inline proc(self: ^IntersectionFunctionTable, visibleFunctionTables: [^]^VisibleFunctionTable, range: NS.Range) { msgSend(nil, self, "setVisibleFunctionTables:withBufferRange:", visibleFunctionTables, range) } @@ -7054,8 +7124,9 @@ Library_newFunctionWithDescriptor_completionHandler_ :: #force_inline proc(self: msgSend(nil, self, "newFunctionWithDescriptor:completionHandler:", descriptor, completionHandler) } @(objc_type=Library, objc_name="newFunctionWithDescriptor_error_") -Library_newFunctionWithDescriptor_error_ :: #force_inline proc(self: ^Library, descriptor: ^FunctionDescriptor, error: ^^NS.Error ) -> ^Library { - return msgSend(^Library, self, "newFunctionWithDescriptor:error:", descriptor, error) +Library_newFunctionWithDescriptor_error_ :: #force_inline proc(self: ^Library, descriptor: ^FunctionDescriptor) -> (library: ^Library, error: ^NS.Error) { + library = msgSend(^Library, self, "newFunctionWithDescriptor:error:", descriptor, &error) + return } @(objc_type=Library, objc_name="newFunctionWithName") Library_newFunctionWithName :: #force_inline proc(self: ^Library, functionName: ^NS.String) -> ^Library { @@ -7066,16 +7137,18 @@ Library_newFunctionWithName_constantValues_completionHandler_ :: #force_inline p msgSend(nil, self, "newFunctionWithName:constantValues:completionHandler:", name, constantValues, completionHandler) } @(objc_type=Library, objc_name="newFunctionWithName_constantValues_error_") -Library_newFunctionWithName_constantValues_error_ :: #force_inline proc(self: ^Library, name: ^NS.String, constantValues: ^FunctionConstantValues, error: ^^NS.Error ) -> ^Library { - return msgSend(^Library, self, "newFunctionWithName:constantValues:error:", name, constantValues, error) +Library_newFunctionWithName_constantValues_error_ :: #force_inline proc(self: ^Library, name: ^NS.String, constantValues: ^FunctionConstantValues) -> (library: ^Library, error: ^NS.Error) { + library = msgSend(^Library, self, "newFunctionWithName:constantValues:error:", name, constantValues, &error) + return } @(objc_type=Library, objc_name="newIntersectionFunctionWithDescriptor_completionHandler_") Library_newIntersectionFunctionWithDescriptor_completionHandler_ :: #force_inline proc(self: ^Library, descriptor: ^IntersectionFunctionDescriptor, completionHandler: rawptr) { msgSend(nil, self, "newIntersectionFunctionWithDescriptor:completionHandler:", descriptor, completionHandler) } @(objc_type=Library, objc_name="newIntersectionFunctionWithDescriptor_error_") -Library_newIntersectionFunctionWithDescriptor_error_ :: #force_inline proc(self: ^Library, descriptor: ^IntersectionFunctionDescriptor, error: ^^NS.Error ) -> ^Library { - return msgSend(^Library, self, "newIntersectionFunctionWithDescriptor:error:", descriptor, error) +Library_newIntersectionFunctionWithDescriptor_error_ :: #force_inline proc(self: ^Library, descriptor: ^IntersectionFunctionDescriptor) -> (library: ^Library, error: ^NS.Error) { + library = msgSend(^Library, self, "newIntersectionFunctionWithDescriptor:error:", descriptor, &error) + return } @(objc_type=Library, objc_name="setLabel") Library_setLabel :: #force_inline proc(self: ^Library, label: ^NS.String) { @@ -7109,11 +7182,11 @@ ParallelRenderCommandEncoder_renderCommandEncoder :: #force_inline proc(self: ^P return msgSend(^ParallelRenderCommandEncoder, self, "renderCommandEncoder") } @(objc_type=ParallelRenderCommandEncoder, objc_name="setColorStoreAction") -ParallelRenderCommandEncoder_setColorStoreAction :: #force_inline proc(self: ^ParallelRenderCommandEncoder, storeAction: StoreAction, colorAttachmentIndex: ^NS.Object) { +ParallelRenderCommandEncoder_setColorStoreAction :: #force_inline proc(self: ^ParallelRenderCommandEncoder, storeAction: StoreAction, colorAttachmentIndex: NS.UInteger) { msgSend(nil, self, "setColorStoreAction:atIndex:", storeAction, colorAttachmentIndex) } @(objc_type=ParallelRenderCommandEncoder, objc_name="setColorStoreActionOptions") -ParallelRenderCommandEncoder_setColorStoreActionOptions :: #force_inline proc(self: ^ParallelRenderCommandEncoder, storeActionOptions: StoreActionOptions, colorAttachmentIndex: ^NS.Object) { +ParallelRenderCommandEncoder_setColorStoreActionOptions :: #force_inline proc(self: ^ParallelRenderCommandEncoder, storeActionOptions: StoreActionOptions, colorAttachmentIndex: NS.UInteger) { msgSend(nil, self, "setColorStoreActionOptions:atIndex:", storeActionOptions, colorAttachmentIndex) } @(objc_type=ParallelRenderCommandEncoder, objc_name="setDepthStoreAction") @@ -7155,7 +7228,7 @@ Methods: RasterizationRateMap :: struct { using _: NS.Object } @(objc_type=RasterizationRateMap, objc_name="copyParameterDataToBuffer") -RasterizationRateMap_copyParameterDataToBuffer :: #force_inline proc(self: ^RasterizationRateMap, buffer: ^NS.Object, offset: ^NS.Object) { +RasterizationRateMap_copyParameterDataToBuffer :: #force_inline proc(self: ^RasterizationRateMap, buffer: ^Buffer, offset: NS.UInteger) { msgSend(nil, self, "copyParameterDataToBuffer:offset:", buffer, offset) } @(objc_type=RasterizationRateMap, objc_name="device") @@ -7167,15 +7240,15 @@ RasterizationRateMap_label :: #force_inline proc(self: ^RasterizationRateMap) -> return msgSend(^NS.String, self, "label") } @(objc_type=RasterizationRateMap, objc_name="layerCount") -RasterizationRateMap_layerCount :: #force_inline proc(self: ^RasterizationRateMap) -> NS.Integer { - return msgSend(NS.Integer, self, "layerCount") +RasterizationRateMap_layerCount :: #force_inline proc(self: ^RasterizationRateMap) -> NS.UInteger { + return msgSend(NS.UInteger, self, "layerCount") } @(objc_type=RasterizationRateMap, objc_name="mapPhysicalToScreenCoordinates") -RasterizationRateMap_mapPhysicalToScreenCoordinates :: #force_inline proc(self: ^RasterizationRateMap, physicalCoordinates: Coordinate2D, layerIndex: ^NS.Object) -> Coordinate2D { +RasterizationRateMap_mapPhysicalToScreenCoordinates :: #force_inline proc(self: ^RasterizationRateMap, physicalCoordinates: Coordinate2D, layerIndex: NS.UInteger) -> Coordinate2D { return msgSend(Coordinate2D, self, "mapPhysicalToScreenCoordinates:forLayer:", physicalCoordinates, layerIndex) } @(objc_type=RasterizationRateMap, objc_name="mapScreenToPhysicalCoordinates") -RasterizationRateMap_mapScreenToPhysicalCoordinates :: #force_inline proc(self: ^RasterizationRateMap, screenCoordinates: Coordinate2D, layerIndex: ^NS.Object) -> Coordinate2D { +RasterizationRateMap_mapScreenToPhysicalCoordinates :: #force_inline proc(self: ^RasterizationRateMap, screenCoordinates: Coordinate2D, layerIndex: NS.UInteger) -> Coordinate2D { return msgSend(Coordinate2D, self, "mapScreenToPhysicalCoordinates:forLayer:", screenCoordinates, layerIndex) } @(objc_type=RasterizationRateMap, objc_name="parameterBufferSizeAndAlign") @@ -7187,7 +7260,7 @@ RasterizationRateMap_physicalGranularity :: #force_inline proc(self: ^Rasterizat return msgSend(Size, self, "physicalGranularity") } @(objc_type=RasterizationRateMap, objc_name="physicalSizeForLayer") -RasterizationRateMap_physicalSizeForLayer :: #force_inline proc(self: ^RasterizationRateMap, layerIndex: ^NS.Object) -> Size { +RasterizationRateMap_physicalSizeForLayer :: #force_inline proc(self: ^RasterizationRateMap, layerIndex: NS.UInteger) -> Size { return msgSend(Size, self, "physicalSizeForLayer:", layerIndex) } @(objc_type=RasterizationRateMap, objc_name="screenSize") @@ -7297,63 +7370,63 @@ RenderCommandEncoder_dispatchThreadsPerTile :: #force_inline proc(self: ^RenderC msgSend(nil, self, "dispatchThreadsPerTile:", threadsPerTile) } @(objc_type=RenderCommandEncoder, objc_name="drawIndexedPatches_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_indirectBuffer_indirectBufferOffset_") -RenderCommandEncoder_drawIndexedPatches_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, controlPointIndexBuffer: ^NS.Object, controlPointIndexBufferOffset: ^NS.Object, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { +RenderCommandEncoder_drawIndexedPatches_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: NS.UInteger, patchIndexBuffer: ^Buffer, patchIndexBufferOffset: NS.UInteger, controlPointIndexBuffer: ^Buffer, controlPointIndexBufferOffset: NS.UInteger, indirectBuffer: ^Buffer, indirectBufferOffset: NS.UInteger) { msgSend(nil, self, "drawIndexedPatches:patchIndexBuffer:patchIndexBufferOffset:controlPointIndexBuffer:controlPointIndexBufferOffset:indirectBuffer:indirectBufferOffset:", numberOfPatchControlPoints, patchIndexBuffer, patchIndexBufferOffset, controlPointIndexBuffer, controlPointIndexBufferOffset, indirectBuffer, indirectBufferOffset) } @(objc_type=RenderCommandEncoder, objc_name="drawIndexedPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_instanceCount_baseInstance_") -RenderCommandEncoder_drawIndexedPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_instanceCount_baseInstance_ :: #force_inline proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: ^NS.Object, patchStart: ^NS.Object, patchCount: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, controlPointIndexBuffer: ^NS.Object, controlPointIndexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object) { +RenderCommandEncoder_drawIndexedPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_instanceCount_baseInstance_ :: #force_inline proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: NS.UInteger, patchStart: NS.UInteger, patchCount: NS.UInteger, patchIndexBuffer: ^Buffer, patchIndexBufferOffset: NS.UInteger, controlPointIndexBuffer: ^Buffer, controlPointIndexBufferOffset: NS.UInteger, instanceCount: NS.UInteger, baseInstance: NS.UInteger) { msgSend(nil, self, "drawIndexedPatches:patchStart:patchCount:patchIndexBuffer:patchIndexBufferOffset:controlPointIndexBuffer:controlPointIndexBufferOffset:instanceCount:baseInstance:", numberOfPatchControlPoints, patchStart, patchCount, patchIndexBuffer, patchIndexBufferOffset, controlPointIndexBuffer, controlPointIndexBufferOffset, instanceCount, baseInstance) } @(objc_type=RenderCommandEncoder, objc_name="drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_") -RenderCommandEncoder_drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexCount: ^NS.Object, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object) { +RenderCommandEncoder_drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexCount: NS.UInteger, indexType: IndexType, indexBuffer: ^Buffer, indexBufferOffset: NS.UInteger) { msgSend(nil, self, "drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:", primitiveType, indexCount, indexType, indexBuffer, indexBufferOffset) } @(objc_type=RenderCommandEncoder, objc_name="drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_") -RenderCommandEncoder_drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexCount: ^NS.Object, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object, instanceCount: ^NS.Object) { +RenderCommandEncoder_drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexCount: NS.UInteger, indexType: IndexType, indexBuffer: ^Buffer, indexBufferOffset: NS.UInteger, instanceCount: NS.UInteger) { msgSend(nil, self, "drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:instanceCount:", primitiveType, indexCount, indexType, indexBuffer, indexBufferOffset, instanceCount) } @(objc_type=RenderCommandEncoder, objc_name="drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_baseVertex_baseInstance_") -RenderCommandEncoder_drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_baseVertex_baseInstance_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexCount: ^NS.Object, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseVertex: ^NS.Object, baseInstance: ^NS.Object) { +RenderCommandEncoder_drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_baseVertex_baseInstance_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexCount: NS.UInteger, indexType: IndexType, indexBuffer: ^Buffer, indexBufferOffset: NS.UInteger, instanceCount: NS.UInteger, baseVertex: NS.Integer, baseInstance: NS.UInteger) { msgSend(nil, self, "drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:instanceCount:baseVertex:baseInstance:", primitiveType, indexCount, indexType, indexBuffer, indexBufferOffset, instanceCount, baseVertex, baseInstance) } @(objc_type=RenderCommandEncoder, objc_name="drawIndexedPrimitives_indexType_indexBuffer_indexBufferOffset_indirectBuffer_indirectBufferOffset_") -RenderCommandEncoder_drawIndexedPrimitives_indexType_indexBuffer_indexBufferOffset_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexType: IndexType, indexBuffer: ^NS.Object, indexBufferOffset: ^NS.Object, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { +RenderCommandEncoder_drawIndexedPrimitives_indexType_indexBuffer_indexBufferOffset_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indexType: IndexType, indexBuffer: ^Buffer, indexBufferOffset: NS.UInteger, indirectBuffer: ^Buffer, indirectBufferOffset: NS.UInteger) { msgSend(nil, self, "drawIndexedPrimitives:indexType:indexBuffer:indexBufferOffset:indirectBuffer:indirectBufferOffset:", primitiveType, indexType, indexBuffer, indexBufferOffset, indirectBuffer, indirectBufferOffset) } @(objc_type=RenderCommandEncoder, objc_name="drawPatches_patchIndexBuffer_patchIndexBufferOffset_indirectBuffer_indirectBufferOffset_") -RenderCommandEncoder_drawPatches_patchIndexBuffer_patchIndexBufferOffset_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { +RenderCommandEncoder_drawPatches_patchIndexBuffer_patchIndexBufferOffset_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: NS.UInteger, patchIndexBuffer: ^Buffer, patchIndexBufferOffset: NS.UInteger, indirectBuffer: ^Buffer, indirectBufferOffset: NS.UInteger) { msgSend(nil, self, "drawPatches:patchIndexBuffer:patchIndexBufferOffset:indirectBuffer:indirectBufferOffset:", numberOfPatchControlPoints, patchIndexBuffer, patchIndexBufferOffset, indirectBuffer, indirectBufferOffset) } @(objc_type=RenderCommandEncoder, objc_name="drawPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_instanceCount_baseInstance_") -RenderCommandEncoder_drawPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_instanceCount_baseInstance_ :: #force_inline proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: ^NS.Object, patchStart: ^NS.Object, patchCount: ^NS.Object, patchIndexBuffer: ^NS.Object, patchIndexBufferOffset: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object) { +RenderCommandEncoder_drawPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_instanceCount_baseInstance_ :: #force_inline proc(self: ^RenderCommandEncoder, numberOfPatchControlPoints: NS.UInteger, patchStart: NS.UInteger, patchCount: NS.UInteger, patchIndexBuffer: ^Buffer, patchIndexBufferOffset: NS.UInteger, instanceCount: NS.UInteger, baseInstance: NS.UInteger) { msgSend(nil, self, "drawPatches:patchStart:patchCount:patchIndexBuffer:patchIndexBufferOffset:instanceCount:baseInstance:", numberOfPatchControlPoints, patchStart, patchCount, patchIndexBuffer, patchIndexBufferOffset, instanceCount, baseInstance) } @(objc_type=RenderCommandEncoder, objc_name="drawPrimitives_indirectBuffer_indirectBufferOffset_") -RenderCommandEncoder_drawPrimitives_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { +RenderCommandEncoder_drawPrimitives_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, indirectBuffer: ^Buffer, indirectBufferOffset: NS.UInteger) { msgSend(nil, self, "drawPrimitives:indirectBuffer:indirectBufferOffset:", primitiveType, indirectBuffer, indirectBufferOffset) } @(objc_type=RenderCommandEncoder, objc_name="drawPrimitives_vertexStart_vertexCount_") -RenderCommandEncoder_drawPrimitives_vertexStart_vertexCount_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, vertexStart: ^NS.Object, vertexCount: ^NS.Object) { +RenderCommandEncoder_drawPrimitives_vertexStart_vertexCount_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, vertexStart: NS.UInteger, vertexCount: NS.UInteger) { msgSend(nil, self, "drawPrimitives:vertexStart:vertexCount:", primitiveType, vertexStart, vertexCount) } @(objc_type=RenderCommandEncoder, objc_name="drawPrimitives_vertexStart_vertexCount_instanceCount_") -RenderCommandEncoder_drawPrimitives_vertexStart_vertexCount_instanceCount_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, vertexStart: ^NS.Object, vertexCount: ^NS.Object, instanceCount: ^NS.Object) { +RenderCommandEncoder_drawPrimitives_vertexStart_vertexCount_instanceCount_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, vertexStart: NS.UInteger, vertexCount: NS.UInteger, instanceCount: NS.UInteger) { msgSend(nil, self, "drawPrimitives:vertexStart:vertexCount:instanceCount:", primitiveType, vertexStart, vertexCount, instanceCount) } @(objc_type=RenderCommandEncoder, objc_name="drawPrimitives_vertexStart_vertexCount_instanceCount_baseInstance_") -RenderCommandEncoder_drawPrimitives_vertexStart_vertexCount_instanceCount_baseInstance_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, vertexStart: ^NS.Object, vertexCount: ^NS.Object, instanceCount: ^NS.Object, baseInstance: ^NS.Object) { +RenderCommandEncoder_drawPrimitives_vertexStart_vertexCount_instanceCount_baseInstance_ :: #force_inline proc(self: ^RenderCommandEncoder, primitiveType: PrimitiveType, vertexStart: NS.UInteger, vertexCount: NS.UInteger, instanceCount: NS.UInteger, baseInstance: NS.UInteger) { msgSend(nil, self, "drawPrimitives:vertexStart:vertexCount:instanceCount:baseInstance:", primitiveType, vertexStart, vertexCount, instanceCount, baseInstance) } -@(objc_type=RenderCommandEncoder, objc_name="executeCommandsInBuffer_indirectBuffer_indirectBufferOffset_") -RenderCommandEncoder_executeCommandsInBuffer_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^RenderCommandEncoder, indirectCommandbuffer: ^NS.Object, indirectRangeBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { +@(objc_type=RenderCommandEncoder, objc_name="executeCommandsInBuffer") +RenderCommandEncoder_executeCommandsInBuffer :: #force_inline proc(self: ^RenderCommandEncoder, indirectCommandbuffer: ^Buffer, indirectRangeBuffer: ^Buffer, indirectBufferOffset: NS.UInteger) { msgSend(nil, self, "executeCommandsInBuffer:indirectBuffer:indirectBufferOffset:", indirectCommandbuffer, indirectRangeBuffer, indirectBufferOffset) } -@(objc_type=RenderCommandEncoder, objc_name="executeCommandsInBuffer_withRange_") -RenderCommandEncoder_executeCommandsInBuffer_withRange_ :: #force_inline proc(self: ^RenderCommandEncoder, indirectCommandBuffer: ^NS.Object, executionRange: NS.Range) { +@(objc_type=RenderCommandEncoder, objc_name="executeCommandsInBufferWithRange") +RenderCommandEncoder_executeCommandsInBufferWithRange :: #force_inline proc(self: ^RenderCommandEncoder, indirectCommandBuffer: ^Buffer, executionRange: NS.Range) { msgSend(nil, self, "executeCommandsInBuffer:withRange:", indirectCommandBuffer, executionRange) } @(objc_type=RenderCommandEncoder, objc_name="memoryBarrierWithResources") -RenderCommandEncoder_memoryBarrierWithResources :: #force_inline proc(self: ^RenderCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, after: RenderStages, before: RenderStages) { +RenderCommandEncoder_memoryBarrierWithResources :: #force_inline proc(self: ^RenderCommandEncoder, resources: [^]^Resource, count: NS.UInteger, after: RenderStages, before: RenderStages) { msgSend(nil, self, "memoryBarrierWithResources:count:afterStages:beforeStages:", resources, count, after, before) } @(objc_type=RenderCommandEncoder, objc_name="memoryBarrierWithScope") @@ -7361,7 +7434,7 @@ RenderCommandEncoder_memoryBarrierWithScope :: #force_inline proc(self: ^RenderC msgSend(nil, self, "memoryBarrierWithScope:afterStages:beforeStages:", scope, after, before) } @(objc_type=RenderCommandEncoder, objc_name="sampleCountersInBuffer") -RenderCommandEncoder_sampleCountersInBuffer :: #force_inline proc(self: ^RenderCommandEncoder, sampleBuffer: ^NS.Object, sampleIndex: ^NS.Object, barrier: BOOL) { +RenderCommandEncoder_sampleCountersInBuffer :: #force_inline proc(self: ^RenderCommandEncoder, sampleBuffer: ^Buffer, sampleIndex: NS.UInteger, barrier: BOOL) { msgSend(nil, self, "sampleCountersInBuffer:atSampleIndex:withBarrier:", sampleBuffer, sampleIndex, barrier) } @(objc_type=RenderCommandEncoder, objc_name="setBlendColorRed") @@ -7369,11 +7442,11 @@ RenderCommandEncoder_setBlendColorRed :: #force_inline proc(self: ^RenderCommand msgSend(nil, self, "setBlendColorRed:green:blue:alpha:", red, green, blue, alpha) } @(objc_type=RenderCommandEncoder, objc_name="setColorStoreAction") -RenderCommandEncoder_setColorStoreAction :: #force_inline proc(self: ^RenderCommandEncoder, storeAction: StoreAction, colorAttachmentIndex: ^NS.Object) { +RenderCommandEncoder_setColorStoreAction :: #force_inline proc(self: ^RenderCommandEncoder, storeAction: StoreAction, colorAttachmentIndex: NS.UInteger) { msgSend(nil, self, "setColorStoreAction:atIndex:", storeAction, colorAttachmentIndex) } @(objc_type=RenderCommandEncoder, objc_name="setColorStoreActionOptions") -RenderCommandEncoder_setColorStoreActionOptions :: #force_inline proc(self: ^RenderCommandEncoder, storeActionOptions: StoreActionOptions, colorAttachmentIndex: ^NS.Object) { +RenderCommandEncoder_setColorStoreActionOptions :: #force_inline proc(self: ^RenderCommandEncoder, storeActionOptions: StoreActionOptions, colorAttachmentIndex: NS.UInteger) { msgSend(nil, self, "setColorStoreActionOptions:atIndex:", storeActionOptions, colorAttachmentIndex) } @(objc_type=RenderCommandEncoder, objc_name="setCullMode") @@ -7389,7 +7462,7 @@ RenderCommandEncoder_setDepthClipMode :: #force_inline proc(self: ^RenderCommand msgSend(nil, self, "setDepthClipMode:", depthClipMode) } @(objc_type=RenderCommandEncoder, objc_name="setDepthStencilState") -RenderCommandEncoder_setDepthStencilState :: #force_inline proc(self: ^RenderCommandEncoder, depthStencilState: ^NS.Object) { +RenderCommandEncoder_setDepthStencilState :: #force_inline proc(self: ^RenderCommandEncoder, depthStencilState: ^DepthStencilState) { msgSend(nil, self, "setDepthStencilState:", depthStencilState) } @(objc_type=RenderCommandEncoder, objc_name="setDepthStoreAction") @@ -7401,43 +7474,43 @@ RenderCommandEncoder_setDepthStoreActionOptions :: #force_inline proc(self: ^Ren msgSend(nil, self, "setDepthStoreActionOptions:", storeActionOptions) } @(objc_type=RenderCommandEncoder, objc_name="setFragmentBuffer") -RenderCommandEncoder_setFragmentBuffer :: #force_inline proc(self: ^RenderCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setFragmentBuffer :: #force_inline proc(self: ^RenderCommandEncoder, buffer: ^Buffer, offset: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setFragmentBuffer:offset:atIndex:", buffer, offset, index) } @(objc_type=RenderCommandEncoder, objc_name="setFragmentBufferOffset") -RenderCommandEncoder_setFragmentBufferOffset :: #force_inline proc(self: ^RenderCommandEncoder, offset: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setFragmentBufferOffset :: #force_inline proc(self: ^RenderCommandEncoder, offset: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setFragmentBufferOffset:atIndex:", offset, index) } @(objc_type=RenderCommandEncoder, objc_name="setFragmentBuffers") -RenderCommandEncoder_setFragmentBuffers :: #force_inline proc(self: ^RenderCommandEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { +RenderCommandEncoder_setFragmentBuffers :: #force_inline proc(self: ^RenderCommandEncoder, buffers: [^]^Buffer, offsets: [^]NS.UInteger, range: NS.Range) { msgSend(nil, self, "setFragmentBuffers:offsets:withRange:", buffers, offsets, range) } @(objc_type=RenderCommandEncoder, objc_name="setFragmentBytes") -RenderCommandEncoder_setFragmentBytes :: #force_inline proc(self: ^RenderCommandEncoder, bytes: rawptr, length: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setFragmentBytes :: #force_inline proc(self: ^RenderCommandEncoder, bytes: rawptr, length: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setFragmentBytes:length:atIndex:", bytes, length, index) } -@(objc_type=RenderCommandEncoder, objc_name="setFragmentSamplerState_atIndex_") -RenderCommandEncoder_setFragmentSamplerState_atIndex_ :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, index: ^NS.Object) { +@(objc_type=RenderCommandEncoder, objc_name="setFragmentSamplerStateAtIndex") +RenderCommandEncoder_setFragmentSamplerStateAtIndex :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^SamplerState, index: NS.UInteger) { msgSend(nil, self, "setFragmentSamplerState:atIndex:", sampler, index) } -@(objc_type=RenderCommandEncoder, objc_name="setFragmentSamplerState_lodMinClamp_lodMaxClamp_atIndex_") -RenderCommandEncoder_setFragmentSamplerState_lodMinClamp_lodMaxClamp_atIndex_ :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, lodMinClamp: f32, lodMaxClamp: f32, index: ^NS.Object) { +@(objc_type=RenderCommandEncoder, objc_name="setFragmentSamplerState_lodMinClamp_lodMaxClampAtIndex") +RenderCommandEncoder_setFragmentSamplerState_lodMinClamp_lodMaxClampAtIndex :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^SamplerState, lodMinClamp: f32, lodMaxClamp: f32, index: NS.UInteger) { msgSend(nil, self, "setFragmentSamplerState:lodMinClamp:lodMaxClamp:atIndex:", sampler, lodMinClamp, lodMaxClamp, index) } -@(objc_type=RenderCommandEncoder, objc_name="setFragmentSamplerStates_lodMinClamps_lodMaxClamps_withRange_") -RenderCommandEncoder_setFragmentSamplerStates_lodMinClamps_lodMaxClamps_withRange_ :: #force_inline proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { +@(objc_type=RenderCommandEncoder, objc_name="setFragmentSamplerStates_lodMinClamps_lodMaxClampsWithRange") +RenderCommandEncoder_setFragmentSamplerStates_lodMinClamps_lodMaxClampsWithRange :: #force_inline proc(self: ^RenderCommandEncoder, samplers: [^]^SamplerState, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { msgSend(nil, self, "setFragmentSamplerStates:lodMinClamps:lodMaxClamps:withRange:", samplers, lodMinClamps, lodMaxClamps, range) } -@(objc_type=RenderCommandEncoder, objc_name="setFragmentSamplerStates_withRange_") -RenderCommandEncoder_setFragmentSamplerStates_withRange_ :: #force_inline proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, range: NS.Range) { +@(objc_type=RenderCommandEncoder, objc_name="setFragmentSamplerStatesWithRange") +RenderCommandEncoder_setFragmentSamplerStatesWithRange :: #force_inline proc(self: ^RenderCommandEncoder, samplers: [^]^SamplerState, range: NS.Range) { msgSend(nil, self, "setFragmentSamplerStates:withRange:", samplers, range) } @(objc_type=RenderCommandEncoder, objc_name="setFragmentTexture") -RenderCommandEncoder_setFragmentTexture :: #force_inline proc(self: ^RenderCommandEncoder, texture: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setFragmentTexture :: #force_inline proc(self: ^RenderCommandEncoder, texture: ^Texture, index: NS.UInteger) { msgSend(nil, self, "setFragmentTexture:atIndex:", texture, index) } @(objc_type=RenderCommandEncoder, objc_name="setFragmentTextures") -RenderCommandEncoder_setFragmentTextures :: #force_inline proc(self: ^RenderCommandEncoder, textures: ^^NS.Object, range: NS.Range) { +RenderCommandEncoder_setFragmentTextures :: #force_inline proc(self: ^RenderCommandEncoder, textures: [^]^Texture, range: NS.Range) { msgSend(nil, self, "setFragmentTextures:withRange:", textures, range) } @(objc_type=RenderCommandEncoder, objc_name="setFrontFacingWinding") @@ -7445,7 +7518,7 @@ RenderCommandEncoder_setFrontFacingWinding :: #force_inline proc(self: ^RenderCo msgSend(nil, self, "setFrontFacingWinding:", frontFacingWinding) } @(objc_type=RenderCommandEncoder, objc_name="setRenderPipelineState") -RenderCommandEncoder_setRenderPipelineState :: #force_inline proc(self: ^RenderCommandEncoder, pipelineState: ^NS.Object) { +RenderCommandEncoder_setRenderPipelineState :: #force_inline proc(self: ^RenderCommandEncoder, pipelineState: ^RenderPipelineState) { msgSend(nil, self, "setRenderPipelineState:", pipelineState) } @(objc_type=RenderCommandEncoder, objc_name="setScissorRect") @@ -7453,7 +7526,7 @@ RenderCommandEncoder_setScissorRect :: #force_inline proc(self: ^RenderCommandEn msgSend(nil, self, "setScissorRect:", rect) } @(objc_type=RenderCommandEncoder, objc_name="setScissorRects") -RenderCommandEncoder_setScissorRects :: #force_inline proc(self: ^RenderCommandEncoder, scissorRects: ^ScissorRect, count: ^NS.Object) { +RenderCommandEncoder_setScissorRects :: #force_inline proc(self: ^RenderCommandEncoder, scissorRects: ^ScissorRect, count: NS.UInteger) { msgSend(nil, self, "setScissorRects:count:", scissorRects, count) } @(objc_type=RenderCommandEncoder, objc_name="setStencilFrontReferenceValue") @@ -7473,7 +7546,7 @@ RenderCommandEncoder_setStencilStoreActionOptions :: #force_inline proc(self: ^R msgSend(nil, self, "setStencilStoreActionOptions:", storeActionOptions) } @(objc_type=RenderCommandEncoder, objc_name="setTessellationFactorBuffer") -RenderCommandEncoder_setTessellationFactorBuffer :: #force_inline proc(self: ^RenderCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, instanceStride: ^NS.Object) { +RenderCommandEncoder_setTessellationFactorBuffer :: #force_inline proc(self: ^RenderCommandEncoder, buffer: ^Buffer, offset: NS.UInteger, instanceStride: NS.UInteger) { msgSend(nil, self, "setTessellationFactorBuffer:offset:instanceStride:", buffer, offset, instanceStride) } @(objc_type=RenderCommandEncoder, objc_name="setTessellationFactorScale") @@ -7481,47 +7554,47 @@ RenderCommandEncoder_setTessellationFactorScale :: #force_inline proc(self: ^Ren msgSend(nil, self, "setTessellationFactorScale:", scale) } @(objc_type=RenderCommandEncoder, objc_name="setThreadgroupMemoryLength") -RenderCommandEncoder_setThreadgroupMemoryLength :: #force_inline proc(self: ^RenderCommandEncoder, length: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setThreadgroupMemoryLength :: #force_inline proc(self: ^RenderCommandEncoder, length: NS.UInteger, offset: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setThreadgroupMemoryLength:offset:atIndex:", length, offset, index) } @(objc_type=RenderCommandEncoder, objc_name="setTileBuffer") -RenderCommandEncoder_setTileBuffer :: #force_inline proc(self: ^RenderCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setTileBuffer :: #force_inline proc(self: ^RenderCommandEncoder, buffer: ^Buffer, offset: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setTileBuffer:offset:atIndex:", buffer, offset, index) } @(objc_type=RenderCommandEncoder, objc_name="setTileBufferOffset") -RenderCommandEncoder_setTileBufferOffset :: #force_inline proc(self: ^RenderCommandEncoder, offset: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setTileBufferOffset :: #force_inline proc(self: ^RenderCommandEncoder, offset: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setTileBufferOffset:atIndex:", offset, index) } @(objc_type=RenderCommandEncoder, objc_name="setTileBuffers") -RenderCommandEncoder_setTileBuffers :: #force_inline proc(self: ^RenderCommandEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { +RenderCommandEncoder_setTileBuffers :: #force_inline proc(self: ^RenderCommandEncoder, buffers: [^]^Buffer, offsets: [^]NS.UInteger, range: NS.Range) { msgSend(nil, self, "setTileBuffers:offsets:withRange:", buffers, offsets, range) } @(objc_type=RenderCommandEncoder, objc_name="setTileBytes") -RenderCommandEncoder_setTileBytes :: #force_inline proc(self: ^RenderCommandEncoder, bytes: rawptr, length: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setTileBytes :: #force_inline proc(self: ^RenderCommandEncoder, bytes: rawptr, length: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setTileBytes:length:atIndex:", bytes, length, index) } -@(objc_type=RenderCommandEncoder, objc_name="setTileSamplerState_atIndex_") -RenderCommandEncoder_setTileSamplerState_atIndex_ :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, index: ^NS.Object) { +@(objc_type=RenderCommandEncoder, objc_name="setTileSamplerStateAtIndex") +RenderCommandEncoder_setTileSamplerStateAtIndex :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^SamplerState, index: NS.UInteger) { msgSend(nil, self, "setTileSamplerState:atIndex:", sampler, index) } -@(objc_type=RenderCommandEncoder, objc_name="setTileSamplerState_lodMinClamp_lodMaxClamp_atIndex_") -RenderCommandEncoder_setTileSamplerState_lodMinClamp_lodMaxClamp_atIndex_ :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, lodMinClamp: f32, lodMaxClamp: f32, index: ^NS.Object) { +@(objc_type=RenderCommandEncoder, objc_name="setTileSamplerState_lodMinClamp_lodMaxClampAtIndex") +RenderCommandEncoder_setTileSamplerState_lodMinClamp_lodMaxClampAtIndex :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^SamplerState, lodMinClamp: f32, lodMaxClamp: f32, index: NS.UInteger) { msgSend(nil, self, "setTileSamplerState:lodMinClamp:lodMaxClamp:atIndex:", sampler, lodMinClamp, lodMaxClamp, index) } -@(objc_type=RenderCommandEncoder, objc_name="setTileSamplerStates_lodMinClamps_lodMaxClamps_withRange_") -RenderCommandEncoder_setTileSamplerStates_lodMinClamps_lodMaxClamps_withRange_ :: #force_inline proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { +@(objc_type=RenderCommandEncoder, objc_name="setTileSamplerStates_lodMinClamps_lodMaxClampsWithRange") +RenderCommandEncoder_setTileSamplerStates_lodMinClamps_lodMaxClampsWithRange :: #force_inline proc(self: ^RenderCommandEncoder, samplers: [^]^SamplerState, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { msgSend(nil, self, "setTileSamplerStates:lodMinClamps:lodMaxClamps:withRange:", samplers, lodMinClamps, lodMaxClamps, range) } -@(objc_type=RenderCommandEncoder, objc_name="setTileSamplerStates_withRange_") -RenderCommandEncoder_setTileSamplerStates_withRange_ :: #force_inline proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, range: NS.Range) { +@(objc_type=RenderCommandEncoder, objc_name="setTileSamplerStatesWithRange") +RenderCommandEncoder_setTileSamplerStatesWithRange :: #force_inline proc(self: ^RenderCommandEncoder, samplers: [^]^SamplerState, range: NS.Range) { msgSend(nil, self, "setTileSamplerStates:withRange:", samplers, range) } @(objc_type=RenderCommandEncoder, objc_name="setTileTexture") -RenderCommandEncoder_setTileTexture :: #force_inline proc(self: ^RenderCommandEncoder, texture: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setTileTexture :: #force_inline proc(self: ^RenderCommandEncoder, texture: ^Texture, index: NS.UInteger) { msgSend(nil, self, "setTileTexture:atIndex:", texture, index) } @(objc_type=RenderCommandEncoder, objc_name="setTileTextures") -RenderCommandEncoder_setTileTextures :: #force_inline proc(self: ^RenderCommandEncoder, textures: ^^NS.Object, range: NS.Range) { +RenderCommandEncoder_setTileTextures :: #force_inline proc(self: ^RenderCommandEncoder, textures: [^]^Texture, range: NS.Range) { msgSend(nil, self, "setTileTextures:withRange:", textures, range) } @(objc_type=RenderCommandEncoder, objc_name="setTriangleFillMode") @@ -7529,47 +7602,47 @@ RenderCommandEncoder_setTriangleFillMode :: #force_inline proc(self: ^RenderComm msgSend(nil, self, "setTriangleFillMode:", fillMode) } @(objc_type=RenderCommandEncoder, objc_name="setVertexAmplificationCount") -RenderCommandEncoder_setVertexAmplificationCount :: #force_inline proc(self: ^RenderCommandEncoder, count: ^NS.Object, viewMappings: ^VertexAmplificationViewMapping) { +RenderCommandEncoder_setVertexAmplificationCount :: #force_inline proc(self: ^RenderCommandEncoder, count: NS.UInteger, viewMappings: ^VertexAmplificationViewMapping) { msgSend(nil, self, "setVertexAmplificationCount:viewMappings:", count, viewMappings) } @(objc_type=RenderCommandEncoder, objc_name="setVertexBuffer") -RenderCommandEncoder_setVertexBuffer :: #force_inline proc(self: ^RenderCommandEncoder, buffer: ^NS.Object, offset: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setVertexBuffer :: #force_inline proc(self: ^RenderCommandEncoder, buffer: ^Buffer, offset: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setVertexBuffer:offset:atIndex:", buffer, offset, index) } @(objc_type=RenderCommandEncoder, objc_name="setVertexBufferOffset") -RenderCommandEncoder_setVertexBufferOffset :: #force_inline proc(self: ^RenderCommandEncoder, offset: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setVertexBufferOffset :: #force_inline proc(self: ^RenderCommandEncoder, offset: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setVertexBufferOffset:atIndex:", offset, index) } @(objc_type=RenderCommandEncoder, objc_name="setVertexBuffers") -RenderCommandEncoder_setVertexBuffers :: #force_inline proc(self: ^RenderCommandEncoder, buffers: ^^NS.Object, offsets: NS.Integer, range: NS.Range) { +RenderCommandEncoder_setVertexBuffers :: #force_inline proc(self: ^RenderCommandEncoder, buffers: [^]^Buffer, offsets: [^]NS.UInteger, range: NS.Range) { msgSend(nil, self, "setVertexBuffers:offsets:withRange:", buffers, offsets, range) } @(objc_type=RenderCommandEncoder, objc_name="setVertexBytes") -RenderCommandEncoder_setVertexBytes :: #force_inline proc(self: ^RenderCommandEncoder, bytes: rawptr, length: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setVertexBytes :: #force_inline proc(self: ^RenderCommandEncoder, bytes: rawptr, length: NS.UInteger, index: NS.UInteger) { msgSend(nil, self, "setVertexBytes:length:atIndex:", bytes, length, index) } -@(objc_type=RenderCommandEncoder, objc_name="setVertexSamplerState_atIndex_") -RenderCommandEncoder_setVertexSamplerState_atIndex_ :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, index: ^NS.Object) { +@(objc_type=RenderCommandEncoder, objc_name="setVertexSamplerStateAtIndex") +RenderCommandEncoder_setVertexSamplerStateAtIndex :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^SamplerState, index: NS.UInteger) { msgSend(nil, self, "setVertexSamplerState:atIndex:", sampler, index) } -@(objc_type=RenderCommandEncoder, objc_name="setVertexSamplerState_lodMinClamp_lodMaxClamp_atIndex_") -RenderCommandEncoder_setVertexSamplerState_lodMinClamp_lodMaxClamp_atIndex_ :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^NS.Object, lodMinClamp: f32, lodMaxClamp: f32, index: ^NS.Object) { +@(objc_type=RenderCommandEncoder, objc_name="setVertexSamplerState_lodMinClamp_lodMaxClampAtIndex") +RenderCommandEncoder_setVertexSamplerState_lodMinClamp_lodMaxClampAtIndex :: #force_inline proc(self: ^RenderCommandEncoder, sampler: ^SamplerState, lodMinClamp: f32, lodMaxClamp: f32, index: NS.UInteger) { msgSend(nil, self, "setVertexSamplerState:lodMinClamp:lodMaxClamp:atIndex:", sampler, lodMinClamp, lodMaxClamp, index) } -@(objc_type=RenderCommandEncoder, objc_name="setVertexSamplerStates_lodMinClamps_lodMaxClamps_withRange_") -RenderCommandEncoder_setVertexSamplerStates_lodMinClamps_lodMaxClamps_withRange_ :: #force_inline proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { +@(objc_type=RenderCommandEncoder, objc_name="setVertexSamplerStates_lodMinClamps_lodMaxClampsWithRange") +RenderCommandEncoder_setVertexSamplerStates_lodMinClamps_lodMaxClampsWithRange :: #force_inline proc(self: ^RenderCommandEncoder, samplers: [^]^SamplerState, lodMinClamps: ^f32, lodMaxClamps: ^f32, range: NS.Range) { msgSend(nil, self, "setVertexSamplerStates:lodMinClamps:lodMaxClamps:withRange:", samplers, lodMinClamps, lodMaxClamps, range) } -@(objc_type=RenderCommandEncoder, objc_name="setVertexSamplerStates_withRange_") -RenderCommandEncoder_setVertexSamplerStates_withRange_ :: #force_inline proc(self: ^RenderCommandEncoder, samplers: ^^NS.Object, range: NS.Range) { +@(objc_type=RenderCommandEncoder, objc_name="setVertexSamplerStatesWithRange") +RenderCommandEncoder_setVertexSamplerStatesWithRange :: #force_inline proc(self: ^RenderCommandEncoder, samplers: [^]^SamplerState, range: NS.Range) { msgSend(nil, self, "setVertexSamplerStates:withRange:", samplers, range) } @(objc_type=RenderCommandEncoder, objc_name="setVertexTexture") -RenderCommandEncoder_setVertexTexture :: #force_inline proc(self: ^RenderCommandEncoder, texture: ^NS.Object, index: ^NS.Object) { +RenderCommandEncoder_setVertexTexture :: #force_inline proc(self: ^RenderCommandEncoder, texture: ^Texture, index: NS.UInteger) { msgSend(nil, self, "setVertexTexture:atIndex:", texture, index) } @(objc_type=RenderCommandEncoder, objc_name="setVertexTextures") -RenderCommandEncoder_setVertexTextures :: #force_inline proc(self: ^RenderCommandEncoder, textures: ^^NS.Object, range: NS.Range) { +RenderCommandEncoder_setVertexTextures :: #force_inline proc(self: ^RenderCommandEncoder, textures: [^]^Texture, range: NS.Range) { msgSend(nil, self, "setVertexTextures:withRange:", textures, range) } @(objc_type=RenderCommandEncoder, objc_name="setViewport") @@ -7577,11 +7650,11 @@ RenderCommandEncoder_setViewport :: #force_inline proc(self: ^RenderCommandEncod msgSend(nil, self, "setViewport:", viewport) } @(objc_type=RenderCommandEncoder, objc_name="setViewports") -RenderCommandEncoder_setViewports :: #force_inline proc(self: ^RenderCommandEncoder, viewports: ^Viewport, count: ^NS.Object) { +RenderCommandEncoder_setViewports :: #force_inline proc(self: ^RenderCommandEncoder, viewports: ^Viewport, count: NS.UInteger) { msgSend(nil, self, "setViewports:count:", viewports, count) } @(objc_type=RenderCommandEncoder, objc_name="setVisibilityResultMode") -RenderCommandEncoder_setVisibilityResultMode :: #force_inline proc(self: ^RenderCommandEncoder, mode: VisibilityResultMode, offset: ^NS.Object) { +RenderCommandEncoder_setVisibilityResultMode :: #force_inline proc(self: ^RenderCommandEncoder, mode: VisibilityResultMode, offset: NS.UInteger) { msgSend(nil, self, "setVisibilityResultMode:offset:", mode, offset) } @(objc_type=RenderCommandEncoder, objc_name="textureBarrier") @@ -7589,51 +7662,51 @@ RenderCommandEncoder_textureBarrier :: #force_inline proc(self: ^RenderCommandEn msgSend(nil, self, "textureBarrier") } @(objc_type=RenderCommandEncoder, objc_name="tileHeight") -RenderCommandEncoder_tileHeight :: #force_inline proc(self: ^RenderCommandEncoder) -> NS.Integer { - return msgSend(NS.Integer, self, "tileHeight") +RenderCommandEncoder_tileHeight :: #force_inline proc(self: ^RenderCommandEncoder) -> NS.UInteger { + return msgSend(NS.UInteger, self, "tileHeight") } @(objc_type=RenderCommandEncoder, objc_name="tileWidth") -RenderCommandEncoder_tileWidth :: #force_inline proc(self: ^RenderCommandEncoder) -> NS.Integer { - return msgSend(NS.Integer, self, "tileWidth") +RenderCommandEncoder_tileWidth :: #force_inline proc(self: ^RenderCommandEncoder) -> NS.UInteger { + return msgSend(NS.UInteger, self, "tileWidth") } @(objc_type=RenderCommandEncoder, objc_name="updateFence") -RenderCommandEncoder_updateFence :: #force_inline proc(self: ^RenderCommandEncoder, fence: ^NS.Object, stages: RenderStages) { +RenderCommandEncoder_updateFence :: #force_inline proc(self: ^RenderCommandEncoder, fence: ^Fence, stages: RenderStages) { msgSend(nil, self, "updateFence:afterStages:", fence, stages) } @(objc_type=RenderCommandEncoder, objc_name="useHeap") -RenderCommandEncoder_useHeap :: #force_inline proc(self: ^RenderCommandEncoder, heap: ^NS.Object) { +RenderCommandEncoder_useHeap :: #force_inline proc(self: ^RenderCommandEncoder, heap: ^Heap) { msgSend(nil, self, "useHeap:", heap) } @(objc_type=RenderCommandEncoder, objc_name="useHeap_stages_") -RenderCommandEncoder_useHeap_stages_ :: #force_inline proc(self: ^RenderCommandEncoder, heap: ^NS.Object, stages: RenderStages) { +RenderCommandEncoder_useHeap_stages_ :: #force_inline proc(self: ^RenderCommandEncoder, heap: ^Heap, stages: RenderStages) { msgSend(nil, self, "useHeap:stages:", heap, stages) } @(objc_type=RenderCommandEncoder, objc_name="useHeaps") -RenderCommandEncoder_useHeaps :: #force_inline proc(self: ^RenderCommandEncoder, heaps: ^^NS.Object, count: ^NS.Object) { +RenderCommandEncoder_useHeaps :: #force_inline proc(self: ^RenderCommandEncoder, heaps: [^]^Heap, count: NS.UInteger) { msgSend(nil, self, "useHeaps:count:", heaps, count) } @(objc_type=RenderCommandEncoder, objc_name="useHeaps_count_stages_") -RenderCommandEncoder_useHeaps_count_stages_ :: #force_inline proc(self: ^RenderCommandEncoder, heaps: ^^NS.Object, count: ^NS.Object, stages: RenderStages) { +RenderCommandEncoder_useHeaps_count_stages_ :: #force_inline proc(self: ^RenderCommandEncoder, heaps: [^]^Heap, count: NS.UInteger, stages: RenderStages) { msgSend(nil, self, "useHeaps:count:stages:", heaps, count, stages) } @(objc_type=RenderCommandEncoder, objc_name="useResource") -RenderCommandEncoder_useResource :: #force_inline proc(self: ^RenderCommandEncoder, resource: ^NS.Object, usage: ResourceUsage) { +RenderCommandEncoder_useResource :: #force_inline proc(self: ^RenderCommandEncoder, resource: ^Resource, usage: ResourceUsage) { msgSend(nil, self, "useResource:usage:", resource, usage) } @(objc_type=RenderCommandEncoder, objc_name="useResource_usage_stages_") -RenderCommandEncoder_useResource_usage_stages_ :: #force_inline proc(self: ^RenderCommandEncoder, resource: ^NS.Object, usage: ResourceUsage, stages: RenderStages) { +RenderCommandEncoder_useResource_usage_stages_ :: #force_inline proc(self: ^RenderCommandEncoder, resource: ^Resource, usage: ResourceUsage, stages: RenderStages) { msgSend(nil, self, "useResource:usage:stages:", resource, usage, stages) } @(objc_type=RenderCommandEncoder, objc_name="useResources") -RenderCommandEncoder_useResources :: #force_inline proc(self: ^RenderCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, usage: ResourceUsage) { +RenderCommandEncoder_useResources :: #force_inline proc(self: ^RenderCommandEncoder, resources: [^]^Resource, count: NS.UInteger, usage: ResourceUsage) { msgSend(nil, self, "useResources:count:usage:", resources, count, usage) } @(objc_type=RenderCommandEncoder, objc_name="useResources_count_usage_stages_") -RenderCommandEncoder_useResources_count_usage_stages_ :: #force_inline proc(self: ^RenderCommandEncoder, resources: ^^NS.Object, count: ^NS.Object, usage: ResourceUsage, stages: RenderStages) { +RenderCommandEncoder_useResources_count_usage_stages_ :: #force_inline proc(self: ^RenderCommandEncoder, resources: [^]^Resource, count: NS.UInteger, usage: ResourceUsage, stages: RenderStages) { msgSend(nil, self, "useResources:count:usage:stages:", resources, count, usage, stages) } @(objc_type=RenderCommandEncoder, objc_name="waitForFence") -RenderCommandEncoder_waitForFence :: #force_inline proc(self: ^RenderCommandEncoder, fence: ^NS.Object, stages: RenderStages) { +RenderCommandEncoder_waitForFence :: #force_inline proc(self: ^RenderCommandEncoder, fence: ^Fence, stages: RenderStages) { msgSend(nil, self, "waitForFence:beforeStages:", fence, stages) } @@ -7664,16 +7737,16 @@ RenderPipelineState_imageblockMemoryLengthForDimensions :: #force_inline proc(se return msgSend(^RenderPipelineState, self, "imageblockMemoryLengthForDimensions:", imageblockDimensions) } @(objc_type=RenderPipelineState, objc_name="imageblockSampleLength") -RenderPipelineState_imageblockSampleLength :: #force_inline proc(self: ^RenderPipelineState) -> NS.Integer { - return msgSend(NS.Integer, self, "imageblockSampleLength") +RenderPipelineState_imageblockSampleLength :: #force_inline proc(self: ^RenderPipelineState) -> NS.UInteger { + return msgSend(NS.UInteger, self, "imageblockSampleLength") } @(objc_type=RenderPipelineState, objc_name="label") RenderPipelineState_label :: #force_inline proc(self: ^RenderPipelineState) -> ^NS.String { return msgSend(^NS.String, self, "label") } @(objc_type=RenderPipelineState, objc_name="maxTotalThreadsPerThreadgroup") -RenderPipelineState_maxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^RenderPipelineState) -> NS.Integer { - return msgSend(NS.Integer, self, "maxTotalThreadsPerThreadgroup") +RenderPipelineState_maxTotalThreadsPerThreadgroup :: #force_inline proc(self: ^RenderPipelineState) -> NS.UInteger { + return msgSend(NS.UInteger, self, "maxTotalThreadsPerThreadgroup") } @(objc_type=RenderPipelineState, objc_name="supportIndirectCommandBuffers") RenderPipelineState_supportIndirectCommandBuffers :: #force_inline proc(self: ^RenderPipelineState) -> BOOL { @@ -7709,8 +7782,8 @@ Methods: Resource :: struct { using _: NS.Object } @(objc_type=Resource, objc_name="allocatedSize") -Resource_allocatedSize :: #force_inline proc(self: ^Resource) -> NS.Integer { - return msgSend(NS.Integer, self, "allocatedSize") +Resource_allocatedSize :: #force_inline proc(self: ^Resource) -> NS.UInteger { + return msgSend(NS.UInteger, self, "allocatedSize") } @(objc_type=Resource, objc_name="cpuCacheMode") Resource_cpuCacheMode :: #force_inline proc(self: ^Resource) -> CPUCacheMode { @@ -7729,8 +7802,8 @@ Resource_heap :: #force_inline proc(self: ^Resource) -> ^Resource { return msgSend(^Resource, self, "heap") } @(objc_type=Resource, objc_name="heapOffset") -Resource_heapOffset :: #force_inline proc(self: ^Resource) -> NS.Integer { - return msgSend(NS.Integer, self, "heapOffset") +Resource_heapOffset :: #force_inline proc(self: ^Resource) -> NS.UInteger { + return msgSend(NS.UInteger, self, "heapOffset") } @(objc_type=Resource, objc_name="isAliasable") Resource_isAliasable :: #force_inline proc(self: ^Resource) -> BOOL { @@ -7778,23 +7851,23 @@ Methods: ResourceStateCommandEncoder :: struct { using _: NS.Object } @(objc_type=ResourceStateCommandEncoder, objc_name="updateFence") -ResourceStateCommandEncoder_updateFence :: #force_inline proc(self: ^ResourceStateCommandEncoder, fence: ^NS.Object) { +ResourceStateCommandEncoder_updateFence :: #force_inline proc(self: ^ResourceStateCommandEncoder, fence: ^Fence) { msgSend(nil, self, "updateFence:", fence) } @(objc_type=ResourceStateCommandEncoder, objc_name="updateTextureMapping_mode_indirectBuffer_indirectBufferOffset_") -ResourceStateCommandEncoder_updateTextureMapping_mode_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^ResourceStateCommandEncoder, texture: ^NS.Object, mode: SparseTextureMappingMode, indirectBuffer: ^NS.Object, indirectBufferOffset: ^NS.Object) { +ResourceStateCommandEncoder_updateTextureMapping_mode_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^ResourceStateCommandEncoder, texture: ^Texture, mode: SparseTextureMappingMode, indirectBuffer: ^Buffer, indirectBufferOffset: NS.UInteger) { msgSend(nil, self, "updateTextureMapping:mode:indirectBuffer:indirectBufferOffset:", texture, mode, indirectBuffer, indirectBufferOffset) } @(objc_type=ResourceStateCommandEncoder, objc_name="updateTextureMapping_mode_region_mipLevel_slice_") -ResourceStateCommandEncoder_updateTextureMapping_mode_region_mipLevel_slice_ :: #force_inline proc(self: ^ResourceStateCommandEncoder, texture: ^NS.Object, mode: SparseTextureMappingMode, region: Region, mipLevel: NS.Integer, slice: NS.Integer) { +ResourceStateCommandEncoder_updateTextureMapping_mode_region_mipLevel_slice_ :: #force_inline proc(self: ^ResourceStateCommandEncoder, texture: ^Texture, mode: SparseTextureMappingMode, region: Region, mipLevel: NS.UInteger, slice: NS.UInteger) { msgSend(nil, self, "updateTextureMapping:mode:region:mipLevel:slice:", texture, mode, region, mipLevel, slice) } @(objc_type=ResourceStateCommandEncoder, objc_name="updateTextureMappings") -ResourceStateCommandEncoder_updateTextureMappings :: #force_inline proc(self: ^ResourceStateCommandEncoder, texture: ^NS.Object, mode: SparseTextureMappingMode, regions: ^Region, mipLevels: NS.Integer, slices: NS.Integer, numRegions: ^NS.Object) { +ResourceStateCommandEncoder_updateTextureMappings :: #force_inline proc(self: ^ResourceStateCommandEncoder, texture: ^Texture, mode: SparseTextureMappingMode, regions: ^Region, mipLevels: NS.UInteger, slices: NS.UInteger, numRegions: NS.UInteger) { msgSend(nil, self, "updateTextureMappings:mode:regions:mipLevels:slices:numRegions:", texture, mode, regions, mipLevels, slices, numRegions) } @(objc_type=ResourceStateCommandEncoder, objc_name="waitForFence") -ResourceStateCommandEncoder_waitForFence :: #force_inline proc(self: ^ResourceStateCommandEncoder, fence: ^NS.Object) { +ResourceStateCommandEncoder_waitForFence :: #force_inline proc(self: ^ResourceStateCommandEncoder, fence: ^Fence) { msgSend(nil, self, "waitForFence:", fence) } @@ -7896,55 +7969,55 @@ Methods: width */ @(objc_class="MTLTexture") -Texture :: struct { using _: NS.Object } +Texture :: struct { using _: Resource } @(objc_type=Texture, objc_name="allowGPUOptimizedContents") Texture_allowGPUOptimizedContents :: #force_inline proc(self: ^Texture) -> BOOL { return msgSend(BOOL, self, "allowGPUOptimizedContents") } @(objc_type=Texture, objc_name="arrayLength") -Texture_arrayLength :: #force_inline proc(self: ^Texture) -> NS.Integer { - return msgSend(NS.Integer, self, "arrayLength") +Texture_arrayLength :: #force_inline proc(self: ^Texture) -> NS.UInteger { + return msgSend(NS.UInteger, self, "arrayLength") } @(objc_type=Texture, objc_name="buffer") Texture_buffer :: #force_inline proc(self: ^Texture) -> ^Texture { return msgSend(^Texture, self, "buffer") } @(objc_type=Texture, objc_name="bufferBytesPerRow") -Texture_bufferBytesPerRow :: #force_inline proc(self: ^Texture) -> NS.Integer { - return msgSend(NS.Integer, self, "bufferBytesPerRow") +Texture_bufferBytesPerRow :: #force_inline proc(self: ^Texture) -> NS.UInteger { + return msgSend(NS.UInteger, self, "bufferBytesPerRow") } @(objc_type=Texture, objc_name="bufferOffset") -Texture_bufferOffset :: #force_inline proc(self: ^Texture) -> NS.Integer { - return msgSend(NS.Integer, self, "bufferOffset") +Texture_bufferOffset :: #force_inline proc(self: ^Texture) -> NS.UInteger { + return msgSend(NS.UInteger, self, "bufferOffset") } @(objc_type=Texture, objc_name="depth") -Texture_depth :: #force_inline proc(self: ^Texture) -> NS.Integer { - return msgSend(NS.Integer, self, "depth") +Texture_depth :: #force_inline proc(self: ^Texture) -> NS.UInteger { + return msgSend(NS.UInteger, self, "depth") } @(objc_type=Texture, objc_name="firstMipmapInTail") -Texture_firstMipmapInTail :: #force_inline proc(self: ^Texture) -> NS.Integer { - return msgSend(NS.Integer, self, "firstMipmapInTail") +Texture_firstMipmapInTail :: #force_inline proc(self: ^Texture) -> NS.UInteger { + return msgSend(NS.UInteger, self, "firstMipmapInTail") } @(objc_type=Texture, objc_name="getBytes_bytesPerRow_bytesPerImage_fromRegion_mipmapLevel_slice_") -Texture_getBytes_bytesPerRow_bytesPerImage_fromRegion_mipmapLevel_slice_ :: #force_inline proc(self: ^Texture, pixelBytes: rawptr, bytesPerRow: ^NS.Object, bytesPerImage: ^NS.Object, region: Region, level: ^NS.Object, slice: ^NS.Object) { +Texture_getBytes_bytesPerRow_bytesPerImage_fromRegion_mipmapLevel_slice_ :: #force_inline proc(self: ^Texture, pixelBytes: rawptr, bytesPerRow: NS.UInteger, bytesPerImage: NS.UInteger, region: Region, level: NS.UInteger, slice: NS.UInteger) { msgSend(nil, self, "getBytes:bytesPerRow:bytesPerImage:fromRegion:mipmapLevel:slice:", pixelBytes, bytesPerRow, bytesPerImage, region, level, slice) } @(objc_type=Texture, objc_name="getBytes_bytesPerRow_fromRegion_mipmapLevel_") -Texture_getBytes_bytesPerRow_fromRegion_mipmapLevel_ :: #force_inline proc(self: ^Texture, pixelBytes: rawptr, bytesPerRow: ^NS.Object, region: Region, level: ^NS.Object) { +Texture_getBytes_bytesPerRow_fromRegion_mipmapLevel_ :: #force_inline proc(self: ^Texture, pixelBytes: rawptr, bytesPerRow: NS.UInteger, region: Region, level: NS.UInteger) { msgSend(nil, self, "getBytes:bytesPerRow:fromRegion:mipmapLevel:", pixelBytes, bytesPerRow, region, level) } @(objc_type=Texture, objc_name="height") -Texture_height :: #force_inline proc(self: ^Texture) -> NS.Integer { - return msgSend(NS.Integer, self, "height") +Texture_height :: #force_inline proc(self: ^Texture) -> NS.UInteger { + return msgSend(NS.UInteger, self, "height") } @(objc_type=Texture, objc_name="iosurface") Texture_iosurface :: #force_inline proc(self: ^Texture) -> IOSurfaceRef { return msgSend(IOSurfaceRef, self, "iosurface") } @(objc_type=Texture, objc_name="iosurfacePlane") -Texture_iosurfacePlane :: #force_inline proc(self: ^Texture) -> NS.Integer { - return msgSend(NS.Integer, self, "iosurfacePlane") +Texture_iosurfacePlane :: #force_inline proc(self: ^Texture) -> NS.UInteger { + return msgSend(NS.UInteger, self, "iosurfacePlane") } @(objc_type=Texture, objc_name="isFramebufferOnly") Texture_isFramebufferOnly :: #force_inline proc(self: ^Texture) -> BOOL { @@ -7959,11 +8032,11 @@ Texture_isSparse :: #force_inline proc(self: ^Texture) -> BOOL { return msgSend(BOOL, self, "isSparse") } @(objc_type=Texture, objc_name="mipmapLevelCount") -Texture_mipmapLevelCount :: #force_inline proc(self: ^Texture) -> NS.Integer { - return msgSend(NS.Integer, self, "mipmapLevelCount") +Texture_mipmapLevelCount :: #force_inline proc(self: ^Texture) -> NS.UInteger { + return msgSend(NS.UInteger, self, "mipmapLevelCount") } @(objc_type=Texture, objc_name="newRemoteTextureViewForDevice") -Texture_newRemoteTextureViewForDevice :: #force_inline proc(self: ^Texture, device: ^NS.Object) -> ^Texture { +Texture_newRemoteTextureViewForDevice :: #force_inline proc(self: ^Texture, device: ^Device) -> ^Texture { return msgSend(^Texture, self, "newRemoteTextureViewForDevice:", device) } @(objc_type=Texture, objc_name="newSharedTextureHandle") @@ -7983,12 +8056,12 @@ Texture_newTextureViewWithPixelFormat_textureType_levels_slices_swizzle_ :: #for return msgSend(^Texture, self, "newTextureViewWithPixelFormat:textureType:levels:slices:swizzle:", pixelFormat, textureType, levelRange, sliceRange, swizzle) } @(objc_type=Texture, objc_name="parentRelativeLevel") -Texture_parentRelativeLevel :: #force_inline proc(self: ^Texture) -> NS.Integer { - return msgSend(NS.Integer, self, "parentRelativeLevel") +Texture_parentRelativeLevel :: #force_inline proc(self: ^Texture) -> NS.UInteger { + return msgSend(NS.UInteger, self, "parentRelativeLevel") } @(objc_type=Texture, objc_name="parentRelativeSlice") -Texture_parentRelativeSlice :: #force_inline proc(self: ^Texture) -> NS.Integer { - return msgSend(NS.Integer, self, "parentRelativeSlice") +Texture_parentRelativeSlice :: #force_inline proc(self: ^Texture) -> NS.UInteger { + return msgSend(NS.UInteger, self, "parentRelativeSlice") } @(objc_type=Texture, objc_name="parentTexture") Texture_parentTexture :: #force_inline proc(self: ^Texture) -> ^Texture { @@ -8003,11 +8076,11 @@ Texture_remoteStorageTexture :: #force_inline proc(self: ^Texture) -> ^Texture { return msgSend(^Texture, self, "remoteStorageTexture") } @(objc_type=Texture, objc_name="replaceRegion_mipmapLevel_slice_withBytes_bytesPerRow_bytesPerImage_") -Texture_replaceRegion_mipmapLevel_slice_withBytes_bytesPerRow_bytesPerImage_ :: #force_inline proc(self: ^Texture, region: Region, level: ^NS.Object, slice: ^NS.Object, pixelBytes: rawptr, bytesPerRow: ^NS.Object, bytesPerImage: ^NS.Object) { +Texture_replaceRegion_mipmapLevel_slice_withBytes_bytesPerRow_bytesPerImage_ :: #force_inline proc(self: ^Texture, region: Region, level: NS.UInteger, slice: NS.UInteger, pixelBytes: rawptr, bytesPerRow: NS.UInteger, bytesPerImage: NS.UInteger) { msgSend(nil, self, "replaceRegion:mipmapLevel:slice:withBytes:bytesPerRow:bytesPerImage:", region, level, slice, pixelBytes, bytesPerRow, bytesPerImage) } @(objc_type=Texture, objc_name="replaceRegion_mipmapLevel_withBytes_bytesPerRow_") -Texture_replaceRegion_mipmapLevel_withBytes_bytesPerRow_ :: #force_inline proc(self: ^Texture, region: Region, level: ^NS.Object, pixelBytes: rawptr, bytesPerRow: ^NS.Object) { +Texture_replaceRegion_mipmapLevel_withBytes_bytesPerRow_ :: #force_inline proc(self: ^Texture, region: Region, level: NS.UInteger, pixelBytes: rawptr, bytesPerRow: NS.UInteger) { msgSend(nil, self, "replaceRegion:mipmapLevel:withBytes:bytesPerRow:", region, level, pixelBytes, bytesPerRow) } @(objc_type=Texture, objc_name="rootResource") @@ -8015,16 +8088,16 @@ Texture_rootResource :: #force_inline proc(self: ^Texture) -> ^Texture { return msgSend(^Texture, self, "rootResource") } @(objc_type=Texture, objc_name="sampleCount") -Texture_sampleCount :: #force_inline proc(self: ^Texture) -> NS.Integer { - return msgSend(NS.Integer, self, "sampleCount") +Texture_sampleCount :: #force_inline proc(self: ^Texture) -> NS.UInteger { + return msgSend(NS.UInteger, self, "sampleCount") } @(objc_type=Texture, objc_name="swizzle") Texture_swizzle :: #force_inline proc(self: ^Texture) -> TextureSwizzleChannels { return msgSend(TextureSwizzleChannels, self, "swizzle") } @(objc_type=Texture, objc_name="tailSizeInBytes") -Texture_tailSizeInBytes :: #force_inline proc(self: ^Texture) -> NS.Integer { - return msgSend(NS.Integer, self, "tailSizeInBytes") +Texture_tailSizeInBytes :: #force_inline proc(self: ^Texture) -> NS.UInteger { + return msgSend(NS.UInteger, self, "tailSizeInBytes") } @(objc_type=Texture, objc_name="textureType") Texture_textureType :: #force_inline proc(self: ^Texture) -> TextureType { @@ -8035,8 +8108,8 @@ Texture_usage :: #force_inline proc(self: ^Texture) -> TextureUsage { return msgSend(TextureUsage, self, "usage") } @(objc_type=Texture, objc_name="width") -Texture_width :: #force_inline proc(self: ^Texture) -> NS.Integer { - return msgSend(NS.Integer, self, "width") +Texture_width :: #force_inline proc(self: ^Texture) -> NS.UInteger { + return msgSend(NS.UInteger, self, "width") } //////////////////////////////////////////////////////////////////////////////// @@ -8050,13 +8123,13 @@ Methods: setFunctions */ @(objc_class="MTLVisibleFunctionTable") -VisibleFunctionTable :: struct { using _: NS.Object } +VisibleFunctionTable :: struct { using _: Resource } @(objc_type=VisibleFunctionTable, objc_name="setFunction") -VisibleFunctionTable_setFunction :: #force_inline proc(self: ^VisibleFunctionTable, function: ^NS.Object, index: ^NS.Object) { +VisibleFunctionTable_setFunction :: #force_inline proc(self: ^VisibleFunctionTable, function: ^FunctionHandle, index: NS.UInteger) { msgSend(nil, self, "setFunction:atIndex:", function, index) } @(objc_type=VisibleFunctionTable, objc_name="setFunctions") -VisibleFunctionTable_setFunctions :: #force_inline proc(self: ^VisibleFunctionTable, functions: ^^NS.Object, range: NS.Range) { +VisibleFunctionTable_setFunctions :: #force_inline proc(self: ^VisibleFunctionTable, functions: [^]^FunctionHandle, range: NS.Range) { msgSend(nil, self, "setFunctions:withRange:", functions, range) } diff --git a/core/sys/darwin/Metal/MetalProcedures.odin b/core/sys/darwin/Metal/MetalProcedures.odin index 120396b5d..6db5fe316 100644 --- a/core/sys/darwin/Metal/MetalProcedures.odin +++ b/core/sys/darwin/Metal/MetalProcedures.odin @@ -8,7 +8,7 @@ foreign import "system:Metal.framework" @(default_calling_convention="c", link_prefix="MTL") foreign Metal { CopyAllDevices :: proc() -> ^NS.Array --- - CopyAllDevicesWithObserver :: proc(observer: ^^NS.Object, handler: DeviceNotificationHandler) -> ^NS.Array --- - CreateSystemDefaultDevice :: proc() -> ^NS.Object --- - RemoveDeviceObserver :: proc(observer: ^NS.Object) --- + CopyAllDevicesWithObserver :: proc(observer: ^id, handler: DeviceNotificationHandler) -> ^NS.Array --- + CreateSystemDefaultDevice :: proc() -> ^Device --- + RemoveDeviceObserver :: proc(observer: id) --- } \ No newline at end of file diff --git a/core/sys/darwin/Metal/MetalTypes.odin b/core/sys/darwin/Metal/MetalTypes.odin index c8c02e5f2..24a951853 100644 --- a/core/sys/darwin/Metal/MetalTypes.odin +++ b/core/sys/darwin/Metal/MetalTypes.odin @@ -4,11 +4,15 @@ import NS "core:sys/darwin/Foundation" import "core:intrinsics" BOOL :: NS.BOOL +id :: ^NS.Object CFTimeInterval :: NS.TimeInterval IOSurfaceRef :: distinct rawptr +dispatch_queue_t :: id +dispatch_data_t :: id + @(private) msgSend :: intrinsics.objc_send diff --git a/examples/objc/objc_main.odin b/examples/objc/objc_main.odin new file mode 100644 index 000000000..0f8d1f5bf --- /dev/null +++ b/examples/objc/objc_main.odin @@ -0,0 +1,8 @@ +package objc_test + +import NS "core:sys/darwin/Foundation" +import MTL "core:sys/darwin/Metal" + +main :: proc() { + +} \ No newline at end of file From b647b45ba50c4cb7de0fab970da73212f9a74176 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 12 Feb 2022 21:25:20 +0000 Subject: [PATCH 038/190] Remove temp file --- examples/objc/objc_main.odin | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 examples/objc/objc_main.odin diff --git a/examples/objc/objc_main.odin b/examples/objc/objc_main.odin deleted file mode 100644 index 0f8d1f5bf..000000000 --- a/examples/objc/objc_main.odin +++ /dev/null @@ -1,8 +0,0 @@ -package objc_test - -import NS "core:sys/darwin/Foundation" -import MTL "core:sys/darwin/Metal" - -main :: proc() { - -} \ No newline at end of file From 39a0f8c96a4cd35d0593ed9230e2434859212f58 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 12 Feb 2022 21:28:56 +0000 Subject: [PATCH 039/190] Use distinct array types --- core/sys/darwin/Metal/MetalTypes.odin | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/core/sys/darwin/Metal/MetalTypes.odin b/core/sys/darwin/Metal/MetalTypes.odin index 24a951853..e1269f926 100644 --- a/core/sys/darwin/Metal/MetalTypes.odin +++ b/core/sys/darwin/Metal/MetalTypes.odin @@ -131,10 +131,7 @@ Region :: struct { size: Size, } -SamplePosition :: struct { - x: f32, - y: f32, -} +SamplePosition :: distinct [2]f32 ScissorRect :: struct { x: NS.Integer, From e2aa8f426da252f946af743a624cd097b7f09937 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 12 Feb 2022 21:45:34 +0000 Subject: [PATCH 040/190] Improve type hierarchy and method names --- core/sys/darwin/Metal/MetalClasses.odin | 162 ++++++++++++------------ 1 file changed, 81 insertions(+), 81 deletions(-) diff --git a/core/sys/darwin/Metal/MetalClasses.odin b/core/sys/darwin/Metal/MetalClasses.odin index 5695cbb6f..159cc723b 100644 --- a/core/sys/darwin/Metal/MetalClasses.odin +++ b/core/sys/darwin/Metal/MetalClasses.odin @@ -22,7 +22,7 @@ Methods: setBoundingBoxStride */ @(objc_class="MTLAccelerationStructureBoundingBoxGeometryDescriptor") -AccelerationStructureBoundingBoxGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureBoundingBoxGeometryDescriptor) } +AccelerationStructureBoundingBoxGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureBoundingBoxGeometryDescriptor), using _: AccelerationStructureDescriptor } @(objc_type=AccelerationStructureBoundingBoxGeometryDescriptor, objc_class_name="alloc") AccelerationStructureBoundingBoxGeometryDescriptor_alloc :: #force_inline proc() -> ^AccelerationStructureBoundingBoxGeometryDescriptor { @@ -227,7 +227,7 @@ Methods: vertexStride */ @(objc_class="MTLAccelerationStructureTriangleGeometryDescriptor") -AccelerationStructureTriangleGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureTriangleGeometryDescriptor) } +AccelerationStructureTriangleGeometryDescriptor :: struct { using _: NS.Copying(AccelerationStructureTriangleGeometryDescriptor), using _: AccelerationStructureDescriptor } @(objc_type=AccelerationStructureTriangleGeometryDescriptor, objc_class_name="alloc") AccelerationStructureTriangleGeometryDescriptor_alloc :: #force_inline proc() -> ^AccelerationStructureTriangleGeometryDescriptor { @@ -506,7 +506,7 @@ Methods: stride */ @(objc_class="MTLArrayType") -ArrayType :: struct { using _: NS.Object } +ArrayType :: struct { using _: Type } @(objc_type=ArrayType, objc_class_name="alloc") ArrayType_alloc :: #force_inline proc() -> ^ArrayType { @@ -1974,7 +1974,7 @@ Methods: setInstancedAccelerationStructures */ @(objc_class="MTLInstanceAccelerationStructureDescriptor") -InstanceAccelerationStructureDescriptor :: struct { using _: NS.Copying(InstanceAccelerationStructureDescriptor) } +InstanceAccelerationStructureDescriptor :: struct { using _: NS.Copying(InstanceAccelerationStructureDescriptor), using _: AccelerationStructureDescriptor } @(objc_type=InstanceAccelerationStructureDescriptor, objc_class_name="alloc") InstanceAccelerationStructureDescriptor_alloc :: #force_inline proc() -> ^InstanceAccelerationStructureDescriptor { @@ -2205,7 +2205,7 @@ Methods: elementType */ @(objc_class="MTLPointerType") -PointerType :: struct { using _: NS.Object } +PointerType :: struct { using _: Type } @(objc_type=PointerType, objc_class_name="alloc") PointerType_alloc :: #force_inline proc() -> ^PointerType { @@ -2258,7 +2258,7 @@ Methods: setGeometryDescriptors */ @(objc_class="MTLPrimitiveAccelerationStructureDescriptor") -PrimitiveAccelerationStructureDescriptor :: struct { using _: NS.Copying(PrimitiveAccelerationStructureDescriptor) } +PrimitiveAccelerationStructureDescriptor :: struct { using _: NS.Copying(PrimitiveAccelerationStructureDescriptor), using _: AccelerationStructureDescriptor } @(objc_type=PrimitiveAccelerationStructureDescriptor, objc_class_name="alloc") PrimitiveAccelerationStructureDescriptor_alloc :: #force_inline proc() -> ^PrimitiveAccelerationStructureDescriptor { @@ -2624,7 +2624,7 @@ Methods: setClearColor */ @(objc_class="MTLRenderPassColorAttachmentDescriptor") -RenderPassColorAttachmentDescriptor :: struct { using _: NS.Copying(RenderPassColorAttachmentDescriptor) } +RenderPassColorAttachmentDescriptor :: struct { using _: NS.Copying(RenderPassColorAttachmentDescriptor), using _: RenderPassAttachmentDescriptor } @(objc_type=RenderPassColorAttachmentDescriptor, objc_class_name="alloc") RenderPassColorAttachmentDescriptor_alloc :: #force_inline proc() -> ^RenderPassColorAttachmentDescriptor { @@ -2690,7 +2690,7 @@ Methods: setDepthResolveFilter */ @(objc_class="MTLRenderPassDepthAttachmentDescriptor") -RenderPassDepthAttachmentDescriptor :: struct { using _: NS.Copying(RenderPassDepthAttachmentDescriptor) } +RenderPassDepthAttachmentDescriptor :: struct { using _: NS.Copying(RenderPassDepthAttachmentDescriptor), using _: RenderPassAttachmentDescriptor } @(objc_type=RenderPassDepthAttachmentDescriptor, objc_class_name="alloc") RenderPassDepthAttachmentDescriptor_alloc :: #force_inline proc() -> ^RenderPassDepthAttachmentDescriptor { @@ -2757,7 +2757,7 @@ Methods: visibilityResultBuffer */ @(objc_class="MTLRenderPassDescriptor") -RenderPassDescriptor :: struct { using _: NS.Copying(RenderPassDescriptor) } +RenderPassDescriptor :: struct { using _: NS.Copying(RenderPassDescriptor), using _: AccelerationStructureDescriptor } @(objc_type=RenderPassDescriptor, objc_class_name="alloc") RenderPassDescriptor_alloc :: #force_inline proc() -> ^RenderPassDescriptor { @@ -3059,7 +3059,7 @@ Methods: writeMask */ @(objc_class="MTLRenderPipelineColorAttachmentDescriptor") -RenderPipelineColorAttachmentDescriptor :: struct { using _: NS.Copying(RenderPipelineColorAttachmentDescriptor) } +RenderPipelineColorAttachmentDescriptor :: struct { using _: NS.Copying(RenderPipelineColorAttachmentDescriptor), using _: RenderPassAttachmentDescriptor } @(objc_type=RenderPipelineColorAttachmentDescriptor, objc_class_name="alloc") RenderPipelineColorAttachmentDescriptor_alloc :: #force_inline proc() -> ^RenderPipelineColorAttachmentDescriptor { @@ -4071,7 +4071,7 @@ Methods: members */ @(objc_class="MTLStructType") -StructType :: struct { using _: NS.Object } +StructType :: struct { using _: Type } @(objc_type=StructType, objc_class_name="alloc") StructType_alloc :: #force_inline proc() -> ^StructType { @@ -4292,7 +4292,7 @@ Methods: textureType */ @(objc_class="MTLTextureReferenceType") -TextureReferenceType :: struct { using _: NS.Object } +TextureReferenceType :: struct { using _: Type } @(objc_type=TextureReferenceType, objc_class_name="alloc") TextureReferenceType_alloc :: #force_inline proc() -> ^TextureReferenceType { @@ -4844,7 +4844,7 @@ Methods: writeCompactedAccelerationStructureSize */ @(objc_class="MTLAccelerationStructureCommandEncoder") -AccelerationStructureCommandEncoder :: struct { using _: NS.Object } +AccelerationStructureCommandEncoder :: struct { using _: CommandEncoder } @(objc_type=AccelerationStructureCommandEncoder, objc_name="buildAccelerationStructure") AccelerationStructureCommandEncoder_buildAccelerationStructure :: #force_inline proc(self: ^AccelerationStructureCommandEncoder, accelerationStructure: ^AccelerationStructure, descriptor: ^AccelerationStructureDescriptor, scratchBuffer: ^Buffer, scratchBufferOffset: NS.UInteger) { @@ -5122,14 +5122,14 @@ Methods: waitForFence */ @(objc_class="MTLBlitCommandEncoder") -BlitCommandEncoder :: struct { using _: NS.Object } +BlitCommandEncoder :: struct { using _: CommandEncoder } @(objc_type=BlitCommandEncoder, objc_name="copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_") -BlitCommandEncoder_copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceBuffer: ^Buffer, sourceOffset: NS.UInteger, sourceBytesPerRow: NS.UInteger, sourceBytesPerImage: NS.UInteger, sourceSize: Size, destinationTexture: ^Texture, destinationSlice: NS.UInteger, destinationLevel: NS.UInteger, destinationOrigin: Origin) { +BlitCommandEncoder_copyFromBufferEx :: #force_inline proc(self: ^BlitCommandEncoder, sourceBuffer: ^Buffer, sourceOffset: NS.UInteger, sourceBytesPerRow: NS.UInteger, sourceBytesPerImage: NS.UInteger, sourceSize: Size, destinationTexture: ^Texture, destinationSlice: NS.UInteger, destinationLevel: NS.UInteger, destinationOrigin: Origin) { msgSend(nil, self, "copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:", sourceBuffer, sourceOffset, sourceBytesPerRow, sourceBytesPerImage, sourceSize, destinationTexture, destinationSlice, destinationLevel, destinationOrigin) } @(objc_type=BlitCommandEncoder, objc_name="copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_options_") -BlitCommandEncoder_copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_options_ :: #force_inline proc(self: ^BlitCommandEncoder, sourceBuffer: ^Buffer, sourceOffset: NS.UInteger, sourceBytesPerRow: NS.UInteger, sourceBytesPerImage: NS.UInteger, sourceSize: Size, destinationTexture: ^Texture, destinationSlice: NS.UInteger, destinationLevel: NS.UInteger, destinationOrigin: Origin, options: BlitOption) { +BlitCommandEncoder_copyFromBufferExWithOptions :: #force_inline proc(self: ^BlitCommandEncoder, sourceBuffer: ^Buffer, sourceOffset: NS.UInteger, sourceBytesPerRow: NS.UInteger, sourceBytesPerImage: NS.UInteger, sourceSize: Size, destinationTexture: ^Texture, destinationSlice: NS.UInteger, destinationLevel: NS.UInteger, destinationOrigin: Origin, options: BlitOption) { msgSend(nil, self, "copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:options:", sourceBuffer, sourceOffset, sourceBytesPerRow, sourceBytesPerImage, sourceSize, destinationTexture, destinationSlice, destinationLevel, destinationOrigin, options) } @(objc_type=BlitCommandEncoder, objc_name="copyFromBuffer_sourceOffset_toBuffer_destinationOffset_size_") @@ -5676,7 +5676,7 @@ Methods: waitForFence */ @(objc_class="MTLComputeCommandEncoder") -ComputeCommandEncoder :: struct { using _: NS.Object } +ComputeCommandEncoder :: struct { using _: CommandEncoder } @(objc_type=ComputeCommandEncoder, objc_name="dispatchThreadgroups") ComputeCommandEncoder_dispatchThreadgroups :: #force_inline proc(self: ^ComputeCommandEncoder, threadgroupsPerGrid: Size, threadsPerThreadgroup: Size) { @@ -6231,30 +6231,30 @@ Device_newCommandQueue :: #force_inline proc(self: ^Device) -> ^Device { Device_newCommandQueueWithMaxCommandBufferCount :: #force_inline proc(self: ^Device, maxCommandBufferCount: NS.UInteger) -> ^Device { return msgSend(^Device, self, "newCommandQueueWithMaxCommandBufferCount:", maxCommandBufferCount) } -@(objc_type=Device, objc_name="newComputePipelineStateWithDescriptor_options_completionHandler_") -Device_newComputePipelineStateWithDescriptor_options_completionHandler_ :: #force_inline proc(self: ^Device, descriptor: ^ComputePipelineDescriptor, options: PipelineOption, completionHandler: NewComputePipelineStateWithReflectionCompletionHandler) { +@(objc_type=Device, objc_name="newComputePipelineStateWithDescriptorWithCompletionHandler") +Device_newComputePipelineStateWithDescriptorWithCompletionHandler :: #force_inline proc(self: ^Device, descriptor: ^ComputePipelineDescriptor, options: PipelineOption, completionHandler: NewComputePipelineStateWithReflectionCompletionHandler) { msgSend(nil, self, "newComputePipelineStateWithDescriptor:options:completionHandler:", descriptor, options, completionHandler) } -@(objc_type=Device, objc_name="newComputePipelineStateWithDescriptor_options_reflection_error_") -Device_newComputePipelineStateWithDescriptor_options_reflection_error_ :: #force_inline proc(self: ^Device, descriptor: ^ComputePipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedComputePipelineReflection) -> (device: ^Device, error: ^NS.Error) { +@(objc_type=Device, objc_name="newComputePipelineStateWithDescriptorWithReflection") +Device_newComputePipelineStateWithDescriptorWithReflection :: #force_inline proc(self: ^Device, descriptor: ^ComputePipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedComputePipelineReflection) -> (device: ^Device, error: ^NS.Error) { device = msgSend(^Device, self, "newComputePipelineStateWithDescriptor:options:reflection:error:", descriptor, options, reflection, &error) return } -@(objc_type=Device, objc_name="newComputePipelineStateWithFunction_completionHandler_") -Device_newComputePipelineStateWithFunction_completionHandler_ :: #force_inline proc(self: ^Device, computeFunction: ^Function, completionHandler: NewComputePipelineStateCompletionHandler) { +@(objc_type=Device, objc_name="newComputePipelineStateWithFunctionWithCompletionHandler") +Device_newComputePipelineStateWithFunctionWithCompletionHandler :: #force_inline proc(self: ^Device, computeFunction: ^Function, completionHandler: NewComputePipelineStateCompletionHandler) { msgSend(nil, self, "newComputePipelineStateWithFunction:completionHandler:", computeFunction, completionHandler) } -@(objc_type=Device, objc_name="newComputePipelineStateWithFunction_error_") -Device_newComputePipelineStateWithFunction_error_ :: #force_inline proc(self: ^Device, computeFunction: ^Function) -> (device: ^Device, error: ^NS.Error) { +@(objc_type=Device, objc_name="newComputePipelineStateWithFunction") +Device_newComputePipelineStateWithFunction :: #force_inline proc(self: ^Device, computeFunction: ^Function) -> (device: ^Device, error: ^NS.Error) { device = msgSend(^Device, self, "newComputePipelineStateWithFunction:error:", computeFunction, &error) return } -@(objc_type=Device, objc_name="newComputePipelineStateWithFunction_options_completionHandler_") -Device_newComputePipelineStateWithFunction_options_completionHandler_ :: #force_inline proc(self: ^Device, computeFunction: ^Function, options: PipelineOption, completionHandler: NewComputePipelineStateWithReflectionCompletionHandler) { +@(objc_type=Device, objc_name="newComputePipelineStateWithFunctionWithOptionsAndCompletionHandler") +Device_newComputePipelineStateWithFunctionWithOptionsAndCompletionHandler :: #force_inline proc(self: ^Device, computeFunction: ^Function, options: PipelineOption, completionHandler: NewComputePipelineStateWithReflectionCompletionHandler) { msgSend(nil, self, "newComputePipelineStateWithFunction:options:completionHandler:", computeFunction, options, completionHandler) } -@(objc_type=Device, objc_name="newComputePipelineStateWithFunction_options_reflection_error_") -Device_newComputePipelineStateWithFunction_options_reflection_error_ :: #force_inline proc(self: ^Device, computeFunction: ^Function, options: PipelineOption, reflection: ^AutoreleasedComputePipelineReflection) -> (device: ^Device, error: ^NS.Error) { +@(objc_type=Device, objc_name="newComputePipelineStateWithFunctionWithReflection") +Device_newComputePipelineStateWithFunctionWithReflection :: #force_inline proc(self: ^Device, computeFunction: ^Function, options: PipelineOption, reflection: ^AutoreleasedComputePipelineReflection) -> (device: ^Device, error: ^NS.Error) { device = msgSend(^Device, self, "newComputePipelineStateWithFunction:options:reflection:error:", computeFunction, options, reflection, &error) return } @@ -6312,12 +6312,12 @@ Device_newLibraryWithFile :: #force_inline proc(self: ^Device, filepath: ^NS.Str device = msgSend(^Device, self, "newLibraryWithFile:error:", filepath, &error) return } -@(objc_type=Device, objc_name="newLibraryWithSource_options_completionHandler_") -Device_newLibraryWithSource_options_completionHandler_ :: #force_inline proc(self: ^Device, source: ^NS.String, options: ^CompileOptions, completionHandler: NewLibraryCompletionHandler) { +@(objc_type=Device, objc_name="newLibraryWithSourceWithCompletionHandler") +Device_newLibraryWithSourceWithCompletionHandler :: #force_inline proc(self: ^Device, source: ^NS.String, options: ^CompileOptions, completionHandler: NewLibraryCompletionHandler) { msgSend(nil, self, "newLibraryWithSource:options:completionHandler:", source, options, completionHandler) } -@(objc_type=Device, objc_name="newLibraryWithSource_options_error_") -Device_newLibraryWithSource_options_error_ :: #force_inline proc(self: ^Device, source: ^NS.String, options: ^CompileOptions) -> (device: ^Device, error: ^NS.Error) { +@(objc_type=Device, objc_name="newLibraryWithSource") +Device_newLibraryWithSource :: #force_inline proc(self: ^Device, source: ^NS.String, options: ^CompileOptions) -> (device: ^Device, error: ^NS.Error) { device = msgSend(^Device, self, "newLibraryWithSource:options:error:", source, options, &error) return } @@ -6330,30 +6330,30 @@ Device_newLibraryWithURL :: #force_inline proc(self: ^Device, url: ^NS.URL) -> ( Device_newRasterizationRateMapWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^RasterizationRateMapDescriptor) -> ^Device { return msgSend(^Device, self, "newRasterizationRateMapWithDescriptor:", descriptor) } -@(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptor_completionHandler_") -Device_newRenderPipelineStateWithDescriptor_completionHandler_ :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, completionHandler: NewRenderPipelineStateCompletionHandler) { +@(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptorWithCompletionHandler") +Device_newRenderPipelineStateWithDescriptorWithCompletionHandler :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, completionHandler: NewRenderPipelineStateCompletionHandler) { msgSend(nil, self, "newRenderPipelineStateWithDescriptor:completionHandler:", descriptor, completionHandler) } -@(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptor_error_") -Device_newRenderPipelineStateWithDescriptor_error_ :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor) -> (device: ^Device, error: ^NS.Error) { +@(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptor") +Device_newRenderPipelineStateWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor) -> (device: ^Device, error: ^NS.Error) { device = msgSend(^Device, self, "newRenderPipelineStateWithDescriptor:error:", descriptor, &error) return } -@(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptor_options_completionHandler_") -Device_newRenderPipelineStateWithDescriptor_options_completionHandler_ :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, options: PipelineOption, completionHandler: NewRenderPipelineStateWithReflectionCompletionHandler) { +@(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptorWithOptionsAndCompletionHandler") +Device_newRenderPipelineStateWithDescriptorWithOptionsAndCompletionHandler :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, options: PipelineOption, completionHandler: NewRenderPipelineStateWithReflectionCompletionHandler) { msgSend(nil, self, "newRenderPipelineStateWithDescriptor:options:completionHandler:", descriptor, options, completionHandler) } -@(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptor_options_reflection_error_") -Device_newRenderPipelineStateWithDescriptor_options_reflection_error_ :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedRenderPipelineReflection) -> (device: ^Device, error: ^NS.Error) { +@(objc_type=Device, objc_name="newRenderPipelineStateWithDescriptorWithReflection") +Device_newRenderPipelineStateWithDescriptorWithReflection :: #force_inline proc(self: ^Device, descriptor: ^RenderPipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedRenderPipelineReflection) -> (device: ^Device, error: ^NS.Error) { device = msgSend(^Device, self, "newRenderPipelineStateWithDescriptor:options:reflection:error:", descriptor, options, reflection, &error) return } -@(objc_type=Device, objc_name="newRenderPipelineStateWithTileDescriptor_options_completionHandler_") -Device_newRenderPipelineStateWithTileDescriptor_options_completionHandler_ :: #force_inline proc(self: ^Device, descriptor: ^TileRenderPipelineDescriptor, options: PipelineOption, completionHandler: NewRenderPipelineStateWithReflectionCompletionHandler) { +@(objc_type=Device, objc_name="newRenderPipelineStateWithTileDescriptorWithCompletionHandler") +Device_newRenderPipelineStateWithTileDescriptorWithCompletionHandler :: #force_inline proc(self: ^Device, descriptor: ^TileRenderPipelineDescriptor, options: PipelineOption, completionHandler: NewRenderPipelineStateWithReflectionCompletionHandler) { msgSend(nil, self, "newRenderPipelineStateWithTileDescriptor:options:completionHandler:", descriptor, options, completionHandler) } -@(objc_type=Device, objc_name="newRenderPipelineStateWithTileDescriptor_options_reflection_error_") -Device_newRenderPipelineStateWithTileDescriptor_options_reflection_error_ :: #force_inline proc(self: ^Device, descriptor: ^TileRenderPipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedRenderPipelineReflection) -> (device: ^Device, error: ^NS.Error) { +@(objc_type=Device, objc_name="newRenderPipelineStateWithTileDescriptorWithReflection") +Device_newRenderPipelineStateWithTileDescriptorWithReflection :: #force_inline proc(self: ^Device, descriptor: ^TileRenderPipelineDescriptor, options: PipelineOption, reflection: ^AutoreleasedRenderPipelineReflection) -> (device: ^Device, error: ^NS.Error) { device = msgSend(^Device, self, "newRenderPipelineStateWithTileDescriptor:options:reflection:error:", descriptor, options, reflection, &error) return } @@ -6381,8 +6381,8 @@ Device_newSharedTextureWithHandle :: #force_inline proc(self: ^Device, sharedHan Device_newTextureWithDescriptor :: #force_inline proc(self: ^Device, desc: ^TextureDescriptor) -> ^Device { return msgSend(^Device, self, "newTextureWithDescriptor:", desc) } -@(objc_type=Device, objc_name="newTextureWithDescriptor_iosurface_plane_") -Device_newTextureWithDescriptor_iosurface_plane_ :: #force_inline proc(self: ^Device, descriptor: ^TextureDescriptor, iosurface: IOSurfaceRef, plane: NS.UInteger) -> ^Device { +@(objc_type=Device, objc_name="newTextureWithDescriptorWithIOSurface") +Device_newTextureWithDescriptorWithIOSurface :: #force_inline proc(self: ^Device, descriptor: ^TextureDescriptor, iosurface: IOSurfaceRef, plane: NS.UInteger) -> ^Device { return msgSend(^Device, self, "newTextureWithDescriptor:iosurface:plane:", descriptor, iosurface, plane) } @(objc_type=Device, objc_name="peerCount") @@ -6664,8 +6664,8 @@ Function_name :: #force_inline proc(self: ^Function) -> ^NS.String { Function_newArgumentEncoderWithBufferIndex :: #force_inline proc(self: ^Function, bufferIndex: NS.UInteger) -> ^Function { return msgSend(^Function, self, "newArgumentEncoderWithBufferIndex:", bufferIndex) } -@(objc_type=Function, objc_name="newArgumentEncoderWithBufferIndex_reflection_") -Function_newArgumentEncoderWithBufferIndex_reflection_ :: #force_inline proc(self: ^Function, bufferIndex: NS.UInteger, reflection: ^AutoreleasedArgument) -> ^Function { +@(objc_type=Function, objc_name="newArgumentEncoderWithBufferIndexWithReflection") +Function_newArgumentEncoderWithBufferIndexWithReflection :: #force_inline proc(self: ^Function, bufferIndex: NS.UInteger, reflection: ^AutoreleasedArgument) -> ^Function { return msgSend(^Function, self, "newArgumentEncoderWithBufferIndex:reflection:", bufferIndex, reflection) } @(objc_type=Function, objc_name="options") @@ -6840,16 +6840,16 @@ Heap_maxAvailableSizeWithAlignment :: #force_inline proc(self: ^Heap, alignment: Heap_newBufferWithLength :: #force_inline proc(self: ^Heap, length: NS.UInteger, options: ResourceOptions) -> ^Heap { return msgSend(^Heap, self, "newBufferWithLength:options:", length, options) } -@(objc_type=Heap, objc_name="newBufferWithLength_options_offset_") -Heap_newBufferWithLength_options_offset_ :: #force_inline proc(self: ^Heap, length: NS.UInteger, options: ResourceOptions, offset: NS.UInteger) -> ^Heap { +@(objc_type=Heap, objc_name="newBufferWithLengthWithOptions") +Heap_newBufferWithLengthWithOptions :: #force_inline proc(self: ^Heap, length: NS.UInteger, options: ResourceOptions, offset: NS.UInteger) -> ^Heap { return msgSend(^Heap, self, "newBufferWithLength:options:offset:", length, options, offset) } @(objc_type=Heap, objc_name="newTextureWithDescriptor") Heap_newTextureWithDescriptor :: #force_inline proc(self: ^Heap, desc: ^TextureDescriptor) -> ^Heap { return msgSend(^Heap, self, "newTextureWithDescriptor:", desc) } -@(objc_type=Heap, objc_name="newTextureWithDescriptor_offset_") -Heap_newTextureWithDescriptor_offset_ :: #force_inline proc(self: ^Heap, descriptor: ^TextureDescriptor, offset: NS.UInteger) -> ^Heap { +@(objc_type=Heap, objc_name="newTextureWithDescriptorWithOffset") +Heap_newTextureWithDescriptorWithOffset :: #force_inline proc(self: ^Heap, descriptor: ^TextureDescriptor, offset: NS.UInteger) -> ^Heap { return msgSend(^Heap, self, "newTextureWithDescriptor:offset:", descriptor, offset) } @(objc_type=Heap, objc_name="resourceOptions") @@ -7119,12 +7119,12 @@ Library_installName :: #force_inline proc(self: ^Library) -> ^NS.String { Library_label :: #force_inline proc(self: ^Library) -> ^NS.String { return msgSend(^NS.String, self, "label") } -@(objc_type=Library, objc_name="newFunctionWithDescriptor_completionHandler_") -Library_newFunctionWithDescriptor_completionHandler_ :: #force_inline proc(self: ^Library, descriptor: ^FunctionDescriptor, completionHandler: rawptr) { +@(objc_type=Library, objc_name="newFunctionWithDescriptorWithCompletionHandler") +Library_newFunctionWithDescriptorWithCompletionHandler :: #force_inline proc(self: ^Library, descriptor: ^FunctionDescriptor, completionHandler: rawptr) { msgSend(nil, self, "newFunctionWithDescriptor:completionHandler:", descriptor, completionHandler) } -@(objc_type=Library, objc_name="newFunctionWithDescriptor_error_") -Library_newFunctionWithDescriptor_error_ :: #force_inline proc(self: ^Library, descriptor: ^FunctionDescriptor) -> (library: ^Library, error: ^NS.Error) { +@(objc_type=Library, objc_name="newFunctionWithDescriptor") +Library_newFunctionWithDescriptor :: #force_inline proc(self: ^Library, descriptor: ^FunctionDescriptor) -> (library: ^Library, error: ^NS.Error) { library = msgSend(^Library, self, "newFunctionWithDescriptor:error:", descriptor, &error) return } @@ -7132,21 +7132,21 @@ Library_newFunctionWithDescriptor_error_ :: #force_inline proc(self: ^Library, d Library_newFunctionWithName :: #force_inline proc(self: ^Library, functionName: ^NS.String) -> ^Library { return msgSend(^Library, self, "newFunctionWithName:", functionName) } -@(objc_type=Library, objc_name="newFunctionWithName_constantValues_completionHandler_") -Library_newFunctionWithName_constantValues_completionHandler_ :: #force_inline proc(self: ^Library, name: ^NS.String, constantValues: ^FunctionConstantValues, completionHandler: rawptr) { +@(objc_type=Library, objc_name="newFunctionWithNameWithConstantValuesAndCompletionHandler") +Library_newFunctionWithNameWithConstantValuesAndCompletionHandler :: #force_inline proc(self: ^Library, name: ^NS.String, constantValues: ^FunctionConstantValues, completionHandler: rawptr) { msgSend(nil, self, "newFunctionWithName:constantValues:completionHandler:", name, constantValues, completionHandler) } -@(objc_type=Library, objc_name="newFunctionWithName_constantValues_error_") -Library_newFunctionWithName_constantValues_error_ :: #force_inline proc(self: ^Library, name: ^NS.String, constantValues: ^FunctionConstantValues) -> (library: ^Library, error: ^NS.Error) { +@(objc_type=Library, objc_name="newFunctionWithNameWithConstantValues") +Library_newFunctionWithNameWithConstantValues :: #force_inline proc(self: ^Library, name: ^NS.String, constantValues: ^FunctionConstantValues) -> (library: ^Library, error: ^NS.Error) { library = msgSend(^Library, self, "newFunctionWithName:constantValues:error:", name, constantValues, &error) return } -@(objc_type=Library, objc_name="newIntersectionFunctionWithDescriptor_completionHandler_") -Library_newIntersectionFunctionWithDescriptor_completionHandler_ :: #force_inline proc(self: ^Library, descriptor: ^IntersectionFunctionDescriptor, completionHandler: rawptr) { +@(objc_type=Library, objc_name="newIntersectionFunctionWithDescriptorWithCompletionHandler") +Library_newIntersectionFunctionWithDescriptorWithCompletionHandler :: #force_inline proc(self: ^Library, descriptor: ^IntersectionFunctionDescriptor, completionHandler: rawptr) { msgSend(nil, self, "newIntersectionFunctionWithDescriptor:completionHandler:", descriptor, completionHandler) } -@(objc_type=Library, objc_name="newIntersectionFunctionWithDescriptor_error_") -Library_newIntersectionFunctionWithDescriptor_error_ :: #force_inline proc(self: ^Library, descriptor: ^IntersectionFunctionDescriptor) -> (library: ^Library, error: ^NS.Error) { +@(objc_type=Library, objc_name="newIntersectionFunctionWithDescriptor") +Library_newIntersectionFunctionWithDescriptor :: #force_inline proc(self: ^Library, descriptor: ^IntersectionFunctionDescriptor) -> (library: ^Library, error: ^NS.Error) { library = msgSend(^Library, self, "newIntersectionFunctionWithDescriptor:error:", descriptor, &error) return } @@ -7175,7 +7175,7 @@ Methods: setStencilStoreActionOptions */ @(objc_class="MTLParallelRenderCommandEncoder") -ParallelRenderCommandEncoder :: struct { using _: NS.Object } +ParallelRenderCommandEncoder :: struct { using _: CommandEncoder } @(objc_type=ParallelRenderCommandEncoder, objc_name="renderCommandEncoder") ParallelRenderCommandEncoder_renderCommandEncoder :: #force_inline proc(self: ^ParallelRenderCommandEncoder) -> ^ParallelRenderCommandEncoder { @@ -7363,7 +7363,7 @@ Methods: waitForFence */ @(objc_class="MTLRenderCommandEncoder") -RenderCommandEncoder :: struct { using _: NS.Object } +RenderCommandEncoder :: struct { using _: CommandEncoder } @(objc_type=RenderCommandEncoder, objc_name="dispatchThreadsPerTile") RenderCommandEncoder_dispatchThreadsPerTile :: #force_inline proc(self: ^RenderCommandEncoder, threadsPerTile: Size) { @@ -7677,32 +7677,32 @@ RenderCommandEncoder_updateFence :: #force_inline proc(self: ^RenderCommandEncod RenderCommandEncoder_useHeap :: #force_inline proc(self: ^RenderCommandEncoder, heap: ^Heap) { msgSend(nil, self, "useHeap:", heap) } -@(objc_type=RenderCommandEncoder, objc_name="useHeap_stages_") -RenderCommandEncoder_useHeap_stages_ :: #force_inline proc(self: ^RenderCommandEncoder, heap: ^Heap, stages: RenderStages) { +@(objc_type=RenderCommandEncoder, objc_name="useHeapWithStages") +RenderCommandEncoder_useHeapWithStages :: #force_inline proc(self: ^RenderCommandEncoder, heap: ^Heap, stages: RenderStages) { msgSend(nil, self, "useHeap:stages:", heap, stages) } @(objc_type=RenderCommandEncoder, objc_name="useHeaps") RenderCommandEncoder_useHeaps :: #force_inline proc(self: ^RenderCommandEncoder, heaps: [^]^Heap, count: NS.UInteger) { msgSend(nil, self, "useHeaps:count:", heaps, count) } -@(objc_type=RenderCommandEncoder, objc_name="useHeaps_count_stages_") -RenderCommandEncoder_useHeaps_count_stages_ :: #force_inline proc(self: ^RenderCommandEncoder, heaps: [^]^Heap, count: NS.UInteger, stages: RenderStages) { +@(objc_type=RenderCommandEncoder, objc_name="useHeapsWithStages") +RenderCommandEncoder_useHeapsWithStages :: #force_inline proc(self: ^RenderCommandEncoder, heaps: [^]^Heap, count: NS.UInteger, stages: RenderStages) { msgSend(nil, self, "useHeaps:count:stages:", heaps, count, stages) } @(objc_type=RenderCommandEncoder, objc_name="useResource") RenderCommandEncoder_useResource :: #force_inline proc(self: ^RenderCommandEncoder, resource: ^Resource, usage: ResourceUsage) { msgSend(nil, self, "useResource:usage:", resource, usage) } -@(objc_type=RenderCommandEncoder, objc_name="useResource_usage_stages_") -RenderCommandEncoder_useResource_usage_stages_ :: #force_inline proc(self: ^RenderCommandEncoder, resource: ^Resource, usage: ResourceUsage, stages: RenderStages) { +@(objc_type=RenderCommandEncoder, objc_name="useResourceWithStages") +RenderCommandEncoder_useResourceWithStages :: #force_inline proc(self: ^RenderCommandEncoder, resource: ^Resource, usage: ResourceUsage, stages: RenderStages) { msgSend(nil, self, "useResource:usage:stages:", resource, usage, stages) } @(objc_type=RenderCommandEncoder, objc_name="useResources") RenderCommandEncoder_useResources :: #force_inline proc(self: ^RenderCommandEncoder, resources: [^]^Resource, count: NS.UInteger, usage: ResourceUsage) { msgSend(nil, self, "useResources:count:usage:", resources, count, usage) } -@(objc_type=RenderCommandEncoder, objc_name="useResources_count_usage_stages_") -RenderCommandEncoder_useResources_count_usage_stages_ :: #force_inline proc(self: ^RenderCommandEncoder, resources: [^]^Resource, count: NS.UInteger, usage: ResourceUsage, stages: RenderStages) { +@(objc_type=RenderCommandEncoder, objc_name="useResourcesStages") +RenderCommandEncoder_useResourcesStages :: #force_inline proc(self: ^RenderCommandEncoder, resources: [^]^Resource, count: NS.UInteger, usage: ResourceUsage, stages: RenderStages) { msgSend(nil, self, "useResources:count:usage:stages:", resources, count, usage, stages) } @(objc_type=RenderCommandEncoder, objc_name="waitForFence") @@ -7848,18 +7848,18 @@ Methods: waitForFence */ @(objc_class="MTLResourceStateCommandEncoder") -ResourceStateCommandEncoder :: struct { using _: NS.Object } +ResourceStateCommandEncoder :: struct { using _: CommandEncoder } @(objc_type=ResourceStateCommandEncoder, objc_name="updateFence") ResourceStateCommandEncoder_updateFence :: #force_inline proc(self: ^ResourceStateCommandEncoder, fence: ^Fence) { msgSend(nil, self, "updateFence:", fence) } -@(objc_type=ResourceStateCommandEncoder, objc_name="updateTextureMapping_mode_indirectBuffer_indirectBufferOffset_") -ResourceStateCommandEncoder_updateTextureMapping_mode_indirectBuffer_indirectBufferOffset_ :: #force_inline proc(self: ^ResourceStateCommandEncoder, texture: ^Texture, mode: SparseTextureMappingMode, indirectBuffer: ^Buffer, indirectBufferOffset: NS.UInteger) { +@(objc_type=ResourceStateCommandEncoder, objc_name="updateTextureMappingIndirect") +ResourceStateCommandEncoder_updateTextureMappingIndirect :: #force_inline proc(self: ^ResourceStateCommandEncoder, texture: ^Texture, mode: SparseTextureMappingMode, indirectBuffer: ^Buffer, indirectBufferOffset: NS.UInteger) { msgSend(nil, self, "updateTextureMapping:mode:indirectBuffer:indirectBufferOffset:", texture, mode, indirectBuffer, indirectBufferOffset) } -@(objc_type=ResourceStateCommandEncoder, objc_name="updateTextureMapping_mode_region_mipLevel_slice_") -ResourceStateCommandEncoder_updateTextureMapping_mode_region_mipLevel_slice_ :: #force_inline proc(self: ^ResourceStateCommandEncoder, texture: ^Texture, mode: SparseTextureMappingMode, region: Region, mipLevel: NS.UInteger, slice: NS.UInteger) { +@(objc_type=ResourceStateCommandEncoder, objc_name="updateTextureMapping") +ResourceStateCommandEncoder_updateTextureMapping :: #force_inline proc(self: ^ResourceStateCommandEncoder, texture: ^Texture, mode: SparseTextureMappingMode, region: Region, mipLevel: NS.UInteger, slice: NS.UInteger) { msgSend(nil, self, "updateTextureMapping:mode:region:mipLevel:slice:", texture, mode, region, mipLevel, slice) } @(objc_type=ResourceStateCommandEncoder, objc_name="updateTextureMappings") @@ -7906,7 +7906,7 @@ Methods: signaledValue */ @(objc_class="MTLSharedEvent") -SharedEvent :: struct { using _: NS.Object } +SharedEvent :: struct { using _: Event } @(objc_type=SharedEvent, objc_name="newSharedEventHandle") SharedEvent_newSharedEventHandle :: #force_inline proc(self: ^SharedEvent) -> ^SharedEventHandle { From 8966294823d7397abaa639f37f55f26496466ba3 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 12 Feb 2022 22:03:15 +0000 Subject: [PATCH 041/190] Correct method name --- core/sys/darwin/Metal/MetalClasses.odin | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/sys/darwin/Metal/MetalClasses.odin b/core/sys/darwin/Metal/MetalClasses.odin index 159cc723b..26e5e2452 100644 --- a/core/sys/darwin/Metal/MetalClasses.odin +++ b/core/sys/darwin/Metal/MetalClasses.odin @@ -6051,7 +6051,7 @@ Methods: newRenderPipelineStateWithDescriptor newRenderPipelineStateWithTileDescriptor newRenderPipelineStateWithTileDescriptor - newSamplerStateWithDescriptor + newSamplerState newSharedEvent newSharedEventWithHandle newSharedTextureWithDescriptor @@ -6357,9 +6357,9 @@ Device_newRenderPipelineStateWithTileDescriptorWithReflection :: #force_inline p device = msgSend(^Device, self, "newRenderPipelineStateWithTileDescriptor:options:reflection:error:", descriptor, options, reflection, &error) return } -@(objc_type=Device, objc_name="newSamplerStateWithDescriptor") -Device_newSamplerStateWithDescriptor :: #force_inline proc(self: ^Device, descriptor: ^SamplerDescriptor) -> ^Device { - return msgSend(^Device, self, "newSamplerStateWithDescriptor:", descriptor) +@(objc_type=Device, objc_name="newSamplerState") +Device_newSamplerState :: #force_inline proc(self: ^Device, descriptor: ^SamplerDescriptor) -> ^Device { + return msgSend(^Device, self, "newSamplerState:", descriptor) } @(objc_type=Device, objc_name="newSharedEvent") Device_newSharedEvent :: #force_inline proc(self: ^Device) -> ^Device { From e59064dd59d69fe94b5c6ba8c24ed92bc2143e4e Mon Sep 17 00:00:00 2001 From: FancyKillerPanda Date: Sun, 13 Feb 2022 10:33:48 +1100 Subject: [PATCH 042/190] Updated vendor/sdl2/ttf LIB and DLL. --- vendor/sdl2/ttf/SDL2_ttf.dll | Bin 33792 -> 1534464 bytes vendor/sdl2/ttf/SDL2_ttf.lib | Bin 12122 -> 18406 bytes vendor/sdl2/ttf/sdl_ttf.odin | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/sdl2/ttf/SDL2_ttf.dll b/vendor/sdl2/ttf/SDL2_ttf.dll index 575636a915df04b5a82b36a5635e59624380c9de..2acc0e5bc8b9ca9933e585af49f64923297e41c2 100644 GIT binary patch literal 1534464 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⪚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%0D{zjT1=Zl4P}yFs46T_3cGbVm0S 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%0DiJ`O(q(-Rm#gM|=Ux_j55|KYy@4#? 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®Fe_=1!;eKxqj7 z_Hgh%rXD7^n1c)d_IwV{?l_AyP^-Vnm+`4j=QGeQKJYo6%%CwT&`e2(+kYR+cO|L( z`?&vKZ9P!>1Z4IVW>9{4%aAtWW3Jw2QBr z4>9s@zw}~@Ff3G#gF*##{%AKSR35&t`v3bss4>}kpfnW{Di2?jF~UP7(1m|{Ifo}` zKUtdN#dnb1xUT%$zxj0j^JV<^S_M+C^Y8O!1cgS4BxJtj7$ayl031}`O0pWP8A|Sg zYR9!qpkM;cqq-XYf3ZIj5lk;Z;R6k-7t11%gXssTbr2mFkJOikpHB*!e!1)0`416Z zY~TYLT$uj+e|;ov0%ZLnH1!ntbT0&*)!@;24s_6qFeC;F5Jn%K;L*HO0JNs9MEtuW z3j@Rddj3|>xk29?IUD#}LFf2`7Aquxl3v6v(8f7X7n!3Qbn|n`Mvr6{l?c#{7G5A$ z0_Z9X9iLtn2aoPHP?OlBdm3oXgHJDSdl#rB0^Z}`*UNI?h4|n9|2;d8_;fAX3T?1BvJ>3GjPyL%4$kU+xU>ydoh{%wpc2TJro z^#}jH3(c<#K)2WOb{=YebietPW5X}Wa(2fK2G9|y{M#JC*PXT;D7^|k!40(j26TK( zZv>-f=bsn6;eYk&x!{fOhe1Yx2KT;$n9i;rmNAr+puZ)Om>&cRWW6XNay)2y|$MpIzu=@0Rvw?0r zec;)Agz?}n0msg(&4&ycAA;ug9XmomH_M&lZ+Xwcz|hOn$#~M&@=WOk&(4FMnm0Y0 zf3otofbQ9A_+`M~It_e5paX+P=V6fb4HgE+92gl&K6JZ_fUbI$X!xa2qR7ARRP##% zP#2uH^J4SE`^_&M8-7Zbb9M-KyNiH|aF9{~;+1j`sq~$s|2(wz5a_A%TMj_%jc5PUl-~c;es* zUKhp#y*&-mXJx`NoxXrX4;~Q6Jn+GT66e((f; z=7GuGj~BWa-Z*%GpYexF@0xE32WTMhB50(i^QC9!n-@JR*cm)}V^|qqCWD5RFFEpWbL26+ z0P!ipOUE7gw*_(^d?W#q=Q{X6!0-Y{g!AAd4#PtrF%FO(lwfi+1oiU+*`b=);F?(B znpi-ZPy*l4@BqkMW~e46xF$xJCPt7RP%tCn^Pr>Q4a1v`hPMsxJN2?Kx-i~g{NdOu z!T`FqiSaPwamRx%1UfG|8Xh?KQouFyK=!HEt%esfPl9Nd&I1Qu@H!eE=sa=o1+Q!7 z0n>Gx4jCTIJPD#fdkqf06aYyH7#?)#ym9b_fQ#V`pWYai1c))9e8vlM5J)+QBVc%; z^Vh*w0*1d_4Nv&=^6t&&W5~P&vdOXYlHD=MHpQfFMu{j z<~TB50F9U@fHr4%ajnw>mF^iVe`6@DKSN`M2?Kc6cy?3a{s$%`Z57EpPF+l>PYs-?RA@i(|LY>l22T zz`K;bGSVGJ)j; zs6D^wD`<4&IB2D%52&xSXem2G=b`2w(Pf;++@l$GMT3n8wD&1Nv@5LFMgjE57{xzYDaC)Ti@hca2I!_iE4*yUt@T_`m%A4<4T>-P8D&0d$O?0;FHn_!n}T z-#sP<2FPiCjIU>c(=TX=evD7&OW*EN1CP#EFL-`}W{y%+Vn97qFW1&5rRO0=q**tY zFfuTd9{?@k)^Oq9{sVmQ%12NG4dfOESLh)uFMg_mmLi6z#DFRz3(!8#RyStQm8>H6 zAlGMo1@{kPzz*ea)dsH^`On|733M14sAmW2(s^~3sQ7qvLbeZk_Odwmb{_ZXJPb0? z!K3pSV#pn|2B`Tk(+igGzyGIoLe6k~4GI^Ke(0{f7wzAE{|9Y$b}&5Y$iJQ4g@60W z&O^40prwAox**EM@ZQG3Dl6=?xNxVT5#E74O&_I9dxs&kKs3%UmQFCbRK@W8MJ&568@d9 zK!KwA9Te;?Dlz=qet_!X)-X`DWBI2@6eQdJ2^6mfTsj|U{&2KBP$uTn`O>BH`HTEd zzyE6<2kls7@Zk6O0d_7pE&G7ixWZlR((BLoB1r|@){XJ(Wcdz09FxEGBWP6&q}Oip z2@)%y6)vCyTRgj2zJofb$5<>F(kwsow=se@CA{qX{^I9H&@{;r{&olOTI3WJ9}j3i zd-j@q2e1EdKsW_0l{kV{6EnQH3R-FoP9kiemMmylX7h1I@DazyIMQ4!-xuu#Cj+0( z-5Jab3~8OsppzUyLJn!2&7dP7JwQptqZ54C>2OXm02nt3}KlH_`50H=qr|;65*8e4Xj{N)BEsxh^v>vEP*#VlA0bL^s z$BeT3%bv^BolIIsTBCo(voWMBn4=a6Ff=|ZkILe4giG+e+%f0 zE&lD`+;bEXAX{8IU()*$v~&w8G{NSzo-C2(-`)r+yDcx2 zalD)jY3J?$)q{uAChSl~z0b=7v{B8s^<+sHs3Hdq*31NL5Akh1P-5b^3p6(BXnDCz zq4Scf;U$lQk61jICxQ}4H!Du zP>;^1!5)ooKx_4Ux+hKmmoig3z+;WAV5-wsz^8L6=r&={28fo+puy*fph*(YLCI}L zz(+NJRr)Yq^5~qJ0n!RO&8!nF=+OIO?TzhFdG3+jC< zBOK__e1OBlvK8b){wC18DmKR<`<;JV5X5nhI5;n)b+&?5V-c(8cpfEh(!Q2Xt#m-hxqt~N*Due>___qmx z&dP%rwf#V6E9mY4k6u>a7(ND%&ej=VvmsQo1w*OMOVEHfIDL0RMGtUbs^f0~-B#xT zRniSIX#v=zsUWHwY>A~)Kc@!9H8|GptRfg2(;c8v_JOZ3;vcWM$qzP z$T|VXhM$bx49z$GLsnb1mxJUwPeWqZrSrIJZ^eHP=5A1?1x6x9>(Z+@FD2fqMNRqCmi{= zzpy-7#_ihjmcQj60|P_n3rEYt{7s;y6aRK&(7qxGpUx#JppBz0iU&c9*j@Oy^Mt$b zZ@XeDlx${H>e7Ys)V2w+MoK1v-z+!?Hw0 zfWJACk%0kx(+wzn^_p0?@NYln+VZv}*{6Gn3Mjx_tzAIs9)b-x;J`oSxI@eT5@TCX zF!HxEfd*+n7Zo2a?oFEj(gSj$NAn@@2)2iHh>8M#D`@4ctKor$8WkOe5-w2t2^1@^ ziV8_<$}vE@pLT z`Cr=X$iLmd)$jl)Y|=p0C#XVkVLS)&5NP)x$S*F|ZUV(ouB{+%98>)M60|)Wi=o0s< zU@OY)zBwu|mP%MVYLqy`=lTsCV_$x%`u`tvUuB?#M>i*=nF;D(H6H;BxA_ zBZjUYK-oW;lA4hO=`dp5Zv~y-FA4+Amc!@wH-7@1z`y{%&)T575VYdWqw{*}w>n2x z!zZAgpvDCL?ci>ni{*ndWlzu%9*;mRjI?i{7D=ffsJ*EH>fGO*3M%SKctC4mTr8iJ zo`7Hc2D`Wd77opCEINw$Ics|&eJQ0 zKmQ>;YWS@eE({Egdq52zOmR=psPaM2?j}&H#+85jBv9+e^WY;E(A`;<7m5U4>w@zm zXb-ig<)JcpYk|_wF5MA4uC2FAUV$1;%&wi1-2oggjh_7epEd!!D;8JOC2@?!tMX)A5g|<;l`(p1mx)j)Tl+@aen&J9O+Y zXwJsQqchCHvGXPLV3-il0vXUbW)5PY9guDYo}Gsva|fk@oq0Ooqw5gmx8WsZ<0ioT z(=Ek+x;Gnigqct0L4?n)gS-Xu639QvAphJh@#uB_@6j91;tM{=x`ES^@h77H!M}}( zf14NR&|Fr}<^wDTA95UgAi#Nof1B4|&J&KE4u3o?FP7fwyzSY`G7Hmp(EDUS2m2|& zJm}HsX8{^F(0Gv`iq(HF3(tSYZtAWpcyy(*zZUK&bNVs@FX1HxU zI^7LCI}f*BD&^>m*8$%X?`nA4rxSF;9>gG!Z#=p^4Pf2@U0e*hdh~TSG+p_qD1bZs zU@IVnFp@?0g+USEZs5^*5SqZ|A9n|@QhdD&>K{kc_3$1(-I)@eoo75duY30Tvbl5~ zdJ)wMn%q1L?hG7c1l=5N(CxtD$bZhI^E>|u&g1+oD;OCVTtW36XdQ`b=Qm%*cc7Md z79#^g=K;rVGf&2&p1p4Dj@_{gpoOv^m2RMmKg0febYA!EbpgdBEIsgVLyFG>r5`{` z{XiF!fubLD;JhnnU3YJeFr#mGj0!wlTtI9792r5I5VyIpIPz}`WA*J#<1l>d$iK~( z)s=r+9lLL@D`+$yl)6EU=`gl~4>=&$?s07aHpji7DCIl_x-!$Pbo^F`` z96JwoGJ@^}Z9d52YI&;kJ?PXi$KD)$Mn}tU{O#=!Kd`8PT5Kwepi>`R`M1@mfci@y zr=I|e|KmIXa_!6b|DY)*{?_&2b9sJ%_n?C+AaLSwjDcLw_;Mv^Km%q!Y663)0acce z@ey#k^6jiq0To!Fr6-_NjFhB$1VKYFE-Ije3r$mN96NJVbY6m5Eol=v5BPTe@azp? z1|uelUqEC3pg?kg1QICcJ`~_Q=m=W30?N8RD*rhTdL$q9>=kM5b!2qwW#M?u z20Gv20AnXt=RwF(zXwV`IQ8c6GWuFxDP8B0{MPX}3uw6s!^@kX!%i*lmcMrC^<@M} zbc(F@=w$(|@?j|U1K-Eq>-^tE^My}uNCT@cBVs<*k$)R#J!k-^JYn@{J_ug*`T*L2 z`^$Nu)A5h5<)P9WpefqBE{tbicer$(eccQ%??LSk&{_@G&Lf_kr+qt5v|cLl_UHy3 zpu@nwy%SVBf({q)U_9tyd7?-eT-|{-BE#a>r8|Jfwe?bIIH3r@1UpUQp>@`2Q-gj;NR+{Z$d9TF1+nL#=yO`ah`7k&C2}k~O ztp`dTbsp?|<;mSN?6m-(c&FK_Sn-E%-a7Tg8~^|Rk5=AV_;hasg{vc^ZUvw34jO%H*a^PI zg}-GAxWwJL1$??^Bj|z;r(PLQXPm*Kw}8Wg@v|?eI86qf$pYF23Obwxv`%MgH#>tP zc<9Ho^C-CJW(610|M^?~fTF+imn;8vHz}W9o@uW|LH_Gy>0~_M!Fbry@*{tX2>5Ux zG0@!u9?i$VcXC6vHlIjyw7gJy8FY|0XptTN_5&WhEDb)rCeE<*#lPK|rSll52lVZT z0DlX}rQO0V-Frb-j_{uXbqT@uPP%sfaMZluYx#n|Z5C*wb9e6w76t~;HH{B_7*ByV z{%O28*~QM_*m&Taz_F18Ww?L3ge)cyyL?xPV({s9iopdmyd(A2WZ;H_%CZ z;PmIwe3;9}@-u&{GAQ!EA^LhRC_Z~vf+EAGdnRaR$>TUUYCx?&kK>ICKnr+4J2Z~F zf?CWBp2uB5r*MF1@XQVW_KDzp49V5tQ9Z^(9+nr1#9!uuLSEhlboC(U%%DU3ZPAPj z42>2FZZ1xxue&37T5p#;=?>rkHDo$tR5V`L-2D9?G>2dU>IMI1_vwyN(co`W1Eq(~ z7oE4@>bBg0sN(^5zFR?V@4N+8?ZJ4+qjM_A&7foGyCK)rrZrkHFuL$>|HXfjzZJ9) z33N?yTR$l2^g8}vU{icQddYX0p9dRZD64|p;j z@U%Qt`o!1rL^=PlR#47he8~bC$MNZW<X_y#rS z436MI^Ov9%Sm5|R&JG&3?sVsPc?C4bG2u8nXu&jye+0b9>jtEG4xb-@o~Gg8(RmFt zU)C$C?!w0ax*M?9MaAF+-yd+X1X^$I5FH0PF9OtcQt;>%6?6gj7GJyptr9susk}&K(vKNr|@g&eK08HN#mOnplPgb2A}Rk z1E0>Lpi?(JJJ0%nPW7CkA_1E4>upg1P5yZFiav7YV>sTT0@~0B3a1xLPk#UJgzz0Z zkAc$EHPD$^dsINfZANbX<@_!CL1V!!DxhN%9IahB_*>V3mMrma?@_4%Wf;($T+3`G z@YG{xugFx;l|7ah_}e-_+NP*L2^9|Ij=&Vr* zcyWybG+omJ)&^>Wdw6sn1G%;}7i1ntGq@G~5S$p`=D5Io_F@`XKO}HK`W-wvL3f_= zw}Q6a^KWl~_#f2hEn;S1@a+68;^&JvXb&(1%-o&P*K*Qh9f zm7NEjZqPYLMT41v0d#-1i;Bf-TS)t+^A_VF{wDC+KWOkecDhM8cE*V~c9scvbe{0- zGerVtP zz`o(9J%0;meG_P4&%&eE^l~i^!%lfnh|T!yv9z17lfS#A1>|zaPB#{i&qA0O7!JH* zvrVhaN#}2Q!@$5`o0y!R!`}iLmoq%ja*2QHfrAe?__uumueS^1;5_!iuIE22O@R{B zCs6CQ+l|Aq(~al*G0?aPe+%d)AAmxp9EFfzfyWM#BTc3ev0{B}& zJ%P?!FF`x5Ays=cF<`daA~+4G;E-y6DY!7-bFD8bR#w>3xNi5L74}Xh#fq-LyrIG zc9LLr66tJFnZwAyP_(uYQhcQ)mz3-Pl?caMRF;5f(5Q4LBsBP2DnNw*QkeltiY=fm z#8Xs22M%?%s4M_=S6u{{yQhE)zvc&jKwIH_K(~(cfXlVklO>{-2l-nq|NsBb+@b<1 zY91Fkuq0Sbt;_f+M%A>nP zCBUcip=alZ&RZ|cpZ@;e3@LQMCx#e!faaA=SU^SHhg}|^23+UE7lJ6Nj`6pGj$!8C z)}jKM#^_)N6_cQ&p*q|dyIa7ON=G^qjOEVk0+NSTBL_+%9Qn5&Fudg0d9d?h^C3pZ zi!V#R?E*EXKrwA_@Bz!^N1%fc96?t#9O@`%anZbiFyP<;j-YkMI``KTY>@*R9hnUsr(1kW*RTHG5$e{U`X!gZw&zH zh1Opnbrzr~0u?i$JJ|a`=Vf9ts8#-{|~zU%J33s zsSl_SF#Hcbk?yi*=UbP~qp$fJe}Ss1QfB_`KR|0x`M0~VSl-}oTMcdjhp1S9=HmpI z85mwjpgK1Uv}A8Pq}ooigw*XG-90KGwft?M3yVFv!#I4pLsT5nI$5GXsRvX~dURg! z>=wDy9mLZ33shtAw^oBDXSTn1-RO~g12oSMjss9>23~H@JO>65eNR(m|vjFXo6V`54;xi?B+QR%4`lEojhQpEf3Yd z1}|`V2tMzvo4FH`i$OiUv`&Z}FH1ld9v^p60T=P8#W<)*`%>&DDAvF=-%GBa|Nn#T zWIDv(umAi1f5QVWHGcp9k6h@V`3ag~cmZ1K^A=XryKo-x>^xf{<^t+}oB}D({NdRA zf|0*C>T3b{+K&N^fcrE489i!sl z(JgWq6eEpQETCk_-?9l*c(l zU7)}KX$K`skeEm7ZT=~TJX%lkPdQ+5h`+UnpMk-n^>zt=x3hq;qrkT#jQp)}AhF&# zU{8Y1&<9_h11b$b{m5M)pTqOqi)DYofdmc@kgq|v&+@n0@Pi8c8?XW&RP4##M^<>4 zzjZUX#SRU$&R?Ky9iFFt|4%#aqEf&B>TiICAHZHX-l76Jj|s$1JKmzg0&)SvF&C8z z22e3z0ctSk_;juTXFFJv8FU&@f=A~)pUxT;1K-Z)-Fv`hSndG_D}P@n8)z~eA_z_D zA3eHRezUCowf6gTKWa%y|lK*S3N-+c-A< z0qqSg6>I*@&EM7sK8Vak#p1Y&1*jBY@L;Y{vFL`Ro6cJvy=%ZJ$fNV8Pwx_NLW4OX zJRG#}t42k`v-78C=L^t~tWPhba`yq<&UVSCa|(E-ywgP`;zi|*|NniuAp#&bgWBhy zZGE6f>}~;j+y^q!(hEuFaNX?PE-DeAbG1%%y0dh*fG_UhKhf#V(cPi~3Y<=N9#F`G zuQ>(PB`^49fEH{0^6B*#Fgyvf6ES6Wh{f^X1A&7NB%sq}|Dp6h&@7q@=K;oppxLGK z%swg+zF?pEbY5cY0oS{rmSn&TQ17`^#iJRLR6y+pP-HPfTxJakIsUe9fB*mY?fl~b zIti>s#RAlJN$>%+q(F_%98d!nRCL4IjLmz%S%9IG8=B)maRJ(T3Ch}_g3thTo){>w zKyJ9B1e!v*`C`j)Py_cCNa&=}A5fVAN)piiGANX7zJRU<>rq()9A$jKj2O{*lzyT&z}(nfjR{SuAL`9O>Cy)zyEu7yBc_O zx*2%%vMN6W1-+XF$mO7(eYXP#=%}|&@SP?gfrGEOJi0qTqf^a~7+gVxftfCm8@ z6FB~Z%IVGxAlZYp4Dv7QKEn%2P;h`t?w6ULK~_uw-$wHiR4Y0*{(+QbcR;7jHU5E= zQp+J6(8y6bc;M{ZKKjP862fQAIfxqPs=n}gC z5l}#B9s_4tkiDRYX=H<+?)C9SEUH{8sJ!T11MZ=NH`Kj)QGFU5BOu)jX`L=A1^lfG zKxPMn%|3e+#cWlO*+!sFbLYnwjHqUFg3RuG1#*!(l9`U3$M{?QKx0eIKR_dFIVuI9 zn@>T@U*YAi#7&k zkopbme*RX_It)-H0jeyR9YJ2`JoJJC)e{M<3=ClVKu)zmm2&}=S)iSUuU;gb0;M1y z6@xUVPL@Q_KCtFJ;DBS`Z>{_DA9Okgf1d~|0|Thk|M+6@5tNXM`Sbrj<9!csc%*?k zldVDj|Nno%dkWzz{#J9)s*&vn7!SPk0G%1B1PNGBMFFlH7#Lp6MKzTT)Urg4zuhMh zCW4wJpn8SB_3rQg{~a4)MKkD7wEAD96dErt{3c2H8obI451Z$Bmp8l3{w*UbkQo1gz{KF-p)M+J1K694++pehs8wz78T;BWP2 z19kVdfQv%M<~kl_{x%DcQ0H^s-W-*Xy(*xj3axWN&ie|<@gRpY@VA}@H4M7Lcr;&u zR%iYPwIM{bJKZ@vnve4^9_xN&^XSEADhPw#x{2x_9;2hEZ|Y6w9jU+}kr?oLf}>|}`p_0=u!*5C5z{O!{D+_m$K zD`*b-flqgiN(3nFMYwi8Ykt58H?5-uoMm21gBn@}{M%U~(i}ToVi_Rj@b|4_U|?u~ zlr{{dw>=939|RC5Q!TMs-6X6Eu3>`|JPzm*HQ*dqu$e>s<|>xEj8Fy$s0`SHriihTmRK z29IQc>Md9hd~s}k!sOWb&ZG0LPv_y+!q|LzzfRt@u6Y3m06Z1AGM)sjUygV&|2@JGaN!I(cg~~p5a?o$2*U%f zO)QVriGo(7xPcasF?D$TbL8L7EZ+X1_gbQfZ-$R$q z9&prwatdQ+zkrC%fCH3KPn!6A+Z~& z_~dWB4cg?1R9AH#0LL=8t^%0|I!u(mb?dMH{~eoMR9KkOnh!AYw>$uC3v1q^0+MCm zZ@mvXJ?%DsE9e+FQ1>0YDUQL_@EfQxQUDsC02kxEYrwi#RdSl0=P+|n>`@9>5PXs-9=3(GFBprcFYC(zPZ zE06#G8C_H&Kyx5q$CXHe++YAo3?Mh~Z=VCcqcg2j#u3z$1c@=eto`{PJQo2A@@7bD zg@M1N9&{taVUTn;Bzb~{dq4(*at=yq30}+W*m)4t=xI^80~#*KeS-)~P|;Vx-+GIa zfdLdT0-)-ucPC0z?BfKj+&*de)~9z1xZDSC8TbTJ*<1)7Lj}bOsMeUm2^!>wlqVqX zRit&YWP)4WvjIwbpyUi5zjZY{pm_n@HUwpN&;>f+V1tAiDAl~M ze2oY*&(5R#tp%Wa%({CZml;_@T*u!I%HTfCTU0=2ii6Hqy5tJF@~8!TAQC96gBGNK z+8Q7$K>5h0a|`&8%Fa0|pe2u;r=ccV_NdGO9lG1L0n}3LZUHL-IUA(Wg?}3lhfC*) z?-vfdVDEtV)ur=9^MiVuVE(prRt5%}a{jh+AiA2r{W1#!gKOsv$L0gf{7t(+vyYaL z3!V9!)_~?3dxIHWI&boC3lU}D-{!;1;MjTX;6oP2ga24u7(Y5TJY+0o`hL^3*Bf-V z!G#xYU^R`882A|&To_N;*zmVp1zFH~iNDW|m4RW$|NsB%T{JIP9^~)$1sTtHs`WO1 zA80uQSW5GT>5!e|dTT0tTVorn2b`#{SO55C|4)!m#&J8v{UU<5V8B`-BU`qzAj?b~4v{+4Y_ z3=GYOm_X@&GpZe+xrm0x3Z;uca?iK@{;&B0*8Kz-4!Q;jv~#6Z2PvPpbVHh(y*bQ0 zpcSHR%%Hr`S)&48s|>0HK|SwoNc#blTQy#+eF1hfDAzH7Tf8?wD;AHl|Njrl!VVzI zPi+Nz9;5{1`R(8i8)UQ%ByGJLVFIW$1toF*)`_70Cuqh1q@)AYgi??Rz2Qudc_)wp zafshxR)l~wH@m1faDW^EijEhqs74q;jNo$YyaCdG9aUBYq@OWH#l)qzmV9sn(U05x|z4`~O>bOv*Pq(Bu}r?U)bc)Oreq`P|# zxU1yT`ICSB9B@yh6Iwp?wx~paT8!OOz@k{5J~bn&-<&KToA1zL;U8SuxW`5>cZ57-IimpgBP zrlg>Q0xx8ophKs=pbL*)q70q(LY(WMf`4G!X8&K}-ym0ZANAm$D$Ad38I|BZ@bU6Hb z3A(hSc@H>nAmfi9&7f)?V$q8{gpr_54#-ka8Vd$>$sxAF;sF$jpuUVx=cCSp+TJpq zkk(D7HwUNzuf_-I(||iTl6-&ugI3x9e8CSAhV*V&z=AL3KL7v!?QjEsOXr{e|C2k0>RTm0L6L>U}=gBiia+rft%j2B@g znqzM;lWVUx^Mw~+IY_y7@DT^7P_yH2)&Bke|My!jRX`1!mcZZOElms!;L@wl>G%Kt zFAIMB{|_lv8Tp%%LDsHWmmHf9Frj$) z`FDty?|=XQpMTqdouCOJm)?RkE}b7{e*fvxc?;~ngAX`*eFPXCza0dZ=b+25_kmQ- zbo~CW^8zS{4*p<*sdQ|3$OJlGioaFm7dRMXfBpY&Bh0_;0Dn8^F4X21Tn8VptAc%T z(6!|@f9q^!28Qo94KKYk1g$^>-Ny-^uO<_vv53YY0Hi6<0%0dk5rZh^}KT;O5bPkL*i4pj6=F!uY|r^POjJj3@(W zLL5~68{YP@+yZV0@VEQ`FANlO?e=4FY^dX4=$ryRFqwbqAyBgn6t%9JH(fxBr$DVp z&D;E~6G3(HDFN^@xnM9`!D0&7QvOykCI*Ivpa1z=ctO*By&nIY4>CG6@bGhVKvaMX z0+|WA%m8ZU%Yy&^L2C>^o?+l`0iAdS+7RN{?aJcY>&oM}8&nr`9_qa5VmU_zq^P9W zwOhco+k?f$^0Fhp|1B5G6OR1;2VE>LI`aFRaipo*`LX#hj|bzA4gt`T0#G}wBY+W-e!|wGq#tL{ z6cH%JffT{h&qGv2prYM{e>=2a!C0c=`#yoXw;x|btpy#H;-aGQvgO z;RlJ#`t<*QCrF?}gx~Pw%S)h1`reuULCLN0H>hafZ_fs=Q9rpGG@9zT6SRujh2Q_Q zWAhp-lbhDP5u^80tMC3prcYAdNpd9XyqvGYLhMvzM#J5PBs z{%HIM@?d#P>&Z%H$M3gXI|P~!Ft%PQQFrP5=+Zk0qVR$T<4?!NUtpE0t(QP5Z@6?Y zf|l@s+U_8$c$yD0x^$j&?Y!}_5VVW#;2{pj=3`80or16LfYw7bA7Dyz?Bsa81k#=W zZ8`?+bABPl25Ap~$2d9J{``OW543r+`4H1f4N%1o2{5LY{Gc{EVlg~u|1Uopvi5|&NCj}T_EFKI-#AY&dbLkjcHJ0&Zj$*!xyy9n-g@~7I^iYN3W>9I3L3c zchF>H^KQ`URtAsGX3)7K{4J+ICtNn~egTR_{+1qg1_n>?JZbM970}iskK@fZK*oY9 zzFyr_aXyCQ&7fnJL1Li1Z2?+o+XIpX4QRiPgRX;Y`~_aR+7fyyf@* z&O_ZTV8?>YhD#E7+t!_Z9F=>gDOxVPIgeJi*@vIvf1pBbM$h;CY?qLp+wB_?toZ z3pYPw?krIW;BS2fDx$i3z|$YyEh?bz z&_gXwA2K)w(uor zgQ>@h4SPVxN`lbh*x|(j(gbpZYljmDXo94}i`Av`Bq(1xb_8*PZ(>bz z?DPWNADZUa>BI$IUk=g$TGoOz{i1OT;?E3Fp9!?O61?a#0^#MBKWq%pduKr_1R}uW zW+5s8FZ7ro`P>7v(n*o&&;M>{V1rf}wtg$MI}S;opv3jk@bCZs6S!McKoQ5^0y+^7 zl;4rpM>8-mpsbGuFB^IJ;shgT*!1Iz1rX7K3l29+xwoz0*dJ74Yx z^%S7z8FXG~`~^AzfxpENv^(J!B-yKi+5RCR{v}3@zfwz!N=mdEe;F23mXs(p{z^&8 zURom6_^YHiXK9I$<33Oc12Tn)fxlJg|NsAxk_BWEXk^X8v-1adrp*I<)B>nk;?da* zYR$aR-vt^j+XBww9-Ymg5*a*|4LU`^rBma0iwdX!0tGI7y?6H%@c2@9H>j-YyZ~Cy zdx(Ggf!0g>9iRr5<37-`ILj0Ky`7-7)dwFid2~+(nd{NL8C1@6i+~41!j^&y4Up;3 zy&0g5Y-T;YpBv+(>T`?P!mJGkSw%)E&^ymgBL(tNqUYiY|6XafSuK4}G zlihMNNLBrPP>uI}86w@fbZ!BsQc%KeiTnHiKcv!!?cW0}$UMQ{BgDzTV0hqVK4_f^ zcwdx9uV^bjC~#iB_}K)C+5;ZFqFwx;(}E7ZC~pSUgw3F;`=$F2(B*av9=)QWQ1vI_ z>V2T<-685h_5Vvwh7P(kaW;sLt0 zF`&B#95A3ggAtycM?sTZ37}J|k4TMsz$Z$H%O zqT*4K0XpwF4P;4yPv=|jUY}kD(2R3L=XKD&(*#i4t8)%`DPQMd(2BrckmfR|As@Bq z_kWM(qb!W~p+$m^<Wjyh zKye$Q0>0_N15tOjo&qJf?JeL25je9o9DKy|!etRudFz2rNYjG9b-@o%w-B_P5IngA zs;L?HTi%0OY@InO87|#9DgiJbdvsm~^*{qatJOR}ZHj`|GN2wBNRvmW$$ijlv`6zX z3CkP&ebc}uJbaO`1XNr;>|}cp24%UiyzquGIbJxxm^?2`m;C=KYdNJarG#y^TvQyuAqpyt`CB)j8OH}U4&olref6yeAcnTK!xe(^j|aq+55Qh>QE>oe z9FOKb;M@kCO-phh7oTY5EM7 z7fZ~W4>4I@EHP+)!05P3gn@zK<>DWZX-RNd2TIl8wE{22KtosHrozia(9yb$|NqyO zp9Br1x$tkl?#RFXRIkXS-jJybjHj$213Trbn@>Ou?F3igFQ0-6%YED+TV%ie|G(=$ zXgCoxarA#Di23sA7tpfd9F+`k%0f#~4?&44;KjNHkTrlFpb-jC()Q`)t<-{@>8?>J zaIySVZsMqU-O=)Uk&flXa*gJL%*}_G9Xks|Jev=4G(Y^){OAwk3C3$amOd&0B@Vvb zjE@+vGe1>2Q1*##Gqi&aOrj60k!qNo&^=ApzbHQ3GSkj0BWM$2QA?3E>Vf_ z?TzAr6i?7v!v|DcefR0S2P>m2T~reIdqG>(y4gLNj|up6K0NqBqQmV&H~YaC0v&E2 zyV*O^K6SHqxP9i|<}Tdf_Jx1DyHJPQ*KT)#jrQ4mO+nvX^+egL1gYl-LH3~vQ#`H>i_?Puedxr-84W;!7F2b|8GnNF98QGw)4CN9b*7JAFek< zK;X4x8o1rq__MemJ=2lj1vGjt;9+^FM53Fc@n>2=dS>Zk&>1D*b9Ou|50$>~=xzqh zPkS_11TgToB!i~D4Nv-ZKG;=}nN*D2NoYL|8c~91>}~@)5!Bn9$;80m(+N61?f->N z7sye;t)O9V@Zo~4hTp(bpOui#2gqD!A16fT!xe0oN9Rq)&ZE0RT%4RC{SH^qeFEal z3=AL}_?bZ?4b4KJ-Jk&$23PXl!qK`e;a|7oD*7Z5f` z^nX|dgyYkjECCTHfL_w}-{ZJ5_+Sc$R@Q;z-VN&JSP!a}->5$Glj56g@EZOowIJ1bD%we+=1 zcM#}Mosvf$orhivfzvfy-EGj&gH=&tSvp9a7Z2z(okxz1CqV0WUxJ1jAo;-6@V_hQ zNC0s13^Ra+S4$CSwMOF+P#Q)VX@QR)fEQarG+973wf+G2kqY& zml#BgXXlF-UP!t?8~mG}GkSD8E0k)228voiHz|8|zSt!Q(eOeBN%dw>5#8;q09M!q zKCa^hv`u>R#b+P5V_Nb+-QHHvU6&L1w@-#7i*87=c*Fv_InMGTe=|2|c~Iwx*L=|U z2A{`LCf8^IP8084x;;Q~&EFah>W?&oWy>FVbe?$43rR;{kuq1%*)49)rSDz39e6;; zw><+d#7BzX|BzG2UOoVIGaY$A5y1jB@}Pi+yA6KKj0CSLjilsa2@nL*`M0Sl;<;co$*jo{JU4606D__yx{mHqtN zS95{N`|b>bH1J6_;miySJ3s@4u!5D}<%J8V%7ZVB?=4Y@aqRpFTE7h1;0)f%4j#2F zQL%VoaRfAc;%opr-~RP)P^YUzMFV;sKB$}o^##BMGpM!44%XnJ;sDdJ6Es4)|Ex>r z51-x=l>}GAC!Ibj29EsO&!=5{;oJGW(?`XGfBONS&KwmF$IfG}i2Lb0y0Z;@JAb%< zHs;*?KMgd+0?G2Fv96tuyIoXDd^&G}O3Q;k*gP0t@^8;kNl5Et1kKFwuRnV5DO+bI zhYRC}ncr(vOwu|XnfSN6s3aYHz}D%=)9J`kBGLM`L2W0iBm|Y(C29 zV)-7jNgAZU0@RW9aP55P2pfKd?^pH#E!_d_mg5KQG--WOBJa`J3_4t(+nK|qGg+hg z1XHIo$7>$L|Aud0ZUZf^cjf@K~!Yf-`@vYcGZvmaG@U0m%+tR?_A_AUQ zY4!tClR;N>rgb`Jr7<@LF)=V`UP$W<&PnTZ&g0+S?8L~x0IjFeI-Lt3=OyxQZ(amm zq(8Ze2{fwWT*SY<8*~swCrE2q+QAq6j2F@_{?I&_*6CgH()2%Q`_Th%x&dV+RS$S+ z*18A0R@GSoT3ef}0tP|>}8GRRMc2hzSDVr1f< z3eLGq&5soLT@Su=1g!@$JZX3dbZ}7uXwi6r#|}{DVrF1u@aW~OVE_#Qx~OElFggZ0 z;h;pAf7=Bc_7a}PU!YrX_*+38YCXz3CEcIUj8VgLUBhqMpT+oF#AQ;xnY{|YhbW&cl5 z?~$MbK@$t0nv{XTL)kflzx4*F=-rN-lsb>4ab7Fc<=;LTbT0}2_T~`K;XM~YDU9*L z_nV-EmDcH<^Ku?&65a6IOS519LASABCcl?8ph|iI0vtxWufXsCvIyurXGaO2ZqEdd zZifV)&XXS94iX;!A0VcLJ(}NW?0OBp`}=@Lw<8BwZRZ5gIyS>g9>*I%YtlgViO2B< z(CRgCQ=r>X0%BCc{{R8-LBkq{VdKq?{OdhAe7gmGl23w8I_$jU(aRF#+biP$D<}B( zGk`A0WCGp8IKxNtgb(9|wAM={5+1!gK^}~t10MreJem(McLe+e9m)FMv-tpBJ7!Q?T+NArRY;|>080xpcF zIod^l&@K!NptF`0K;yvy z9-XIMI!|~cpK|Rybnpk~w`R~eT}&l)j-3a0feu!6Yw$`j-T+3Q-e%CjG9JAw4xN)h(x8ic(mFZPTsk9|Tsk~hntySXfbOSOh=zy1 zPj@${!ROL>@&9Dd0bR$z=7M9e`G`XFVaJ0%(apqTCLe32qk+R z89M|#dOa9B1U-=1V9P=Cg`Fo}--FVR9Qn6h^i4kO0g`_f@0grA60Z@O6)y0yb?u}1( zC#VGRvF@~BWMHU`_U#R1^zY^I^y!=k7Vn-2>el%8@|<$*WOV6n1Pw!Xcgiq=rl=hS zTss{(96LQ(d^$nLylH@rQgvZq=$;5t#TdZRJrSgk5tK-eXdDK2n*NJkYZqjg0B*;G zdo;gM=xzi}Y;|65Jy6Q!(YzC+lc6-Vdm?BjqDv>lcgMljf+D8Z>A&SKe!t_LU@wB( z9WIuQpfelmI9)8k-meqr1RDtoDbTT24h)6|EO&x-{PE8_fGjlubQ_xkXei0x#YXV5 zd+-)*9~Fbw4Pf_$ffA^N$8pe{DfqHI9goh-yFfi(kIr*1VP{)j^gQkW(#hc1?Wkbslu*KSc!EdcLD1}^Pv@bR3(J0Ej6a+J zm)%XEwysZir9gM3f=B0NpWa0vJszFsx&t^sB|IopTsx2Xbe^@WPAIVf34x|n4c~$% zC%-vxF!Hy8)-$xeF)%Q&x%BFAbspz$0om`-`nH6V*_FYCIhUpLc;{ai&bR!nte_*Udc89o zoBuKLw@nA#@7?Xk;nE#l(CwVz*gX-naLl#45man{zvT!%^YRsFaRzAY)w!2P8q|y| z==4$XabdjK>0PjM^{Q2?Jowii1dnO?s5pRTrYt~HQ5Db?KcLpH$H5nhoz59AA}T=h z8lOD6{Sy9%Wq{7;3+Vhn$L}|MIv;{&pkK&W{QmEe99#goYU-j# z=B2RE(9nZF{6XFF|#$yaTu&Bn%oGKModP0JR&T z=?By!1KsO;+&Q7RBs1ydHprwXq`wPFYf0cl3O4&?2UxoU1I*qz53t+20jlm>GpPIS zz~2h$QGoJc0q7=!0#MkY2k-wdu&-Z&Za0G0M?T3f5B`+*&3p?ADbIs%6&y9sIx=2; z`3!2lYv&8lg71ef4wwD@5B4o&Ji?=ww-M9;>P%6o@aXITFUj%f^-)OxaX@TEqwTIQ%d5!9Y=)ox4yrQpto z9^moV7vD>}~|v%>!VsId&d+5mpL{b-x6k&QH)BU;zp`(0Qv4 zj@@8Au26$CZ-NFw#KD=*yTbANjhFBKfF@$VW3r$|XY02T9uNNg&7j>FzP&uhx}9?l zK47v1-Q&#PZV&3FKo(eaJ7<8BPJ%}-FFSZaH)MVSI`a)qOr2A}(bXMX0E%VMpcBYd zNYRWOx2=~dI6>zstv}?!cn}hQ-EJA6d2>+W^tC+4-+UE(^4kYcIe$=r>0km26X?n% zAIlR(AHYEYa!-Nd{|lfZzygx)9J~2iPxb~fgW6)=c8Dcs3v7IQWan zu`}$CujR+`%P+-1L6IDy;^Wxe2#O)FsgBwc!7<8s5ggs;dEiB8=I{UAp&Fn&>n@c_dvv=hbT@$70Idf~6d;#mXgJ2i9!{I^f*WcE zOuqDiN4KxS3zqMoT^J8QH=TeL!pb|x@Es={7#JMG977>jkG!z@!^YsDd88ZMLU8Hc z2x=ZVb{=rm{NS5>pwmUg#iR4IXY-HHG7XQN2M<7iXKz4=N9P5P?+-md*9&%#Hh4Qh>f9DKzBYSDZ2vK;j2 zYzDQXcB}%`O_~=xI-5bwEf?z&6&LVSR^PP`t+^_wQ9Rv zR6Iaa@fM)91|hD!Ds0^@DlXvL9$hRSxbXWu0I>sJJ44c0^A899)+>w*3>W|Nx10er zl^MUgbe3^|&a>{c^RO;avEXl-1`_X9bLlQ)aRhfUJ-WfJHoW8sx{Brbi)jYz3@)G* z3pZUfzk3{S1~mskMc?seP-KDXJeSVRpa6C0TnuV}y}0`qyn(3ErF$`0*cvR%-zy8U zsq<0V1kjz57d*Nrg9B%VN4L!(575#IQ08{&mUlJ$2JQEBhqD}f#OcU*&9(ERi?%;U z38#zYY*2f!&eo&5UI4VK#H00pNdiby>$j2%E|#}yPdjQ}cJ2J=+WEkv^CqYeR(LV@ zGiXP({Ob*{^Z^=?g1Gw@MBR%jh!P}IOIIQKd!X~zox8!kiPlSXve52=FDQ5(qW2g; zLp&}JAJ^)4PX-0ROCHb}c=8Sm-QA$pC&YD{7dw4a6hOlm|33Zy|9T;){P1Xg#{!9! z<}7eKv_!?n#j-@jrA`|fDUcX?`Q`8b|2sfF05#wo&=x2f9(er%rGv`=y6cVsJXj~? z*?GdF+l#{&RNktB;-lM1UlwA;JG#`1haK0h-DOty*`ryvW}Qng;*O zpU=pz2|0TCGk?CP0KaAr_@GXYZbt>s7EDkd%(3|a6Xd=`k8UT>XiiBIND6e|qDQxr z#qkyu(Be2y@^k5SasWwz#wNR+TtMruLFuWpMFo_>x}7|_gFqLLfd^x!sDO?JcdtX7kwBnf@&I2{snC_0Ue_Xs$xK1 z0{H{P2KfQRhI$V)E^@pDd?p)I6yzlkv$F-fkN2e(XyH5j{B2O1Md1Y-Xxo_af6)A8 z2)M_h;J63W0|1BaWuMM-mQD$!dcLg(O87l`yFi@>pUy)s9u$BUvOV!={Z=C6((T65 zE#}eN4U&8@E%!I{4kHEdvE7LLfO6h;^Bd5@B2WXa^J@1L@IqRb&cmH9DmtE>XIwhZ zAN&f|8vsF=8RPXQmX=BWA8#qu+M ziwt#D2fQP2!z-&95hh8>_DEhHCco@hJ>=JBsTIMea_-_C2TmnzwsUog5bzT;ni z!jbWi3*&Fc&KIto5K}vEF&+mkq)~BUyy@84170`=sx9k2{{Qc2d5^yZWPZ1cips$U z9ANWYR8(3oRf5`dE{v}_T~t&YyL(hXC7f$_4|vz7BlILWSJ=^Tpv$~`R8&BI0+o%; z2N^*_(BRDqA6+}&Id-0XodWJ(x&C*teC>I>1?&h=#6q_I@cSNi>|6srvBa?xaw3d% zj*3RDq@(p3@c!i*epkcWj@EO)N5VMr&pqtgIS0J9*6;vmv9;w*{ua=L2jex+Zgoe? zZ}sfmJ}L$-n%^8dPdPH4U_1{Bl7o*pTsvDJAo2%4UI6(JG%Nt#vo{57CHh?{&~XG%c!He>O&_nfKj{QaP|I{&s7NUHB{1RXWy z!oTfQrwgdye$3xe1lp&t1uDG?2$oRfHM8(C$@?SlBcZiCIqvm(e%{PpfJvx87biM*@ zDR%Ar2%4>UaSwEoEpv{F1K5EFe{r~WzIY+|4s{TfTO?sQ5T`zH|jy^T?y~ zCrD#=3pjj0%U52^f}GO@>VtK*gF>|%62_hFpeXZbJ`#a4Qw%M~T|19D_v$b>9{kJE z_!KlO01Dvw3=9nWzzGvHAi?0cAH;UmJm2}kg>gS5{e5=iUw@pj9hAfzJ8!sv1JJSa zy$k>Pe=ic=fgSfjSJ&vh#JQ2ApM|lwt}cCy$kXfV>?KgfBg%_^&sUh zL1i*{90}ArWc&^aeem!+y#Lymqv8W{)jkH$aTgZ-<)S0aM%)p(=f(Rsq7^P)?)153An zz*?!mttmM{4GmVz=!H{^T@%fq#rE}gdz{^qc}Q77-x zc^JYHb?LkeX7Tq=2F*0dgVu#Gcz`-C9-XgWf_i_Tc*;oUL6mY z&KKWrIP!ZOwFT+m?+0CpMZoN7I=<1q5oA5e+bb?QTZvl0jEMN1t zsDoQt-XC1LqrW(I{_6bL9sI+k+xd@2^J@uyd4_J|?rIjdULDYWP*7yMXujxWDPTO| z*m>0P`&~zVPlzk(HQjo3K>KVMTsm)n)l`6sQ4~e|eR`mYiC!H+7shkFEP^hK_d5?c zc7AhVeBr|Q&av|#;|IsiuNQwE{K4$pYr^b!@Gn!Rw?U_~gmW(oljFgkOpX`-xpZa= zfR>2Y_}#Jdu;axaoxvKN{}_Kb9{kPZ(&??>c=7MSe@rf&#T*{Zhb0dFV0P&Y zmT~EH7IEo}=5guF{?b|er_-6`r6Q<3;?j8(5@r3qpk{67RVdFMbi-8V7Vt59j-7kJ z=M8%_9s#8=MD{)m9^dxx=se-mc@n%87F4IYb~AvIhK5VG6AOr;;L^(1*boYT0 zYxh1-;shm3$AiB)oO*e{=>U|oIzv=cI(<}hI%7a-)knp|(eihVeCJt^58u~|xjc9E)rl=^u%NNJa z+m7FFJ1X9Gy!ab(J+WhVj*5V5cZdpyPv-;2?iv*l*KQvb9;i9p98SFSXFFJN!Vmx*6XQ#)HZjUdH7k?f6#pKc%z~RDp(zWwor+_2l3CD{+ z9S{Csy7<$j(}TyQ(}AVa+*|!{QuwlnvuUX6SNej@dzkFAW;pvcLH>; z9gAbPh>Az&N6+Rr0xz6l%B}wY|Nr`YXB#MbI;Vl6!~;b$QgH>ECjs662}&;qu_TZ8 z;FTX9kSjkSary9-&M1=qo6Ox;bOW?bi2$Id?o|8jVAUIsN2AQKe3KoP}I zTGBlk)FJI$4W4~D-V7FHU|{HV`tN9Y#gX6lNM|#sbO!gPnK;y%LzF4l`dT}S@82SE3Yd30WU!SU?>|JO~BIZe>? zgn~zRBWQ)9Pv>b*=uM2R2TC~pPXO1U%-{?Gp7Mguw;6bJGkSD4fEOEfJAfwMKyyK< z9^D*1-GKtWt(Qt7yS+VJ4G$c5Q2}j5X7K6tQBgSVq5@jI%mC`Uc62Z!VT zORWb=HTd_ts3#2^~!eo{wB zhYKdO^*^KTab-z9vABds&g1avo3+QCB{{QEC;23qiM4*+jR2lH(B zw+FDnL zJPeM_RTUZ~_MMIq-Hjk0Fgv;&cZ>o113Yx3-3W>Xmrl=wV|MEo8dPGnlZgp(fRR|h9E)jQZ*i{B*@w#*#I`~T7h4IkEU$3VaUV1$NCHXoq zH2%u3NGj%U0qxf?Icsd@vji8=r^XP3{2fBglS6Y5@S;=$$w$mV0jR!%;JR2Tp{FPUfT;{>= zau622jlYU33X1t#R6y&Y+Cc91=xtO1tr7f{UsO_DvXsAVC&UCLCeRiukjqMnp(cRZ zCyfV_pb{k+1<6neP`Kn3C1>!r>;bJeX?q4TqPG#$p=|t>T%3}@-{SfI|9`NLGWc6T zEqRaLM$k$Wgu9Z9Q_A>Tw}8jl8s{-GFo5UhJbD{J3s4$=6@!Bdbe}ZH#KbcG)=r4h zIUuF*^3tSk{^cI!;g z7<_LdXsHFl{e}n9ns@$UVqoClZv)M#cyu>1fYysPACLiuA6%ZDzwH=!nH@}C0#%-k zzikJ`v9qG#tRk8U3o4bSc-0nlNvtp`eMJX$Z6u(@;# zxO57EhJe^Tx&t^oI|V?OM}yb`o}GfA;VX9VVwX-vkfDh2C6Hdo>^E4iCur;pbh*OG zlIw;CJRsE#QhDx?e90sEqzC`{Q=neP!5{V>y)BFk3JeS$2Y>J#PMg5L9bEPx{NLTE z0b1L0shed2s2$(|jI3E{js&GC-~#@P0IP3)Z~&xb0!V%H z0fpuV2fp8c>O&0H@yny@XS}crw2HF%!GY!j3LpbCFYJ5(nscKN4={m_l4`wFA;@?^@q`QG2}gbpP|f86TCoTb_)F6f{g z$oeUQ=Cxj`5N5nE^ZQT!^#>6qGH4?M1JJo-*^l|Kj=O<;`Dc3Kwa+!Y8oNshzTzI+b4qD z=fc0e^Bf}sgCqa`OCFsk(i|IqGB}iI^Y8Dx0P0Ndp8#@l8dy-wm4E*s{`IF^`S;&+ zUjP69|AX~_{0G(px+Bb|m(>lb$D^~u08|_G@|J)PQ0Q=g z@V0?=UvzeOfc7x_VsKz!C{b@b^dHRo$Iie|&UL&2gdbT=`3gW{~p36S^mY zngiX9pjHBNBWQG_6HHoOs5SNJp2z{3s!2ZK(<__&oR`6!e;W&zO9!~-cIV&6!tBxs z*67-LphC=r@qp!_T1#;6;<%#(X!PN5+60&02u2snTXiqo`M3FSF}i|A!*_rdFS%-- zaA7+rg7QlaH|&6vue%y{K+4wxuh;X-Gl1%xM$mi;sQNqB2pYv=t`r5#lawV zT>`D77l@97mfO8DLhijHoDc)}w}VUoABx7m{Q%S$J{SJ&!Axn62M=+$@^8NcF^%zn zE8`{0gGC!$EH4%dJ2t;$aY9&+pib2~3-9(vt|@FRHk zN5iAruwfquc-?&GY5vwr3=9m=u=42kl<)!V5$W^>RnXnu8a|!Q0ggLBN56P&%cQ7z8FhbOx@I3efWFRBDfiW$Y z_*+1OFyM314}ewxM90C~6Hqf+E|orT;opAJg@5~jG|Lmk7TwMPpcTU|ou^zn4|Y12 zyl@u&{lC*W1$@RyCur%2GpNVw(dq1PycyQKdOd$acd$=dr*n===gH&FDWF}>oxvq8 zorhkq2><^7`Z%aP6PCfh{lvkCY%e|v{r(RMFaGUe8J*5PAfbCg;00YiAYoAFmw&%o zfd~KkLmo3ddRqh_KKmg6slP$%?zcO8ymSQ>m+er zzI95fwI#G3Fg)N2I>y59faM|n9#B4k3V4D9`rANf zWJmJ<1|0-w{p z)9zwrz_>jcNngD#o} z95pXGb{=r)JoT~;Jh$M$V0aQuCDi@s^Shp%*Fa<5o##DzMI1c4-8g)DbuM^zy9$7o zavFe6FXUhU1GKf;0u&}zkR4Szpcbv+TX492hs@V`cDr(PzE5*(t`}hF7TMw1?JnWb zEpvgt1vEnDYWNKtw1(ea%fsBkzujG+`52=|^I;y(=3^|DANboqOFvz@xx1ZNK-c`; zbpdUEu{=fNdbMM`pnQ7bb>{@v&V!EN@N(%q^Mp~Rpv^i4 z;H%4;k23P_XQ?>&K)_=LXmKcNu4Z&m(Q&lQW#MlJP3?eYKv_W<{@@P*^x4Y8V9&o^ zW_aNB6HtDGr@zkY{QD<@s%P-p_+ze}XId|n%JT1@3~HLRUMh7$iED8E>Cx>j;K;xI zg-drMsD|}|E;vequW)&1xdTg570Ds z#*5uZMzH(>O?GFz3;|~vP*K3pup8Vg;cqGZ|Nno(Zb;K)`pa~%3ebErbb*{tccy?x zcc8{`aQ7YLR?wyBoiAT>Zv_>CQ&d1ZdqHQw9d}UyHCGrMK`WC$>Rx0*Re(0Df>pGr zWPn<53=9mQWdk6MV0DgLK}-D}L6v}1gM>j9fB{^&iwbzbx#w{f@IWpo7D460OV+K> z{TGnZUBjna(WCRUZ|jqiVvp`X1JK%tM_Yb_Hb@(Q4E5*^)&Pl}gNT70?9m-80TSB< z5d$rV1FiZ6ot*Gu8AJ?pM;=H_0iM}EU9Crpg59F+9a81Pkb&p3k zqfhq&&{`Ca&eNbqC8*2Oda^{|#ca^#rsLpUx)7I52Cbq4SzrjVpnEcCJRNi#)N%0g zI*^*<&7dVfAl3`sEx-R89`NYx2F<~H9B&3G21%rKg4edacndPUdopOZBgn{mn?dPm zGH5&zVkAfcr2fSbkj(MsDIg9gB_D4F4Yq@L9><$O>Y+@~;ut6s)@nug7CIiU;L&;d z1!&|E(s*G2)!WgaDiM^PLZFqAPxnGda9sB24&nd}=_GY?x1KEVG5il2_v!rM)A_LZ zIHO0ei32DLdvu2walDWNxw6|Cbd-b#;|CAu_5+XZ0D%|GV5wjZkK-;z;CQmMF5d<6 z^Q%qZc!xwxcd!J=D(h}%k=6qxDu&-Wzk}>K#^}*4^6SNZkW!G6<1D{Gp0q3$DZd9Y zV;M*Sy15?g-MDyg^g1v==99totAbDWLQnzi*?G>l^$C9qBdG7wy%OY0&^ZngpvsWL zr}JgE!Hcj>piC2@A^=Y8&_w;h0V=8i6$N|ag%(s)0xAkltS>~Mq86UVT~r`xwe?bo zTkE$HLyv>cSPXAN%Xg3N5GjzQFCK4%SZU#L+(il!7|n+TJS;z#-T}2Aj)0_(yQo-z z{0(xc2Pm8Zd^$hA@cj25d=Lfb5JHdc0D~7ZKx#qjH$fXYk2^qfRDi~dday)@3RvZF zCx}b4K!V3zR6q?I29U`SaFapvSD>H)9e4;f*$$)@bZI5J$*N$95YUZ5FFjx;3xEV+ zhlhboP5_x~?a_RQ1LW?BpdI7gE}$bJUwU*0XuNo^0TKiWVAG+_I}H*%?xKFU*TM8;}bra1jd1F5sCiP)Xz%_p)-s@BfJLbtDzeMECzg$92MKWG*N z=3lT!Jq|u#_UQIudI0Lgffz45I=vG>j1L~2-5`H?bh|M9@aP0jQ-Y@iH6V4OV=O3~ zJ-WL=^Hv_+&JsS|2?Y)vJ4Kio7(VmogUdCa?v%`#g3ir(bWaA20(f+T&mQ#Y zTnQTb@aP0@HS_3f1kC|@bUJ2ubOsi5t^|#l90!k+fKuJ@MiwT}p%|d!P69oAIwJ#o zIvpc?Iz1Ek1syH;1sy9qIvYX7u}5bk$W!1UlC;i7P~3sWdpjqB3TThciJ<8B>6{4a zb^3J91SKq=&PGuAS>E>;yUdc;g>NP*C!(kc5r}LBtB*A)gcZ0kO&NFM6Ku1}DGs;U#@ZJwd|I87(zSN_;Py^g51)YuN z+Ii;1=0NcFXMS+y73UZOt-oAA2hx0e@iZ7DTl&bOJIunPb22D@d31+4cyvM*f!ZR5-kPb+=g;0)#uryZe*f=$<=a~m%FuG4qRON5C;zq=FZPH0 z2Hl&$cr4Aa)4cU2HW(7Nj+}2CEx+)$ zZ30~uRRC`MLeobWQi<&ViY8dRcy^w3={)KPx&ab2dIQ=XXye*>5Pa0EtKk7~9DojY zg2#Yj6DS6bKw_XY1XM*kFj&4W_Vwv}Y546$Qt+qWFx@2F*9U|8W$;yJ;m z^JVif#uup|$y?2b8Np|0vP`l3Uc_Q~xBQ{yzw*7{%Md@lU|I!U{p{2Ez@zzy1FS4` z1Pvv*fJzpyIe&wG|L+8u!@utU!l<2=cgyct{^M`Y0|oqgaQo{<^D)Ne!;Fr{S-=5d z`Mqee<=yfZAXT8tTwixW!rKwnp7VfAY`JuIg2taauX%KycI`aUZL`6(^<=4x3;*`U zGoTIrpivHEm+nqbevo@1Ccf}}0@_A%(vg4v1;@@qFYLhFi=BsFJo)?UzhmdY*Qb#BdLVsh z`7y$Ue}ATlPxnShj$R2awz~@@TtO#eo(3)5ZUN20^Y3?);NKsXz<9xh@rAV;4}W_J zxWWvpaBTehkDq~ozaLb;c=GQ*;?v9HSD1VbIXoVsFb~ex6IwsJP z4%gPVbZpO3)2meOE!9h~`5~ zo|YHOuY=sy#|OH;fq#G2KSxkszGDk$tzPFV{{4PZ{QKRKdR-V<7%y16aqzc)1!?UL z7VzmUXFA>lss=y>xX1A(P{jaZdRo5YZ!ZD03bxy)9X!tA!oU6hH)jQ=(mapOmmtm# zG054!q1T$= z^1-v$fziYA1%ErJr03t}@!zBQ5Mzhe|8EC5_*?bCTe=VUSe`1n?$KRW01Bg)Qbq=b zZ|n{wEX{rv4nEy+8UDQ@mpws7fU>c#iROm_rT2Y% z3z$Hf)gAe_bNF_C039LDzyG8o_y7ObpvnrIZ5cqF$k}@aE}*TP zo}J*-1zM>Ls?<(`k|Z=4cKfKWZbgu+82R*uHg8Hkz-Khq? zoiC0#8!*DUX`lsiKL00zTEL(c^sNU<#4#4CL(2c|5EUO#hv|yf@Ba{`rB^}x5MNL~ z>1F5f7hb-<|92j1{10lQm4G_DFD!h1|9`z6q94>iw>Bt!0jfSd96LXP4gm)BdqK$n zG(-bGCkZ5A@#1dP@BiI3Djpu4&K91X$6EiFu50~PhqS*9WH-os7yj)h(i}V4V9Q~x zT~vJd+d&&jK;xYjAZtLKVDKo2iwa~A2ej7wMRgUZmUiO+^>14blqR?u{!epkwqq!9 z0+%;FoiDw5b^d~i$QKv9LH$WTju{6ZFgbOy`~-Crn~yWT*nuS8>7vQv$iJP<#qvk} z;pXFvp3TPuEdTMhf`;H;z6X!a1Y7jF|8M6=K&ARV;%>evVi*W9?kC* z!1j7{hiHL@JzhwIj)U$Fw(vOaq6P8+gGcjQ0T0V}rFTIC6@M3k2Rp#M_?HtvDH3_V z2<-gFji6}v>CQ4Z?xF%3w`2fq8ST6R+Bl`@(Y*5psEuAC@7Z|)lnzQjNhTSd7(kaK zw}8g|kGrUVyTqUv0^8?m2tGIxbfR~6h>8U$Ch``7Qo$z>Ga2ME(3Kf4UqpbJzd)kC zUmWOS zK*fVk=R@Ca8x=^>Ipp>Gzb!ZsO8ay^gt`93YR}*QUs{0Xs376o>!MNsN*$odM$k9` zC{cjC2u>m{-FzU!9A1Q0fDX!tQ7Q23Jm%VZy96{M2=)JqNKa54K!;LZegKu0@(iF< z=YVW3tXT*$Ps62~?*$Xs$PkqR5Aa#dC8|E155Y#h;6O1Doa5p1X<&1GI$y$!hC3B* z?y7Q-Q+-rGhf8~O9tRz5(Rzi6f#HRqCn$0rf+td3R6JfVdV&;!&JW*yz@_t$Yv-ZH zNB{X57}6X;bmv9TR&h{p_wsaDUgU2F9mVMZI&lUJvL2X=@ZWomr(9LBQpbY{Q zphh%5XsaT~(=Oc&pr8aF#^9rp^TO*h=uFz99<8_eTh4*n5uk~zqaa3ejY8JXCtz19UYBC|xAHD3}Y$2;is#3;A@udJ#1j zRBF1YICTERM)af#np_|R}NBL7wIO%{DrFF)r7EVTeAK zeoMLX7ofxUb6$S^3pz2(MFn(*1gM>o^FrhUXrs1^N(Cq$L3uF%H1(3>(Rui#9q29( zKEwZ@WeA|-FTv#w$ovM7`7n1mcCt*fv@3u9asp`B0~$+^sJ6Vo-}>j@|NkHde*rBz zg320RN}JGmvH1|AXR=E#D6$TEb{_IP_{-i4X>#6?k)_|!asnt;%P+m$3Tl^i`=~hh zLQ-UiN`x;oO?q~o@YQBfakV@Qnh>w?;CDLV+35o+*B`zxd;kBxZ?}w!OXn|8M1adi zkS8rbqq!D7jJJF`V?bx=yQp}8L>xRi5Bg}{bhJDVDhT+U4#CO=aD0REkON4!hD$fN zRCw{d2vQOifDYIQ02Kido}iNJKuH}aoPIciZbYb2vG~v5GVkaA|1Wz$=d{U#$5%k* zIyf`x$iTDn z0%+o_*GI+1v-9dMg_1Hv)oRgtphO=u-vx3LsF*W60Gc2JxeCOCbn795%<%Ogpj2f8 zYCM6OG@#)IP<;g+gMdejI+ z3@^AG!8NHx>w(f<&+a*3r7$HPy(Y~bmY<6ik;>PX9?geYUL0}y{eQ;62W*|re>^Pj zmA?R0?g38Vy4%9BVUG&v(l7@87EnbCzRT?4i=^-W|G(4#RlJDcN<%%bx*4>$@BFt$ zNfz*l#h^YpbdCjdRCt0T|8_>t?nn*L0cjq+I?W!IulbvWLESRYNk9Kx4Zpos0WAy% zEvLT&+GPORAdun0@A3jP3-4ihx6B7@PPZ`V-tnOG|NndT27-FJ&Mcs=AM{hrJ~;jcRX;JUmrD18u8J-Z z0-d%5%B`TKaFG70Pvb;oO1Emw7!s{GC!*$zFfKGFA>Es9X`HDbW z1Y1v*Yyn+606vQq(sFwUPya7gj`H}I~i(YG3nDDp0 z1{K8+=d*#_*&U-2lh)}j0N#y$4k7u{0aUt$sKkK!C@!7;BA}xvT0y;Pk8W29{_Wuc z)&eEGu%LN41+2411?)FaU?KNeUYyDO{lB?JC5FMH(_MnUHT~cJ|FBLRsIanh7vXOM zow5%O9Z)R_9wC0{(d{nb!oS^L0DO}>Jg9tnOaJKo{^F0@ap~ zfVvBk3sH#yotL&6G%UYAM8#qTD4;!>kMcnF@^-p{?imp14E@5tKSagl;3KBa&>t?A zAIck>T~s_6UyA$(9j{xXqT$lb52{!|v!Mtdbv}HtA_oyh9Q>`$kV7_IEY11b%t4pD zcY+#jj@==x3?A7pBs`e&IT&xf*ldZ2SwVz@b?l*Lfm)NU4E(KMK}Q-vJR^WC2fEOz z^#(%nvmI0;B-VXd_*-{@Zhx}&0i9gK2ii<(?JvUL&Vn4>7)kkVHq;c4PFD{8)(Y@x zt_NOQLLvgxICOc@X$Q_`E*{;!93WS+Oavzo&&~_{t?qyR|F?D*;cuP`T9MX#fU(<^ z#l`YK`F{TOt_7ulz-qpvPX9#Xbi-+JKw;g^L*#!mP;je$J{_CbNZ-6_;&u-733He z_Wy!o=Mm6hMIoTs6g$WgJhZY9Ufv#ab6^DZs$sf4P;{3b0^MNWo1+r);<7pD5b0Mw z-~$D0UTm=e6&fijA&#I9=abTz;E3_*{P`lv9Gp-?z-tvt8y)w6%7`@ZL4mEHnGEnP zls{h>gNr1%0gw?0kZql>UWg;)j)P{IT0zw`=u~!48``JyWy|f7$`?%DP#1V~x`FP~ z0xRSPm8C8!Hol-i$e&KVA_gy3{rnFa34*wXzZJ9s#kKW+X>fNt=-#=O+a)s1Cj^eU z1u}Mm1zw&3jbOpUr}+faF*iq;+=hSu|G((;LRjqK3F;g_Dd~PW68tp zRGRUZPj{)oi=U?800Grg9FCnwUS@+*P%pR|dg;^o>qVyZ@Be9?E-E&lTBP+r>1}YD zefc8L8d15pcKRx`9wYHq>u$qVNUP$lCEJ@mV@ z&9&QC0j3&RAz0@NQHW{{h!Y@@0oq$?<7#*bbX+WpW9PNz1B{N%&-g(u1<&}p_WFS? zi@p4y`32})3kO&0PzC22{>~ zDh9`c&p7zE9RlS*7e~%xpfd99c@1xw;x2cx~8F=fF@>)llciP~zgz9p(X5T5`49 zOTner@xSFwk8UpwPky%>F5N6MyJcoLcHRW_F^*jQ|DTZ^zODd1|J&{6^7=LCoCCLz z*N^$-8Fqn|+rQZM`~Uw=w-C?nE#M`ZNd7mx^kODh(giLFx)lcAes@ zeE#Ii7hn#gJ%m<1X@E!97=5}If*Qjf-5Ws@R6gC665SO79-U`jf(AIj;of|Z$&>Mf zkL5A`CP~m#G5-UKFB!;`Ltm!K*RK4fz2Jkk6}q0>Xar87XprPD*grPD!%zvUZv0_roU zAol?suJY-HPX=f`^HESctet^@0c0_YkL9tV^3EF`2OqF{GPi?rG;C#;BmZ_070_1b zw9Wv~FshFV6WGq}Cp$STf7UuVc3yJqyy)2ch%wEv`4^+)$>xXunh%1`d49;j-}>X< z|Nq|(Iq8y+D0n9P1$yHe+I|J=2kjgHPu=t;u(U@P>St5;KTU9L-RvtD`?5h z%NFzkfdRadPQ#<~oJZ$Hk6zJ_t9TiFIuE~C`+$w1^+1W>4j%A87HAO&WFJ6xSVgBW zB<{fbof>w6j$Q)~w`!Cq`E-L167cM9kN{Q#qyvdzyHOwPSAcI{_PV%=hq|Y z0&)4bcY=PYzX=BU_!4#Kblo%^ZKdCM0(;tRfF9yBq`@`434E4AH4#jex+ zkLBIc8{m@5BN}}A0`h)@)&nIqNR}~`+yGg25xZsJ{hw{1qZk}JZ}@h;1Z`$W0iE>s zvH39A+W!+k;R>p_!1lf_z3{pXl5V~^ayIa{s{a4~|0U=U7kGIG5eMy&d))>u|B>e> zn%`I$zV(3KTMZhw0rh%2Ay;`jc3$;heC?Th!87@w2jjbLp35%XGKafuuDNup9CPeE z=h}JSQS+ax=5rUz=lp$JL5JD?a?!jAI;IYk5M4AMfzHGNt%(93$n!$@!7os+LqL#cM>1qp;A;_ZK5$|D(8+Qc zH1+Ffd9_Bdo8_A2kGfYbmJez|T|mniU{bYDA>jhL$;ns$fI212Xf?m6JIyL=$^u4i|yfoJC#$IeSW zoyUDU&mV75IRhGt0v)N?0$OG0+xm^a}W zj(3L~WC1fnj)M;PXY{l@Q2NmDfU9L#1%KN@&|>iJX`mY4rSqa=ZxN#h=$1g2ZkbIk zmNH$Cwt!>jO;G<1)V}rTd>48putQJWQQVL_Y&kbjTcg2xAj0wJno_baS`Z(R!}VqIZX!CLIWLw*LiansCfW# zICP8^YRJ`CkO!g8>U2>t0C&1|K?6XbYhOLP+dx6tEz$v6Z)~ywd~MxBE%4oYpfCYd zzu;XQAu0hroi8=7b$)swq>CaAx~j>u+t&i@AyBY``l8@S@dR&wa#2CtaPA747V`nk z!@PW99sB!#H`I5XE-DqE4*yZmL=DJK;Kna#cCQn0#Va^eT)X*RFoJZ#;;aR{QwcOI z@Cv3G;Rr06kHkRc8o0|RsmWoM7d8U_Xi%TN66DPWg{s04Uuhp0sK znh123s1!hEz`lU5a01Qyfbzplu)i^5kw515|K>g5l)wOTa{zy<5<3I9^74R2KRDDe z($KYNRE-h*tp`EZTfx>bx85$%_2~BJ03X!s*m=Y705~5CIChF0gycg3$Ig(0huZ4Ju1pzz5p#w}38W^XS|IK6uopbB~GzXdzMO8n9-M z?i>{dP&jYb0f(~-|Mnj*R_lPK|G~3u?^zibIzNDC+Z@5uZO2#{7+kyAJiEid7lc-z z%(MNv!N!pG{TPD-f9rDaw44j*DpMDg3jXcad^$h+bVKR|P`D|)5Iy<-zY8d?+T zDxjsOoyS2{s~a-|gJ*XrgJ-v^1?WSQ2GCvPpi&QXTya8YiwbC|5vbY#(V(f<)&nm5E{9)S zybhZ3fk;Em0Idkm#G@E8{jD?ZGvzzCDN2kwG2GA^p zhvlKtr-lcb_kf+q;FEm3q{OlFpcDUg9zT!HQ;yx+f`3N=8bv;A+^g-0Y)y6B8cQkPqfXkj9x6w2N*3OelPC7-+C!==|4P&sg%((egKcPY5WHZ2_N) z?%4UkBl*8e=RKFsJ>W{sv-9|CMUT!L@J(ExyN?uJ)O-ic)c){jKF(zP1@NEF+lozU+zyH6?1D#Y3%fcY5z&5;IaU4?4gX=w* z^y^6;%{3|>|3OJ11ay)%q_leRryf!cf-^8EU_nXQqZ@LGFlc1`Hb_DD6!1;GApYrk z&~&V;11Ot-)Pu4HBwJXXD`xHd0L>K5E#R_%u^U2LLT<+`$${R0+v%cG@RIS*|No$+ zGW;$6e;{+MFJG+D00jjkt0LxHStdGy=UnfCGN}?=aXnbEk4grLN=v))M=$?^4jt%* zl{3)tryE-Sbo+qrLU&OKFg)YWBk z;0J#RI5G-$n}Fx~kc0wREDx8j1GN$YKv6fp4&<2-NJTdZ#A&WkN%+s-!Vg+D{1?36 z1QL?Ipqdk0xOi$_L15fLJPzwfRt2+ zJTyN!T3!T|R3|(bKY&UqSl#T{2~L^dCIY0Y>4dfu)`lWg6tJx_AVUKnjdLUuAQ~~M znrvhfI$cyE_*+4PNT9_UnjgT?4!R`^If+7J>E%)ITskB{82l?bYiw-&Su927UqD2fU}NwM<}C_#ft zmb7LUl>$akKcyhel8wK=3p97z4Jn9RI)8(fN`NjSbLox#-+8aM`mf;um)`1suT@+a zPlDsah4GMMCr=}&)Q#wb%m{l}9^-ETjlYAgBd`F;1c1^>giAM1W4F&y2A6J@CP!_a zL){@qSsb-P4zW0P9!{18pFIMzugZP#~8ix>}wuadoluQ7PbW%>|u^ z3yWL+);Q1tThJ+#Jk2kIkfap&TS3c7K(35%VLa3+()bc|!zV0ND3oq+WIP4(-b)!I zT}-7@KvjDHB(b!=1hwvAT3Gm7v%o!r8kGRBiR~{zt$Ua>6Mt(pXf}xPB*@MHmrkC> zmr@`Bs9Rb1TZ2Hed7y7bb)s6 z52JPNAqT2^9Q+~R!gv5OhXtQ6=?+m*==K45(MLrGH0-bO!t(sD|32N}0v_Gr9H8-i z9Z0E&-16|MMxPuFPQYNU(5jexf z09%g?S+4^+g%s>SP&52JXpo`1@dM~!%I=MzCNgxy#HV{9Xlx7=0H7m=UNAE-{J#L& zbIt*}cKm;ciiAgZH+VR^cQWWWo)`JDpoImCK|;ryL5KE$lDJ3r{zL$Z4;dt`_DC>pk;s5_VjyHqWe1Noq2UH<3hkU#i zDE&aMp#hz<;sM^}^M7Ih=z?86(0G}%0qA;l&?a*5^(*^8cQ*L+W?Q^=hUcHo6a3q{ zK}RP;#vKIOB0=3D9a~ z%fH3@JDp9y9)k^vg2x}5AM!i)dj525e#zm&?|HKGqgMAP&{*;1haTPBpq=`lxdYI_ zQK6t?@O(fAs^9!S8FX@1x3d9wq6b`lH6IXo>GB_RgaX*|687WH5{;k~cHp=(c!USj za&Wf+dK5&-BIrR3rFsp!K|56$O1RRRcZ2rmGL*LYbO(bLJDupf;P{P&OMt)S6{x)l zx;Jb>1LVjC{?_aNK>I$>*H2k=PXuk!^yoZo87RZwvyOoQbV3%WslmX%ed8g}MwRW3 zF8r;aLO0Fw7=JTpU!YHSvIl6-J^%LRBcK(lj9)yMiv!ZEn?XZd{LP-AE`RrAaL1za zCgcJOk6xBTkTa`YwOv$L9JNJM{!a!SW!CAUqQSp?GRPbc$Q5`Voi{ytSuQ|SyJ)+y zXp8-y3_2hUaw|=zi;B)m&|y`Oat9ij-OdL5t)P9mkozn_gJO^XwLlq-OPi3^yc2X< zJ_COXXfQ0Tc_(Nc9|M1jJZMJJ@>ubDpYFs6i02wXj`9R~t}r0Yx)JQTraed}zPK8K z*3y7?v3ENg`1EcD4J@=?;_n0PPXrwy0ZM_%Cpw)CT)K6-K)wXc@mO9h@`AdWzvVC} zn?X|GOTYjB|4)D>NBDgc$DyYXLxK@@c*g5~M1Fbi+AX5u*zKdj;?dm<3Q~`Q&zW68 zmkfbppnEcC7{Y_`7wCNGZXrj|88DYTI&c2J(0SB@c{ga~Bk1;^Zg-Y$apcf;H9XmQ zy!CAff42*$JNyzfPPQE6e$AiY8~8qf%z&ly?%kkN)EoXEat~?iCH{WU0#wL^E;#-B zbVK$%C(mvGttw9L2JIF1Wc=aSEdXjFx@cZ<)I8y8dAh{J1AJ1TC;$4(zWnPCdURg& z?L6pl@TWa!Ou?gf3Kytt<=@-F0irz){u1y6oiGFO&r5AkEQ0L=*J+@`k2+tzxN!`; zx9_DRxREm%TtX*zg52Se+zE0AD0OxVfKnVNVM2oul29#ABDv_I5C8guo}CwcIuC+f z10LmoxX2gNMXrYb|6c&5@0Zeuc`vm2+6DS|+fVXu|K`;zBH_XK19Y^JgG;wow*_d4u7yi?0Vr94 zn#GQqe>-bbLcDryK!pKAcNPmst%paih=ptCCl9Eh9*jR+x~)Jm8jhN;x-DF~lUN*g zfG$dN>AckKzyeyI6X2-%AG9prQS*okc=<}q3)7>&{=<~La_M~7dHjVEs?bly<1hG+ z{`%kf3a0L%i{>ZL(DsWTM}Gb9&QUP{Em8>Z>E-zfs-he_4|M(jbp|XzC(0jpVLaL^ za-dfv0Cd>_zsFI_L-i#d-N6B%Q8NutyVk>p8GHk$2Xi;bx1cr3pq2PO%)tTOj6TfZ z9sQ2X435l9%uFu55zLPK9)}P9U~=qa>~>^vWOiV2WOia84>+rAtpq`}$sE1?V!8{r4e29Zxn6;RlSX?_b z9XlOaUV?V-BF--Yr#cq??Gr)gJ$Q7UPP5(!F5;R&D-ODMg3hpZ>~&!5^=Gs^!QTwp zWsqhW?84tR3)Bxad;%&D-h=MP=zasL4ng?7#B)$S?Hpwn$Ze(m@JT5i+JBVu^Twe_S6zsIQ+ z93^ty%{M?{1nK7ZUi^N;5puI~>suFo&r=?~!4;rupg=*>32i$-ot)M=8B_;<1KTW6 z!k*T-8RV0+&ds2@3DkUsRBxcg2%yLVT|5tIUmS&2B(L{C>Pi0X&7e?Dvup-c?xo@` zoew%+xoAGpe8KN=$g=qfXdwo_&r|U61vmdsR$yjeaO^w?_47+}M7i2|2wd<-fX+LI zgezzb)i-bn2U?%f`Os1Gq9Mfh{-<7o4lqTUV4Q$f{#o#E-w5&w|Mo_ZM?E^HKxPU$ zPy2QrPwOmE(fbBI4V00;MJZSwW4I&PoMPe;(AfPIK){5I}^px=J zG)!~t%;ZRO?9Alz>@3vq?Tj=?bL|YYNb6(=A2q^w(1Y=UOSdBnIC*IcxM(}DKoSfr z#X`>3>OAP!dE`af0Z^WVOqn3kZYR47M9~Yk1E74(4xWTZZJ~hH6@X$AG!~`j(_L8M z!oPhbs3qvazkMO-Ksf&GE5VgOH~1J2kM7-|>I~Wr_2>rQBI?sU8kasmfJ z)9-(%jZcUnklwiArL<0g9iT?j%WP0gBf6gxx|v!JlybUs2O7AxUMfjMKEkyk*eAIW zbfSlA>w!8+pYBf3NnQTEEDrv?EC+qN9ey}kJ8;zN9RnXA&j2#0Qm(tPfti5;bnz0H zVcpom%)n5_e%w)_8+?Z8gyW79AnzmgFLWMI1-0uSchj`I1x+mXgW4gWk>T^8wm0bF zN6_>z|NcuZod=p97&QM-;BNs-4{~ z5p;aAOXq=uzc>#5;OLwPIy1Qwe3~+Ny-4#91O8U}~}eY2(p+0L=IB>~00E<$&=6Tn)du8vX~ZIdO30-#!&|CrD?AN`z;3 zFKEe`C;$Fq{M$_&9r?Gnf(BSMkM%nJx4g#h{K3WYAAi$6@N|AJXvL39=kM1-hy({3 zH31z`)_J4zZs)J&!;DHIj3uueJ6~GfE0%m|30j*54u|H$jF$I`^gO%4hIHQO`~_0@ z5_CD2V{ag%ORqC{D_1S(vMTVNEX#YvmmDo$^0#~fO;_fqD1ekXf>!rGWWU$EGWTf&`??5f%q6OF_-*W38Zr_88Mz50naGwD3HkF$A9C0WAf9 z#SUl*H8f^krvCf?e}YTr2}Y5Fprz6-mgkB;PH^nJ|1toa_)b7tIiQVm-697awM7n; zJaV=CS$5gA^Mq^XFIUYUUcD?A9h+Y;`Z8Yd>vcKE0cuw=3V@C-@U%Qo`t|in$78La z0{}se zyV*J~T3)E<==SHZJi+gK!lm1t$I0f+o~o^zC9}@a(R&0N>RL zI%~!7t!wN5lCrc3F8tfYK}!kC;yYjXbo+CF*I)Sbsx&)x^Qd_CI&!=ggrv_yjG%yX zw7gVe>e9{NVtKIkjZ1IV|Ly=5&x22yeHmZ6b_+Uc2eP_ej0h+LG-UGIufxpEO zQsjWfl0Zq)!l$5P={?PW1`Z9Q3{?%4d2(Wh5rEy%+@owqy> zK4kIl_2Cxq0iC&UNWhozf{*2?(vP5qw1WpTXxU4z&sqkLUekk3ybL~!w>)}fSA$r+ zvh$jF89W&;`t*wSHt{mF{x9`>osKBK920h%5<{$dg6z-gFa{H>rV z3~+Ss0yV-xT0rTKfBPKpavA>ZdsLP&FfhE>BL!L}-wI9~orj>l1f>I^|NsB@vg`$o z7{U}=-srUApW>pD@X{B4eu+<~#LE@nt`?{n!NB0rDe-a!65pr0L?xn^Wk1*{pi)1@ zqc?0;d3v&Hx3_A~KLWJv+e%HWj>(kpc~px~OD$bRwtHl7FBL zzL5%`$v#k3339(rFAF%idH0GKgX)wNzg`m|k4_JXPD`K8562xrOEUkvbS83mbOs9e zbQVf@bl&t~{OH>H#G~_ci72Gp^5_Je9V6hwc+kW0FerVxs5p2qyQlf2Xq79Hj*Ci0XN^jVPcP&uMxS2WswQ3r&~BCr-_9?to##BdBLqN2 zK__GZq)+EvaH+s}!=v-QN9SSR&IjP_6CYnp5(KXw1BE6iKAryl2d$d}&DnIii*!#> z0Uc&|@P$NYI7jys$P%4!o^Hqm_MPDZ{M)CffNSJ%36E~^4knLocK+?*VjTgD9^LHS z;UXOcAR!PVfZ3y){g?v_11M}jt*^9BSB7qP9!qzQdRA+9fjYKMcaBbX0Z`TA(R`H2 z!}2$OD`?YWca2JlOLvM&g=^B<};AehZZZWe=ZDgrplN z5I`;fEu_itIQW3YgBf(p`8Okf>)xN>?d+{v ze}WFe`LGK#WDeTg)GG#FzW`Fm;L+)pz~4F}HX(dn$g-+Ji>_}<|Z zko)}@;o$&s|8~$sH^{oqhy2?G4nAUjQOk^?VA_xW|9!gaK$8LNzTM>-9@z(YJbPu> zUVDQ~d%y~cf`^WsY%fe9%rwVNH~ zJel1EtOfX+LE|!>&Bu6rEI*fTczGH$Hz3adEjSx03>f%Z!a+K^V?gWhiX}X{BQzRn zR1z3nI+uVKYf2vQfGz}Ve(OS{l5pa6$av0fR;xd0qv&= zQAq*SH$9LTg_Rp74@7*hUb|Nr$LTst5Yy=p)H|9{!|`~Uxapfcg50%%1`=f@Wh{{Q+9s)##}y>Q(I zI>+u4$W*QWzd*?j79y{{|Nox`D|SG|SB6h_fdn*~Kykv~ng*I3DgfQy0!gi)UIi$9 z9AHAEMgCT=Z=m%yZV4{@+a-LuJv4l?Z}a#vo_;Ok*ewW}6?K{bTBUfPgoA%OLz-i! zBZp`6K^|Yr)8+Ra8+$?PQ$WkVU$T7r{~xKjirQaod;@YdyuAwEQhwY;1$^5ecmsrQ z=MhjUuyE--d#n+>`^y(JfjAw!Y_nFvrJLW;@}?ud+s)S7C9dEu-y_dnpB5HSBOF@) zHy>j0usl_w-p#}cI^4&Wfq{vk>?L?vwnyU;ko}M$G{;zQ(;9k>NGYFZ^Ip)f3j=@4 z50GumwHyq`TvQww_*)V|WpQ_?fG_COkZIt_(+i+Av?p6{m&&~S!Un2*8F~X5J(>@K zOHfbC6Z|bKpaHdRo1V^7mKG(C9KnMv`#}Y_OLrWL;8 z%I2mI<4xc0SPkD^nQlkRi~Mb6Yzz#Jy`KL;>$M%hcRXue^y#(f1(kP(Cqex+$8HgB zOA!uNe%E6j%?DXLEzg&}0WHjMZ8=aX{L-F{fdSI4XgchTL+07*#PM1H6duj6e%QqlJ>Ss4e88dD2z$#ET7UKz*=a4rZ2Dj-6~C&4&d*{Z1dt*QGN-8OZ^(g2AWTLBR09 zYdcu`szlkf+e5%n^P+F^Nyzaxn2TRQ3yvT@Z$6;lXnDL$%QKm$#j!hpr}bpzKF7|B zuG$_PulJ$Y0ooEf9lXD08ffPJSQ{wyGkUaMDlu#R&&b~bn%Qao&r}MYyRdkn8U~vE zp9ZR=K?T(DHjpMz!{f#5-QexEDIVR^KnWS#?tSqs6nrQ{ipTLbkRV9m%Xgsm$^>vS z<7a^+Gf?7+>0kj(2rxj`MYwbuxVC~# z#+nJ*;NHCsltNy5{rUfYLgz(S!vlu@J$qTYUNVAPm@r4bDBKLu_c9PPPuB~sT76VN z4KGAP3*H2K@fmcvN~bI69JUmYP5OWS{|9AIMwf2>m$9G{laL7;AtnfTb{^_>Q2`tB z>NjWw96xw*!pjd}x9I?vjg22FUsipcR9iKVR7V z`t=`l9!`Nruc$ydXmi?6(0I*@DQw_P$6&RfyRsW=K&PWIGJy9D^S6SIA@c0@mEhkV zqEeD(Ey&**4{{1<6u7M0M^-S1zZz1Uz^y#pkU!K z09jfC-sb-ie9j^~%w0fdA$EqSc!1;MMWHr$(|!hnXJ;#@sN`=29a9b3UIH3pay2~Q zYIxG8bBPM*yg|>-Ka2;NT~u9 zKAq3Ib5ufnx*<0EbpG?~Jpba!?_dAZnrl?b82DS-LDNHNvR{sQBr7oxuqO4LAZ?DkRdZ~^U&ErAD*tKk8VrZRBoc!2H;_UZiS z!oU8+3wJGeNVyj9x84PnVumNdihV%m7r*!D{0drye%kUde={R^e(f8`u_X*8mLP*1 zUbO!H^&jM{5>WninBmxY;ot)%7yk8!-FtZqe7ju>K;w}vmY|A&@DJ3wb^z1;QV z|9`^+FO7cv|8IB+bb`!*mpb5v^3NB=zkdDq?4Alr7@+k?ErGxPJ05qf02MW!$HB1( zVs?Z2m(a|Y`vaW$z{@!uJ6$t6KYMh(bLss1LgUx3|F5q?>aDO~(8?mnu4vF%_}5;n z`VQ(ElnQqTb97#8IM>kdw7&HlzstqWU=GN@8S)Axl>L?--QX4n^ri{exy{gq$59VZ zOJglKu4^Scx?MRCtql**vGkEgFH47G=dJEAmhXokHU1k028M&L1UwEtV)0-G^=*Sbc=U>NxmsQ< z(+Ab`E}$|vq=N-k-*j_Xa+Gj%a=;8ez~a$-hy`@A+Eb6_S^XQwq z_W`O^L5ISCdaCf$`eKthXru*n>Wxk7fl@Dz?mkc{-B1Z?$j<|HMY~-&d^=xu-g=?& z>i_?4aaY5WzMxYaKEAN{1}>;U+Jw8^I64nCoM~uyR^NJ?-{nxJ8wYr8-@_M^{K0jM z4f1K;hbMS|79Jja$m+p($`#b2aR;rC?DhN)^Jljg4;Bw9_*h;jeezNYJSzf9QlLSm z7Y?gIEmW|x!HZ`=^}XSx7cXDIofqf z!O0e!gh1=s__qi1Iqm^gNVI+{sr2X$m+1W9)4dwhK=tUn3F^6nsuc~7 z-W;Y69^K8LK?DBnp&b7wfF@DEYa&baJi3DwKuvRTKTvDHMMa}q95klX?aJWM>8$XA z;V&qsl;|}7`0v8+`oINz5;%PN5wc$zR6B!~2ferqULk*^F`46kJ*cnoAg!~Q4S8)Y zM7`mq7nLtT)eGqIvb7%F;3a}D)geIuTF;5R{Aoz|q5715XE}cg` zdPS{rc^N=!JbzvK_1~lOI5>d#K({_$0`*N?KK%lnXV*FrG*cVx{;3BWf2Ecdl{oTGJ>a5vu<=((an4dOr{!RY zP~$65r=aoC|NsB~^S9mu@5%!&$!zrIU;tmL>7!!N`nEzAv}Flo4|wf6$Zn{G0<8y1 zq&*ssfINoMk$|?BJi4nTJX-&kgnRUwCKT~9`1CFV?I#B{P9f>I`Iv~O<(Cq3kIqk^ zQ^wXTWMcp=7=7;1TLLpl(|k!RpSi_%fuqbe5=?bglt! zfN}vHS7_qVJsGt7-t*vN7N>3=Dc{a}jX!hK3)1*o>OfbD{wzo>D&TJcjVd+%1RYSv z-{Qv%S~uvTV#3J3y+*|(%^K{Gq7B^;W4nD+5Z!1ypbK&0>qT=hq zzb!_^->0_=bZO^n(Fq>Sha^0k53qPzUgU29jovwSbGWu#D&=$O)^crqTgujakkPS| z!?ophDZfj15{GN+6POri=`U}0l|bu%m`L+a=F)Yq%RuD<$k&WJAA-i=K{kO#_60%C z>0P37g@J*=@U2&`%`xzF0_aLM2L_MkV=Nxc$0a;1zwoz!4yA?$O1D3Y5923GFP_r7 zp!y*f)RYjj)GuXiKE&85*8GdP^eEKRpcDkU2O4y6B4}xj!>)?llniiwOgHfC`~hAY z20FZq7ql&``4>BXyE*74UuTZaW6jSP`CCBSNI^NB0W>RH0Xo$r6THtcM8(3R^X7{~ z>%qC1!=?|iJ|Ap{59rXoU7*MUuhIY|9#CB+4I0}%-n;|4oENdg7fBN+R#7yCLo}U$ zYBKzWSPzWqtacU#hHht$gKq`C9bqitXno7y+6i)LFYCTJpaGL+&@Cz+y{ruNU>+#^ zJ$hLeEdcXC^X(qJtR}m`JkTx19=)v3Ao@0dj$i%oaxQob1yY`Zi-oR#pu?q3`gAvg z8t2_YAZLSaa&84}>-Xqx2Blt~?%g0sr*0Pm9#AXu5NN9Oh3^MQF#=k~3fgeo{DZkn z)v@y^JU@ZjW6f__UTpdF>p$aB$L7DxM6&RY|GV*UbaQT5F<8c?ux1|qVI{$it_BGA{ zZ;b^t!aYBNx}D&x`f>xfE9Jrf&YPgyI(9x`Vqkdb2cO?K=Az=yxbsLm0|TT5@X{Ep zgTbeFH)v6~N9Rx9&L1zfeE>ICV?aFS$3e+CBrcJT4(y)G&-uALvj-E5!E zhoBSjKqt?^+ZCV%ekLzM@E9mc;K}xto&>~!05wx%G2_6k+e@Y*eoB$lP>(*gj_pB7+k=o z`+q3C3A)C~rL)!|cCh+)vcd$SwcuRmwZxN&Ap(0L4%VYelCqTsyXj3WJ z6TQvgT?9Mdfzx=)rQiSmzf1(3w)F~>CX2xBWd2rv(71HxO~Y?5Hmv#o|7F-8@NhHe z>LieN!DU3}WY89X7X?s*uK)i3A5_YSg3eMs1?uR65&<{`fV+5@iQq-3>~HWJv9M$FUq=2GWsu^|FOGW|K`oEw zV~j4A-%HOsg0gihJ4mke34beSO-Z*iNArV!oz5IDKmYpw-}e81Muu|9i!WX}L5^HZ z0L3YIjQOQDT!axa>ikmf-~a!hzT)=9pbFfhdo!p6bG-Zv97di8pRl}m^77YzPsT5u z2YoD`6~}{G_5c6>uXhATLbn@-=84t=bpnv_U764WF37{od;Pmuz4|o*DN5$er!^>a)Upj)hE-Dt?4ji4JLeoU^ z)axVNV709WN|<{q{&!Xjylev=?Hau+tVtp#~Bv+5lv*6>td_lJxfflWK zHrJ?dFz~l50>wwSiHhZC4}Q1L4SPWYWDKSDt=~!n9Xmf5Uh?St2_C>aG=q)7@-uj- z(W94VyWu6x&+wtfWi!}7H*ABiV*=eEdw4?Yw~|Y~-7YE|ogcyDmX6&b4V@zGpm9sk zOxTClTOj>V!%Ht3?|~}d(t|$TOF_+gsJmJ-Ky6?6{wr{M8rEHX`Qq;jkRJXP&>5pI zTR?rEkkD{&pH_id{=GCEw|}=y$K_uE!v39j7vy%*{L72(Ur_hmz^C)HN9PF_{%xJ0 zRcL9J6G5YyWhrScmW`lVzAOs9p0NQ`u!0t?^KZZ8)ys3xqgMp73X@TrsXK_p1+?7q zkmf~4&Qm3>j?E7l`CC8+xM&{gJji(wa(^oP+H8a9!=U@u!Ruoom1oJb;|}26KQ5i1 zd$kRs4^P+yy3Nd^*GEO8GekuLRGI0#STXk(s4&xjEg%GKD>(Rrsr6D?Co^P8p{wD6 zgFl$kI-Qx|COLMV>OAy%t7GS(*Bg)~K%lYh;n67w-r#o4r_+(c7gXedR#G~4H-Hvx zfIF49T@6oucI40ZNCA-%B_MJIs72h_=m44~=xzY@4LciMARN$&&(22hSybH(pr&JI zV+a#y+gJmr8RXH~=mFt@Cfq$b8zUgPK=ly6Ao#YW&c+JxQkw=)2=WWgTmc&T=xhYd zRCsnfIDF>MSKt?1SOXI64iNC@oY(`Zd>kY?8>fI;)!hxC-7lSu2@r$#fL6~nrZ6!u z@C&YNfQW$>0)l+e0g6-*V+N?9;n_W*gOPy sjFxA6;hPGExYSAeFFKoSk0rHK53 zGeNa4h!5`cf*2j3K3OODraQ;(1{2Vnq~Jo(5^0d+j0Bju1z?FrP!l7K|NVi^Mioe4 zfLd?-f)hW0mleLh1iFV0eb2q35?9mCnanYl*8PtXL>6{Hpl0Kcy z5D$a<;vSvgb<7@};0;zDox4G~z^4v5e7Ore(!>BBX95ov{6IFP8FZZ$ z$V7z~MqmTL0+1`;_*zoeCiJ$rNr-SowXFq7$UiWkm>Cw3zl;J%Zk1;SXfQqT*pyI}( zb33SU{Fy($9VGjiKYu;Q2|nFm%a6B%c0n*QFfx4R&z}#<{yyFPAh#TE2W?~nHT6F8 z=l6r`>;xy+?&+X1mtU|Ml&<&%yFn?tb26x`?w$@RbNK})gEPitP%+#+9aISN3(f{* zgHG_Rq21F#MWIh;Gbnj>P6m~Z{DO-?>6l+|H6#H;?jwaB&kkSz?$Ox~8ZYwb{Mk7j zd@E?X04T+RwhgwkFfo7vfZ_jC&^4Mb4}jMHdUS(}cF)cepi!j2?uj7RdGv||foe_< z%L~PJ&|3F3A7nj5^8pDD%R^=ARvtX1pBgFz7)suFCQksxoTK%G93}>a8d1mN4iccP z2cUaXL2OXAJ>2WX2r|~Ovje2ov%3Sd`ro5hZ$C#Gt`6M?&E*}J|;osi808}mVuRq{1(*xq)PUZS2+h(b!A_hAb>gK`W7PW*J-VAgmm-3%Nj&J$E3@H6c>k~eoy@S=4{$s~ z-RaVed_N-idPU^>5kUt81ia7yyY8eT|NcvkorhmYg1I+4553sm16r%%q7u*v_95uL z#3rQB1^E}^enbFwUISf51G?W45yaN0LF~~z8RUM@VN5Jdp4b9fBRURtPXW{)*ur}| z$bM*erxu}vcNmxp3hzJNsNs#aei~FOdUQKVcyvpGN@)l1*@jnLI*;*hZ|(!_kpdra z2&#oa<&ul#fnts{mrk&hE9fK%$8Rnw3XG+Rpj%BiJh~kmx;KDRdvt>DvId^&wp5?+|D0*_h*fI7$#FVt^Ax}ED;KpSQthv@L{ zp90qD*ifSq0zNePTmd{a2bu&0MHTp@TqXu)2GGfGpfClcq6nYP z9VYS1A{)7F=uHTocN zP{+-u^C48~|71|_4tg#TDDfTy4ODjffb#cA{+5To{(~-fgyivOzyAM!2|6nZ-k$bA z9{X(tom&iz3ec$7%QDajS^+HJ?%~H50i58)x}ZD>D&4IG7#Jo%9r4l!+--1R0L^uJ zq=720S1%k=L1$fss2G55wDjqG*bVlnORv{A&{pwY7j`ZTKeB@6s-Y!PUlbGgl$igM zL31oni#owatM7)%fV>XMZlDY2B%m1_6zHDaptIE=LkvFr`|FcHWv_upw|j;k^ma?1 z&VOE=B0oS16TCV@G&nrFr+|wc5Jv#S0i|3JN5Z4qy};=hiv&T%n!*I>B>fWT4EW)Z9PkHpMg>;cKc1Gy%lC9Qf{HMZ za|Ko~@wb4Qv7l2aAot%q;bLF_6*dtb$$vfg*B>WTAmLJw0O~niXJlaT?sm}<0F|Ji zav8*t0C7NZkmlIj0^VK00y>}jp%3Viwii=sK`X_5R4h6nr8=l0HSp;?_2RZJ_&j4! zNe@jjpgge_G@K3^#eGpd>DT|4^M3#TUsCDWy#{>FD|p$1OXqtZ$Yx~U-X5@U8mN#q z@o0Tpq6V5v0xci!{P3C&Qa*t)0O%|gkM3L!&@m~kZ%g0!be{C+`~`BK$BQeVqj*6X z8a(0G&CS37%~zn~_`$gwlyqN;g53q$j?)dwu$@0aSq*kZ;Vw`f1SMRJ7e~RnT&934 zFwf3|pece@PSASo&Kea3$Lk`mui##fzIu;g0-4j9a396FB z+`C;gIb5|_K01O{bRPV{1}gmmK=qM?b9acQgtK;tra6(HrH77eJ5gHKL^ z6N5{yFAJ!00=51?WnCKR40tBc5Fm&FO8Bn)`%i*YfU*)u1&9sGNnm!Ti%P(YQpi$y zkl_p-oyYlGr-2rWbi1eofE)oDKLA~w151c5{QG-UKsJEwe_?^5*+nIRzcn0LJE%{K zNBd7k@G^a<-QW{9C6Kj4g8=SnG~0I}Y4_|r$lsa<8k7NrA7}?yLRx2zN&sjZTZBjV z1dttu2VTo}dvSnvkahAL@Ai7r>2sXL@fZs;W13?pixX&OB+b%AC7}M6;eoW)w>v?B z#P4|&bSwS#qaM8?;L~D29!~%j-w_`C9v9O<{mcq583DRf#)I)!TI<_RCXj-dPA3*n zQc3XWJmtafdBKAbWGesm9F+2c@h#x44k!t|2!hIi+yj+^<;NFh zU^&n(-OiuLne&CLIwEiIw|@TuX+SA_JH!YHX`f^lXfFUf(15L^g!KaOD1i3@u&Ke{ z3jiM+<%QDiKrNa4LQqY;}p5QaQy4Qls#LgBK z$PoKWPzw6h3(5fb04p2WDbUAD1f0vFeDxl-md^_KP*1Lel{yYyp zXYF)RvFLSU1ReO>>-ry*tQf)jK0*Dv*HQfYouynD@4GPPs90G3;BQ+B8f>t9&EGZ$ zTvj_Pc=d|B@aSdv0Xk`_ip51+L%V{-rSk>n5B}DAW_Vo>N(Y|J#}#}mYg7{WTfTrc z;&g-Jr@KZa0kZVKm4APn6sTDh0V-kwJiFZ@K+E4Mz_%$eGB7xGi&(gJ=cojL&iFI{ z-B$`qPmbMtz#YUFf8V0?TWi2Jox);T;bWd1)P&WA_<;L~RZNL8ikLaKJTK?j1Ui9Vve{eO0Xt4Wso&b+?dO{lRp3MiqjdzdEs~!jc z+I#d)(SkMJAArq(x4{EHw{P*eqe^9Vt zZ~4De`vP7l_p%whO36nh!=pD;095%xvcrpWyFuFuTv=Q|Ef;X2f7uRd*me7;WPnc? zd-bAv$FKj;rZ*@%zRdaa|Nkz~6`G(yOHdW&(+MujJzg;0{sp?N0wl)Z(Rql!HS`N; zO<#ooD3^G=FjD^g|K)ek4oYx8!nh5zKfpyr;J8CVL2iEXORx9;|GV&SgOoO)%Y8sa z%}bN_pf%o*A`2!6R|RS~gSK3Qw*P`U8wSwr*P!4Bjaq@nf0+1NCV``-M#Z7I9<)O1 z!8?$d?h)S{SXua6F1`EzzuDiy;pNG9|6x7_buut)d%5D>|Nq^gBHg|MFSeHc`rjQY z(d{eak$mID@>1}ivS;#95B~LsJ!bm!t`Ptyx8&pC;{4!W0Z`k04@B_be}R{vy-?p= zSsD3TQvUz{Z&{*Z!QUJOE+|S=B>4BcNu@Ra_){XtzdtOgH^hm>I*fzAee-*;`#@;} z6cZl&`@^I>y4@5&%T*#gdU?Qy`T2CRTmT6q_;k8(aQH%-J|K<&hyyD8KpY8=Za0l% zECLK3Aj>?u!!(Y$FfpR=Kwa}N4Y2$%7ba!~-)_*o2;Eb_ehS!lP{k;~zr94o19YYYs3YRhJqe`MrE>=;Q-V8V zofE)=mE9pK68zhpq=w$&PuIRz+rQykV0F=8y1%OYt zlY%GX0S{&;4^YMj8wkBAgn$2W53q~@NHJ)1*YFakLbVVq`!4Kch0M*6{uAt3L zFF*tR8epfru=@&H+YgS#ZpgSp>w!{Un9E-3f-4wE)O4-_#pKI7Z}9FP29=O4#PA3edUC{4JoncU%omb~G0=Gca^FgVuZOk^`-gcj@ddVP;@(;osg3TCm{4 zzkRj~X#Gkr52I`6DaMnQ7x|qpI$B;X6K(tn+8eMFl*0I(FQ#=)2C0Kw*0+tBfx)>~ zq;sbc0|Nu&CCgL%J{N62gA#W8X=Vn7UKTFL>;Qq3&Sp@9;&^ifXrU=+%C;GF`WYyl zS{^Fq=$s6a?Yz+0+ydG}+{=0)98|?Lg9p!hc`t?k|DR^r3|?^4%j)v@|9_8O(X-+I z{~rfWzJW~f;dedY(aYNLaxD%P7pM+Bx#aOrLaP4c>QcZ23<4gY)e>dtfqZF5kaxE*^77+oyS@%OG~W?*pR-xedq=)%AL251PI!A0{1B;a12f;72Y7#I#d zg-Yv)+ zY|t5OVtI(a&qJPp;kYw+)qvwZ&~U6v=Le6*BOo84%w$f09&XFu`c;8}0kljt$Q6|6 zx}7y#4KIP#Z#p*r;3$gp>Gk07I1Y+B2Cw5T44}%L!L#|{4-$S z`~V#pak%*ahkvJtq>JT&qL0TRCv3kw|M&m@>;qz~I*beqFQdVm3K$%}9bn;a&68tb z05z$v9s@ZWbhrq^OVIf@X%jjR?l^nq%oz{<^(Qd{@QWz8#+Zqd* z85lr&?s|WNHbXjobKq3qZ*BPf|3Ck>#xINv3h1<*ZY(P}Aj>!S+toppK4b}p2jdM7$Px~4ir|z5U6|GZTF2oE z%FM4pZLrR6P(k3*2`(&LI>AY*b27-Tm!NynLHpf%St~=}<;%;t;1F|RVDRW=oromf ziX`qCicp`6B>piNAs&h(J`+jY7D>Di$$V8L@tH{Cyr9+Zoxeb_C$ta}doLY95z`C` z)z$<2ea_$n0!sX#)hCYoK;+ARfByeJ?hHQJ(s3VXeag!>pzU@0KzkuxJ_Iql*&Umo zF*|in*$g^L7E}_-%P}x8Uf2an^ZXu%_~k*`K!>ujcNd$yOa)!+-ub~1yur`0`2q8P z@R6-9-Nh1)o$N2yfg16hH~&ut75lE;_Kuy$x}6PNL5tt_$TBd1PmX}>bAso;2b>HH zohO=)F*<^l{Y{f)U}*lq$lrHb7F2{fYxH_R&(rrd04<4j?RIJSV?7yEtrqWb={(?q za%jI}!_N}_mW@&j3@*I^3XTmwOC9-L4uPs%&{8W$#)F+FTrJO)P68dn>C*YqvDe|J zWAh8p`T7U6pr`9U0PnT{)l8sc^ix4ArTMpqgYK(k_vrp@MH&YLgpuYpF{@|V!XuB5pU^z$4ga5%trt@!a2CYgo7UM3I{g-M%r7H<3;4KQ7sy$^ zU=Q5`?ci^=XXI}SmjP82pe1(<{4L;{l_00bJMIImjej{6G+Wuc8@w#cvD1A!}t7 zty{pk7^JNE1!E`JDo}RTRb*gje#Hn{|LKu@sx#Q2o24VovKhQ!{V>8a{M#>hbRv8+ zE%^Wc?qGx0>m0koSsc6B)2y9c_?!Q8GccrCPX<}c-~5T2fq{Sf0sifmz+<=vA2B;N z{PW~*EmC4&fF9!Q!R#CWKAWGzMVkv$G=r~E>OA!yd>sNPVSw^FXbX{Jw>ikB&JStU z#V-8K*CiMjAeocD`7|h~Kt%zl*_YP58?^9|!4b5e=@@9p0bIPaq|1VCm2?j9VLSk` zr&|D=`!qm9OP$A|$+ASZ^N>sD2S@NGLXfjGKe=fBfS(@i%J1{trSlV{9CGYD=BoM6 zqc<3IQ1da5&YP~CA0a6}4UwwTIyZw-{Y%E5pix?O==}(m7x{s~$YwEcibH~0i{ z{_U51dLc*Hdvrq#?KOdPof&_+bbGRRFn;J3)CP@)yLO)Fyy&QTz=iW5f6Gs41_sB5 ze{K9Ndddt8pf>15&V&4|QpyYrKG1{3nKy$vXrNr*?Z)EREv_wwVnRO11n|zzzo4w5 zd7=|+!b?zuciwzav95OEZ?*;vof@8WZ1|^FVhlR5-jRR%aZvNU zmj!yG1|&JaQ zt+N?a_P<>76&Bf``CH2i{LN9IRMzd!;?X@B)T-^|X#!PnEg0Ntuu;_TS`lF^ZW`$^wkp8nVT;PF66_XKoy zZ1VxAT8|n0+kBY*feib9@F54|i5ZTa?7o)gOD}g9o47C@I|gpPGjtZ4ybkULx0XP6 zdZbG-Fo4dBZU$BK9y2_8c^o{tn?a2xk6xA&-5wmxFBv;MIG~zaPxAMPfHReYKquG? z&^>5i?{pT+ynOu`6lBeyhL2j@|qoy(|tM zy&}gvEUy*Gy!01mU_gwAdNd!C@UZ;E-)14sz|if+V|lRj4T#@zRT8|95VUV|p#%d1 zq$LMgs^ikh*6GI68_1aE(pe_Z8OCzlO$1a9ST=*!Ef=$Of@x6n+xbDFf7uUEYZiP8 zy^St^OSC8hgH2}%i;Yg{O~-wmpizS5psp6)_7;1(w1L678< z{M&rE7#%x(+W&y3xg0GI7C(f+Z7!UcT!JoN4l(4Yo?`v+lA73YHRPmA%V|NkM41eeZYiI+K_K;sFl zyq^F69|!mPK|>U<&|`;4D!?T{%M@XfuRelxDto|mvNC{G}YF3uu9qOLsFUVY^r!wPw6KQkXk#?^+^>14E!x7|NsAoHPETRE}e`ny>5&yosKNW9YGT?4BZ|q&@3td>()qvsvLN?#;3ah zWDt0l)jab5;9)fWHU-dhE~L+70p9iQ0?G;IuHE%4u>8m0%njNq52-pq z=bd*Y<*8T;Mrpao9<1R&kUR#5-^Gk^YKsLxhIeFokz2J$JyXNy5Y ze>6DSOSF!Hxb{|1NQYN$;( z!Y~^p4AVNnx1hX~hnSbv3BJedr2vHMXnBag=g2ScR;Ru_zd&m-FKHeEEmBLquFORTiZ-_8Ux8aMl7&ZovOC&Er#Zz)sVCnT){6m z8jdA6^HStBIGCY5@t3S1ZnOFUP*e2htN;I9yWK%8ddFUm z|II&{_}iEM`2Qc=jJf>4@~?4A zyqE^+&IoXW+MS@`V$d~7&7hIu7dM^$|9`3S5@dwDYwK&U{FD1c#0hcFyZ~y;){m8YO9VB^xf64*JPH9 z-~7XYf64*=Z6L)jLE#MYpQ9x^|5T_TC|0U;V z@Od4el9vI}m@bio4H=d2yBdCjjfXh$PdVlSX+OGHJInC*9%Kh)M1I(9L7gXG9JKxa zAAUK|$Kd{JcP(U4&SimpA+o3@(-xFf7^w|U;jaSj$6L-GcbV8<^T=sD;DB(Nd;EvnD||A$z~@KW+Q$i?6WA~?Uc^nq7XZU&9KcXxva+(BKk zZG4~sQb=En<(P-%v0_QbZt>Ur(0MU%KkP#pt7RCtz50Q_r4^LXy4h{Po^Sud#lX<% z#sle(9&;05Y(BsU?udcLhpd}H+e6E^RY7Vy!5mQcYrg}e`=$OGk+F37Tkf!fx?lV) zji3Jix6vuR`m*8^Xk8(*W4E{`q^HpBQDJxhwCK(C;I~6eB|NYYWo|gb`0Wr2NB|rV zCCm+Hn7$q2DB<;N-T|7-VE~D+d^@B7Qc?iw6MzH+nty8Ww>G{61t4g)gMq)LA&>{Od1zba#Wc zSfVZc0|1Ilg15-+))f(kTHRnrMRTK;9rV^Dbr zW;=GW^X~^wMuOr3WPAxk5~Lg=37X46z&?-e3Vg_v3Gz4P6|H+_XQ&4Px#pZ$eK6!MCe0aGV?0(QFDr{hFB6wXlcu=jIr3vayokyUE zbY}t8hpgOYgKS2_oha`RmNqi2H_?CyD0vEJ-pW)>SIGge1 z9GH4*cK+V}hyVY-lmex^ZuaIMZ2axaObiTZoz0&>S-dyrB4K)1KOWPcByUwC~Ssm5~b`~WItUs{7wWU#@@xj+8@ z2i?;g{Ph3-=68(zt@7Xh|9`m(#5>0LQs_IV_=C>8us#5l3*fV3AcHE1dxt^m0ABKf zyak^4e%T9JR^}`L+Mn*Y4@AEF0MZO9QW%_$yD)%mjAVEj@eouffttsl7Ck6t!R9=D z`2W98vaVmNM+;C`=jbrVfsi><=eJ1uAAydXgiI#DCK4L%feMgIpwoLY zW^{(AWOTZyCDbn+r7Sdk9#$$=i?11@qP2l;?c@c|b+FCLly|Nk=e0o=$0 zkdfdUKVD3S7?}W`jwqHuGBO2bB&eW5HWE}^bvJ`VJ0Y#=W{~l0pp@VYz6jiLALu&p zmsjqA$|cY!7Ra%kZX7Qkfdc@v#POxm8&FCumgsagd3pN&|Noj73@^1F;P*fD5|mET zz&$u`P#|na?!hVigY@7YK0*pUCN}s=2arXE2VSotG&AVf18I%Sd<5zvg8S!bpbmu} zJ7VH54ZMz_{1K=<0+|9d{PtQ0eBTt(0?Kb_)pT8QkyOdur*n(d$+Jj#(If7p>JLBb= zcmMx)o_KlU1t@T!?c&oPKpg0jpM78sbji=g5C8wad~pZVMuCjyL2I?89smEoY?>~Dq)dUQhuJtl*e`SAFBl!cFPNP1@(_4TgMSz3jDQygK8P-+&0SEs1*LC9$8muPB)Ptn zzY7|B2JIqvSr6*DX&&-SJ_PFKLo21}w?XotGdW+zgXH&tocl85B{;f4^V*Oy7TTJC z_0d<}{{P>D8C7!BuDibO?T~sPw+ztd62Ng(} zwgz9OeVG8N&keu9j4A;cRnY08Qt)B|#Ha!!qe@^#fqKr!`5&~{>LsX+1nmI&bbEV% zu5;d_|Np-)<3V^o@S|fV9K{v~#nV85msow}1CI_<-4`yBl;bz30Ja%&-Y){uWIZ(2>ErL4%eI{4JmZ zYJIxF>C-29GU!Mx56Bhq9?Z@WzKkCnA=ku1W=$L|Pw}@@fsU<6KH!mj$&-KmB@gfx z`%506i`jqKgRYDBf$p*K>TMAMuf+x(qWuGWTYTps$Nv{Qk9AK5-BaCqsZPEd+)(f3 zVY2*KC)9aR^P=UsI)h?9t0|!4*7RjIwkDw6eegH24f1 zXoj~3VWHk#ECHIl1>Kzt%?}V42=KRTy!rn>NDeg9^>WG0|NpJKK_|iSH&_1o|G)Vl zV<)&z`!ew(IC~*VQxDiWxqurWJ)l&^-+J=t|Nqt^s-O$3_*?fp{r~^v!snpoghwxA z#>P63hriY88E9_q#LKv6=#7}pV3U`MH$hFmub}Sz%eB}4|3^CihreABbb%ArnU>w4 z!;qop0P*)P0`FMIG1KyL1-OMj8B~aR@bCWy8JS6Q(cTO?$0E&z*`(-Y=H37QL4yy` z*FcM9S*C(&AD_;XhL>I}bYlZ8=YuZWeCcxS|9{8cKF|N4#vo|snSc99P%B3lJOBf# znbRB_-|Yake$F)?VD#-}>3_`y>DCi7&HSVEGNd8L0BZKU2elKyVWZ$)LUU9-TM+dRw5|>yh#(xEzEvAOd9KWOdkZpex~&`=d* z4IebpUK(EoXB$v?2U*GolaRU!s>DDVUd{rQ)R4A*|D*r^eUlF~Kj3hJUK8K?twO=2 zmq*MHa!0zysg?u$Ew{l3S=<2ib58#L|6lW(;U&k;kD!Zo{K4|O;qvgy<6kZZ9g7QD zRQU2Rc$@;<$#}UP!Unr!^^^bqH9xv)-sn69+Pew~0FUGg9?8w1$i&>>{Ss8G9!Ku3 z!2D-*1vJv!dF3raL zyhR1HMio>XID-0y5Jrm%X!ik#4LT7?1Hx!g0c{O|uvt_fw2KO8yEOyoj6TO0$JoQ5 z^E+Oc{r?X+(yxTs)$oZA_?`t1u=E6!^QM~LRDh0H%HVM6hHUfj?Vbx7s`c&O3!0d7 z1uc;~y%S`+N9Q&0U1;}RI?sOgSnc@jAQOKpXt6fvoEPiPYz5G1Oxhlu#T-7J$pSu| z)fyhho8jlR90xZ^K@Rq4K2m|Q0NbVW#DN#=9WE+y-A$ll&p`8+8$b)|CxOm0YrVwZ zF$r|f$$`?NofldUl_sw~9TX}R(0;L*o;DSOv#-qC(R6c{Y34;#jdBN}sbkO`X z$WcI`W5|xTfi!@^1bn`+(BVa(G9)9-rLzsR zunA;;fn8ZWpHfJ;BPQJ`3X7zHW}V__z_boYV$ zglrZ#9>G`LKukKgA6x>$O#($F)TB%Nt-^4V__z0gf&rgVW&5GA4$<$?366BoIcA^% zffL{bm+jyR2JXQ&P`?rs${xqt5co+WdC(=4yKqnZusN{GY zZv%Bep&DRkL3tc+0}a_iML`xonV=)`z|77*P;vr$7=8c-C{YEtbo!_`fW$3c?AQm1 z9tTkL1bB3U-P7%&k^}ZleCvVIaL|bi7T^E`o#z2^CfqcT85&?0Bg}n~if$yx@yJH< zx10rUefLrE0O_>=={0zfX9%t-azG9-0NZZSdZ5!qC4;}UnHjWX%|#{VSQ}_>G^0na zD8tGB|2;tkX$&>$}C7B)&@G) z0#x3$slW{am1Z8DZJ9iV7R>udwnBOcxDpqeSorE?zWgcQ(eFCc$79B%_HI0Gs4 z=xzX|D39Z9pyMQ5Kv|>pfCs(D|f3-F(o>!>99<5BM0w&Yv&dEP<5Z$v;73 zxGpMjpiRyO#~_ExdK_;DZGQtrEGUF5ASEX_oE$v6CxTWYdmL{+z{CLR<}-L4ZwH;~ z3EH&h*xd-a!QeRj1lraEo$Vb=3=Ht2X+g)$fXqGKE&-Z?a$sOM-VQ2KKw@df+dQ(>TU=1qCC2%gN`Btoka^W z?lXTrBzdX)z5ai(FE(bwt{TPn3fG*o+IPP)?%ms}XJ6awnzv;ri9b86&7jmk5boYS@ zd(dha!%Lv#08Q5ZmTU~52!keRu#BtW0my9yoxdPS5Oi9vtKrEsm(FS61O{4EMNayK zmv451iN`NgR?5moEbio5ZL<-TPAbJ7|CpT*7;Fegr!o zqR>wdoL|93C{!_M*;6~HB3=l(>2^Z%52ljp??)LJ*cm!sfH%E@Zm4%S_(G`p0b>Wa zW#rg-2~<5BynOx*l;)>{=0II6rh_I{OMG2AzznMp6^9aTP&>z=1FQhl2I6o1@eMQy z2(kzk-#cc47ILUUgj^UHKqfo5bbfH@{PcPP$duAuFZX=={~zoL571Wq7!?DL>MK zi|wE#i^tJU6b9vG$Nv){Sr#59tp_^6shYoa=hy%LUn+w(7=i8@!c#`R2-x}Se{+pW z4g+X315`SJig8f72moi{c>dNmpsoapF(BJ9i`oEC@H@QtzXNI@$Pkc$pvnMjRsetN z0yMKuB3EGGo5jH;_lsTVhJdOOm?6=>Kx5l3Dlx}hRKQ2DryXyL0=bDHtrJ{>z03gZ zutBW9MrqGCz5z8LJvuLUPXrBSdUl?5?L6kvd9L}_fBqIG(8==O4s!6ff*OP#-QFDV zv*?~P!p@?*3tC3q>zv`!yGI3-{ydXwWjvE}6+F5dL1(A>bk?XCfUn%~>23tI-9T&w z*Uk_B!MmTq*TC_&fLhIpE}$FRe?sojc;T@E)G}-V2aw?<&^a8vJt`YOAqP3I z@P+uJU;jOlr>KAmMvvqc74S_3-VU9?0iDhvttU(6S}&DIfzI~x=)4FTEA;4{!UY~9 zJornXGuWX!*r)YUsbuSc5>XHS^+!QRH?%brZ~gmz3{-iQt_Jy-0VNcm zNdR<3)Ul7C0pTN{##Q})(D*|_PDyFLt05?jyL5g!-VCZFK)OLe2cBR6abCzThieOC zVqj>j2A{M6I(`+@Hs)`+54vZ8Ki@&(Gk?B^M)wpI&}4*1w}S=0AUL^rbb`%-&KNX; zmuvq23m!)UpF7k1jH%QbWE`j_Y1jc8;$z@%$pjDFff9N14;KCwGgbx${{AbF{oO4x ztPJ3dg{{uu+37XlNc8C5q5?__j{8BCw@-JA3Mhs7boYV;zd?@QWh~_YT|?oMT*1*; z2lfYl3n<@!wz4I7^nzRapxodAYFaqFa47(_P<>P!Ku2(aoCrz_pu@ttLsW7)-2%EH zXGUm4PM&pauB_1L^t0#;v*~nm;BR>b>H$OSRb^sOVBl`80o`QL(g*UIi%JG)?~XR; zs4+K#PCt`|y`bI)LkVA6^Ik}i-})ES3+(*$;;b>~+S$FJ()Rxh{+4Z^BLenM1s(3g zzrPn$@oS#yya>8H?1baN7xIpbCmb*S@aS#@ITn0cYwLj$XOC_UpYA}=b>k)GptD;_ zK&M87ZX_;%++xxhqEZ1$1TLT(g&7ze|AXcPTR$^^_TRdwlyrxvRCI=gz=P4m7d&e2 z%fB9UILURN&I29?f7ts%&;Ie~ya3{Q9{eHT(Th0ovfIzWrPIx$Gt8&+#K9Nxj3>JN zEH3`gJlN^y()zzt)U(^wA+5QBNxYn^u^ZeT1+^!;Az9P|nmb($Pa0nGfo9Q?d%ym_ z+zj3;3o30G92@q6;+(;84`^V8zxDo~|Nmc3M#z8W&z}N5N{3%FL?r=yg%UWwHG{3= zc)1b0Al!k$vGd5wEYN5GbiZtOK!8WLLqz9fP!92ctZjbj0#*#R7nC$WsTaJ(niI5g zeg|a!tyKh6secEnbO9ZQHPr?jdA)Xw3=Ep5Ub;g1;mto-`CH3DW5r;H2)xt)>tN{a zQJDf#c+sWv*NfwZzy3o73@^Fx??2Gpq5^8Bfp-4${R1s9{-t>k6txa7<`{zdCN3%t z{M#?Q`~)@&?9T7EJbJr9xz^S2z>DVvzy80h2jAE2(>)h-vl}RD__p45;or{T+3U>V z$?tL)RNHxUw}P%j1GQ0HL3_(P4|mppvc%K~76t~;kkS3u!jSeKsD^uzGTvGb9yA^bynrp8cQ+JJugNx+>{VUVffv$swTx7TSRZ z4neuP0Cah=gKOspSHmZ;`mfhVB@T3+2>i@&P>rYnYJ@m|s)$}6(79j-UWoaDj>6dQ zq7nz2)Hv>J11b_h2Vfm{26avtpw-{8W>7WB=y4ppF956tzK9D^X?lRp!*aF&U94OH zG6TI%Z~!022Rb<#qq^__)tI0-#9EiUTn}0oU8Caga>;K{dmWOV6<&gl9fq(CUS0(? zN}%c46Eu)}(X-o$!vi#%u@=(J;%@<+_TpmcAW$yk(G5PY#-ka08y#pg0W?}z;@0iJ z;nI1k`O#lh1_jWBz3V9u_Y{-k_k*Ci&xPOhl;ihxW?*1I=7ZMc9i9LOpo=UzFLZNu3mtqYaPX0UBew?&cL0m!Mact}7a@hM z`ynL#9^H+gp*r~e8K3#{8$q=izaZ0R{`^i*$BAFiOW-qq{zOpsm|rjm)V2b5j60nS z3=be*77g03%)h-6)csEDWHLMey8i;)Cq}XlWWETfV1Sqp>RQ0e2aU&o%>T@vKNECx z48LHM!Ds&bg&|<&NuaArR;Ga2SpgtpO2BNV1duyHT~U5PuL6)eLFEX);3QBI0vQGB zOac8WAW%BO>+?+rmW zbty#0#Y65N_H8{-QtjF;*?Hg5^0p_x+wa!@B{II<6G0|){)8-ga_kgog6ns*{9UH# z39-Vl`8A{AB}dKQ9=$v}{CZjDf;zh|CTg)Ubh~l1-YyYpIMdMS#(}UhZ9>D7deEYr zGH?~+!oUFbFZeDHu!|VNKo^W?cyu>Hyn7jR%|o_Jw@|l%qvfZfz}9aixjx+;VAp*# zJdifQv0J1O#ebb294!x(NrCql_VP4F6n!ENe zF)%Q~^Al*k26hLLPj{jK_!6_LKAp#1I?w$NwD9O=_Ov`w7RkSjq4|YD^AFB)KhPS3 zV9>OkW9QNT!44kX%;31_WOr?STVddteAQF)h>zu?T2;`oRvwJP-N6!u2V6RH8Coy# zPXR@?2CS70%72CjK-c`fJnjr0wt;vXbaS6$EF?X6bT@*>z>YhBrcD?QgKmrW*aaGi z2er{WIs+X%I!}1)YGz|#5N2dxIOb@>c-#>*Zp8qqZ45kizF>yPcytB?fNCKFP<6xM z(dpp>=QB+#y01H2rbPvGc^iS6q$IE9x^;tA+}TWY&1KluM>~} zPBP!sS) zLO5tn;2Qv7*%bk78(QlIXHpoYb97Zpeq z*?F$>I_OGn(B<}^{wV0wkg1>sF>~vI5_wP?p`DR|0W|mqp7uhD9Tx@$pWYl58^=!2 zIo!KIH;VXx&g=)>(+%t2ys%mcay58!5oD5#zZFypf)zqFf(i%tAOL7ajSZp)w4@oP z2Q+4ctVaM;6T&P3>AAE5Y!7IX1*QkI)Do-*JSq;JJA4SY$EBCY{>5B~CQ$zL=sX0| z2Xas65074!CXdc$P!Z+P+XkvsJUYP}+B|x}L!KUu$3VRVk52H7K^~Ax(whG>mW1|( z|MTbt``Dwm=Q3z$73ux}0gvttpsh-vQq-gQkcCI5fJgTPP-*YccnD;(N9P1k)7Yao zOu(aa0$8c#iPB@8)}Zv#UCh$@wnWhKYY9i|H~!W%&^e*mES>MVty}+>aJPOdVfSdR z)?g^{2l)jwO9_vzG)R2_y6YIFf{)X;O_@DUp%^*kGrTqwnF>|MYV%Rx3d6<;Q{JIfz9gP0P;C#0xbq4VF6+# zfLI!^@ehw~SMXLK6P-55ZN;XyYId2}*+bh~nRbUF+C53T^+jC>f{e~oeMb@&hJ z8<~I(N@(B3z`)QAI=rSE;`|rd;5+F`>(Sf*x^3Dg`Mytgii(D-;WyvjYL?amb*2+M zyIE8~Ro+d{<|7gwoy?#UAU}Yt_3C!{$Kltjv%$0Z7~}uo0LM;O1{cc`m6-Z7&Bqx% znvY6Y)~H1A_k)h}1 z9B7YU2dJ*&ZvhpTj-WA^{&|cH44&QWV2^_g3GnQ82S;7Ri`SqFqFq!{AQyv#gUWgE zbqbq7F$r3AWDH81y`U+%#$%wyAxOUk=wyBHAVnu=7PHqyB?Tnxkv74jo81R=-fLt)<4$H!+Q_Nj(0r89qxrZ5=ok*m9F+|I{@la*zw}B);Vf5lSL=KqVr` zQ9ck0KwOXo9>>A6p&(}K+mcw9-rWBly>T2~y*cj$Ji3KJu4_Kb@j?u&%Nf+eWALzi zUHZhk*Cm(1qjw&tU*yrdi`MLCgNB4A4aD!ZN z3@qOc;)1M3X?8;54=EgHf)saS3&(nh43=`&=nZHvHxE#0}nMp>Kl~u zqWMjRPxs0NpmuwAl>n%O?>y(xdGUXcg-^G&kL7>s{NgMNw23b9 z_3U*Q^sqe6-v)|BXywo=y5$QG18At(Sr&XfcPle^X#{9h3#bX;(R?HWCDp>pbD!>F z1)FI8mLp6I40}P7Z;15A*!j}c@BnzGr*j=>X|GS`$IjKD(MZtjkp{dF0r5OuY@P=iXiHIv@#qBG;|jW8 zd>W|I=}eY*$pfojJ$v2xJuHux**osw0~Ig5qH{h&0!m5-6i}sV$J;=G1Zo4lyatXa zP}2=`{vT*w`Q>4-kOPBfue%U9&_RnM9e05C)p_)a#zW0ICk---zcmjY=wQulV9j9j zKr>z*P#=PG7NV*95#%9_7mwy5JOm0MkcV3J!DmXlGJpzG2j9*Q;0p#_Kw$-*Oc3}F znqB$k)2qAo6Awe{+d5;9&Mn~kzFa!L`E-}4ICOpj9SOJ-WTkKC3m?!iUZ9qV<=4`u zpiz5pe(JpWA9N;#v8Uxf{$|h+H{1~ZZ8<9TzMbD+N5j&KO)R8dg7yyMU0dGrw=M^T zEXWj4H_<2g!~b9lk8Wch%YXbWOF>e-ZcL!CYo8CQia_c>>D$xtKYz0=G=1BolrHt` zEob(y{8!BF*ig@y%HQ&m0d%71+fpBJ@^k2RmH<@}Mxcx9JO91j4#~I2oh3jO?MrEJ z!xkJ*jG)BJ2u;kOHjf1;UB5I39V{}zv)7%;r}G~uN$@&0*z1?FyI7{ESk&_$cLp7> z$?){ql!Z9D7PPn(y7IU4hgY}Ar(-Nk435o57+<~trx6CnhI*zn{#H=B zb>!dX&)o1+p+vdir(L;^$1X-Q1_p&@h5!%##i#h2n^4XR_3Zo(i$_R82F<$pbXvdU zg7^a_>Dyb+`1)@1%jkxmO8o71phIhRu`)0)fH1^dt$+XjzuwSbr_bLS0UFZ=1q*+l zFK86~6WER5bnF-c9X(L+NZtru9MO5b^;?~TNB2rl& zpo8OlI-l)_gc?W+t`~F~xFi2I78RRR{ua;~k~Ycwt+JqoSZ|05mxtwL{+9KO3=Czt zj-Y9N&W2wK{4Jn%TEj0p{&rBg?XeRn;x6(xH8L_VOyJ*kq4||T^Dj>Rw!;7a|Jwxd zw@d_`*{sXo`Vnlliwc{E<>4}M(7l(8HKqLED=R@tAn6^&{iTvVoj(o#JN^%cxw_p8 zyldZG0=cUQ?)pIc7oNQ#APX*+=#^~&JDj!QmqLjm*wNsM2-VTeKH!4Xfx&SHIHmN8 zw!H%tpATQ$76Zj4e{1&t|Nme2!u!KEZv3qhphBzHMTO79@^FbBf13x$O`xTdyfz9Y zayEAS?Qx(g4>?^Q;%`>^4;nvr+`$Wq&|XnJs6E9{dze9nbhm>>vsN&ca5bM`a_j{2 zJe!a3`gW?nv<2mh3C*vf8-6MAw@(43@SPwxgRlqx;*0#v4WJ5n2Pee*BX1%85Qdt+ z7?jWtfz03sjdOeULL!2{tqY{9p+<$#g}=4#-~a!h2x%z=t?=wL2hUxHsF;8kJcD~M zpoR9GKRvn|z^&`%iU0;j{;3CFw7voLFZo+R*93w)5idcPaq!DC*y!`OYJd#ubx~pR zusqD)CI#lzs4)6;{`Bm$cl;j?Pp#@8DbOiSM?EzE_J;m%{w2cS{u8v61Edkuw|C{= zmZHMAqYUJXUfoM?co;h0`t+Krec)kuEd}bo`gZ3Tcs3t1@CDryvkx?<#J|mz!O`MK z=~K{I`@EuT3?7z8OK*6BDhtqp-xpD$polI#=GZ+Q6!@JNnje79K5$fa)8KEZ`TPHW z^CPAbagScnt~a0%efi>{2uK5eYXZn&(1Yhax;sFPFT(>KttU%3x&>P=dGNa)bnFh} zY5v7sQs&rP$HBqheiu~Yce`|_>HOvRKTH5rCOCG2%Y~LDfByfs zS;XJE6;#F_cL$d%hW}sQ1YK7L+5iN)yr$Ph#lo}Mf}!LdylK+>iqog_XY(&cpUzKZ zoR0segUYbis~rDN2aN!|UIfvY_ioTMv}n zb?N5t>1_Zto?iFEOn^DSgB4VrgSu1}FF_+R81kSd+{@7apwk{}5VpN^{tsG%0k^OQ zlp#SL1J9#o{Qv(SVkxLy|56-PEoiy~G}vkZR%-)S3+fcSd=1J$i0A_Me;{)R2B3wC zOrY^a9goh-po^Iy=YjixE(|{QVsrYh|DDG{<1eiTO8I-I|E~w_FZ;zaT09 z{QB?H`LZ{R(YN!%i-uCrjms{7I6T0^Z6GhXdUOkSe)DJsjbI#>@a+8X;;yN~-e%Bh-|lWu_XU)24Lo|AL1U^QwuMJ8 z_y7tJ8@#3D4>JS9F&7ng23Nx;Apd~df}rLjsCC(9$HV|?nKOG>9xKyzdf!KYi;)AAEP_y{RztL`_bMG9&dPK7iTLsT?8 zERXTG-3E2R4Nrom6hc55HUiW%gs${}7xVL;fs6STP$RkIY8kG=G%&9RlF!YAAxL7{o?~wv|9MrA+2(CO_Kv!=40wvOyMWAE}8cYuW zIqy2CkOoz8Au16*ofmyOPk>hJXuQzk2aQIAsAxFucm+DmvGX7(5;YwEhbe%);oAAr zrSp+TGS~&6P%v=RJm}lY!US4J5b}RAXxbNa%C?42=Sxsfyb#>^>p$pTqnEQl>)@dC z=g@K;RM~qV7yk$On>GLa|3ATze;d0^N=b!HDu1g4xaO{B%;Rt6g)o^?_*T*k z+WMq48#E6G>ac+Z0Wmwupfa2RvdUosg5(=&RNNU{Iv0Zze|Iw|lKESqF%DW`?*Y0i_?U}I4Bv4Vm5A=| z4|#pM8C<%#JUV|GUiv>7H1q(ml)u#vTr5xC0qRtBH-pyCf%fNgbNO^LfG5^bRV#p1 z*Qi)Hf;)pgy{uJFco;xs*iY2t_Z`%7>Ml_+a0G`hIIV+}eMI&$f9nOXvdN%MlLut? zB;0nF&PS+5F2SPqqf56Jiw}5F!y|~vpu|=6@Bja1aK>SLSqO?x&u%uC-gGu_dhzXi z0Ww+u7672WiDx%h&H`P|5ZqJ(%X#>Az5owA{)g#oS@rw>|CgYZJ09Hz9=*H;k9in8 zIzPQo=K;4|T0pCYJi5XA@WJun+4;fnl1n#-N9Rw}Ks^m^MGzYWphV%3T%rQnqYaL0 zP%Z)|0hex`P2hnKPf)j=*|ehZRFT$kzsl2>Jx}I4Fa{f*#aM_UJ~9eNc>Y_;fo6fD$UQ`Jl-abj3ei zy1jUOx*a4yia{oW);NKdM7=Brt&4)+hk;%nd2}~|>LZWtECp~a}Pd8>s#P&3beTdstp5QuNTg;E{YCT4mJ7wGp-%<%u3>vL)aOw7za0PAG0Ubr-(c27K_y;QfK|2)x2V1y6j(>G+Jy5Cy z8ZI{I4pH&(?0f-Av>G1W4DfWiIMa8ERavU#uK?PM`!B|>)zM+Dtp!6iTu51OSGOWodxEARt3PFEZbmFP%6;? zvPP((f~lmG2doBSjfGElGbjW>t2zW+Iv;la^6Y%+*!kzh)5*X7cTWb55P(KbK#N_v z+fZsE@H!{UrCH}&#Gb`GfaISQ%>Kn27daP9LOR8d6ubiVWjEjW%* zv3RkD162EfQUmBlLZ8l;kXq<}fPzQzG>}cMpv>l@qT#4{(YMz{lmS$dOa>(-pUzhv z&>Cm{CPVn1;e|s^ge+VKV;S8@2G+^}s$ShFyczqDmP5})Wfzl2* z>_91!ufZagzr_talHvk7y9K-e;-%@o|Np^lG-&_4(^=xBBB;3Rdct!JU!dkEsAg{Q|NH;{>wPEyr8{f-O2#{KA(4zy7xzC{g0y@1kPV*<1ozl)T?X#jLX#w1?TF z`G`YwoMQ|qypFqp(+83eWd6XTmpAei55vnX62Ja~;tOePOv9slCupCNW9Jo@&ZEAa zXFXc~m(+K=YZ%^cJy0t8+7+a}+l>P>GYXoLj@KwN>b&96E7IW6?XKX_Ycj!7uk=~B z8;gtOgZk?(-EKVHVFIp}4{D_yJ3|>DI?B(%)}?@k?i^zeyL3L(4&!jtJfL~-g#qiY z|I85cU(bW4XQcH^P#vi0(-AtHsL}1BQsB{f&hTXGfzH$Xo;R9*>GHSxz2jo==;ckm z!^6;d$s?I%q6g!N{|`X^@C7YG^XFt>X#UN}-{!^%+H41&T1s>5WCYF8f!4NwRvv*D z7CA6L)N{eqbAi=^W~JcjU!Q}U%MLU5ANZP?Ha5`pTQGB9F9WIb>0Sq#odPv|Gr(gh zHQ+`n1E|4#f*G`Z%10%mw}R2P^<;^VE>iAouLF09o;Q7y|dmU&O8bTg4KmK|XvOH)o0wFIA(mx3<4|eZ& zc2Kx7^S8ZYXJF`V1D%xx3N7%Q3TUK^Umg$91+t@$`Zg1;DPB$;J zLG6FAz2Z>w_#x)WBijpF=M4+5e3(Dd!2SRYx5ND*i)8P2Hi-M)gZ7ed1Mj7VyAOIV zSMxs5EEgkx>lN_)iH}N#i)9;Vl8wLZ5V-jVo|SX$JmA-@a{!cxnHfI^DubS=A>umjTc6YpaBU92Jp)H31I)Bxd$|84tEde<|~;0;z659elzp8 zg|ULt4QN;Z?mt_|`~~<#*LL~8|Nnzce#r(3VP^ie2cR?Vntw3yw-~U42W6P~TWlaK zM*bFcaCm_RwczHx{S8_G4M~UJS)t(t+S;+Bg`~$VU6Kp#p ze_I3S;9Y2H1TF7Hq{cR|b_Y;00T~O{p9s^R4$~ipq<LT zfG$}8=fM}+g1`QQ2i~~}~^%+<`JoH%kMg7~*ef z{|$-3`rrTmdv%K(>O2hIuXXZ8{(n}6V=NL3FH=El*umr9;LxrIZGO7V-%<|R5WcNV z4mq8IR{8UT%OOzf9qcwxIoSFebkj^esyWkHpt07+0*dDbkU5=<;5Nw1Q1Ie-P!;K#jZlGP-@br}mRtWMhC^*6PIKu2P28RC7N^7W#Z@GA`OF}7jQnkBAOp9z z^`Hdx>L36APvGCy2FlK0cX$4ThEFU^AL!IoSonap+aTPX2et<4?r@lUKpUyL!HX~9 z?r{Yxgyd6y(E2q{`QQdx)&!oXhpUr?sDqRb|9?PT!Vh){Gk+T!XoDWOd@zKtnE6|5 zAuLAz7SJJc-EE*|8r;0I;0+QGdqI~IH-qd272w@%pqoeG>Xss@1I=fH>S>UA{%vib z&EN2N2HnU6${(GOq85@k!$GHIb+>`~K}bdIjNh!#Y}|PamRE0oha}d^pd;R4O^42J zFOK{MWmN-)m%HHZD6ww-&0J>I-3FTGhP(4Gc*h05dcuXX}=J&|*Er^j85|jJyE0yOWjyWDDb?*M0X7|O zD})QR38dVC0Xp{u-B8kb*{Ab3XxUQ+=vXrk$VL*-l!C&G$DlPAoyQz4Z}7W+Zv9rm z4?f-aC+KX37w5mTGFW~tQ)+(A*!fBGvqvw>bPvYM9=##+S&lP+Hh)2S?H5Wvg2USY zvbzTCZdm^dDu%p&zyi7+vGXeEXsXt4CDouiF+IBbK;0sr-W(MLpUzh=yut1|?r8bK zgWvsc>;Dop56C)F!`qJCA#*{aiJ--kFDAbS?Nw%(177WXzx=V~-!h5jw~U^>JbMf; zY5w);WmyZ#YA-&2V`Tul(gHRY1>Ro)b0wyw+(DH8vj2+$#-7YE#pz#GCpU#&ay(J9n9tR(=dNe=#(Hml* z@Zw)2Xq@FZXq2t>KBL6hoEpoyZ+7ohc$-+dVmykPpq%HRlEyV+ST;M1$?e~t%qHzJD%bXM7; z*M$YVFj&K}+fBf?JB{Pu0|DPob;nM34##dc5y#{1p!F304?YlZJnk+6>g73hx(oQW zJ}D6gH^LvjDEP|C(0ZUW2P9vTkzVfEd`!Tz`M83Qb%}~b=?c)YVjIv{qyZ>W1HdPm zz4B;03|b8QBInQl|IXbZOBq0?oOOa$RWm|DBa+EBb87V?a^H> z@cJUS9QEiG?KumY?|=B>;}@{?q9E%tN>a*S)_~WHK+A_-(JZLClVElHt+Ak$9LL>7 zs)`HpUj~5HI)LKE$D^~B;iU_>Eym!{SuOx^cyEYG06eg|eN+rUqpmNufOe+3sA#-C zg*Kjmyjn=X)$pxH=XuZ0YaWfiK(`Q-$9X1i$Y5k(X#G|f?Ag5nv{}~h_G@88{}GgY zLF<;>eY#WbGB|eL1qJjg{%!1z7Az{I4?%OzFF&&~cv>DSz2XZxfBY9n=-g*;5FB#p zd;#4{77LoIc8ojhYWVi`OC%?P#%n-Z%p5#HN%k-(?^}6xo&hCEn-}LFfTj;i{nHw2 zRIC^qO85*fflTLc{`J50K&eINEfCMk70lD}ge=Uy0m`J?KC?3TbUti70J$TD5p)KT z&WjCh;NeUi@E{V%J%`g!&#!BI^MVa@{YWB*XLk$uv<2VpJu0Aq%+HSe`7J7-29ig2 zMu2B`y@W^SX~)j1Aa$ToE8oszKAq?I1sf-@fsWZ}TmYg#sow`Y8wFah=*#h605oFD z&d9*fP#wp>51#k~T~-U)tpeHl?g8@BNuN&8xa|LM15hX!c=k?F0WC4`>3j$}4?qF5 zx(PJessK7!NW-&R%%`(OMFZsS&Xca)ZX6)p3jf0;K+*~}OG;%y+Zud2PabOk4bU(g zV`BuV^6VD-A1;wLq4hv%rAO=Ak`j;ZPzI0YDglO)%x-Us7bzcq{_pm7fbEa~Z5MV? zF?it%7IuMfEne7t{Q2Ld^OZ-pFNdq)frCE;Kr8q`3DO3%FXDfIKzE3W!NErYoxv8M zVQ4VRp*uvy2F!BtXgmT6a9F{Iye0$O4GdJkw^3az~S0lr=a62G8$J?5fP&*0Hr0g6tK&a1ASM_oG4 zxmvoY2$Tzh;ubtB0GbluZvh>D+xemS1oQV}44{6D>jw`|1XnXNFm$`hbT)%FV|BYK zID9+C-1)Jy8Pxdn?7Yc8{29QPIel;k?LHVG5wMS=*3TW5?BoCUA1@SGQ@;^Ym_RbcS3!uS>?iLl$uFTFB zl^g7!3oBc|3w%Hu{W@J#B3|T!Ru_Ss&EE<-$%lViHz>)vbgxkfVFz7^o!_G3z|O$X z;iHn@-J=o!8ZFX?&kUQh`V@WUfH;1BqU9Bi_G zd@OI2?s;hpZc~8m@9t6g!oa}rqU1F=fIw_;K=`~!dJWDFFC{_i#NqSL-7PAhf`c1! zqz!)yXf?-6YjA9U&4btHptcow*P{M07ZrU5kIvJ+oiASW{s6U#kF*{rRrKg~=76mW zg@j-UuLmUbd^%tK58!~Te|Crl*VM4_dyx6yDU!xFGe9?x8G`py!8VP!N`Tg`fx2}J zpwQ{%%>}RWmFjpaTgWPR$fpG0n}R60G<5_I_Azr#ee~nqdG%W6g)aV z{TFbAY$5}tRmiBvu@;qe3=9m6#~>*dR4yI?)%4wMuwwB9gbOPbFF?4kLh%NK3o8=~ zz{9ej5)pE7NN0;m1y~3)I?{TePQ&mvs6p`X1*krQt{iQ>UBY6`UdPnQ4w`|Q2U1yo z%cI*>0<>`i6lgCz8jpa223Fi7Z;Dp8 z&;tJl>HP5wwy2 z;7fatgFje27*BXy`~gzy!+4>a?*wB9Ze0IeBmJy5~{Znk^;e*o^9DuDX#plr{;05T7>Wz(aZ^Th(tx^_@Nf+qDe zJ-V4e?Ntqr?ha5H>Crm@)M|D7FW7pZl*gkRv<1dTMZ=?$3%q#sFx3Ab^AtR~9W6YX zEkK1ti4w?UH&C{1Jy600(Z}^aK)|Eh*}?;|LKf^c&=eu)eo4rDIn+s>omXCPf%JBB z`*c3?=sfmigImzTk8Ef9xC1~((Ty!-?8(9|LF<81QOE8O6%Np%UC;*lhI0*$ogpfqe1X1k z5K`~)Z#xWer%S^hM{S1Ag9l&AGakJ76XfVtZ_r*2@Hl~EH~Y(CP#i$#qaB-n{V#dt z+|4qkdw7&Hl=s=NRP-ubqJDgieCg&tIfkBI@a=q@8| zLc<;v&>a|{@t_RId3&8MDhZ%wDadU;-D|)-C{R7a1v-}wbc)FT3m|E57a3fH_V%cN zR)9l3sPj{~UOH6f8R#v<$kjMkR%@fxiW`*9{UQbC3)u045 zgN!Ta2JN~=q=%P!;9LiGFGAhN7arZl|desH~8C}Ss54_tW!(hdGrQz zdRSg4d)iRVm|A+jp_-|p^kzdfb86}3hH94N(z71Thq*wF)&fui3wkb}hvm&8`MS3`rQoFHiuR7HUnvlf6ir7d7#U}&&NEj{7U8^G#e zdAV$VLj_}M>CT1&)5%H{`* zK9-*$bLEcw+r)akzBl}2QfNAb}RAIPz~}gKpO6YkqLQ z`GunmD}VcW&}tR_ZElR1Qd^)>OqfzLp;FA4Qgz^tl^X{rn}JFc@L*|)N&&3J2TDkw z@)$JOmGeKq0Cbc+OfA$mpdHAdmOV&2s7wPb%GgnOlY!xXm_qX&aB0rW-*yHxUegUJ z=Z`TcfJ$1BhGPzlNNgq~HnRdK$AHv;#?(MZT!5}^gJv0cZs`V{SmL4r&L;A|Knq!V zz&1j25!(@PE((B^5`TXF|L@t|4r+NhHY^AA+5Uk?ApAk=NjzA<+Z`@HvJ~KNc>+Fs z;OC2$J#Zahm8u|>9iWbAw?OO35`JqBmJ+Vx4IlwfmIjTMfp#~7valyu>vWK1-~~0W zKqH=BEUhO?+?ro9dh|Advj+J7tSP5JjX>1-g98#CmWN8D8!Q+~KY@(+T2D#^9C`XxS^Mrwcl7w!1~;2BabkaqI-2JP$hXJ+Zq*1vLMA93l&H ztz&09XtWX(8K6qav$Gv^KrM(1Y7BUGwu5`;(7{K~&USF`926a(^T?3uC(q7yP*2^n zyB$2P0~z<_1}W-p0oS3R&L!v?GEiy;vlDzYK1dYg9?#BpP(=&kg6d(Aeh>}S58AB2-;xYUgpK<_3sgYoxRr4`LQeGu zwPqX}_k)@MAaVY-*Pvw)i1x}$&~gb-Vg{Gg(EJT5K|%Sl=_q)O5Tri`UTghw#rOaJ zA?(_r!_<-6#;5Ej_URy)dfu>|~m>NKV2--o`3Tmf!hp2#V zC1tz-%~3DbYl3TE@L@Kt-$9o>{D2(K^y2F=aDq;0Jy5dsr54EX-L5=7oi9C^T^Ty3 zfNMWcMFMjEu@-O(i19@t#58bi{S(s+@sRK%)szkFb!Hi#ej~G1r73o zY77U^DZx57JbGCrHt;Z{b%w+;cy_Yf>2+r8bWyPZo!ND&+Xb}$tnQGj;Wy}c0iZ*C zJT3o~toQ4-`R3F4(x>y+iy1e-vuaP$Tsli)89+C6_VONG&%@x`X>;dAHCU3rrTYK> z|DeqQpjj5n8~pwkIzv1F3fGYzMUryIWL1I}aT@ z+d)eqUp9h9N)S!um&u?t4?QZNJL5pRKR{>Xg4zJ!aJ&f`{Oom6N$~9M2erhJPpb!o zoW?Ft^ZEr(6zEhBAC&~p&UR2?1IqL*prw0AP4btrpyeN+gU)WgkWoh@A<#MwXvqv} z!li)PTrt+50Sria3@Suh50u!vy!i#R)(cdrGCYEeo|AG(*yQpkxWG4fFEKPlOtfKPmvTS;|K9=1i7y4g zYrVk!a}09~g`YuT;L+U$8sRz41XAYFdD*4&xJR$3{CXY+$o%4qUbbKVJ$gmu)`K>9 zHG}T{@aR11(G5N;7(5{415(i044NDB=sX6lDm1|bAVf*8sP|gXK#~W?3nj41n;xCb zpwXlk&Yz$oyZo)iptI5c^LJ!}&S-!B|33o*e=BGuTz4~QwDPz!C?PO(Itzf#%s`I^VU6@cY`a4681)K4p5iNqkA%Fs>b8EGx%O1kIrBTaAo8J zu8+Gx!!zJ<8W11UUgqD%*m9u6!i9eulcU7}{ua=QnKlaiEq@?~OMv-~4L=l0xEvdP z=<>JT0c}0l#t1sIv*iG&S;xw-4irYt3NGEVK@M;=eCyM_88jc|+IriOf9g?}&TJmv z)^8)`A-4A76aC0?MH!!XCY%=b%E5!9t}Rj?HJ8Kw9|sH`g(N&MV&E+yokQ zb_Q)|Vc_2$oB=!9xzjnKyBV||$)(ddrndtWe%;NWl}HDF3b2BBo!$xHG5QqH{6Nbr z(4JM1Ajh3&&zw1P@DYA(15&xtLCA!PVWMb z&YO;wm(pB1opXFTUpeyo9Zc(V&U-Qc1!%sVzoj2kq;Gf5OY3wl>TU+D_V08q0nc`V za<)fznS-n0Nng;K4v!tlnR%tm42%pOoiU(MbI|2c-F^};o<#ln55B&kgpYsQ0mp_v zi%VFWf3TNEbvJ{mOUIp{DhzyNwhrhVycW=^VgB}a43N|GTb6=WI{siP)o?XDaNI>j z!^z*p(W9F$4Rmmx9_Y*jewYhhR7HU{$~$)cfy@_x7WTjv8}Q3BfFcw$IQH^2c#eVr z%)Sq1gYyrsC>H}mr!&XPF0dGb2jsp}P^Xv0qtjUe8s{$Et3ipt7c?n#65Nw5RsgMT zX$2MX$DKjfi88$W3@R@7a5FG4yet6s{6OO^yFeB6t_`5OQ+I;MG?&icjF+k485kFk zZ&~KKg6DD^VY3!5E?0w& z7I*}e1Q#M8NpS9av8@`^b8iM&1F8{0y{}#u6%WX@&_7MUyQ4h7_cfNN`L;gcZv~xG z4!UC4qwxsHiD)Afpm^^N1)pfJMhRShd9)rVJqF3epZW8fK`Ze+x;KMLS;tNn6_M^{ z(3G+xzo3f>3rIl1qub2`T=+f(CAQugl>pD~Py^p?UkBfAR}0W2C}{64D3#XPFqKL< zcDr(Tc86Lt|6nWQZKz^o=5I3wk3p6c`fT`CRo$o~KVpU$71ptB{r-8}vWaDYP2 zhKaugG%5)i7zhWATY~n0v4Pgv_^7aSI!8Ey_+0#g-Jr1QbdGWCc2VI07k}WgF9F1d z6o+7b3WzVl3YrK#_(K3x^*d@K*}H-Szh zOl!6jID;$rh!MtD z9+nsQn?NluaC1lqti?se#}#y?!OvZw<6uF7i8%7@#nAxp%|Sj4o}il$K{a*fLC9H? zU|)6zTlCt1hrd0#n?VWGgYiAc1dG;7b*3KO&JNA57(IG@E^xf&1kEOUSe_`6^XL{x zYp&v9FMSI-09NJa&;Oupzo6(j25J&p{w=oT-xdlwD8i%pD2qq)F@YEHpML%aU61be zfqz@*-xmR&e*W)t`@+B9_1|$f&~g}tPPZQ(mha1tdo3+e&;s2IFHk38NS>KFnpqd-H}p!tPDaD!qZsBP*4 zU0B(AsYDjk)|^ldE+s%xAcq`p2K8D&ERc_s*Mi!BlOdbKUV0pF2De{8Q|pl+ZQYY0 z+sZ&PAT=OuFYF;QpvDVm`Q`CukQ%UzDntg<?1}yWj40PP! zWKgFPA_Gzbmbng*0SyU5WI$@bGJ7F1ph6WQ15yK)SqzZ@^;97;AT?l_PKXSs6Ah68 zsR7I6gJrrweQ3}w;^WOAHDH;qcR(Y>;Nu!VA?XHII2qJShZq6U0#>L4kpXovATl5| zU>PBZ45(uakpZaz%ls$>dmPj+gUEo?fMxDMWI&xbhzv*#Smp>s2C`QN6e%DzV3}2= zph0YKvEXsM8KeLt46189LDh=^$o*}glW9O3T|r$|*hDy}IsvaMc##e=0yO^l5|kFv z>KZSQ&BvX=M<~IYv!K)8!0Q}F?|Wciz<1vR@@fW9yT}nT|Eu89Z3xQ2-JTAPomXD4 zeFr7CKF~0cOXs5(&tLomEf`hx=$-}=^5}+LKH((6FX$}c(e0(-(dn(x9c0iMYyfVJ zKz1F2>TwM7L37N@zQN7+>3sC!I|b$=dT$yY-JnzQ8$dlcpY99`k8UQ{&I2BxBT%m! zUUKa`;6&-z ze3HZCxHISqU9O=K?4n zdW&o`xJ?bJE{=n%9k6V7xC8QSG~In5=OV87@;KfMI=vRG6x(VkkK@g-!tb~w8je^ zOHf$|I;5#{GDst2u?1p%h(~u|1?bFmWJ!c<+5|{#XyMV#2+mGmvmqu2nSe|NtxWDb z;?e2t@M7U-(Bj_*9?eHAq8(%4>oGts1Wy2iYE#g71@t}!kM2&8LqVN4))%7pKp6;H zTRwbYRsb>^T17qt6}zDL1y!Ch5E)Pk08O1BRgp{(8Bp~HkpZazX?yV^A8Z=P`w$tB z8nDbchzzLugUEo?fMvEoWI*`~A_GzbmYD^S0abqx8IT&VOanv)R1ZO9Kx)7;X%HDu zJp_>fsR7IQKx9Dm5JU!~1}tL)kpb015E+mfu#5ym22>S6WI$@bGXL_xJ_R*lAu=E} zV3{Wn83FK2Eht1mYQQq5Kr-<9rx~OIB!0Y^1Ju<6WhK}cOY;#8aKs{~4^Zra))Tp` z0(BZsdvtqpyjTI625vo2A`Dvi*y(J6STp3numjW`1{bN2b4^j^_nY5%c)*tKRVhFY zQ@ac~@ENoY$?^k#vm$8c6h+o}E8H^L_&0Rn+{gpq?6NNxM()YVdd-Ld{FiGQndY2Y@;%5H-6&(cszn13csj z?yNzLiDUww-e$(&+xgD7^C@UI#vJg9QqWQqP*LR5`P;GccxR4^L1&JN%4@3$Hg+X7 zKAjI8|A(kJcy^1Zcz}*)16|t(YUhKGY~=)xT(R5e^S6MG^Rdz3Z&?qCb&w_t&u$wP z56gdLW}t(>QcKr+^tywOhg;Q9&zM)bq@kWErF0(Tq`2~F9^ljAKtl%}{EH72x1~++ z>0APKV7H5kif`u|-_EbDo&P*L?}KJ7K@M)HQ88nH!~%Z{=*B0H?q&yY|Akj;1!$zu z0CbSly@Q}}G5(fVkW66sUKAFc`di8Pi~>T2R7As0A&{@aP6NPCdGt zL3z!m^Q8;;95I*9PyZ)__sbmMZw0N4MpyR`>5!=ZlR>wqf@8ik8C~H^mu@fk;ZPtG zA?mEr)qxCzp9=*yuSEQ{AY}Ze;g?N`wBtUI4_rEnF^{KAML* zLsT?edc8nv6jXdVKRW)Oq5=v5Pyzt$rS|Neq5?@mEN?+26S(8r4IWq&c?FuKZK!9| zD>VWwzlJE|J+Ks%(nMaoDBI7#_;m}c|Vg}7e77aBj z<_w?%Cn4F&x0^);JYVdhq5;Y>9=_c&DxQ{~`J2_ivnDPo8lb~#K&LBd9tNLH?%M0k z2y!(jK3WfyW`m9gvjDjVbmXT;^HE07>E;?9-7FTaowuEiu}FZH?-(>608RL)I9jd& z&u{Vfi-Hbbo&5(i(#8PImi%p-{{80oeE& z(&)bi^aN_p&NH5!S6jc;MSDOFq2}La<#F&Cv*GR6T%h?W4$yusdynoASq29ytJ1fi z4vpj>{4IPe3=B3l{4Jo%>|j+2XsvETjY=>Be=8dc0|PiohIu$bj!1h18h`^O z(l7_d?lAB{=b+=3z~}6RsCam29`fidV05&+&fg4LhUnNE&gj8-!LyUi@!N4m{?`|?`Q?#(RP#N^ zWX4agwIKP^1$2d_M|U@<8gD+z=+eQ$*z04<06OQ?#quYAGiXVcmgKz9T8IO2g`~yDj5p;_w zcskUhvqVL~weul(l>%tGEW`t}bq^GA8ZX}1f@Z{ybwgKjse%qP?X&~!Ws7j_eBjaf z3ACaER6#*3k8tTsQ3(N^-X8uoYBSdKYvpeIB$J){2ylF*=^@xU8CZ`-*n>d|Nk#R84}R~@<=}0`NKo= zgikLEn@2Zz#JKq{H-8^!tuy~N4;B~xZ4RslAF{YG9(3$H+3BNV;&|{Oi(~Ua9+%E; zQ1m!jUgYnO`v)2<3IUyb2s+dlbO@K@4$ve5Xyv>HIAC5pvH^tz*apaTQ{ahjkUbvB zM>~IZPX?Lhp?T1Q@uTIdIvxIPB8<()8JmwXI(CRKLej;5{$^p&mM5@MA4uY{d{uv? z+eO6$G!P0pzOOq(#l*AMQ35m~c<>QuZMvYwYg71nMy{O?AT~K_o^Y`|#NWRdbi(yP z(4BVz%@6-Dp6Y}cZh51`rkjKRq@(4T;?pndKx@&!>s?*>xAAa5+~v~21G;_@65a=4;0D67 z5omFi1vGEGJOrxnK!-*Nbs@+da^h2*@GHEtkLx zE6@*bO9f5%fW|JOcm4d|?V|!etIZq2*MOYGrt-oX!iS&LrVZi4&uWw21s-WNq4=z} zroBHwXSJz;#^v#z)dr4FXjp-_+Cm0XAo1bR%j>y>hv6m5X-Iz-&v^-n$=J?I@MwOc z0P3A~gKj=N4ekAUG#&(X+h61*gI4<=C=vAN_I7wN;lj`V@F5S-2pg9DzMwJ-(uwyt z-URBOg6a~F&dbm#^j^`DxjYOmoh>R3pu67TgVGK69=?3w?zeXAO&bz2)r5?)VG8PgZiIv zVURB%!WTe>!3+T%x%dAWogt>$k9 z?GWtV0uGqgZ~PsgCU#o$9x$JQztxzHfdMk%-yO^W9fLwl{dZpA6=Z@>`}4Pg%K3&f z9MD<*PG=5}URLutpl}VA@aS|_0MGRw0Iv*%&GnbKfa*EOJijG;p1%h)zpua#o=>*X z~lJfKJ9k%=1t1fUJEu4w;7c=oQVL%>x=A1J52Fhg_Ksz9FI8gX6{iCqMs# zmWP63AGACPGM)o2i$GjZ5`>)h+1a838aH!oyY3QCAfp!kC)mJrZ-LWt3wE-E!IL7S{V@dKZK4+fX@kok9a zFdOV%&>~EbO`w%Bpuw^i+Hs&smKGI|AjtZcm7ux=KHu1RfmalCRLgmA8Sem^uLlK~ zM|TIvxEFKJfX0=YK|(IwlR;DV{M!RSV|We`X`R6t{M!Sv_ywIo>@5E60Xb=%!8!cf z1M<>3gY)>e2Na}r1{d&e4=76O3@+-P3|{yUTw-_$w2Ex%q0V5QZw@?6C2Y;7n80if zg%Xx#Zw>`t&^~a`jJ_x6LUC8alb+~HBj$kP9+pNty8R_y9JT~4kN|Db76C7i_{Uzt zZMzt>sJs<);|1C>i5~C{S@24ULUsm*a!>GaG4i0(oqjO!w}KAw1Era6{^KnwpkxSI zFOdc+wm{nz!3$$Rr`o}s_QK5)l&D^=1J&g}Som9){{0VH=LgaWT7Cdti;&jY1K#ZD z(e2Lx+Di{9za96126SGQgM%M5{|~zP3AC*9FiPrZeFWMVvLiL5vLMwhKhLw<-@;>; zs$xK}Zb(t7hp{7vhq0gs=Y>+XhDw2w5^iXs1Xa%uen}gTJMM4YZNorx&6V)VQ@11(lzW#00wk6e0sM(+RXzqZ2d$ z@gft|P|$_FsGjK6I*Xg5`F z9V6HRh%t`;ue)?F0b2rUQMYzO%Mp+}JUfqjYW@ecb(?>QlyiDme&BBcO{#&)Y=~og zy0?HG<7xSgzxgVtEaBhA=F`1L1vKdhx~8TQw4JZlO%l{!SAgF;Gj|$fY18lZtPG%R ze;JfS;H+u>XgKOu1&~-VW z`LO0AjE>EJMEF}4fey~>*7j&VYyeur`pgk>agG~f>21)6!sWG~Q(=ymp7RBbq=IkG zQGj@Lk8koBk6zKFsXPqcy)2#{pyoZ}g>Da?=AYdBEzHae3@+Uc9N@eMsvyA^x_}PE zDv^bW`SeZz2Qw?k(T>eOSUve&5Bc}9cs9S}1YJP{t)<}C(0Cqvz~aMrsQD)&tZ?w? ze97O|1KKGDS((`h$-AHgehS>WPf@V|r7M(>eAxm%Lk<)z4Bag%pc@7{T~tCk!OI%E zTU0=^-K_^oIY7k)sP7GOE~p9Cyc@LSjqx}{1*m)gUAqiwdUdy`fR;phbV80$2Q?Ky z!kx{a*$0qzP*V+*)BgjOM6v#}F6o`gOd4M$^w;m6+)l|%^n`zyFrrh`)C{(sHs*?gSQ$MQdDowLbr570X2PcJsC24{&UU_(F`9{2Lzo5;fe zHqN)x*$%EE*gVwu=ef$3(lrthg z@tFY286Mp^DjCO{-+&tRkPcZuXESJ402B|Pff(@BD=+&%N5w(n(_aEwjDS|drFFJI zijg^>Lk+s!c{)FNGPC=1{sh$xplSnJi$EJtj4u}a`iazlYTXZV9kjf9Iq~QJ|Np0e zS6{!(2i2Y3J>bg019TLE05lK33k|`*9aS<|>K=JUg#~WAY;S0=QZR@C`9r zKu4G$F3=3Hi7xShT%dW3zbzgl30`^Q(JOjj0;u5s`GRQ`C^q<8oj|Kq!HYLR)ijn1 zG{O18x4RU4eEqx*dXO-viv#JV`1FRT z#6a)!2D!I$H)usWXway0FQ}dc-!G}xLsPV!ap%LU%kj5p93=E*VnLz^=4xo!Fe}Qj3h=H6a0p1>M_|2zR zm9?LTq4j^AChU9*m(EX)&Bqv_+8#hICvp5g6%=?bmfuV7Lju*px4V?V$MRcw=1VUo z1_nfu0NqCk8o-5&ZI-7s)Tr1q@VAD7Hy*uo{2%H8GNAK_7A1=pq29{UCF|7i2=tEMai$%$0bl z4>l8Qk0)fF!k%$ID8xa_dpcbiK!F8Hto%(NlU_1_l|$OYp!S+?=Xa1(xEveo^h;SR z-`5L)YyqXZmsi0p3{bt<`379nb-wiNtOXh90E$6y;BEw+dej{X9$E%n4dSc$4;uZT zUDmF>evHugckG0OX#;3@s=F0b1$ri5aqavDy0p2Q<$@FF9;}xRpmq5x(}+|4>bA+zSj^`@_FztKFHr}1#Uh#FhD{LBo1=tOVAVrcpT5Sw~q1k zBhU?@{H^yuCtttk@4NQ*|NobuIg$wo03MoY06C3+TR=u!jG7lZ9c2s; z95y_l9VlTLC{xDV>%@3CZ9+GbOSh+lORodt4v?j;mIsRkT{;iAXr8cilqnNzKEUYO zdC;Yk3wBh<0w`Yj1;HzXJi0qT zi#a?x!MiHD8|Hx8QB9!18qnDr;BbNLcL&W%oc8GE^yuCQ^7@No2Y&wN-|iOBdFbFH zw$5M`{_SB2nimc}VC!_&;NR|+24)$+=1`E=G{N_BICyk39d}W&0ToZ6VjR>oNe5Ts zJ3v-ALhgeA9Z&EdbZDrhg8+ZqSI}i3Acdg&#~qtrFs3!uvoJ7shjZ|^fK)m4vb2J( zLhSYW13D=I)Zg}CZU=QA__uR(dgr+CZ%<$X4R3*#wm4c|;co`rhrz!+JmFY#6X@KV zgAdt`gU2aAuHxVB9?%(_0rFupD40N=@;2!7cJS!+HaPB_P+XFk)ER7Y9J2nX)7j>Q z{(jK-Ne_5?tz+Xu1_lQP{#MYkR}b)6K-)nsfgT^y?VQt_!G7>9b7yuziIhvXcZN&n z3I6p*T^Ju&yK|IPz{*QU@O?inofjY@ji5Ufz~{6;eD1=(%{>d`{Z_{R|NlGpvN-g5 z{pxLD06Ew4VA&y5-*+c4z5EBw2adaxLBWb)E@(E&#?|mZ=PP(M-~pPPdts~!+SnAL zV&l>2Tmc#|XiW#LYVLgH)hnXr$#@7_{(yYq$#~Jz@?x2^N9Vx_pn)sU7>P>3JM7 ze8m7-fHT_%G#&$9&<)~)mvVqtDnjOqJbHO0C-5-5G}#In&xNcX((vrO(kbnwN@cJh3Z5}QR3_iWiEFQh0wctj^!xygqKx#_w@Nai!={(f%>|a{rF9xR4 z#O`2@G+PGdl7Qx4rDefswhTyL29N0UZ>7#2vcSRI@Fc^K0gtE1$Z%fK8akKQd{lO4eWIp9^~ zFF~_z8jz*ruvX8DdL>YrodQ@Nf6_ay;%1%ApJ{{M(cL zT==&;`=oWcGx2YC4mtRcEsfbZACZ>bc-bH`i2=e*_R7A2;EO0GAcBGB+8=x~%4@W_ToFYk_C9)=ge zYT%(GP=L1{C^hEa=A6mDEjYvCLXnK-1($ATj^+bQpo3()ol8K6xi^6pnDEOp9EZdi zs2Sngy&RMPKm$~5;2JpG0F=C|Jb(T7Jnjx2Fz$w^289_YQFt^S0VN=`iBxbq12ohh z=g}+r2i$7;_`>BkD9!S>-T<}m8*5bJe4{`Y-hmnsCE6e>g+Y5ST~s1k5AaVpq<9^A z-i|}d|I(Q+SAiQOU~~Dmho~fg21_2l1<(6{)VF}nV~1+6Vd8H!Mk+siK=&#^T)hi4 zdi8>v33R_yJ18N7u2zCbfd&mgn}q&c+p>f`aMKe^BoR z62Sbe=l=cw-+G(B;|GZT#@_6bx~sM`tsrEc56*2wo2c zxG^z4M`rYXCb4xAlHIYAt)A#{{H{}at>%v z4U|4W2B-LReq=oKV$W-MGHJaDii7PTDrqoz%|kEVAd*q*PSA)?=f@X6-v9g$+6HEm z*8D@D%;4oj&7dqep2Rcj$p2q*bLOA{iXpF8G zni6_NUAiIR`Q|%9$wCGOhQ>YM(k{T2fq}mjbTVC9;~o{TUPk`bl@JA>X`KfQ+>HFK zp!^P+(*lJugCpdSKK_;_s8yh{sIx}J#_(AU}|IXjw~^#8)OK@l?9E|d zd9mf~&;Q*aDh}W+qZ2`S@-2T$CnyhYKa_o;%+WfGgTEcJK!P2VVD2(7Fo4n(XfYQk zjYfb=2T(iV)!(20Jv+e#1T4WV`2GKX_B9?*ihA`T>m?$@moYFffafzoalQ~KseyJs zfyCCn1yu?;DmI?o(?LZJ|Mml&FE2j;`G)Dmgtwp;3Rt}JCI9vV5OMHv6Q0d(7920` zzX2%#-wqAhaozA8e5gRg%Lkw#yv~oHtOH6;FSdiu`h;W-P}%u%|1a{{PN7DhZ&mrWzF&{_QQ`lVSO{ z_o(!NhS|4=s5mg5usp=y3p$IV+eO93r}JZP$OVBHtVmAi0+%kfpV~pgwUA?eJUV~9 z`1A$ggmh3H8>5obdYiw~9keU^@&Et->p?z>QORMR1NL9%trzQ`Bea-+#%X#X2lRUM zif#d!-udyx93)dgGq}CZ0SUl&YI+R5Cb9XM!5)t@igH3-ZHQzbC?h#qo0kYVHnTIn^a1rOnvXEP>;SJ?0^f`X z$)GQMe!+7msQLyc`qFIBXf*=^19J;F(0n>SX+w&rPR8yQl`WuNEu;>&`vS>9tp`e` zftDnL5@|Oifp*uZxV)SNn#XB&QE^}dkEx(3d71eeG|UP~+fZ$W|6c}v#}EY@X7v+v zKQMUr9dy4yi8^$zzzfySpaoLF;0BhY!!OV>4sZhtHct;}%pXpJo;T;y&Dib4;n}?b z6xzPs9-!kOyS+dM+eq@SKhbfWpBaY^|3{ zv>@Bjn}0Eu@`1YQjyuIc#owV4RhP~a;BHGCZ2ZBoJCFw=-F!&l;4e1IL#4M3L6?2J zxU>OOl(~TpO~v2sN0>Qb!h}Xk(2jooDF;AHC|wvBKdI{G_f9h#=&?D z#AV^%eh+K{|Mml|2TBrLdISFRZ~x}o8_DC+d7Xd#Ki^&!Ye)WV0DRED*1N{LjDr zfaSsBMV`$E**tqiIz25fdhol8zMsLz@Olck9pz$qu(;W?`5+TW+Q;&g2fvf(g&BMd zFN?s9T?SYFZIK{*pyA_q@G*xY<6*EZuKe3C!z>3isVx8h|KA(&-<5y+ZO`U|Je~I( z`PYB;?PW2<5=^C-_!I|Nj4X>tzuK8+^!vfBj`2##{W`oS68xWr4%^1=y6L zbKocnf+R1n5P#cwP_f-x!T5SBeEpvzYPcPI%mEEG7yj+HkwcC7-~a#Mv;__{u(hW^ zgB$$Yf*2hSK7gkyXv*m=_|M-0TEyXMcU_l7XCK-P^+aN%En%$MWW3STe2(il8C9YZ|2S+%F} zF+loJ9-V<4KAnyNKAoNl#~r~36L=hV1Q&ZA#~s0&_&km~f;aFTbM#>FIPM7En10ML z24q&kaYx9eylx+rfET8w3=AIK-V(>0Js3PXoddcZ4Vr)aFG=ilj_~Mq4mjo5hVeR%{3|#+#cP$##8th%2+}B*9G{uF~SRa z{%wIw{M$U44?Yk8l>(>uw_jqs0J+5k%aoe~gHLyI1n5MHmR?ZPr}H6f$oLqjq4^?i zH>k1sa94I>QOPkEl@LbIh0HG^c7g6FIq2DW+mT&y6po$NC?l0152blNWfSSCTkkLYZ%{?mM zwVvHo5+1$l!HE|%{SP`G7<5tBF(1%5Bp$uCYPF#BoC*p{{+2M%$u{6b?b}_VBH+=j z8#$4Wp`6*X^Bs5)#k2DxxS#t9G>G*Md>LhpNB8bwI1-`cRBll zC5Vdww64yjyIjSw^GJ854royx6D#OCA9o3t?tB%;ZV#Q-ll(3BSwIU+oD*C-54(br zVkao$bO#rJ7RU8Esk{~e#{>U%&^-$xjgLUNzJ$}U`5>dK<%!Z4E}aiRZcpQXfATZG zfT(UW55vJ1@}C{~wa$I!7m!tK=3#JQd~or{XMU{%pZOyXf)#r3Yn}bfA9wIGzW^_H zGY>zA5r_CS9`J`e4`0B8~t36Oj2J1D}G3BcJ&rkAOr!d+=*L z{LCMB1fuf-f5=6Cy<7b4pk-yB`E`C6UIM$@qgP~7=SN3npGhnpy)08fnX^RDgBiRr zo3Vn0F@wjY+d09p*OAeqm!-k8SER|M^TcaOczw^m-Allu`H)ECL$Jp=z^7^-D1YJ7 zdCJl9a#_4%=fT&rL6N}*iVSw_kx?E1j|>GwWV{9KO6&$lh5{@yKxavU90ZAsQUlO3 zP|#o}Op@|mCX_=VeW z=`+88>h=a62L8|!pZT>e@N3-q%zx+x8-K{1&-^i$`NJ;qYaAkw4g_H7z=AP@0~G4$ z$v`M=0-pGHvAo6K44z2tJotJ()aPJ#$rEtb%jm!V|3fuA`OGh1`>r135!^xb@&jn# zuiHh%!lyd{QoqT9#v{P>TMj5uA9GPDV0clt1za*i>Nm*EB#h9-UoVO_gQ_-gEvK#n zV#cUAfGU;>&(33@$qjUB_O+xyQqNAAMgO(bqX3l z1|7xNdGkeqG^C;fZA$HSQ7HkHE>|EGT>%4sE2x_fsp#B|kSe+eXhoL*-X8!uM-${X zM$hgz0mp7P3DDU-j5k21t3`lZp8z_+vki1V0=y-bSq^G%{QNJv;4(kMOKor!aqvYk z8!JQS!Iwh6|NnoH&ITIxu2D(oJo@tOFVJqyj~?Bi;OH(<@puub4XG9jAeB=p1AmM5 zumAsFJk)~Li=1FB4__E)Gcdda9X$(L{{`0%8nzMB2FJq-K5Yhu7b`*fI*+_w{o*|< z!d}qyfKTVa7q?l#?qdJ*|No16h)RULo545eKH+bf`}6<*msOzUT|O!$o}D*6KrRKl zx%FhJ63EKMS`aID>oYLCwEh48{|iHiX)p7Bf_(VPr}HE%!d_gH1XrUapgI&Zc;eIf zvBO2h;YFMl0|Wmy(0;<>E-KJ7EL0)f9q0n->m9DV0BHxGsJrCR&CAdQ>R3B+@ox*{2HP?N(k@4; z;3uH$2ko8%zS+p5dkc8V9p>!oE}chxJI}l**vQV{*?G{X*8%K!l-{;WZv@Eoj-c)t zAHO^U$lXDVu9mmJ?v?_#$RX}-fVevo)RS~!1otkFgWMhU-_`OK*xeqTd<-u9+Z>rd z!xQ}50$D-c#e%NN98XFSBe&5>g#sKMTO z>EHtnAI4LTU|t$1ggQXifq*t7GIjES+rZ$SV7G{hi{(-N_S@k3`vV@mJgYQcxL96r zOdY~i)booWM>4FYE2A|%TMizc~21vWxk(qy6C8#F|vY3&7JIGGPAC8Sb zK`!9mexSF4(UITvr)%q_60=TWN6?}`e2~S{@^tAsm(Bx_ zp(D_m1jpFJkoIDySf?9HXC23JH*k03^#$m<0RC+!z8!G@cMkboPB>bgDAVXX;nB;| z>IBjZ6={_Q7Ua)8>p$5~WBh0*Kj9^I^L9efP0uY&47`1%nt%89=}l?o0pVarDb~}K3&&r^KP#ipZeN+@cr>?yan8d~~0dxW&BLf4>U!Wqc z;|~kN>&uY%_P}sI$bLcoZ2DDFS4gmzv4Dmk5JNg?NF7}b zSa_oJuN&Wh4&U(Tc9H<~NqRd#rh0UO?ht;lWIa3BP>=2cfpT__Zqv&xeBi{P;Mw^T z+5zcZ0^R`O(W`4#0Gb$h_#*BdXqdTL!lQRSXu+;euc;SErkmRr)KdsxV_@*@Jnz_C zFTw5E?G84VwHj=03;5CkSJ3@fZw=of-2uYCt&YW`H;%)n*YsjO4+H-;H`asCB@R9i zU_8#h&5aF|*+2|-#^a?PFXcgpn?UX#;NQl~zb%*%)X#8iKFWCTkpQ$b3}%9shQZ9B z^$no)1dJCt4|p&hcCmcV-vT+ewwQ%~n=>n@@eGh)9bXQt{ECq4c z8IQSi{($tVIzN2Bz(3{C!58uthf143yRg6wnO;`?LLP<}*IHRYUG|pmj0_A8EpPc- zQ<)eTzB#iv@VA0GXb0cPI5t23+x(2tvH3r%Bmb1+E*AevcwzRx2#*JiK0ziMdj0={ zq8T#M-wqm=@aPrwE8t;38eVq+wGy0V__qbidh~kpfL72a z90N5NAkhR`?++@9!N$tLqD!9f(7_jSpi2}wFR1?i|DOSLsTbr(OvqG^4=7BaD@H*3 zoWZSA4`^Y--!cWX+p#wUbS0>diUWAyCO?;r0a{;xb^w586cJ$yx|{*reMb&b(0LlD zakD!X)cu8AuYnZpUiqLSGlH0_*fn)1)p2cdGzHxkcEixL+E{-n-v(qg)OKAK<)-Y>s4&NZ)5uhI!O{VU6?F~_JIQUY|rMm-^gFqu;pw%(W4;ew_X9DQ*2T*u{!VM(f;iHlPszDM! zEqVt~O7eKI!j*#oeE2A+zJuP43AYcluLouyJ9X@{u;gHPxf?ua%>eTsXf-B-1Ju@1 z4p8wo6Qp9Bvy2P>HfLFn-e5?&2e~@~RQDWw0NM-zS|I^S`!0+JKENH0FquWCQBnA$iPS9ZppxIc+NHu@UB2X!Tn*0~|ura)3 z2DwTe?rx}y`CDH9LBz{_Q16lQcrnoBV0bwhyn>qnvW|Njpj zJO`~|c?r4^9$L;L#gI?u#TRSYxEQ*pfUjT$^<_c#V*7Ny>;PTO4Kg3pmo)$-PtXEx zP;7#FvEX(whyk7-0>v6=kJL*g(3mso{pZbZEIc|dgWB4?fh-=~-W(p5r;2!ey1fN_ zEKilGfYO(%;SlWyRFv$0y_RAUeKmCY@5&j+AuzSe__v@$Ed} zsd)f&3Q2qE|NsA8d!7EdbUI6b*3b5(fI8@qo6aaLW(;?Ylt? zuxmf@x2*$lI*U2@x3PI>e&XNe2XYT|jesAl73YWAiu>Tv=`6s%&5gbJ2P=O&Xaku? zujuhKq$Zk2uOE+xwKoTU(;D#nfwO>z-(4uM&%@fT(g!$V*>v_AKC3*w?cLsxY zCiQ{VSA+JN8f6Ho6b=B?7 z@lqZX?jWzg+~g+@DsX*NG*GMot#WEPP&(%&=)QDlIe`d)RiLuF8yW(j{TtvAkmhd# z&C8*L0H~lt4uJ`0;2}_w&X3>sC2suN+!Xk?g()Hhj}o-)8>Y;7p+uE`o0|&%wlGyB z1!^z_>WmloTR~?4A$zQO{%=@&&7)UzQW7ZH^X^OnRi;Px@iV+^`2GJs$e+k=wz&m$ z^UIs)f%ow}Ollu!u|?;Dm)k(uKpy0629M5Hu!`j8f6=skpt>5AoSiv*y1l?j+L!VC zOB+x!Kkf`VfE{!w2zX}rC1@>e2k5Lgl-Wk*ef;2|M2(k;@Kz`IvZJ5>McF~Fe+6pR zqL;TC9-xC(&w2EAfNm%A?7a5k_fl9#HUQk=6y+)djru{C({Q9Qp5Sj)2PbkikKPW@ z()T#o*W-#?pDz@IY@AW9w~xj~kBN zY^?|QJLWJlFjyYuZwDO`=-KVYVR^Z%!?6=IOf|t#^Mc_e&w~$`UaZb%WdKRO1f4U6 z=zk#l$kp&a4o{VOy#y`D0qv)y$Ups{GzjsJGb;}NR76-FF4q7#)$(%L1Pp&X&V%{` zG=G~m!LjoQxF6!u`RL*+*WMHn4j0SE#UEWPACz-CHvakd|G#~iw&QU&&~3OL-K=+u z`4~L9d5;zIF?2I@GJ15Lcxei%=i&V~m(E9?-F_S%2OlxL$jD=50L`u+@a%Ns0ENA4 zr`k)ep=r)~*Zf?m{P;*qlqc=yz05+=h$fNV+3-LRkVI&uofQE_)2L2Y% zfaUQP@Uf|&HW+M32+vp$e+%f=h)&QNv3TgXSvU9`aF1S=4KCfF(h79CcRV*}UKMT+ zsK|f~YmPa@1>Oww-*K^?W z6F7WmdK<-upyjBf`LLu6?7Kh@Z2mgVjO4EpAL9M=uS6c%KZ`uNS#KBcF}z-a@K1LS zcn;)6u>fTJ041s&7{KeZK0%jLnvaS)@c;Q@$7NB*e?;9AorcytE{yuOXt zKZ`Qn2^u@?yzJR|#-sDP$HB)e9*n0wntyTfw>Dyatd_*hUEc|&J&*eJ_kWvuhxxB3=F=OkNDdzgXdtc`gA_@?R@Oh zd5Is?@4W#opIp1STr4^GTS5EY8!9*$O2u8eBUoI!omgBt@3|NrYku~RzZKMQaqO<* zv8>?XZ<+*JdeR2!{DRhj_;0V?%>AAEY9KDb)mEZO90dAjzoPj7^Pr{w|u zcF-bnU&|Y1+CH6!UV_#OfyP^U3k5*ey0m+PP5S83d_Vwv8w+S2)wA=0Z|6bJ&R3qD zw>>-0d1{{Y)jR~c`^!`FwNK}D{;3CiG%tG`e9z+1dC#ZwvZLZrkLJf8JQzRwYCbEm z@NGR=V(i^3!s81%bNUGrsK&?&q@wbAu7C3fS{Q;$@ zb}P_vP?m@ITR^+?eR@3vd^#^dmY{Ng%mg{vrNiNWhu42kP&k8yr z{*`Rx|M9ni7EpCp@Hkr5 zsL1fQ$$?H5=Kb^ke?uiGD|QF6ICeXIaqPSRcQ>d6ckFihW9i5P&gyOlUkd#B|9^tz z!Iz-hn0zdc^0%!4C8Ew3KAHzS7-932ju3|nfdUg0pROGNpaAu-JXHGRWi==;Eg$l? zS%PAM@fs+pgZ*g*QVxm(myQaMav#f2rB7c9gU%87&fin;`~Ux!Nx%R92d(?<0&zeh z9-Zf2mVo-7hrkZ>IruUk)IA7=p0KIm*?F})kjJz0OzWjmNgvQ~&_hUYfffk8obm;9 ztTO0)I8T8W%YXg<4=N{l9GibImR6TrP#m4~IMG89TSax9+AH!=iXnea` zp5Sk*XJBCH^=MbOwoGicY?Xa0N+enIH6u!F^wE}bVjFM>}p0xP`W z!+5dVz|rzTSv}ZZYs1oYu9gS+n?Vb*Kq=Xy^I++r?m`xjCWOiB85kIh3t2ipHb4AV zve?z~M0uk}H!EirALx7o2A|Fwj{JhmU<1JydVv@BqPk(3~6S*e=jq9xr<)s17EyNVeq;Xu7oV zPf1Q=5^0$pnnht%+K%0$%sw_21PJvR)-1 z9po=ZCjM>U-5nr*wOD}G^n~#k9_X!NZ2iyg@uS;~1JuV`&BDN7d7Qt!1~k*x?IvJ( zoxfdJ3r(@6wqDb5nOHOY7}Uf$mTqe%DYAm(B#9&HxtvZQ&eg z2Vb#w1aQ0rjlChl)3duS0-WA#Kn8dI1g**juiypW5(OHi1+U-*G2m-@p-cZkE4o2r zJFtt;Aj{Ag8D3QMg60B#?kY)4O#_(+S>;{S10KEh=sfg-y#aBD{5McS>U{CRlYe6^ z1AogD&^oN|pg^}g&fii78j0%s`NEBrf#GE)s6Oz)kzJfH(ibSFipHjb!Woprg1|Wj zk;Fi`g}(*VKrlS%xEr)B^R+0b-fsaNoC(Q0{QW`y{{KhIKTTNj&*91wF1=3wU!QjD z{Nbp10h~H|c?3Ymycu44u`nLA>dZ~x+Uqj`ax&V>eJ4LpzxtIyg9%j`w%U> znY!WOJ-v>V0e0Xo=mv9-&L1Cq`8R@A)`9k5zi0;q9%#jR9caT`=ffAE-1@Tc_y7MB zTst3N`sjQd)JOGTAEiQkbP?Pdr;3lvz-~wPkwF*8M;}2c=x8m%M~2`O^aHen9^|8$ zpcRH&!L8II{4Lc`AF(hqFucqI&w7FD3CGT(;C$-R`3f|Skt53CYWb%4qhsS=(3o5~ ztBd7}GRxy`pp{MkJ-S6jlR%SyE2A^&wAJAPHoeVym9vm*+X*@4GK#3M~9+^ky z@t2o=f+mJud35^;fD*!sNwJV|hD{!wZUWt5JT9Gi94~D_I>3h@cOLgZr2c83ozl-G6=LO8{wvZ zF%UN$gt`gjB&py3|NFvHr#Wa5I(1TKRwpRd(Bm?t10?zr6qi4%5pfCHe1ViYbwR=O z5_Iw?D0T9KTEd+VUsy0QFuVk<-{hBPcySse+j->WWzaMlXr2(1&=Ki-&kxW<))W4g z#XtW4e<=hS^90BH3(#>ZP^CVQtdIa(?CA~)e9++nAoH`K<~#lT|NliCgoEV5ZcwPT zKH+aE0<{wZK#y zo3Zski4ch7@B7KX!0^GbSx1GjL=a>_bX+{B3F`>jbIJf(7ZD6VRP2vU2njDk6xZ2kIoCA3uirgMNWY(PVBA{@aZn%aO`x|`G47?^?wPgPv^(~ z*L^ynCV_6Z_3ZXFc+ncg%HVn26vm*mJy61a+!4I%%dwk91%yG7 z1flu+K;so39Gh8G7(u6?NPy0I7SQ})d4u2WM(gc*dC*ZX{Gcv%H)}*3ALK|OP((t< z+joJ&0el?Ki-nPp!r<(2&=GSC#~r|1%sh@efTtI_1v)=yTZho46vDEy`^AEkKqP-3c;2k}Fo#FCF=$0?fM@5IZph|;@J(2+d^#U?x~M3;_;ZDYfqxrl zWvcf7Ads)X`2)lNd++}>m?oH7u#t)&+dCh=Fa+s?dLDZ1 zw*v!ArQ;4AM$qV^sIosK{{6x657G+Lq6)g?qT5Hs;KlPWR(NoLY)5s*>qgMHKYTwv z==9gtlO=kf^iiS#BI}I6YXVwNmPq<^J^~k2jxjI0uCg$o#XscQIB@=S+~E#!U$YnrAe;}D=bv(bf7=1@KFw}N3FPgg6Fgckm9Ta@ zN^~-LbUO+ho?v+3@C2k4#1jk;9Crj~BWON^mk%!8;QhFux%?K;`Oe*rGR;4jO3Ism zFqg7J^|*8%^XX0&@aX*bq9zp9gf8*%1f3iH$OF_)28nh%gNtJ}k8W=T(6tJzJEHj* zjyuaRfg0Z!^%659NTfw@iGkHEUOU> zs%{(@Q1=f&mhyOXp6$Hs(s|6c^K9#-dR3op)v`!FP_G$O4ZH+Z1E5PFK@||}?n(y+ zr1EZK2t1!3!CK^jN?6a%92Eh_&KMO5$IcQJ8Q;zv6$MYw4$szarSlz+yQqL85md;6 zPO5A3tbp2S`1drx77T{&M2f70#Ji0vvKs_mN-|B_pf6y`V z9@eZoBKR0Q_+1WxZmvX5OrUsxjaPu?1sryPF6s5`JP#?iUk1bc!QV0!T1MD0o@ZH1MeF4e-XGgD=d3Ss7dnPx^Ge+y&YW1acBM<3lDCK*e1H z1A_x-=^&_I^j}ndKDd_l>^%0u1Y~IQzyJI#&WwHO%? zE!#YgpW**y*X|q@4&QDQ71!3c^~RuLQ1lf@eYcN_0H|_*_@X-q)JI{B2?y7G4$+V% zjAJ}B-yx-kg&>u!2TFEA5`#yttoyhB|1qjTpUwgSm(C1{;|?;QQ1JoReGwYqa~|P_ zPXKKN@&FmwdGiGai0)>+8HVlz&^Srw$N!?+=YqoZ;fwo$tPDFD6c`v@EDZ!@>%*Yt z)KQOKQDraCy6~Sb?gfIP`WQ%fnd2UiN>{_TAgithf)A-JbM1WKs`rfjiBux3jFP$`Dd5TN1*vSc97|y))#1<7Wn$A!>*byTtH{Qegs#D9*j3%L`effc`49!1SN~VI&TLZ1n^6C8O%J}z1JlNKfE|3eN!A`sB()r2*v@MF&JDiUJ z8vWo3+8Q+UTLl{008c8x(lc~c6|`Ive5vqdPz3_I{nVrLyjQOYli{ToiB1d*9-wRQ zmV;(ypywIzZ)3LMt&g>9 z(4kA9vLNA#O5oHGI-g_dnK= zf9jE!hnYdkY9QqyTnR`|rv%7!GVBH2fH#SM8*}puPS649pn);NlOCPFLB@e|rbqW4 z@VSDHdq7PvpI+TB{yYpmy|%gFT2?nL0K_w$AI!sGQ^Ma4nr?=+bDVocR6O|ifsQj^ z1a%6MFFEq>V`1`P{N%#F%?Uik)&n{|kAIsG=r%1-n$f)A(JLAfz{B7%12oRQkA;I@ zp23%YUkWQ|riXpkxF5O0yza6}ur&n~JJJRAOa6Jpk(p;dt-R+`c09s(|0U6l_ zo!#Z)(fJEBuj}!mkBJeyu0IcS9+ZoU3usk2Xg@~)D76M^F)%b#gC?;3LDJ3%9^I2c zefKo}{1BA_$o`)O(3T{AL4ocm;91qq00DS}bXtJQPuJEbCDow&v^*^T@waG$njXnV zJbFb-K+RMB{X9QDp$1XbNf1b~~GZj-oec{=rzX8I%nU zGlJHuM<;+*`L(LBF)$o=2Ho8UTW1AU?ArRIv>T!y$vL1Y@78uu-*r8B%`nI>4BgHq z;Hy(Y{)11L1CO(IJ12l_TEPl89K2|Pgm5)ugoLXY=*TK)xW4=d%7mbmvId|t1$%u| z0zA5V!23pgI(<|u95pYzh`YrAzElHr9~elb1t=a)YQW+Fw7;zz6c61Xx2N&v`yj_d zBflUA)_8acS|12akDwGyMh1Cl0veW)2hE?r(i1EtLDCf@J=OhZU}!l|qSWo8;sQ%Y zpe+tBSYdu>wSmkpK-Y~n9s!j=h@JzyegIA5L((lad&D62>;l;XGXLdNaE!VzFc6pS zr-AkJw}9FRP%|Q42LAp3e*%7c=luiukH5tZG-?fr*OHf@>*nD7W&HZ%p!z|_X+Z5Q zd3h6bFbr({6fD$UTvmg{Iw)U&V;z?JT##eE2^!`6f()p+?`0!sycU#-Fwz?+seQf< zPHL^up!xxH?gb>jfb#NPY+b9aaa)50#(;|D8eSz%jg3{R5gMa$x}FA8?jy z{=vlG0vaF!?wzn}(M$fSea0LnuI+_CNt#2tPhiy-k` z^HTFS`0^T9{ev$*f~qvFL!6_`KXgU)gV`2&`(Q?U4>kzY^&%^&j-_vGLY z&u70O{%8YP1o213%fw&*|4$$;zobF^;Re-@xgC(20TCZf z{DKl_{oSbgyU) zM0z1udOk?n@)t-qR5}(S-2|3y07>r!9bt#)uM*KdIty(dIa-3-N5$fxdJfz!;_nCT zud?BQ(D0(x@IR#4;A;35BnI9^?$c|!(HYceu+?(r0hL+_p!N?)8h7KU0JL6%@rh3_ z>ohkW22iWQH~EP#;}M@;R#rD222jHSbgr3;3aD98lj6$1jYY-L@<4r*i{=53UQtFD zc$310qw|L^|2`Gap&g(GMQISM`~h7g)$*N#fdSeGE6MZdWp#JuVem}8;=#Y4Cjin) zvMJ_o15F=$^s;6-^Dyx5vk^cwv1FT#MENFF;IKW@*aQd zVbDqwP!R_ye>{3wZ#wcYIPvdeQ2<@?&e(E^-~R`y+59cn7#J9AB>3CUfm%4|c7W?? zpWYlq{R&wi>@SczQC&_{!@Aqm#Iy4*Xh5S6R6xH2E%NG)g*2if*%=s)yMoJg&(6DO>t$gY z8TnfRp-m*v@-G*d<|v3}P^%cESr=TpgT~PzvyqTviNGnID0jYm0}cuY25^%VTJ_%o zU5^HBzrK+E4k^mCL2Xh*Gvj5ai%Q9hdGfGG0iCbj?V8}xJrxwJkg5S%27#Ka&=^6l z8YG~10pqcM_BV+As}W7RnwMsvL1#$(^!liHU~_jeR9`VvAG8Psxx41YGdY;MLF+zI z5)-x}v;n;cm3X-Y+yHU_l_Uz_c0aN^AWbxID87KX|26dVEzp7VFU#QbGC0G1@mGky zHzV{FytE^%FB`0{q#mgn2l=_+#V1*apG#7}@ze{ACyc7kqn8Dv>XUeR1l#~|U;wR` zhP9$WO=_RcSFV~bUWlFtXV})cU}Y{0420U7*v$bq%wL>12QsW=Pq(WHXhVnvsIAk= z1X^<0c?wh%Xuy0j3mkJWpCB6No?tIvZJbNI`~_-Gz{l_Kxx)eM4*nJc@EV2?6$_B% zt7Ra;$ln6mrv!EYEXliIX+<=lw-Y5^R)QP=EC1o;i)ZIu5SxUoYY3XJhIMH`mkfa7 z!=v*S$QUw;tQUc2LBY=7dKq-So(-&AK#pukxlX3}khpzw25d>o9Z(AmIewYJv+3aY z^^k@I@iwq3q*4W=Bm7bT+$JNO4~0KN@>4R%NYrvH;>9&7n2jzVX;9??OI0CQBDIlU zPyn@ZdAZ~#sDTbC4?x>hQ1Uf$dC>g{;*Q&(wi~2r81OO;)F=X%XWg#Q{_#&pe_#tp znJc(|47$qxxGT8x{n8X{9kl<2*FI^eec2#`Q2ib7;+`bb->sWK-4b_j?gbSLxa$M% zj}Z4uL(S`SQK@*j><74s4(gwP+|R_{GUW%v{a=3n|KAO9Kge8Yz4x;82Pn8e^;UO_ z3aI||=#+SQ`Zq++0gxWw1kj!KpcCO?dO+76fhyC5zyJSt=?+Z*UzGtmGa9DgE@*w? z4rsIXu_?G&%V7p;*0Oc+Gra8h0cw~+rH??QUz&oXpLg;zyi5e`Fx&xcw=RW9p8`vt z072>#P{Y$9(mi15u1?S-mXC_XOVGU!jxhH*L)2t|)uh4I zfXW)=`4hDE@e1(ad23VzSQ!{Pr>Oj30gXv}cAoL+JP*2UmVuRl;RUB2XvC&PMFVtz z0lXCex;EuN^8+T(fe8F9e?hCCx?5BvKw~bTmM}wiiwa1$WeeC){^re~Ru)7Ibna6E z@?z$}(d7nK~BPSE0Ah2{qw zpaHNLPzvgXSPME6&*R_&CXZenW)H?=9=(t$(C#^4M}hA318uB*=?GdE2-!#0Ee0w9 z6<8S<9Cv~em~ZEY7dMWB)>?dgals07j6#S?iEpnB8z{B3M1u#jd{i=ATThloxIp(N zxG?*2KsQmlbe?2(<>5S7qU+Q76EvQ?ivd*c^s;_7;bHL6eCVNh3UrR5m=i05;ic9C z{2qrucPbor>2^_x0Z(Q90W~*#R0>*8mT-M@V`1cP1s|gxqEZ3cFU-ftz+fGtQp4X; z4m#ag^SP_#U;Z}GvV7OhA0C}QeL5e3j@1nC0qw+pkzoazE(}o#@Btlw4jNelMVAlb zaaYZ&E{p;m%{3|s49D0RN@PIRw;m`F>Gow{gzUHI_GMx00q;`=HT;{8ig+|16S15F zj${6oYoMzTelvphZ0ATGXnt_N`9MtvS+^SVFnDMldhy5s zsu>z)FN;CrbD;AXKyiwQ#}_9LfTHgQk}05w0&T$e>1C~jnAY8*G6!^Qx{HcIH)N*| z=n|-I$bNlLyuBz!vkn~Wt)Lqh9FMWbg6@Lzg#>?l4ZB05|Wi5Lo^S)m;u&|NPRE6!HrQ+ z@`q((sBb(PkAO-HEaQEka{(T{c&CX}RCKziB)ohMYMdat=cxN78{crSf;6mADS(te z5v-`?PXeg?>C}YuLck{_dvqS_Zc*uAWnh4mJs$imm7vv*-7P8=$Yl>mr)7%@$Uy#P zeaL0zATdzc1DcrwA3EsMyG4Zwa$PQXFTF?a8t`~7q|^Z?C9p*toh~XdaBD&3Pz0O@ zDvLtkJWzQQ&<(K{R`~ezs=x{#(DI`0Ibc_T23!+B1rjKjL7V~*2Q-xc;#9oc1D>>D z0L5tQN&XhlV&Lu&l?c%KB}h4-1S(KnRAN9?*fB;12FGLUwZ6UnjFvGfKKw0Vpap!I zFI_EP@;8H)xw?Wj3jOo|EvxrYu>h3^1}`GaK;;353!Y?v1|hgSIP1d50V)q1z~zDT zH%O2xln6R@^QbWTsAM>H`>3!m`l#eIA7=DyJ_0KaKtaskvY&~8p&3*h_^1RNYf)ij zWMHV4Jm7eoO(|W;s`-Jw<1sfDhUNo09WCJC2B*-|pc&Zi8kGc>ZoXZ=AmzkyeNZ{^ z^Tl@?Q0j&yYG20dpz<*UR6e%e0gXj;z5o>yKAk^(dRcdY^l1L@=$!y6XR|6>V^Xx$>ygW2tfC?{=QlDN{Ca5bRr+$Flc*YtOR3J5=QqZTD^}QYsL+gRg zi(sGfd!Fz}KIzGL-UoCm64Y_skXuT?+Izv;kwO|JRkeaHrt&pUy)zN+p^$F(s;?Ek_+pKD|zi{M#5?4wOD|JjS5p+gri-60|iH zIzMuZDF(DR<@F^f-=p(|Pv=iqk^94^m-UD)s38YQ9rLU}p@kF^pso9mc5{mgC@pJ4 zvvT7RP)UWe-20{iTCwe-;_$K%g=LmN678AqEj28~|C-TcY9yikj{@U`@@>89^s?gCi*woF0!c*822%f(myV z{+1^U3=F=S4;?{;JNSY;P~i@WE>NG?02E;wum~$LfJB%EXyn7dmC+XzYc85+ArS|1 zCw~iQ!%_2Z#$zrjj@6K&xAP;YxMo)>RkHHwWp&WvVE~uf?vPU3Ma2OWlZocg=m5v0 zg-7x!AI6WMhy<jN}i+sj(1!G*d$ z_{DTP1_ssp_wU~at>!w6)LjDY=VcAl;9_X}>E|EpRU%+`pz&u&glmWgzYD7&$Q+dP z()=a@d|$yH70{JqF5OGO$FG6b9)J#w>Rtmr0MEtpkZ0$)&TB6G&W9W=4>9k4v) z*m<<`unWK2E6{zUKEAF0efV8|Krbi*O~JD`9%E#1>~=E&4FMZCa=RszXn|IIfTGTE z2dEq3(JShp4l3DrB{e~P(Bx`RH?cna*pzo#)Vk{x~@3e}RMEqxHWBzsnEE)o`w@Z%d#d@1g=4 zM=4QsD3Nm90lMVNqgV8dDmctVH9%qhzLK8-6u9l6d*>iw>JJZ7Q7mB!PQRdI z$b36Lf`jxIC_FVFi*pTJK#S&Hocj6y|7*nhNyzz!c+^|{{{R2=WLWqZ9(di3l%OX- zR#Q84JDPMu7XyMS2+)}D7VrTFF5OeWhiZb>YX~?0U@El(FVKpMhphdd;L|h>ZZ!XADzj<)2TpPd zjsHLiu2gM@q9UjX>&V2A=Ge*jS`6m?UD2@!alzxDQ9Z~4N02>-LFbeDsAxFuNCE9( z=@tE_296C~bx>?1R)BJVkBY|YMnn++S`P_cW9b2Ml7&y_Y2Vh9pmqHGE;qUzO*}iV zx^y1%=mdGaM4sCb9M#b5^-vjX_%2nD;Vc!9Rmq^PR?B|S^Z}P2aLVpfkp@y z96mceJ8wFImZ^dkZi9O6kiZA6;O2V#|G!7`5rie6#vuc4^}B9jQ}5HMjbsQSyk1!E z1~qLU<0dboKv@qV30hwa+rLXNJQ?BP3C%hamB8V7O9d33Tgs5a6SQEh85W*Vns~z# zG;;+C&&lEp3@`e2fp3Ha1r8__JvtASn1KTlBmxe|1E7=d6p%yb#mR>#0Rkz9K%FpD zWlc9wltJ5 z#HUxK!Smn~CZEnnFSIp4>plGnKr6vJkH3%saa;eF#DdmLMtF4Y1E~kGSv)%33i!9V zMR;1iEwS|Io(7ia46A54P$JeDmjS9mVKv9$v$y<>g7YS1X?5o{kIvIBorjnMQ%X4?CLEq%9hgyE?9=UC;A81s!Qa{lD!H6fn2Tc^ z84oyGekdz$sE%YP(e&sBFU9cbWohu~JOw&X$fMJ{;zgP|D+721Hq^MZ3648Jr-6c& zit2zK{WX zT|;FggGcA-&TA#{-OdS}hZsMVR(1!+cyxOgXkGw0%A=QMl20#BW9J93+d!uyo&t{- z^zt;m*rCSC&>bAp?VP~)$?{NnOlNQmi`ko&_zJSD!;eoVH$4C#*#Y~;2Jvy%)cT53wO*}dsD?GXzK`CMdbE!yo za0aMN+bITjGw6I)PzTYYS9G%$IJ}=|f!w>Th@SzZ8nO@wMHBMse|~vL?4@-&Mu04b z-l}!n(FANe+ND|^#~q>f={SO?uZ}rJF&uY{fhvWpBj|LjINk`Vz#yWHpks8POwdV| zP$p<-5XuDI=Ky7brV5};P~d}@#~MMEIRn!E8KnJdo&qoWZm}@D;JnGg;L&;Th2bq0 z(Ebt7VtCNHbjZ4H&^8W*zyCpX19)Q_XumU30Wkrzj$NVKF`@Hv=b`39jHULV1492p z;?J=FbZnOgXq6!Y18o1%aR<%fengP_Fi0BV~X zyy*E2P9wKKO>+ZKQg`TfOn5yXe*YKDeh-)f^dJuC4lMZ0pU(_Q!z`d#%I;v$oEE}H zNcsWUcL`#ZBE+hPV5>m3?3$1^0gO%B)EHT~KzL@XIqm(mSN&JfSu&ZAdk zLbr2@M=uYETj9~m)A3@f5-S5^aSCH`49NTv7x4PQ;0jOya?ClB!Nc-Y3BN~YZ~>@P z^XLSZb=|=!$DP5cyVE(PGdKaB=|I_$q0>3Wafb_Jg_Z@RpAZXfC0Xb5GrV2^A8+yK zFO#6<32J=>Ed}{o zT0xgL@NY|uaBX?Q-vZh~)Log-(fn%p zg1<={G_=|I)lu^=D0E#IUwHKLZ0jse>2!|q>2+Dl;L$761r0h_@zwF7Op%oVa;zz0 z7Yii)Sr#VnH-Tc&5xf$-vp5F3I>#NLBO^U}MY$nO%0@L%ImMU9&(K|+V)>814RorC z=06W`v#j&e3m4E5xXvRj2TF2@j^qmpphyNefU!6Q5?!Dx6+m}OAl4J?h=W90Go+*O z0o?j*%jIWyY4snpzufT2OCfOBL-I3t8^MdRpWs~l2o#F{96P^Sz9^P;+yR;w^5_+{ zgqU;+Y?4hbC}v}ri&I|C0nML)CSWuiJ1@Jo9w>3`4oqmhRAT4R?O6c28lzWal1Hy2 zi$|}|LpHykYwxbTBq;LPM`d7#)8 zbYq|k0|Ut6z2J+s8eKYXID&>*dRZDi^XD^ldkJ{8{8FsmoHbUP-1!kXRi(#r?`{{Ke_El~R!w*M8R(6jRlNNu&@r59U3 zEAhKSR0`B*(%^CM8Ixmo zh%tw&<%u#g$L3c|-n}fHzKj<=ds&+OdwDwjdqcWK5M2(JZVwI@%Ttd0?iWE9KKfW* zD1GDE>tf9DS`pGt>-GHa(fmTByF$db^AyMcXUm#yj#74)&Wo)lOCPv&2dB7N9x5w$ z={x|ctbBWYnmJyJ!OK6#<^znL%?CwXEf1AMJN7#KckDIX=VW(mhai?(=7pZhjjo;33Ic;zs>*_kUKpr50<`(j*CBB z3LO`5>2{8Bv35=zyWfTi=}fy znJCoJ9=$B>;DE69<0!f6+Ia!o44nYd7wpp=Sm4=t(#7&naV99abzXD?ZAg*n1YL&p z-;?o#$HB);{=G5{p1m$o9G+l~iHyYOa)F^6Wh0*m)6p4&nu$?#Kd1^cV+)rJ-wYz(0>(mQGjA zQ=l04VY~I<5@NohS$ z;sQEns=}r7Wb+Hq2Ek5{xt_f;-JZQHO|Rvk_9I1`N3X{lPs>9kpaZ$OJvgkrIZ7T* zaJ4*GYz~SSm(G)}nxGqjIz2%*(7H6Uc=z%&KogJy11Ov^(~o1!VW>SWod+OA=PS_Q z!b?_A*$s++aPg|q?HJ?J?OEW_c?jf4-(HbMkIvJs-A)|6UX0e>36OKE!1oa~xLUe2 za+H*IJEwp)wt>#G0&S`8j;;W2rxuyy*();HrQ3_c)$(AOzhie1OY<|v*Py_I)Hk5> z1wi|*p$e_NI7*dWEf1E6b$hWmcAjc}_|LKV6l3c*M}F5+ouKpooH$w!l%DK%j_LJa z?DUTD0GBhM!USR-#2u{_ppjm&94uF{0nMtfXbZaHwvIm zmuKf$$IdG*orn2bl0c`-2Bz>gae`V9-Jvm-xA@zYK?PEGY>H=hX@#rhWBxWDkU-}{ zP)7FX^=ad9>Ac~h`Jnj)qYon}avFSkL)v7(ODm7(vSJxps%f_;g-!w7gZs`dY!U z^AgB5&t9GmYe%?xPZq}JLyVS}%Rw7?6{6$72T*|PIZ*vC3u@olfJe-DFUo@2HD;-x z(HC$KwcQ2HsP>8qgH_o=RP6z)5`e0Dx$7TjwH3Hs39ZOL<6GeKoI!yB4lc{f{OzFQ zoFIKic>MuOpC%rir$J+k;4!vD_;6~fEVx(L2exlP3O_@4u}$l@QipEugw~Uw;fCOX z&JP~l-U6U>4O$57)9qN%E$~0k!nU%qGKzodLEDVH%qae;hgvR{1lv|sRYjHfbUNE~ zJ6nLxe(-3nc3>z`hbB5u`swzzd6A*bzyRJf+j;=Ji@4f>q0`x-^yZ6x(8_~OX9pzp z&Bqumixc?UL8tk?UI{wi7IZ$zF3`9-WLNQIanM%NBcP#@Y{-UKw4Jcv-O-?ZwjQ8x zvj6}8zr1Isi;B*R!ZR!kFW#JjbPh$%;OiW|`1%2~ItCoO;4*>1r&skLKNo{fCqfJo zKfSCg`O)S(JUUN+&Wj-7Jd`{caI{R80VNjBWYW$_2R22h|>Zd&<6!E7f1#)*pKDdl#`;Y3==@-qJRoEP!HXs+jMCnXvZ-0 zloO9`*|UlKR6Q>x6y!df=cUL)Y=5CI%F6Ik1T>b4I4^};8XUw1(x4z-mdMZW5_D(H z1n_w&|3wg|u%Mln0y&QcIznjRLGgJYZzfRfJdjS1t2@Ct0dgKlKms++19=n=Dyv*n zbUeCE`4T`w{E)*!$T$z=d^|!sf%8CeV79`J_P{(3BvKf(@%tfY1PApX4jku!2!d?y zeE32Uq^}#|3Eby_yp{l`4*^L~`e*}bg=s;Y2Xb8qG}#L=3DX&5o(EDjk*M=Pydmx@ zkN~;wSsd&n zZLr9*cytCjK60f#^H=Q~>P3o`k1 zJ9_wZdj|M)Itlo6dP%_AaS;8?oq-?`(0XUI^HAXOGBEeaAX`5HF0TNSSHLc>0+Uxk zk%x>=c000w4qiP_;s82g*>((e#m((;Nx1%S}&D)9d`r|FGB~Wk2iv9ACL{ln_+f={S5Li^qdyM z1Fe_%ryPKaAd)m_z9XsIIl=N+nQG@JoTK%%e5?!&)lm$k{GG)KuV*0igQg!)w1KzU zLWUo~e4YgG`8)-Oq5f~EjADQe z{6o&IDG>)9NW2`;@XlfVPBN5BKK zpds>Qyr4-bu#;b}1NR5{w>d^3JE+@{rTGCPDAFMP2N$IAlnHPD|3_8}N^dW#-~RuP zR6e|%{SK8M{S}3ew!T24+tI`)c@22hw!2Wlqw}n1=M~T7A1+9(S;XRi=|bQ#`+yLr zOuQ7y&(Q4(o-gJBt&jZwzmyv^8dJr?%HRPq;e})K-~XlToj){h_$0poU4hKc-~JG^ zEVAdWr*Hi0(IH~)|=ThZI3@c;k+<{$k0?V$dZPv;8{%^Mz| zqZs-?S6VtE+x8ta6wbfRgQ@voL-S92{`O}KAnSP!K49bDeu?uC=c&eD|JfNB_}f6o z)butnX#D?g3lRV8kkvTpoa2*A5wO2Hn5L_#Arb4)}U9P$u)Ryk8#i z611U!U!I}21MK9Vvi$8EL1*Ato-eBbUCh~hsG<3nJ%76#3j@Q!2W%eAhnZBt0dc{l zb1Ep4I(4?Rg64fZEbo^^fKJBtZ2rMk;>W*@88n~;>Ld4hGdBOIFQ4nvdHVG!Sa|m~ zfo_><{=vfE2Ab&V{Pc1$%J`W}C)k~xTc$2x0B_p_4W2=AJ!I_HF%EQw0=&P}I{_Td zzxc~TJvx8+XrA(D{>50AiSR;sEdMrdXvmfa9(=%a@DUsT_5++3I8T7Xu*|l10w_Qs zL0qQq(R`TsCFn#cNPg^{0Cw*$mU2dL>(gW0k9V1pw#?m>ORgO7v`KHzD5#K0iKaPT1;=OGu)Q=F%I zn-~~C5&xf`fxjKJt=O|Sg5_ljcr7{u!o&RS8KCiQxTpEsK}&;N__swfJ2oF~aBTi< z&)@F)|NsAk4}=ar;!%ZJa>0f32Iq<12_Q=vL7Ti7_}k?`JMo$iv%Cb|#0V~5j)PBL z2PGrl&V!ENLw$TLkMK9o0dHk;VDRmY{13WV`@c`;4PVPUMcUv6{)qC{r}LzT=0T6< zpUm|!9=!qoJuR>BgU=)L=)AzcO`!8)^TPuTKO0J}d-O&y@^3rUa;d`F$MSS(zGvq_ zm(Ho6io&V0XDVn)(%13~f3wP;|NlLk4>5W+|6(g`dMOHa2B@BeXz!f}PTs#{%hP-; zPxCkL1;yL807gjiE|)y`kj(>>$sdB#_C+7d(A<|F#Nd$L8Y=j?Mq=%hw-#DCBtX84u__Oc_v_=fe3D z?2z7xh=fqy=>bY=pwsDHH6MVc>|VZ@{OJGxm-9ed!yq}5gH&ET;k-PM(r~zRKG3}3k^BK#tAO?mc`$x+1XU}YpFE&7O8^rC18D6!OE|1%$ph6s zjK_RB5BpdiD`$IcFu@aaX#I9jmB55jP=oGG@YMVPIwSPrj~8K}B{i1!$}jpRKLNLN z9FK#GJy5>#>lI1&w7gZW_7XHe;o8{?Ds3G*r+|aj)ACeV4(MV54^U~F%>FZu|)`8nk}>;3F-o>I^RP?rBv58^gj50Ld!T-6n+B;6`I|wd zy$k>Lz(0lHQ-nS&k=cQ{s65A zed!5`|NH;{zq|-KkH-<5E0%#SlIVQ-Lhm*tSM-5)H+H)wyzB*+?x1?+)yt2deFU#w zg7)ZkzIq8dAJwrFTpEL{0eSYNIH+ZcC~Lvt6^=3jqJi8#1LYx5r_!bKm}}=5_-G@d zefFILoQD)RL3zk10F;N^zzsCejur4BeY~Izex0wtEi;bJPcE8|e3D;*YLEZ?{O#Z= z{%*GfP^%2IkrQ-ET(8Y!(0W~Py9~4s)$`y}CeP0Qe!VLCo|b>g%zZn5IChJBHXmo{ zZDLRWRd@0N3}u{+zy4omVBmMZ>Zy6dr}Lxd!5>U71n>R-?`!#|{EQFdd&lE#plkxl zKOV{7JbGC+dszM`3-##r_zzAa9-2Qr4!&dpZIOVa>+X>DKcEbw@c%z3!=PH?*a1ocLQ$ODY}8)(lC z+?o4cE(FyVj@Drr{7p^ZH2?9%xf_u5mdFN`e+{*u zQ)pco`CAq-Fff4IL7Ip7wLV{WI7bsbQHa&s!r%(GIcU6bKH?R8 zHaWOnLeAfy<~(Zt2Hj5xNmoeqlt`I|xK z=z)?DsERMW{_+thi^BUmkosZ|I6uF9@$U*G;z2t~K;aANOySDUpb0?mFyeKW&Z91! zr%R0*sv;Rmb-LXX__z5-S@=bjxOMx1CX(zy+f-J9s&?@7Bc$gA8Q<&WJ;@B3A3Mwj z$^fD~OrQiI=Ecu|Fr{=?cesgVmZ&==S?7ZW`@AkBK zk&EVIkIs*sw_aR(`~QDKT?9i(f494d;akx16OV4cf=)M+Qn!ZsD25UT@Vd3*Zs28< zK9GedX`OD7phBb5uL8biO~R-1BzSb>MfV@@;AjCfAAnXdb%z)D^y6fiIK z|FFQ$X9Ufq90%pI9mgO6^qK*jab%c5;q=Y}98Qj%Zy-VO+J)ckF@GEA?&I#f1Q*T6 zov#>g6(xFfetdEG4J1hTTR_WEKsTsA{09;N4J7#$@VA2QYkLV=5d%qY9=)QC44`;9 z0=AYn1RO7Q5c{Cf(F(eaj%{KK?ZoFsI4Q#-OX^!_s$- z%@6(>eglm<+JMKiA%^>OZve%QqvaR=wn@wk46eN~D*rn_yBc0{H9X+bdCQ}hWwz!g z&t8@`55`-d^-;dPKGQ@zIuF6p2Q!lka}bM1^C1yW%ZsHS4F4Nm0_9W201jpW#tI(h z3h+9W;|`$xWDLh0K7eX&(6ws!JbFcDyL8?K-7u>8wYf&chSj%MM~uJa3aAq6^<#8p zbY*a53}tb(d{}G*a@If4WV)l~XOLrj8E=9n!2NrD`b5C}P8UrF4j0V;9?;Sekn!(5 zdW%GMgO)9Uml1g~e)C{F=h5r-2DAWQqxml*WKamSu?Tz~sRwA&U^kDPN3V!P=MT_* zst222Fj{l*_kq?Lc{INgX+2Q-%D3~2XXjT?Uu8eY=+FH5EOOm0aspnxJa*u##avVr z_%&Tr96$%AzVP_T!qDxa65tJ%eFQ$2(*d**SHZESD zX>jTGY2z3B`jCi=wbz$Yj^+cPW8uo*xpY2ru}o1hDdTYL zJn|BB?u`eQd!$?}&-1qwgH}=e04=<6(LCYPYt!iiva0ih=fUSpAbY^Wzy}{N`Sj|r z`Sz-?y}S&nNjq5d`Wi}`-T{;N^Vq`1~&iP#p0K z<}!4;3i!6ZEwS=teDB!pA}iqC>to8`+xY+#Nhz`nKApc1x^uom;ud0pW2ZYPiu9o| zWL=}8!Qbln|NsA&;oxS61A~j@`I3j7KfvL|(%=F*Y{90%vDc9i6lOlXJPm%mDxk%z z3|_rDc7DAkpso|cOKZ?&YK8|uxe<~tUmp7dIvhru9bAbV|IN+d(aY=lkDKAY=qYD@ zhL`Q2vz9>l4{dxo0#rVEcAoFN?gAQ=Im_P)Iw#$wH=WVZ@(zFVKTu=jH4~^e{~Nq| zuGd9^5wwKPr&p)JtCwXhDA$5>4y=9Q()swcD!)8~XSaJnZ}5N5&TF8;!KatSz@wLE zf=}n6|5sZN)UmsCezyEwe#^DDM1|4C@^MMMOXmm88=$3`ysn)eK-ZW5e4%*j|9_A% zj+%G;ds&urhZqQeGL``-6?KC0#4Vp*kx9M5jG&xl;Mc1IT1>k<`>5(T6$_W{OcRgJ%O0KQx&srsofBNF zvrS6mS}&DIHUD4)H({DDFn|t`N7}z)d5FJNf)RAaRLN71UYiDw?%)ES?yv&G10DyT zGx_wYSV8Ki&Vw%9Qq3m?TrH*eT@QA9aX4Cfag;DOpHS%bV(C2EeAeOnMMq^Xmga|y z{H{kGn}7T-5$inIe3HY}@-V;4K@gJ#bX1DVL2wZbE~c-Pu5@hv%f#Ob8t{bF*r2<7 zpvO4-bhm+O1P{jRuVWD{BFAnI7H#m-E64A*9Qi#@xmcbo4|MGI;L!HsaO^yVBx>#0 z?ZKn%#e*uU3bFryh==7b{+4&3AnfMQ=0Z_aHj}3TTvmYg#|9UG+6162kKlE2ETAP* zO(KQ|AmIY`scbiwW9LD~=93&QmIodAT@FHcEUhO&9I%C!mrAcRpI|}>eHZA>B91$z zK%%(*2RMrV{^Di;t(f^QTIaye06XiT+eJkO++YBooew?mm;oC18Xnz^pk_FDb_#T1 zicjY`(E1ThkM2&$@)5%W9<6UZI#(Y6ZH(o2`2gAl>e0CwqG>ls4Xi(mJf$=NwBFI9 z@eOEynFr|JKJW^RE4x7LI8ZBxcOMG_?0SitKHc3QbN){T+0lA{f9e5`#v>q|pe1~V z!N1BCIydP*?drz>pbVtZ5s+Qy7hmFw`b=ca6Sc_=+XHJa#VvX z^f(g-2L5f1jG$2pP=5t<>;q^&4d_l+H~xJr%r2G(O78h~tEl+4J}KS13$$?svZ%`L z6DSzLOG%PFIxRpU>->?0!J{{W5j1JF{v$}*MTG-)D?&4P^6G_0=cgCNAa$Jw`L}@% zwiceizm0_%WPgX_e~8oGfi9!+;oqn_Ns^zTGzzpEP0t6iiV9K;K<3T)w=p%?Ff)`q zfjW=BRSHyXfTkWidU-(&+!r0YzyC+o>C^ep)$qv+hmR}_uUCUZdP7vW zEf4X#UjRosNWW_b3uvs=@-8n z93IU_G9c*=ym2|>FetxpcqCtP>|o)98}S3Q!~8U)e0SmBF2a%K+9?9M5t`}SA;ywP zuTS&KGjww}c5?0nUB3105EFk(>Hq)#Utb38XXw0ac)+pw@ejw&gUtsx{JKRr{X0cC zTr6)Cz4h(oVenu)@e*`;2dw<^=sbZOJ&^rx9^JBcMEMy!J8yWj-Y((s=>)Bt0B>qz z*a^xyhL>K1yalgb0r^a)!GfVg{e{zSh(~38x*a%tIu9Ej02PF?lSM%*0-*+^O>i|l z@cJoIo&=3^axgM5be;eo5W%aUpuk|8UXtij9%`FflIX+Vev5&D!L}qX(WBhhwkR*r zgTEbgB))BNQKd6vUzlxneyV#Z+m53ARQJQSd5J}irItIA5{n!`<7~G1xrtt-nmf|- z5h390+k0PPN;n2&&(W< zX_^22|8M+R0A|NRmF4Cn20)d;%ag{R`9-O|B@tkA%hVfxmLw+m@waG!wddz&`|-EP zLA56pCHg_NgHlDRFMkU&SXpuri2eO9#J8EC^a6`y2C%tE>Ek#fD8nCT0^POe2-*3H zoIodd^s*LyH+Fd(cLTW})c5cJ zH9C;|2h;!J@mD0fSQ{*~OL)K)-|HFR_7>b;h+s1;J;L=b2I&Xqxc~n_Q`9ah7BBii zV%;t(VE1!2SVZ%;fa(vA-W(MjxW+6bMf@$G+vyrCZ24P3J1O9nx*DGJ?0f+Un$BA< z%x5!zucfgB9bW08q66|g+&rnT|Nnzpem_Bj`_?fk1^lg`UIy6R9? z2K<6-kV7frV`1whA#Q6vz=&d{i%P+ZL$eqd96JxT94O%cbp=3Y(!lLp_60TYtV+t^ za$RV0)+N!dEhkI(x?NN(nh!8`x~PE1;Xp%dJ}Lz-qLGyIw}7ryX|RapZw1|q0}qau z`@voS&5IcRe+g=(!1D)44bPj-ci^nrK?7Hvcw9CX|LxTB-PP7Zva>`C)}U0_J=I zH-S=A6n2AJ89tqly4m?pbTah@|M%#;;KTUnH9M&N+5CdB!Aha?X6Ir4)(Y@||0~AU z1EnuOhf{$DW?Mn$&bf5^^EfvD{LkMK3##gG^*S?x8cWfR%|97SbdR~PC|ETgX4(bn zZg<}F>19=Y%gvy9%ZKsdi`X|T42G9ny4^w3#vX?lZ-5lX_C_!|f|kOygVwV(|E@2S za@=tNbV6>g=$AL(F0ABR&?v=zLw<(lcZ}d8H(pxa^Wb;??AiI@#epX*498qd85leo zkAMOJR3v~l*nrvx$6Qntba#V_b8Q=Xk?L9Si@8sb`io>tIdh)%sC8r|-YfyIL*r64a`^*S+vLZY+?Af-*FB#zDHl3$mg3d~v01lTnc2IM0 zGbnyQ)^uI~57l%YemN7Ah7hd>*#3J9P-z^1R2sWIhL*;lGFAhWQv#qxvd?Ew=~5~I zDPY-Q1#I&X3-Cf)257bqcrp0{C|9|t1c1tJ)&>jPk`&ODexNor#JtX1FWyfFXUffK z{O=FIG=Acba#2zE%r6Mqvg7vwWLwE359=6}fYR5%WcU0m5{{l*?H0fcDXHo%Y4w$CXAhj96{(n=Ry8cjt5^!fJV|B555pM z_>u#36~|W4{ewRh_*+4z_JPI%_*+kb>V1$y92^ner10t>W1`p=Ez6LKp(c6>!+m52t_njvWz7RmFKM%f?=sW=( zTLF!*K-Rl^cAoL*=6s>w2HHjS5Y!`djCncpAq&F<=y(ZyLA# z$qX82==R`v@v-&)e@Dw06_)ZxkiLDyLvY_7)DDhzjCtt^Hg6}Wx^?MhlLsFP9DE=FmSyAL7Q_x# z%6I{MUflG9E}bV}^$v4uzHRZq}qfR{ZEK4tM>JnPZ?i<7_21F`_vL%@-LTY#WX zulIkCi?2NnK4$Se_>jf7H$dRvBY}etB|LjsB)oe~I2bR2)CsxpZ;N0&_=v;t;9~)Z zkTBy#{%ryWA4#|{-U7)oIUan>0cA70Fy6AfSjOFX%BS<9XXhc0&J+CG{64twZ;ShQ z@Sz0A5EsUqAnqrKE-?GE3*$}8i^V#Q{M&>aK{x6hd?a!3fdJzn5QpjD0}cp_nemWE zuiFR9i=O;WhdeBg@wdJOo$qgXjK56`RIqk_^yxg{3$pa{Yh_Tm!ruZq*w?o=SilFg z?{gYh^(Fo`El?fMdD*w~GNk?ljX${ZZ}Vn!;op`ABGQ-~L4gnQ;wg{>lS}9OgUFa6L4hw=?cDMu=tbX z!Dk#$_GeedPp+V)ZnB`$5iM_(#ep0GcDhIBWf%T!X-ps|yq*cS&!;!>gOBAS{w872 zQohcIuTMh!&EHxD3W?qd0Z+@r{Oz`&HFV8~1w1-`cv{}(Z+Z%9oORyv?7ZyRdB(Hz zy+`LePtC)gnpZqKk2>;CJ?7K-+*9+sPv>Jt{;3CjG@p4iKmXuy@HLC8;yDk-@4lKx zOWb{1ZiTE6CQj$&e9@U=WqYyfJkX!yeCCHc1rxbkn)0xfX`6^)J^LH}Jk zGXDEoo+^C;E<{~hzLl7I^|Dy`T0ZA*_5)3$S{^D^hP7|`w=uc!ZvzcJFoK#wE*)O~ zI~@OeSiUTM3Oa|k^PtDUS1d2Cfd)C6e{=G;{RKBF{(5$Pc=;N1znV|4_eUSg)1I9d zJtY5oG(Z370XiJ_Aw2wC`L_x3Z<7QK8G1G!WOVF^{O{5c_}|0wXX%rdYrvC6;Ck1m z^OkRKw7>)x{%ssC{M&>;jsbbdr6b@!$WcC)w@M$soC~Voz~zZ&^I?IP6F~fX>f5Pi zlr8MSc+t`FM46*UuNR|-7?T2t|u2GR-22~3J{B5B97>?Zm z9H7RE&Woxnb_V`!1uPz&$N9H8uzK{y^BjD}!FY^+`!|=~u>Y;!O2QpGU%MKf1RZe7 z0O`lO^alQSwY*qw>)gvDc=4qpXbSfMi&w7*Gq_sG0#_?f1sGrOZ_8rh-xkDt@F@r5 z3&smBmN$y`f{xm7wY*q&*rS`Z_dYKJ|27XE{%rxgF8tdZI9>R+dGLcHR034C2k$$D5EUJd<|77>2I|Xz22hiV zSMxqE1N4|6(7ooM>J_FUukQbUNH|-b<8RCP|Np;NuM0cR%S?DX5!C*N>MXzS2O*4r|X|AC(B7&PUjGT6dPH2!L*%mhkM1QBeRL zwgsB9{_oqFqGItPZYAh+ZP1o!4bU8nW9(s{Ue(CUoS^BCl4m}hFF|)9BTIwE6D%)t zBE}Oun%`)UzMuNrBXFxo`Z1_gv{MzdhQvk1;Psib36RySkP{6wK+TlalOP;SY|@Ix37Mg5b6WWP3k&4HtvsaTb+e#sB|(!52KYzU6P71eyy09r6h( z?^|z|C_&1f&buDn(Hx%Lz6>uUJV5Q1moH}AfX@4X(yaq1*jZn^S;h?BhwTC3%BFxO zZb4U{ww^3uebJ}OzyJ>X7b+_l7(BaOR1`oXuIwNKB(QABHoF0u%Lny~Vf(T{M;Ur_ zoARoFMqv^AvQ1UM`?9SkfX}RkrAK#_fKPW3hhwL!&i~7x zDH~SM71q~55q1q?a_KSf&grAqSr|NV?#J#|2HW~#{&g0Hm!QRlpz{DhYq~soMS~xL zqp0E`D2l{XK=-|XO6zW4gBJxzhQhaFuY;s(Nc=%(9jUM%J0_TF`>}ss1I?0wC(%xN zbRPUKdO!&@ANT=tr|<_K{*B78jn4cn$>7zrE-E^piC!geI|8!D*r)U1f6*W%&|*o* ze(X9W#D;1z_G8;4X(zBB`;H>iR+uv}_hX;D3QE?*@5gRb1f_ zi=cCfK`R&?cYsE~JbFcq?}O7v#C=fu_y*Dn(}LKK?T%y;W+;=nANy4>QTwqc-vhgE z$32ky!W3cqvBCR=OF7}=<;NXCqbG>+3@i^lm=xr1Q2Ew+sYJn}+fe|NwZ(n99VPx> z05L)5XKBFtA)tcjWqk$8-bt8#m|kJSO9;xDfqsO#KFE`VBy9GdN)WdfDyA!hkd%1Sy#n zJbGC-ef4=z?c&01yB6 z1D416+d<2XG=IQOkU99A#e?xzCmZOjHqhdWgAZ7IdPA55K=Yb-yPK}9CreB_nH`&7 zf>x@5Rs{-pT3#wW1=_X=u^VhL|8~f{SX?|jy?AunT3+X6=wt_Nc?7Nd2F+(OygmkN zkAu<+(!_o1CD1h7Ay9IW_334u2O4zg<(Cs&%VR)cBjHNeY5PBNmTd83B-*3fE3+(DvKgrJ&JpXAa2NP4f}xnrK-3J9gf1)Vu)E z$Rpr+@BxeAr5F4cL2GZ_I9{)q0G=mB=waxDo`cr;>f)>398nI-*Tr8fUzBq+g0@2P zml+%fEqDL#(ap+yjhDfrTlURW5Ea1T(aqq|8O-6)$^0@7(imz1t>t3qeC5&Y#{shc zMdt-j^?aaYk4L8)M|T)Yr`}6NkWxhA2DL}SQEH$HaQE%1M{i+uvs)jcg1I zo}KqVM`0N>|NhV4BFN6b;M=X{+xosDlS?Ia|1ZmNS4_%%C1UXooZZwg47a#)IG%GiZ+@Gyk>mGKs#P~Kf_6kpfCn0$OMrS!OX#8~r?OXp7)&5w)+El<1fyZv%(s1;z~Z;5AQU~skk$3Ojm zBWNenltUaB_*=ag85kU!|NrN2aR9B}?fmN6`OERRD`?UF|ATKi9S^?Zbg{h3-!hLG zbkgA`pU#&qpaI7h*RHWKfKG-4weCRumX@2~%@7}Ufg0pKz3vt+ogWXrVDq^A$fehp zvH1bJ$M;)4y)wr=xJ8cpS{~+axe6Yn5jpPJ>&>z2Kd42jdBUaBM@0u>{=Ty;5c5Hc zrgc1yyIX)q%{tGzbY4IBl=I+oPFKrQXooXM9JE^%L~B6B!Hs{9;|^d8EZ_6DxG*y?fcLGv_;{6#!K3v+=@Lld0i_c# ziwATw4w%K)>7rr)X7Pijv_Q?>?hqB7=3|VY9@GN~#tYpcDh8lTaDmxH#l-R$f7717 zpv9$s|NnOdrA25q0cRObNAQ@@ajI2Lg@61AG8hIMFrHk_fZjqmt+6@6!3fwezP-=SRra z^@A_i91p%^+Y53@^8O49R`gHz! zp_#|Z;L&*l)QK_UZxQ+V|G$s5>6CN44E!xWet?!R`vrKkp7h{%;jKT%%kV-g4>VHt z@x`o@EDSHN!|o9UH4P@XurPEUe)-_X|NlOkS3Nj&j=y{e8bRYUe|ZzMn5bLS?i??J zXXmw-pox8tZc+VnybPd4MPendUiN}bVgQY2KzoB4kj1ASy_Fdr-R9t_?rorwu=9&& zcZdpyN9!dIeizZ#XF(%0PHg6DxPQs@=mcav@hFBOF zJUjn*g2qTdtA6=ibW6^Fg58yke_JTKPj4(2xD=CMyuiOLlmk?hfEb)Ey&(esU0W|z zc!HLR@q+p{F1+W42wZ#xItr7g!J}8k!-w%U|2AgO%mQdY4KmZ?&BS=Z z@>tR75&@T9Cq`Gx3w0+wx@CW!23hUQ%)c#|1r+0t1VGjXvqG&6W@9`AI*XI>RqFvz z0yza%j&CxFzoiCre08?*KI~Tp9m3S{`xXcYom6P$$61-wN8U>T3Cizex<#rs(|T+WFM+xEm-k|ASf# zjtAdzx>~;CZ+QT2Q~dJj{0OSmbzUquhbRj`d!=1KN$e-69ianiGk^*waFy2lfZg-* zW5?!0j6R(=LB$fN=;7u$4lb6IK_mX1JSgQ5#Q09o31G0M0;nE#1?`%6?|ASzq``2t zJo4pN@Xf9+3=EEq$Ena@aIyT)-?9+y%@_O5f-_L*LXYNSEFP96Dhm9qvp|yq+nm|? zw*_+`MJFdLI=N7z^Y=+m?Bk2hk|IcUXMtvSmIhE(=Y-Y+{M)eScTn6hl<2`C$^~>2 z?8g_p5C@k)a{N!1PDqY_*bJ)Sc|bXy6_n#wBCo>-kFdk~ci@)7#}`M>Afgu31as{K z)haHXKODg^>Ui)K8z_3gWwdMORnNo|hkjBH6d|j9)Lydtb&U;CS8* zTF%jV)3f;vqX#H3vD7{@4zn=$ajLwB2DIVd|Nmc30)@7`1A|8=&+(VP!KVp;#}T0Z zl|^!A1bB1PbC=GCjtAefIW|9M_v>Z(u>)QqrGP7>l2G)@2;>}3%@Z#qA=dwgS`WVA zS{Q7-3+OtwJ0NvFoGQnm@{|7j|Nrtc*hQdoia6Cl@=&=lklb}}0}oP+RwEUofrsJ6 zs3)`-4NC_Vqd!2!XetALi!-PevQ|BC98{-)?iK)zx56s5RmXW5UWBGY%F&~TSQuWi zKq{+=#~}r0Cddv;!V`4e3U0n}b&0GR?h;1#3@c4su`vQ|(+ z1MN8IbWw>o)}jKM=3xY>1uatot3BSL@&&|z+731h#D-p;bsTa-GDt-l=w2<*UWgam zFIX75r>L9(uMF+2Vr>1-@A0F%1$?6%Xk_CMKLZ13B&Z8ChSCi=3DxpCe|t3-14HK? zu)f~#{~o<87hJlzp?87sZ=0e5GTgQGWF=?AFGl_rUQlQ@?|}qJiIPXJ=;4#x430a% zXBG7FK0OHJyjlY!;7B&?v|hu#-GGIXt?vIXpT86hHwE z+AqVutp)0bxBM-!0t^g}y`leodVK{vJ70KqUILAf_%NPwY_w2tb93fz!Na--d=3DA(`jx71`o^g{Oz+rjNW(_(B_2pbZ$_a;J&Bk`G!4Uix~J@ z>OlIsA$MQ7cK-L!JmF*cgTE(&gMq=f^M~Q37i{}M13@h+Aa8p0@>qC4cPxQJ=M6st z1I*RnX2)$%aCO$GWPseH1Txzia{2^+(;ARdKyIo5F?!v3Ks9!Nhvh;3c4v?XXzQbg z<_Uz;92kbK*#sN;qd|_!1x)Qa<+0I#k1yV$IfG*_;msq08Klcx4{8&n7>~ZJot9Q@Y0LZ zdq4pKNje_ACK90WrwUMc28pBt{4HyELFT%%@NWxeJ@|kljqw71ivf6GCPk&hqq{^U zz}4`-$8i@G@L7}4b>ps}D_p0uGcfpc`*L`8z5$&!4eHWabROzRV>I`9*08MFX{s8IW0_)-K2;=BH#J|mr=in=WjxbLC zZDG6zA4s_HZ`%USEC(Tt)-XP3D<_Pf@q%m1H~toDR#2G%$@q?)2SE4TTOQ)?5d~lL z4Z5k+;l;t-ppcjYPN|?>*A8C2EX;`XahtzoE)N5P3&?ViwV;&<2OkMIf*Q$S`yecS zN5%^!GN8_>g)8WCk(-{~fdVf|!Dd54xf@!zv|cI^0+rj^TppdLnjbOqw_alf4VJy< zZ`K9Hn&u71MjMrs#MBJ_79Umyh84{GtvR3*6JIcS^zt-=5!lK2(8Wms{M#?Q z_zu3(uSO+-fxiWOv{!eGN`;5!?{9~h`CFYh85j<}X6n4*(JRvKVR@auc^5bb`>14q zM%xM??MTqNUC=UJkLH7@{%}O{ha<=zj*JIAEKil6a{*mXe8Q#kBxoG3;NUxngD*i# zc}{}%{C#ok`~*7MrpU3^^}kQAJ2;{F^v1A*hG9X&%b>IGPJ)(tJp}2wWPEzK{j^&;@|eivGbR& z<>AuBouH-cp!-mE>{`EJqqd7m0so0kc32??twcfRJb){dmMBKhzFz*0Wh@K~4ST@# zHv@kQ=x$kX=iC}JVcuM)z`);9$il$jxML%z?(P+xc?dkS_T&htj{L*Q&(I91b{YBG zKs$wC=7Y_6%K$bSRQWRSx7-IA(Cwz+(Jcl_-ym0j3UF|aKkf#t6c2-j_dPT(gKAZf zjO7LXmIa_>+1&%KK09xN_C0Cd1l2X5qW?wb4p9Dq6ugF)JUZDt7;k{g=x%|u1|q-{ zBe%MzK-v(O_&d1R85lt4^WOv;I|Y22y5$Z2rsZr5486|(VFA`T2W&uh4_Ko|r^zAy zRtK;aKZzIFAX|^Sf%a%JcpP^FSL6Kh44^a_@xtvU3j;X&+knEbo3(5osCDS0;^DXh zv|R%{{NSRZ;MsZdMRYP~{sq*^>-JHJc)@d@h2c1)6$Vl6M~SL}< zXgLYmXwVC)g1fmrnh$d{zhitcb2|%zkLBaiCm>5fMu5hETENzToY!~+)EGvYYXI-7 z58!A$P-5Bqg0UO4L?6_??R8-iu;eP0@#yyA@W9meG9wyvljI=*(01MHpaR?j>m*N6ia{mpl(XV1Ds>D=2;-?bDaZ zphI=R>Y9I;^0%!9^*VaJIgUF+w!L)vs3fdl=5Lt|J|q#;tY!eUe=IzDd2on9O-H~swo9~Pc34gdZB585x!%ef1b8CaP> z3cEeQGk@K@Pj>P$cyuy)cAoL+^yGNy`s4q9c(Kxc;`jgmFW3A*GHm{z|NnP_Q%YwK zxB`A@3%Y;|w0i_J6ucKSXwq%Eoq->8!{GmGpet;2Ji2A?F@TrVxFeIQ=X@Xc`^YZ_7(25U;X{`rJ4}-d$1}_q~;96&K8KhiP6XJ>&mRndDUfO`h zjC*-a_k*JKE~s?q74_H)iq=gGplF38x0glWq|EziA4u69h%!a6vTkH$b`WLj!OCt! zl>OQRGA#vJ86QO10kATtrI*3VY>|~sgD9&7D}!3P2CPgBSy?PZnH5+W)Y4Y4viJY_ z7+~$Fm%0#T!pO?vz{*Y_DFZbo+7>~SvVfIBEj9)#or|Ir)c$U6fGGaF7Zfy5&#-|N z7a%Eq8Tkct014E2&vt{Wtafk+dj98Qc&P`<+`YVOkxe*0Dxx&yIIq=@q$_apc0qC zqtk%DMH1OTJYX+D%b>-3z(IKh9OD1}@-e)e|Ly<(&STJerSsFpSG^@-9G2gUzchl* z*OD*iu>8Q^2D*CjIHVU3u~U?38@L#Fy%j_Wd2|ZA^#1Vwe|L)ts21ynoKV$#fDsf} z9iXd>PVl#b+_$TN3APYYVKY2eWtrr`ma{O$u;$}bN(cepd?hDY-u4G+tUrJp^H zw}H;J0@Yrio(rhDefj47|Noum96LWaUVP!yTf)X+`JwnDJS0Byx8*W|Lm%WINJv1k zeCGv^&hsso_*+2-kHe}Pa7`op0W^>Xo=$OK===oAV4(3DkAshxUzDx~uZiGqSpb?V z=!8@^(BYHLE#P*`%X{xYM<^c<01Y#?-hL07s=5T)t$6Se3uMH=2sC2Qa_&7`S?Q~N zppl=K2j2hxf83poL4bh)Tu~nQ`2Ro1dQh_rUamj<@gLG8cQyR>asnv7bVFJtoxi|N zytEE9j0IW(!{5>dUOx;;q|oMB=N^bFYruO+Mc-@&B?lw;`g71g7{hufX_~QSpgm>bzlJR&q?qAZM!!FCDG$9Dv);ZacD6B zY6lsBQ`~VE6$=={0mc9~rH;F(1b`y&n2SmX!;7DR|Nn!QkSKU`9(s{;jD?}O0<;J# zK)|E(Ab;Cz&A;YwN1PXAd}#|K_@mO!`NLI4|E>zU_8XX%?Z?nc9I0I zt3Ci)Rl^8cZ7l`b2;lOFVBvtWnOzu9*p}p_74x?o1RcZQ>jc^-!QpCoxpWKYY!aP7P<{X{ zaZUj3;hNxT_{0{pKBMj_2V?nS7yfNY9Q@myI2{i@0d495PewX%!KNjhxE&dffR7XAmuCQ3U|3LD z0KT;CoJi@{N9-#uyet32s zc~QR_Rs@uo`*bS!^s<(o1Zm*icmDtX&IpbdY!^Ya2I%;WXvlqDFN{G(b{+&bvH9ge z&A1m0AfaB?olC&$VFIj z{4K^H)!l9pj>kdgv@rN~{`BY$O91%`<^_n;yIoXlT)WwiJA>E39tUkdWB{pbe(^=6Fk6Hge7=({_JE1sdVi&KklLezJuAL z+auz*iwbCRoWZ9vM@7N4^8?6Y4Uf)`|0iTXMjl%H7#Tn(4@Pu{sKjVGb7%(hfDR7y zY(6gHVR@Io^*MO7Cr8D`qZ<-vj?GX1IyV1hbbWTuNsh+`)^BpjfD z0^XSkH6Nt@IY>P-|Fi@A+YW$YcIv*5U$I5z%} zVPjz6pK{>!DMbGREbh+?5#N+H0n7(22?42Fls3T@bmSd>i|9YlQQ4q^wpAT;Bw25R z00YPt4u~sWg3gx#=WkFnfTGW{^QUX)2c+0YK#2`RR1`p?0(8DQNHZv&KnbPuqffVo z1tgL|8+Q^sIzNJn3h-bnh>-!Rayk!zm<1r_!B_Gib_Iy-(rdy5GR)&RWVQ+<=6LZR z$YCHMQ2PNS`!hh>^IN8aj#K=>$KQGxv>>au zfq~)Ef7}0{xe;*Mekl(Qb5J?P0NMiniC@c2->$}44?RQPP_~R_36Rs&at=Q z8Z;lZ?Eo!K>up#7=JWHnmx8+Qi@`QCxOC^J*ub-KYXVpl+^+ul!eRRV|1Z_SBA|TP ztM~7J^AC1t3ZMMv|9=!mNI@KN0bI9%wl;&Y;Q`0vpc;<>x=sglJc-6}P-0^M9o;jb z+Y$YKFx30Nkko_A4VY=L@g^jBB&(3~Gja_C8t-sXF@V^Qq7}Bj8g!g%>wyv$$775j z2Tnj$1U_HL0wk8;(=7l>%?hAR`k+mI{{tjIixiM;1J!pRwFY3dpwW!~2@)vFgB%zP z4|qbt$Md)&c<>3;0I)nbv^8hFrg zd~R zx~K@e=sEcxymzetbX<6+i;9FtFYAkWoD3k@h!_9P{r?ZzXkq|rwSfk2R6vA+Pv--W zs0K(Bw3Z8em;|J}exZF5v=ZRxOVHWspms*D>d(0#`#?=X4TwTS?85FlZO#+`4ONvY zdUQK-fY#ozdUSKb_IoKf#=P`h1UfMql&;b4g9GpFvjCma-R&s=jS8R6)3Dg^=yr_o z=nhQq>Gr4qN4IC^&HocX{a?q<1FZ*21wfZRgLi+z)3=|1PqH_UN9)N_VVBMWE}h<> zeJP+r7r^1$(!llx{PG=Ul8fOlWB7;t6 zj_yDek7Pd;%Tpz*efZa(^hiGC(|N*UrpNc6o}C9@Pxs_sf5<2KlE+NX@4sHJM&TVo z;VlIBXB0fT8$q=%ct78P5;l)+Pl5jzJi8(D|Df=L?U)0Jfx6LfF$IV^P;VJ7rU4NH z_pLx1PQb%(5HawS0!+*TA_f}gfa`UDh=DuMFm)afu^XV-37A*_L=3d-0j@U!A_iLL z02fPuh=E#kaIp-C*bij$3Ls*jOc24yVdWOr>o%4QvYc~F^xR04q77oL#Ph=TkL+XK{j8nh`=0lGU=0ffc$A8ZMm>*LZZ!Q31Km zrxUWW%CYl>ODD|X4HlrD4}9Y{$Rx0DLF+7${p$eoFUX&uBF(28++p&u7Hyab_MdC# z5wQP20Rk%DU;$zH7UW&Q*9MUK9Mrr6>vZX6hx)1cC?lwG?!)-q@&BbxW*^4aj+Spq zuXr>caX@r%Am>nBS>)k;r-EJzDhe{s%Bwz4IX7))w<;lMugb#sgT~LQR z*_j0tt`M#>iwCHJ_Wb_Sqx0ZvP^S~Je~xKDEh5gBc^dOfbNGV@a#NO;^xsE6aY>!pkoG)yQqK%M`6RJkh?KKXRcU)&I|Ja zu{3--Fa5vJ?V{r2(R?HTJly2K0Ldrd^%Jndz{BDH1W+#%lvo5nmoi`I4pQ+<_E7(Tti1DYDam4G$tqR9}~CX`r% zoaxaWqyb5Fp!T~4EJ1=sDH1@b&%&qk5-fH8zW_Sk5qv%^DE&eEnus#PK><`KE4XyK zs3br}>%i)fioXen{?-|fZqEu(gN*e>cnavy3dnj-h)Am<=-dj(OcO-p^DEFSql-!g zs4)p{ekc6D06H~80JIZM^c(nKHx3Yc=6{e%9~Frg@q0i!k#az1jl6vE=_^8s*cXTr zj~5|RK^FO_1ibK?3T|e>`dcrprm`@kO$Y}UNCqC=HK0QG9LU=~ou?sVlo`WH@knN~JXLZACA`^Q@52ahEaUO~nvgp|K}9~O zCid*S0y+S*H4t>d9xQ*k8h&#%eCyF2C*jen>p!2H!KZgOsPpFAtqxi{)v^V&f(>*i z5j!}$^S8YQjk#`v>@)M}P2%XTQPBYH8a)BpGWvtx{dntv60hbLj6R)jJ$qwXS)k>6 zcPOY|;%ayjlE*!okFvbDae)oArY}T=vD5XBBmXuQ6_7y}__rVM?M-Q6^00hedZIf= zMdLHSfT_WJZU)2Kt#3a0h`6F2+=5sTA=8rh>*^yt6XC8RR zq~&Y=mOfCMq`OYS12lqu&$D+wsH5uB`P;MexKHN~@Zn@%Jv#4!Zn1@Wb~&h?1c|)% z>HG^miiscWYtX3+qFvK?L5oS9z%x@Wp!4<|yM5+@rt3Hy84rLav|RbO9{?@5bzwZg z-?EvBfdMix=V*C@zikR=QnHt2wnr~Z6aTgV$X4(){`V)-_}^awPx*mPjss2NIdDOy z{J?B(7x2WM1M6pgty7>);;2g5KJ!POLsHHTRnGgFU+WV8wg4V}jf1E<`1rRu@PFoy zyav_9c;Peup+ju^As6^V5Augy01Xv>=GQv#nLqLvzs8Nv{D*F`@rNAd5537Bb{I4; zH61*3`Tq82eyyAQouJWgevN~l`C|^jVxwy=w%BMb`Ul!s^72LY1kid5KaUql5Jtd@ zNHD`i#lWYtEWo4F4Kx&|(dp*GuK`KF*rp&R_;ja5fD@=UXuTS2NE&pFA#7pui_ASB z8z1f}N-Rq|=Au#pI+C~GMe=UYy1|2>=`{(H|NniuLG!sTDi)yrPDZzb1gOL3;n{iE zhw%bPD8SS55P$nT(Ak*(|NpmlZ2S#c3sNq#3&eBkWw{G#*;-!UcR#d?!GVFn@&dop zA<&5NaTgWv+_EodZ3}4Rz^C&fs3qm_;t>Z2c(tQN%K`pYM@9yQ7Y~fV4t;UM`2YVG z#m1m&ff|;nb4#2vrp&0mqFkSyfG>| zjyn#4#!h-g+h%ivE)H5do0|dTABF#-J-7K7T)JaabU;J(3NQ7+C!~SK*}7RbPUdBJ znE@WM2DRrz7lQci2>wJ6pA$U143hUzv3Q|p{Qv*UNYKP7to(B6JiH4u6Xwx*^Tmli z76upxw5J!e`~AgcBtg&4qc0ZsfhP9VE*f=_oc zBz=I*!J0licY$?*(nlg9eK_xgr;i_op!DG(07?fL9-YU*sl!Lb!?W`ccvYW^N`R;3 z!7?rIwnAvwcfRuI&?Vu$Au0|p)-iD~cy#^*r6ACXsTcD=F715yVw&Oq|1S&;5h)0?j@aijJxzyAM!AqB>G|lNHNHYsZcBa8~p$OvIDI0=ZjAuPCTf`3yR$r z(LJE%&dV3UJuD0pU|HU$^COmA|5Cq)h2g~}1Bkm%ng0L(5_Gfg3kQ&Wokw1V{QUp_ zg)xK!_q6>_s7tke{{R0Hv={|Ez6%;_-?ajMHk@b=C^a77Zvicpf()*sjjVSIr19so zUhUunT`I;N?_Kwn7;?T`h)44q1<%eiFN|J;+pm0}vKBl@ z|1#j^|No#;$d%ft|$l zLbD50ih#G9L(Vh%aFvh2qm$C}%$lz9F~CM$*IngfKpZeulAi`Tj}GPl(5CEOo*+=m z0bZFcoIqi=Q2!97gR?7p@udwyvz=qwGWLkOLs z0VQQqkIv1Ya=@oES-_)nH)v24ly{>+r!F3z;M;n#K#TK<)z# zO!;&sOL%nd2CINM2Cw@bLfi-5x#7{-3^K#xcr!>p`R)S^^uoeV0d!0p#C@Ow)2B08 z!J~6GSOrn;oA@3aexOxH3?7}$ATvCUH-q$(?>^8tGt7M&2={@8GJHCdH9R_ZgH;ga zKE)Sc_km}DJvy5~W_TQL2I(i?eXuz_Q2H}KxDQmd_;e;4cy#Utt02mKfzQG21LsYT z&SsDq9><$O`pI`6Y<>~sJ`05VKr5kqI+HCtI(LIr5am9`w_x{y%5+ftg3RzZ-VD-D zzWZQvognu)AlwJ4lYKgq9XvXbZ}M}D!J9uCUxD2RZvK08HiOLYINl7hfqeJD=3PPV z^FX){H1Oxsne5@wxf`s4sPLQk4D3GeidT=$W{?>k$D2X=$#);9YYodE0SNbjS}{JI z$pIdnyTK}ma^FW#bKk$D2X=$#>reP`?sde`Fxs2bvc3=}gY>=-drfL6rL@J_4sd@H#k; z&SsDq9><$O`pI`6Y|Q{D{0b261GSrdI+F`LI(LIr5a+&!VE2I+=XrECgUs+a-VD-D zzWZS77eMZ-K)4UIK*gssxx%A!H&_Kx?)!KL>^|^KvSDOor^(&9-X_v>fpxWci&EMI&22% z1iPlQ8Dy5n@n(=AU=g@M1l=U}(Bvq>eW3oFPv>HgphxF!usXQ0_}v!?aUV!0 z*fpKaAhSG7t=>r}zX(0R$D`H+fFH_HXk=(dj~%Y_m?@Dh&0u>Kr)!ol(+|I`B>pxbw+ z9&%B*Q1Z~HJ21l6n&ndIb&x!0Y5dd!K9(mP`N8s~n?RGYkoi;($a)9Q&I=yLoxls^ zJdQg-nz+ZEAWg~RPLL+saVJRA2)?9i0>}@bwVIy)AHm&2iFu$Vt53Iw1hRR}Z!Exm z?+#3W&ZmG@6Das}Lno6QJ1>CdKf!A)APWe=;|P!i96q3R+6N&@Kx;WP{)2nt*-XzL4M_JiCDH3jNTAJEEtSFm9qi%^`7=wCy^2E3jE zw1mR3^8#pk9vpz6qJaS_4{GdymKtNqgXjOi{_y}=L$rTD%@fdRttcJ>ukZAL*clN( zl6j!!1a|YF@gEU^8a~h%0|yf%%t7{PKo;YJV;J0TgT}8B_WC-;f+vVfK5HP)C^2{fk=no zN(G`Fl7B(#qrlVhpz-4ZkM0>DS2#j4p=0M|kO>&+=>}+hi~(o>S_3jI23}|bU0>7u z#sYMjG>hXg&_N%dgaKM$GXqo_!;&{jegc=xAQwT_pMvktZhm6`wG^~Mvh$ix=V{00 zAOB0aJvuMGh$?4caO^yQShwQZdC;@-g9l>uiUMf$iUw%y8hF$Vaw7$FT?3>u-Tdeu zG|)Uc&-rv7ZvMpr3pYaRdtu>PY6~j4V5{{@RlCDfKyxh6E$pB8wGM$+hO4%KSB4+x zWY)X@T8|Gd*+KWVfr=@}0us>ebKPMIP>rB7K;#)OT>Jsm@fvw`5bXXl4Ug^;l?0GW zKr`%+NleG)2mhdf1_>^fQe|k42A6N3?o=l;q$P~BKM0zs!Ad}xyc2v5JNRxiP)c9` zl~4I7lla|Jz$XQDf)-hKhp1G51i|Y{!0V@h zv0!8d?d)L$dCvpvJxKZ|sDCw7zb06}Cc1t^`5Tzv*!=Jx_zrC=P{Ezy)9sPr2w8sx z%kq$v56$)6Au0)-;2Z8y;v+@{wA#4~YL;;*ZKm~$h=h4;!rJ^pKFTfc&4zw=SF%Fua!6Dk~qhjIM z`N5_06KKu^r1Qn(E=agS!^N2eT{|>CgV+B-#;_tlX$TZmpfM59GCb^#U28jhV%t)MId8s>)WgXp~F z*!k0^m-Ti%Hv?$TFH05Z_Pxr5$JiKN&p~SPp{x&Re&Ycx0zAPtv%7#UBRCH#I{90` z_p?HqUeK}RMU*ACja zwT-#?M>>DYZSbC(($cbqYR0_M0vG;m*-VbjZ!=3%J(>?QBiZ%{w$#MT9> zU|Xkof;J|BclCjGc^SU-><&u+tr0ST@9qQL1_N&4wH|QfpL+CV0%VHQg@M7<@a@YW z@T4iEJOI@&KMGhFe7nOUK<0RM-T*I>>;g5{!OKBFc}K&i^P}VcNuYLn>jC~&ZqTe( z=gk-U3s@LBkG(ty9#e;y*HF!v$=@pd|NsAnYNizaRzZ-`US|xCfkGGTG0;7{$5lWc z<8NIHGH4s~%R3+%a?cldeVD?FrDy;D2kjf_JosW)66hpF(Dn=k$C$&A@&J;GH9UG* zZE`@D7o7wRZS%X_@aXoIc##Rw+wH*8dZ1L?rxT=A110N#?%81OW^O%D!UrPx``8#6 z7(O&JGj=;G_;$OffbUKca0E@@bUTB$l&E+nd+30c5u5>~l4KXqjhF(?4&B8r9tR%? zfEQ+icBE){CcCJppa>asJ6nKEvgmfU0WI`!QE>oqZ9sFyplIs+4xMuT`NE?BKL7j^ zG}UZT0GjYQ2AX7U0fn|l>w%JbkM3X(kAu&d!24l-ylBY>ElUUv0M9yod{LSYS&rrL zVmFi(@M2>=3j^pzC=cJx5|seQ&Jq=um(Rc<4mzi^^WY1P_sk3)$tPZ_fDZZI!3LVy z>J{Bw4W1vlQ4N|OVcWyU@bdP*|Nkd|7KkO}gC=G^zKFFVcLT!Y*pe=WW`Fn9sYnlaG@5y!lAl3C!o&z-+}mpQo7%N;bsL=RMp3na}%} z16s{ZXg-g*5}aN&DnaQr49Ve0^LfjWOae{gf&1$q26)bZ%=tX8*USuv^belT)c|c( zhqe!PxI^+&as}9Z9Tgz=ZQB8x&x0gP1<34N>wywykM2SN&@`NJw;N0Aff5~$?m7X` zjbAe0JC{pDJ-Yot3-U@>UmW}oI;{h=c!lA(8-#*v>IUTq(Aqsv{|-D~h;+XZwEqFI z@SI2IW$;8`FYA{yP&s-Dw4~mH-{nR(qKt5-fELj!fNqt08F3YKR1~Ph0-YiUEl-lmA^tB1`+qwh!|RnG_kr$8LhkZ|*0+NC zY!C;Y_UydUdY~iLnAr}Lptceca}&1sN@6onH(D?XehJitYBiK|DlvjV*6_2_ig z@JMz>l*OQH)Hw%Iak8VfsdRx%&DQI}SmsJNG&bKkbI2;tlKHd2d zpaQo26ex^Kz^idrp8)wXKEkInJ;9^1JOk`t&|It|=#F^sIOZG3I40;;9+1yG|35^e zM@LwB{+fl`_lL4v!0nQI4?45xYE}f1xhbKVQTfo)Z zU{lZfnP1S;0p#w_`~r>+NalgkE3|fjPhnqo0f(WbtKnPdUM5FS!^F4qp=alh&QC9X z%wuNo==Sz_A)W!MyuAZn@MVCC#$*ql&g_8BVi!m+7INPwG+nxM9)-3OUcOMsfVUG~ zg4P2HWPmD?qo9p-pbKkCqKt~ENcy#{q=sfr$A)SQ*cJ2r$3ol3q+4d6ImX|&0 zpbe}J43PTLqxp>ih=P=y4dlULHArp7!Xx z?%R13oIgvIJV33mqu`U+UxJp~LaxICc@(z4YZqv27u+Ryu`&(hByfFw+^18+qqBhH zxC401-J`QYqT87Tw4bpDG~v_@p0x)x*VsI|y+P{&dRdhZfl4jVk^soeelP37!=RiE zRtj2wBhY++5!5mi=niISy;PFt(G8xvhM5AI9q(o3g_vRho8RtbjfR*4>S}^B7rbbI z-z_%%yZ0{As+R1zTR#{<+;KMo2RPG-=l#s~OY6hSLr!N~`-g!@HS z4>LpOVNf?CfEjc#7pVE&I{`Fp>d~#`0Xha5bVs^p=X=NIdI^4yZrz=kybNV5p56HZ zz3%@(Ypl-{f|h^Rs2F_a7qDGj2rB1lj&Zye1gD4QV;mlq-}zfWC&Pi0X15sVxacnv znL+zYA9VYu7+BsczVVq~z>USR^Q3ogNH4=@XMRDJJ{SINt{nW^TtRonhO&az9fQ|P zyRsnGOJCq`;RdZM-+sV@@r8@!LH_19ObiU(y*!;By(}I4+dSawr7xxNzrPJ$()>`u z1$to?$Ve!g8%l%LOJC&Q<^egA7OoVuUK+ac`5@@7Eq17K(0b{c;QMVgPN5nOTQ7YN zY6;_s&-{l@v+;-A1d7#GEm%JWbhn9wNAF(HbT;g^ z8PEk7o}J%8>4qJYTtLg=b*s~P8ThwBE-LCbqcId=o0&eiaM;U#p%FZZ4U6@xC| zK)(zL^g}P(z<~nI|DDIc1*%Wy#}_XWLFN8OFyFKD=!+YPpaKolzbxSdpMp{kx{#{# z<%{}6@S0Yb6G5w5(Omg5CJ|C!cyzOBrtvbo6o9Y0W|ai--$U13dv<$7facd)Hh~I8 z$o5Vb6@?cmeV|4?=>A;rj?mTvo}I_}Tb6?rz4+k6ztM`ng&TBsCPIrKD`;6WOp7Pz zE~Q(biy=CHz6e8+dU^OaC{)1piAT3D$o>-N7l(R4z6D(!RZ`{A3BIDop1gm<)L`w^@SeYo*FOG%YXcT zeFZ%J=h5xy@lu@y9zKxz9@OIYa5X&X(Ho;;?)Fi!d7%{#3Qur#7z9@7YIwl2^C0x1t|Jho2Hhbb10Onq&p`%t&bwJ7 zQ$a_+f)as07kB}#M>MF$1&_#rHru>lh-YB{<+USl2}J!5cK`8Kg!@CGEm)225|skb zRv}R3e%hn+;(yTo zN5NL>uHs|x?JiN#XuVw#v!fo=!srF>YYi)LD&3KvqIr2EL|d0(hzM#}}j4^MybxXsoqFvzzVp42U}L?GB(K;&1bh|DK&UpbC%2fE1Qq zhYWbWECh`Y!NVI8)*hV~T{=(y7qwXl3hNRT4cBfL6$6*fSD-;%|I0uALq@P8Ji6T~ z8Y>cVN=oxf_4)Ttm<779^j4V)Xb(0h(|3oc6hN%;=w-Rl&C$u#9l!!w#a+<}>URDY z6<&!MGm!Dk*Y}b0M<{H?s{+h{=Rg#qs-1@P=(~9+z%E1<;)$+>YOGe81_^$=vD9(e0-Kad+#< zN{;WhI-PksgIU0lmbe1uVpz}YaM}dWRWT3I+zabJz&7#09DdpdG|GMPzv%ttAcyB5 zJN)H~PZz-s_w(p>t>_N0&<=3v6zdM~U=Fb96z>jJXuVX)^j!`#d-vI6@aQ@(3&c^^wDWJMi!=>{TXbMBe zvH66+3$9xrlS<9HgH^ggcW_^-Wcz*t)VXln3#!l^HIF(T{L2OQ$^T_ApBR9P5NP;5 zMhjn1=>|^?kmTCC3>2b1DjJTEazPbbT$N~gfF`XV@d-N9`r&`k*>F1)pmu=EQBXMD z2l)>?{{xLd1yErCnm%#uJmLwS)&+Z3VHqC-Xlu2pOZOV^G$Qmw48#Ag`I?V2`Y^us zV0`Cj`KLt0v)fOjTlmHCT1YWa`p~iS4`^&(R21wA&`35YErH_SlA&-Iu{0p#^0dRFv~d{8){Tc z7)n_|{yYzkq~6I49~c;3XoC$a-Te9~I2>TP4P?Df=V6b|^I$LQf~^PbFzs#w6-4~| z{j$0P6kg~?{rJzn-!BJrejr!^Bq#w9%mYmzLzII=nWBFDcj;#C_GWPe)hdTHPdRE{ zbOGhWZhsX}E))RgLeO=v%$?pWoxvPnf4yG92RX$B+PwvhP$8<135J(Ex_Os3@G*ck z4>KK};L&*kbc3PjlmrT%1Zsd=Y%bjf;NtxI3xx2vL7 zcI;&0pL(GA5F_V77t2FMw_8q@*!zGk;C%R^<^!l3`|(9gILHkzUxb8%hA^BfJiyJk zZjKkPO@97|O!h%4bw|)tp#uZB`3f3*u>SD>|LeU7`%&+2&H!Z*(2`zISqSO_f(}Um zx9L02xpp1_O}i_=iu03;K!e*MDhi(6P8zP=P6nXT$fDa#!LjqWz6XAaxF|txxz{Ku1r5)_Hiic0O|LJi;%}&@Bu*E|7oQAi_@$85|G3lsNd3!_o3&Nf7uHL62@9705{{Au1-|MK<6|gdMN` z_}}fK64M=`q5uwm&`p3QofjQD4<39e05Zje^JFRi!B-pyA4zat=yV0m= z3{)tvf{MF?Ke#&CK?grre&TNh?LGsoWAOlO%4|N8fjIodG2Y|9>W77V44%DCHlDqc zY*-i=!1)t;VQ}*S77xoqr60ke<7Dyj9k`1CI=?0av_A@bi0{l=J_g^`C#9fsh(J?q zVEsOw55W1Ork0PP^wtaCQ=pdek&-*0rW|A!)vQzh|0B{Xq&*2M4-Nl&bT@$tM9}eY zo!3Ay*m|IZyRm{JDYvrNfq%;JT@Ea;(Wo&Q1h?}gHj9=*CzpxfYjZ7+lN^!1wh zfOhkBo35<^l>pyLOg%fl`1JBF1D$68YW6$=4HH8~fuM!#ODWKDP!yrVFUn3p&!s-# z(fJBGPdVufLhKhPr5`*C6M*I&(D`goRG$VFW4uQ|U7$AE@1Wh3CA!ewjA~dl9|M2O>VN&(*rVGs!Q;Pb#5_I*n19g6D?#-)v~FnxZAJ2Eu25j`=sfM&d7;GG zqw|zUFE7Zv7gx%`(-7U@w&jaswg3O~Zx7A@C9_+#pojrA4ImW=#NXWk9H0dlpetvf zCl_>cytx18-~aAl7Ee$o<=~5lOF0g5OOA2NF`0vpxTKy5E z3Ou<3I_D77mqiXQNZZ4s*EAXA>(0}l{+UO&Gw5>05@8R^58(M(jp(?Shs!~IHqeFR zC9I&}yx`G!)9})ZKcEBKJBtHA_fvH`dq67fm($8Yhkt_3--nbZpfbv{^X!XrVATgb zJCD7%d>`blkD&4I9p#|(dH~#MdHA9VoZne5e*mRF7nO_>5y%n%1xS4aYU)Dft6nI8 zE;@bcnx;ii>0CLC`T8rc=tn1tNdT zZqRgP=SNTz-@^ygjRSSmuYCozAo*MQKpXqJeN;Slfy(a}{zVXBe$Yw2&I+J<5M&Ez z$ef|`(Dz&X9v8ZuRa^~EI(8m#{C>lQ-{Zgw@BAPC!QB)74p48Q+gSy4x^zJ6fr=8a zbvIvFz5uzcL?ytZ^O$SvH~v=879>#n!UMG4<2~q_573FP9-TKmI-LT1I+HwJwEg`5 zA3OkGBH_^;3@RzEfLdFY&Kafb$DP2{gh%s{1Vnv_SRW2M*n0=)bbru6`XIBxP6B(! z)$l;4i%N`7=c^ZmsXzX|i~z5tabW0nRsksnX##mU1Qf6bf5O>q^`HMim!4UG z=3i`D50n;wI{D|tzyAjr7l4og?{5Z`;vW1Pc{@r$rT8!K=?rkAHlrBz@;G$750p-C zeEbJ)@?j0%&KIEegRTk4%+|?&|Nl2U`EveW_#hXk{DY?Eh#m3_3=AHfS3SA~J$g%2 z48Vgaufbi4kFK3(JTxy`9_Dwy(Rmv*bfWCT!f?z*#(=@2TQ+|tsF6^jqVfMS=&TA2 z#~q;MMxayMLE*^o;=VU%Nv$ix|I6JBptWD%Mzx3KhY~}NZgCII53VgwO65El5A6WO zy+^0GNAnTTT03wH09synXkPWOJX&%KT;3xj!ShRGxj)$(;r{hA;O>W=ya)CN!Uv+L zKCp!QKp)`)8C*U9r$>nU?_jtewf(IDn!ge7=w<}10xR$Yo$v@b(HoSWSU?SD4iC!< z{LLDmIh@WzX%qOjG1>6)_t!EpFxYTFXiv*a{4K`JppyjN-`>g3z`$_KMTL>U@Y^vL z6=nuk!;@+J8kf`fHBKLMQDK7g)zbJi4u9eoFufKDT23sWdMpw&qoX=M0yLMSTL7kP zBO^e9wpm~~*~j4^o~aF(r|TNY&CqhPu3`e{DvNzg9y5FxfADXUaIrjGpTfV*fzi?O zKz+2M<_+KE1CV)qU&e>t{QGzq`S-bi<^y>6TTYfpH~eHR7xPT!>Gol~3EI}|0(LqR zBfmUot|$bQ7dlX-1nCbxVBtyPp~Xgvouo&#b0 z+fV#)2SK-ifx5b%_yrj}EJIW{_**`KGHEyHkfA$MuOn@=O~4`?sI?BSbfcb2Bu*H2B1?_3{&c#MzgV zK}x{k_=!LA2uKw|_UKFSxjmqE0VpjozDxs^ec*nIjRJpbGw3Mx=0jlDv?hZ%-H^l! zy{Px4E4c6m`3JjyBM-g=FLgxK1~%XDz)N}1(0m%d-r*`X{+7r8{{L^NQDJ5%(E$hl zCw>7|j&N=U{#MZRHi-8qjGN)*o`3)Um#ha>UK}sq{sC)YVgSir2?ME}`|tmM5N{ty z?F6uA-XC}gYB58H|0ft8X#6>qfq|i%xAUY&FRO1NHv|7R77lp*1(L5~gv+mu$0ENJ zpJ9hf@lIL-NEaZ#y6ndQy!hCeL9bKUIdM-Hd{0Bw}9^W zvYZUssKwuQ0o3&AW{vdbW$=NF@PGv9Qn5~fv&m*Erm9GYr|Yx?#kU=sUog5_9_DZJV+746yErg;_PQ`J@^8yv^5_mO0JTmG96L|= z^rol;K;~y4n`S{R5>Sl?YLS4q`5tpoNnrr-Ae%yuyQn~RUmkA(-#!ab3%N-X#6I2v zJ_8rTJl3KDI?A2F1II1mFO20ur=~x2?0gBCFL?3Djtw+>1FEB!3tqMi zIdA{vrhnib!%Og?V2H#HDrdp%dvJ~3_y)9LgkN)u3g{>Xe$7294vY+-%xha72d<_} zK{RLp5R{@^I?sAG+o&*na^x4Z01*`&AhJLJOiJ*#d}3x`aI~DF0!eF6z-t{KyGlH| zO`m%3GI&~k;%~VFQUy(C1)voZhTm+M`CFbcF))A*UIE9wf@9|ik6zF|iq4nET~y$4 z3r_^#Ey|#yp}^4x&VQgn8!gu1Cvza(%YGbk`Y|*GtO3!W6aX5LgRw!Qav=5#Ls?D+ zSI`9018Bqjfejm|@+kq;_XZ3O9c#dT_32CjUl$K*?K6Dh7pzgS0Fw@%_ytQ;JiufC ze+%fWv7P__gD&}SQ8Do7y!GN>B`fIQx+UQI!az+l zmZDPP+VZ3%84}+f(6e7&>~I1lq8{)S_aI+@2BN?&pAVG)3A~u(1fJ}M#z(khG;!dG0}y8+Y%L!=UiK!@VCBUWMBX_s|!GTSR8vD87(jH zw}Tf}gYM>D2R_=*MJ2(d^Q0sHHXe@VpFAZdmWPVGL09=U|KuwPX#B|lx^S!Y>%ag1 zkGrVUfE;|hMMVVEG-Y65c=-xaKZ0+`1zm8(zm12%vDcBQ@gPW_<)PxOogpd(pvY%z z{>fLmp<#~-c#TrGi%LzYd+UJ`>lKV8=G{Fipz#Wi?kV7c0JO3_3zE2*j%Rf7y`dM z$bJR}P;p@Z8mazV!ou)+%>=?Fs_e^K;3f-1Kdd};v^-p*O0YZyC3){&Sb6Hgzpa4j z#g+ij2?v`93NZpZW7c zR6O_v`S}II1zuKz`$iD=xf(tJcXwdsgD%Z82CZx87JcXfy84dKqm%1p3wYq*!^^Dy zkaEc%5=7wfS@29VXmcD4yEkA{BN1f07 zkq1F5z$%y+7&<|VeJ*`=;TK?aj0COr5is=x(H{I-7x*>qfh2f!Kmz=6hdw*FIwfSbmkcK>I7 zK^GOB7omHYL01%kqwX^(ZR>y%o61XHuujlGR|78Ow1@MyMV0Nq;tgOP#3v-7M==V71Dv-~X&xfmE+EE_>p z0)N{TF3>h%R#rz)UY`i6a6CF)R5Uy+50yxR`p(S!EsY!u3^pwMEf?9ryP{flvNJFk z{`c)ptpHV8;7~xTy^kZBY{yzurhu|4NGWLi7{&&z6M?ZoE`hNRfEb`04!N5Z#5)GL zHyzwofS+b^yhR0ma>(%(6;MqGQVX&Mw6h(=b_Jb$>j>%sGCCf70J-q+0GQ7NzVZ;l zW_Dye;9_~0zxfj<1A|L%HKVKL5B{dFpr#G~HXjuhm(Cx)y(KEFj-Zp6J5TvAesBfV zMk=7gei;uLeuMTm__uK!dBGBTb6-6Q@UWM(@b3j;&v4X{?m4=$Z2LH!gN4p6(_ zg@2pC!AD>XE{vCaEN_&)wfw~2?#RNx;A(lCzx@v@=)S#Qj{NH{`Y?V1ZG((-={)Jt zdBN52wok7J7p%PI-(~>1l+pvVIG6FWkL88Zw=SIrTn#TlE%jhL2<{(()j{lYWc=h| zd7|{KtK}{JCS^{jh1ndS<*z6CTVAt+Y(8oD&7+rvYk~{^HX*Rb4l%kgUIWe1y#@R1 z3Oka|JQxpxr)*sqKn)@!e}V1Myyn_l!RX4r{wG*x6}Sbt{-zJ(XK+Z);sD#{!Fbc~ z0BF2M_}~K$kLJUSj2ApCPnW*;>~&#h=`2z4@L_y#+(pF)6tkct>HzBcgHm>Pfs03X zgomT$UQlz8zfFpRfdO;}D~p52!3Qj!%&nl^u0Gu!3clU08KCOi!KZf#c$oueY|w_6 zjlu9h>o?DC--5Kx7L`O$;|6pX$8G+phd`HZfZEobTU5ZuKXmqho7kX4hAqJ_8m^7nOoEetj2}1pamrusozTbp>zI0X0uSS;+AA3vmk;hVDJ! z`^<6q*`xD^$HC{Utp`es!08OM!UUAJJs9tKG#^#~Rb4MGn6of=9Cw2(^FHndIhDln ze(7b9RUpML)`3)X_kgoB$R>~=$gwY`LM1>B0!hH~{EHf>1W4dTK9mE}_9Dp~+Fk~i zi5h!Uz-1!1VE`=_8;^jBO+>>Pv@sTzpB#7m0u^SxqRoMzu|3}PfuQ{;%bNK>H=VMm zfQt`8#mUP3Ghh}#+IyN%_k(Ge`z3I@e0Zh^xF>{PwM`lc#>-b#}h0a5|vI~Zv6>vAWAkeEvq9v-Jz6EEkD2i|L@Xy^5sQv@FLkG4Y9`^ zY>yqPJuaQUuqSa)vk06pAw?sz5923C#se>Hz=ngv0o1Sk{`3ET@I=(hnLof;0JMJ+ zbiw7zx1dRLXno}Zx(Fd(gI_a8#Q;P&yj%n}29jS454^1U{{O$>x0mMM|NnR7Uw_l^ zn-AmXm%iWs{|C4AHC|+HU}gZf@ikuZ{(*}IBSg)A!$oa3!1@JyR6vavh`!JKTK)S}oM<(xn8iA?B#y+@}Y z@)8f^`9Tez?nDlc&eNcMdO|Opul)P(X?X;+$@AfhX;=RJ_vua+@aVR^ZNkgoWBI&9 z4x~&HwDJAfK&**_;ne{AYYJ@?qmg!2^JuEV~`1; z4Z~m)^gxz&`>05OHa$by3#})?G9n<2oey8MK+M(v=@oi0583RGm%)xS0GaI!k_T_~ zQ+N@m54rpf-0lDw44(f7*=z8^6eQQpqv8RzW-Z8!&WA5#A=X%c%(4QRWeQTS@PZYr z-bY0MWDcr{M%>Z^hk^r0x6q3(mykli9i*f?*#l&{EJ$7gw3Q8JfF?+`^Wlq` z5CZ~03WQ#4MmB&Aq@+7J0%QP|V0;czi!~U}Ui$YR)a;DX8YKn?h#3-()Err2RtDC;-)TSgOP#f@fH=(;5ev7 z2V#So)FAc?d$2V<;Oq84Hi5UfgBb9T1*d@*{kovtfGsL4ppGokBml@TSf{e}K#7A- zuTF#EH_wAlnc?j%&+auUpmPyD7{7WnAJg#Y_7!;HpbKh`LK?*$$6dj8cv^lfy$o_X zNbw6fsD+?WO^_v^p-Yg9L2Qr$5WDq2i9NzXSo;xVA7~^J*}e-pcbfr2t{Ix*g0@^9~;_Zch|3N7=02GS2 zg400<5}cq36p%XbBnXHBJ{q?5K#4iRUm*X0f*9F94EX#5QvBkcHpB){j|}7|(6}bZ zA0ReJ0f-F^KL>Dxu^@*ZsKW-a&j1`>6SVP!A4u_wJZ(hyfjR*o^FeljBth&KSIxe8n1tJR?Ac4p#Bg>XSWI-d1AX!;ZzC_8> zp&$jF4__SB0@=S96doXjLND%|Lvn&XNLBY@PzXU}_aVy)LS#Yy1Ic1q^5GoBlL=r; zR)ak6WBI-$8MNj)&apd`qxDjWsjJ}=@c2XLGsos5j2;J{v3fF>3V{1*8d{)mM(wA$ zTBmXpUGfBF8%`}yAp3$=rh|**MzD1+UwqUA`Drz16bEEe3dqiQ$8J~9ZbdV&b)azp zEcWft#B1M7O;q~?q4qU`?OO~QDFTIq(2E&ok;3rxSx_yo7_=q}B3p$ldln)KnlFOL z#vseChsc6vkRY;l$g&e5vY^%85LpFe* zUlt;J3|UqZA`2>mAhIivWq+Rm`xjIyL1ep-W$!{{L1hXkO`3s}7$R3TdqAqYeN;F+ zkF%(NvI?xAUkuXO`S69X1}JtHgNiAT37FMY6;$CXb+AIv^dZO=%;XseRd^7h5L6?8 z6so?saT*d9(x7F>;1l{Fi!)xzpZWJ6I=+UyXyY)nEd!z;yLU8pB^M`_fu}kTzu0NY z$k1}2loz~|2z=BD_#SO%mR-rkDP^GAZ#q~-$vvN5XO3M3={aD*CR0Y}$vIFx;C3XE z`QW`2orhmUf_39CAH3w%9IOIiK3Gr*yZJjoOY~g28Tq#{@oxjovr8O&D8P6E)Ym!q zkORzMW<23&d7wxWbQc!rek@nRlLsFP9DE=FmSyAL7Q_x#%6P%i@_-}%^n)&)Ct&M; zA?szq>*o{w@T{MA@dK})=ba5&m5Q={K591d`n~Y5VBhWl4c~4D1CP!Np51{Qj-W-g zJ}M3_-CiuNmZ$lfL9=rn-9Z8#-LmVnco{reFM060Tn35w_43T}w7lrU?{wOce_J4v zEB`i6=7WzoTo_Mz@bACm$-n-R$H89$or2JtygWc#+ap*ZDqJAj&L48PGTuycu{`C- z?{g8V>jGF;APYzdlMDa02sZw05zPGCD%c$lKI8z6k2?06NILe4Sf^QDtKs5zz3V135s~fq_f{?Trs$<=+;;dGHYj$RM{~86n4B7RfY6%ft0NF8r>S z9r;}^I`X?7c454vdBKB!{{c_X9-D(d1Uemgc7SFkA;;W+%0FwV;$To1cy!Co&_oKA zA^{iBDr%8w9+sax_?<4hYM%D%<%x3S-zEqO9!7}gp&kVX5A--PX#eEW%d?P41PC9z z-Z`S7QUtU}o4@rhXfUgrRZWwZ0elz+XaHI^!-1QDf1AO#LyV;k4b>tH{4IT;MR3j{ zjG&>IZf6;5XBGbDOAHJQy#b7!!7?7*!5SXDEQi30tiVeTL5mI{_PKN(Xnw%o{DZe- zfAbH1{+1)4Ip5Ahj-4mn`L~G(yLE){7&QOjDG_fz$k=>{vH7P$Y5VIbi1|s7@K1%3 zrp^<`Tv!ZrU*CY{_ikqamu_bcmtGG>SIdL^?Q#GA|97!GP%Q7$%?ujYXK?BC7I5i2 zaNq?C|F#1!tHCotpm6SV7I5tRaLieR@ipka=Wb^ikf%UCYSIIp{njlisR5enU}e(a zWjN+6!RXN~XUrTr}LB#=;&czez&79mMVf)r@R7f15(iZ)Ovv56kTIRVK-yh2-@Qmy1nsfqcRAL2piZkhp2MS?->37Jqvc(n z;c?Qkzt^fJ^=Ydu_^*T$G3i$TAO88j5=5J31U0~LE6y#dVAH}8~ z$<-X)r5rxpsSF<7+?L-#&gXYK?$i0`#YP2?i%Yih_lHA`foLi^?b8V!4}k1;^6dQK ztNFsC^O$evO%Kg~{8JBlY98dDdcafjv*JOY&buBvRmQ{o3Y&Bqfo=m@Gcd>9XSf>xm(0r}q&61~ORpv4RzS#bJt<=++y8hjH1 zFWPKA%IMM&_20E4^gn2d9<|dA{^1lEa}%%JcgJkOyAGgVr22{(H~Bz`);D4ho!3NaVaM z2alYB=JWZtg);DO;|9&Zcs3tpbnNi`-x2)Z!}4(Hlb1E%G!F6ugQw;Fa*LOsoivd6 zbLsq``JvPU>_ng5fEPZN*NdV-Th|mkEbsHTwf_769~xbro&SB4%R%YQv)lg#=mxsp z`WKFt-+cMqj=lIQ2adaqtp_TPd-OU>cv#*q5Am=(&fn(z@Be?#&i^kjgI&tt+3Wt& zqw|-i<#C_R3%-&kJ)0lC^kMcy$Jetoe+78H1n z{4PgZ57ce*=yhZCusrM`dBCIj!Ap-`A7%;A`rmENFZj2CJ<<{Uyu5B~=fc*)5C z$_OPg{M(ov`L~HXcChnrb7t%icI4j{&gj_T&e##m=wl7BkH2j#FQNeS?fmD{`P--S z-D`DlI&A#UzyPu%1yo2{zTREI(j)$<^?H3uyhNXss1DgJbhSM#pZRCZAr}K09uP z&J#Y2H@{zSW@hPfv^>Dys>BGI_&re4`Qm{zDE;vFOM}d8DFfA(&Bs8N7d3+pyjJk& zyy@Hd0kn-t^QC9!XJ5_FpbH5+HE;NK9_OEWz^C)LkLEGY=I8$$6%Tn_eDBHl-2+}e zf;Mo#%SR8!6CR-DW`-OL3?A6aM@Rl`xuEiq3zVop1(8EX)_>OyUr71r+H$GH!mC$A z+Sl?1f14)Qm|JCP;8RV~z~Kpr5i!r^V~n6o+Y$WVvBT}ZujR4Qrydty`gT6>=sX3> zsV|m;5?b?rPX4w8R?uOtH7W`oom;@E+D9g{~X0UZ`pqK!~ z+Y`_bOt0HN56i>+P0vBAAv=$GSbpYj16`X5jyh1hc{IOf;@{2;(!|J6dKeac>B!Ny z6Bd0Qy|()-Ako*&)82XF`voUvmVS?3+Y>h23?7U>!LgSDjlJdbq11IJrs3&`$v zD`*-5b3h(>X#y_6T|kR9eN+TMIS({j4QkvvGG27$-+t1?@+^NdXti>0D5Fm=OQ0kF zHUU@A4h3*K^pFex_CslnzZe<$+cq&VFgP~8U;;V7+C@c%zbSwTbe``4L(o0dE|w?w zn;RJz7@7|-di3%*g6GA-(=d!DT=*d=mA}mnY{pB789pj9#X+8+(!!~mr^A!kM@55w z8)$Ng@ntZ4osLhh>`HTPhR#>LzKkGq9J@s(J9b`h{C>fenWfvKmv^-_C~!`Jasq$b z_doyt8y+w``BDfRi;()wm4SboSO=RU|29`f#|}_!7slA(24XV4>;liExG*q)BjKeP ze4U$%=7E>(5ETtjl>|!l;B;(xu&lQE0HY_)AOzKij*Un`=!ZQB&w)dL!K2qU z(+m`Tpe6_Z_7mMA(;>mbkJHkM>(7ybJvVPH{*Y>3;H-k&(A=lmjM!4;6%q-JA zdTrlXf^C1v1~(tHs8|6bXkN|*`v%SD5HQ1H=kb7`Ig)aK8zP% ziXi6WeR^dx5%wcek2^EVWS?HyT(FK?FKt2QZ({>_jG2F%8)JtU*jLVs9bt?wSN{3` z-?8y0r0C6K0~ftFz#-N?4YY~|bP|?J=MA4;(|;!146ePwpyIa;>aJ-%y`t=3TP}h# zFzEbk&}Ab!uB``3R6yI9G+u;@u|O^r2CdZ9XgyHJ&#n}e}Z;*o_uji6y%r?&`~4@KoWgiAS?N|yMpUQP#p<6{|;6q zzGDGxk^BAfDRe#&ly9s-=kjQtczqCj64g16-a00aUfoB=pbb*Gzs6@TQGBnGjm5UBe*=R0@sfa7dC;qrx?v9P`lAp z^Tg|o{PN&)oRKb^bpB@0ab&Oz(giC!z%?d({=?DoKv@x%G8kS2gVumT40W^ymB6mx;saIyyTD4| z8{mq=fuZwa^C3{dd!XB=m%*{~q~rICF3dht89*!JUV#FezikR+^Mc{Ymy5xgK#gJ0 zwmQR0FY`dX_|8)<-62yM9D4&9T{|zr3~=eZW)2rdGh=J|GwQW z;F6!gk$+nNXgvYr1<)=USIf)%;9~_1FBzV6wY*tu4q8?3*~{Vp>VJT0PEcfn7x8RA zkmlI<15|e&V`gB`WnyGtaD>#HzaTZItKrF)WqZ7Yyxd>0F?wULqN^AUfFnkP)&5nvDXWfq))(`5-t$`B^ZPJcMBXMZJ+-^ni3%2 zwg`dJvF3r7691u*g{39sYI%{r?IbAA_69K$@Ol~}s!N+EGT`$1>pGua*=2elho5rn z^<+d;VbBK9DkE+NQ22N-LK{J#DgqqeJwHKfFfRD?%BJaYGdOmOG=qY#^Wyi5j?6sG z9=)vjMj#I#g4b;ae}b12fRg2X2-EPAqvb(`;K`AazqmsD0&4$& z6<>OJ_Rs(S;8p{8`3=%(5or@p&TCNc={4nk4mzGecM0e+({4uzkKTv~&(1R*y|$Y` zHG8+Iv>Esyh7vW;&abY9Cn1~bAQLx8M}NI+SqxgX<-qXbbt5QFPP!T%@ag;nJ=uf3 z4JPK%`3iJUz%(R*UmyY1c9;s#fj7OPuB;3UFE*eFf@afRSa+bR)Rt#pc)`|%Dp)4X z!0=)sn&3ep28I`Vx=~fuC^0a+XzxW8Oy^=?c(JJuEa=nu5^@yHBaoA9`$3JQmoHdb zL7~Rm_w4`w7XsJ6{Rd5i!cLvhePIGRui!lBXqmN*p!t=fkTYmN9{tn!|3A26@nRB4 z3N*k8K6OTSGg#9sP?w|iEq_ZB_|zHn`0{|9S=5^)-~yV3sb%nJ{m1!|x)hCddn_wwyqno*;J5-XgApkH8a1pxuZ;90wn9FoIc}F1;}V|6N;eSNOOZ zo_x)nHo>Jg;=ilq&3YT>UKYuVFFFr-^zuyd=;iV9VEl-vp+E~&Ib0YIftLO;xiB8G zyj*mwL;#fUTrF?b9r5VqT_OP5#_q_>zb%jjv>5-90OJMzZGoV<9WaB9@sLO71s}#s ztp`B&xbwTP7J+qu+Ds0N9=#DP;PZnYNkD9IVB+8AzznKHK>XeqCa|Nc4ZpedvdB4J zeBsi0z@wL?nSUEdzX#*NM*^Tet_$NS(8Lat3*#wA%Pag%@}Pl^Z4S(!iL)c+CZ64{ z0^q|gzJU8=z7jsru_KqxNB=KCZq-0a7j=cqpE|&M|+WEIRvh!~X$j5lU7+2)J3$j*FNC>ZhlrGfdvqT3>HPFUVjbuptskIM zbaNT_TS7qNrq;Sme7p?&E#`kgg}yIzO&M=4A1}iTiFKfL4KH7GaI!GG6a$Ubbc=@Y z@iKUJUVSMJ;kxqiGJwwU2xTaF`SLTk6Azi6f|PHN6V^3A=X-(XV5$UsJ5NAPVJ^}0 z?EDIk_<7KXM~ZOJ8I;hIc|h%XpKfE{)^GeRAkz`P1RZ5m@j`wyZeY~Ri|pmVDQz^9xa0yjx=R3uytpS1ojF?Q*OY;gshfCpN!@>&=aKA=S< zK8(M87{9q#J}=?x7WM><7{2^}wdFwRW6-Wur1^d5;R~ST#Ng9i%i!Dkza$+Is4s4? zgOU#T1mAdYQ2u&xcQxo(zZV~T`8TTZx5WSd|KG=2)q@8VlJ3y97%b@+@$fRdxVst@ zln-C{va>L}1f7ltS{GUhs@l6n1$jW>cIBlcgv-Rk%kaUIf1_B*tCznaQ>vixBGmIo zEFjlsc=To&cqV`J=!TZKdEgTFALwowP*6C6{QStL^WzKMJ?spQod>{q#kB=;j-mz1 z*g7m<^=4$crolob(i?2Ixc=WP3c=qNT zW$3Qu@aPU@u>9wfeB1{#`BK3OYPFXfsXXD*Tm9eF@_X$G!vin9Kxq%Y|I`E2R^#99 zE8x@Z;o)P=dxndbq4N}f3kzrnv%3Mb`U5o9XT!+f@{xgo!G@_s7jz`STm}Y)wAM?d z>kSWpT2!Dw>SP3m3V0wj4Q_tx$&x#c%|95+T75zNL&MvUIaqjq)}`}?$H50op1m?m z{M&^2w?%{cM~t^Tdt;cGz#aBzM*i)WK!w^3{_O`WFBWn4$}m~pP)2o+#gHc;ICoJf1;&x;jcv&iva#0{^@7Z<7gh>AV0Q1ii(- z{gUNH{uX0Uf@?m+=xceQ^oHSqmx`eKr$FX_dIb=3_JSs@nh!F%8eRf>Hf;i^o7*cB zCV3`MiRvrV1tWz9D8MiK~4r;Z|2nNBEjg`d`CX7Apo%@E!E&`~^CXtavl15c&ZtbORxUE-xo2>wupFqLS7E>HOP_y7OKpHDzjkL}C;f;#yi(f1(VY!4N92|DK- zRDQgu-t+(e>nAT%K-68BFF|X)c7e8FLF$zK%pkwGfM$>(UIlfDp(VuYN{}4fpSwUu z##`&Ea)A6f8{Bc|1!bKV*36)i?IP(>}PulIJh~{{H_TettK2erp-hG9Ef#E-Y%QsN3-S7#dT*g{1d3J{ifIHWqrAeUWNZUaTisD(0y)G)C zUab>Y65jI$&p`3Fxq*7#;4x`OYhM}u<_u6)>2_7<7U}S04%Oh_2JXebHcp%1*!YJL z)Cy|{oqglc%X>y1)U$oy3NpT1q!HBlabjj^^yuZiqzvjLodRvA29?;|kY&S;po32s zK)KHR|Ns9`!QROK9-Tie4}0*tgO4$v&cMQOj76T|r7);01CRHBuc@;Z=y<^hCKv|AV?GG=z35pz5z-^di*WI;9)P_ z1Xhq^ze8F`3NI=_TCru;1ds$Gvud*PGQ7C51d>@@7+4ryZUN;w=zWIZ@Oue5Obr|^ z(0Z7^B@OIOMp(h(12VJom`5k%{L>JaQ-8gvDg!z71E@*{rFYO&fseK678a0OOTcdJ z17)ihr~WfD_;h~sJl=-LaBUzNaE5EC24%R9FP8jgW`K;oL)-_N#bn(s%gq3u#1v@& zB?w1mmJW|z-h+zZ1o83}WO4%3A_I*hQw4ex*w=zovi5YV8N?6*AX;x=it$K5G3!!zs-e-31s>cAI3wk7eL+B-3%+Di$O(nBB*4O{R^5) z_yZ}UK^JCt^zzP8$CV!!=|Y14Dk${2We+p)GQ3O&uW*pv&IDu<@C6fylMm6{2GR_=n!=-7whE-#lYe6@1Ahxh<4b*zp}o99>f8*S zhg^Cc7`sI#zAOeW_;NsP&o;gREx+~YE|l=>T?bl^?Advy^Ri3lF?h==7hH1w_3Zrb zXdNrV-y8}`1-&jR37}J83LL>l?1EPIRCx5Zfb%!#+;;=ejR>8PWjty8`8g^D9y|X3 zudfGTk50%@MQQx`kWIy4ssI1~*Z&7eO#shaxPY!40&g!$QE_-7S;5W#Y7;dwGB7x_ zd@IfQ%r78%#S*-EQuYLdZUJw)1z$sRieK+$nGSSc*U8WP0;+Q?LHp4zK+aXT`I-OF z4L1IeJD>SuP9xnx(|80F7HCaP2hc_((F}+kvM~@EveO=mUHlrLYll>I5!QX?KXemf zR|M29$R0T@AC;8P{4obXu6*4BN{5CAURM79|9^sSw_AiSsLTfKQ9v|Qd_ac`y!if` znE^B;1d^8o#RT|}?oQA=(Tn1xpkf7HkAn_Q@Uhm7WdIc`x}auNw=Z4gkH|Xwn4-1dZ(=MII ze0uXM{!akkLw@MsE6641t_;52si0G}`CCAX1$;rP^y?(peY@iX_}f4mryU^+DS{at z`L}sPT<8dz6+8F1j2HM@Q$ewJ+(jh;RG9np)+c}t*8(5&S4`CSfpbO#7DS4aqZ z^1EGttb7h)1(mR%GTibYe~S>P3hMPyDFC0}3R;%(qP~)yp&N4c1Sm;?Hr|8IiA{hm zgYyNS1qRCA3ZV5%puHR~bS{Hea<-a)JkaeN0Xm-5rx$c^4CEAi_~BLXgUP_v04Q6d z9aja)>LA~PwyA@9)F3wU74`frpjG(bg9*E*sDRj=OyEv|2kh1q*f0w6esrI1+04H@ z3@=N-RgeQ{6fYYzis#Jk*;~zV@F@r5QU2|3U3x?Rx4td$a5X&enh%^VTzZ54yINkT zH+Ak65xDrO^CGDF@#*E^$EKJiDgJ~sg!ZJ=}DO37X}8)tDe0s+#DYKZmfxaco;l75AkmU z4gLi|(jv(8mx=_#(4zb$xP*oj-p3(@Iw-0@r8Ou; zr19rN)^viEVJpaeK>I{PR2*Ie6tOeB1WjP@%QJX%^MkLEieY46cyU}2)Tjepc);HR zI=KLJNWCxrMo{x;?w|kvUp$}n@4u(zG5!|Fg;pP5n9ct8|78(qv!+kCIk=e!I{5)n zT)sH_4OCKshC=vTK&QNcJ3FA^^cUU>K;nFr4iiS@lk=5 zlM26i7+#zP+1>4vg2=g3+`#!F8&2_(nWBC5PU^_V-5|jNmz6%McZp604Tm{4GkLF{bWN zfo>+tWBg4ZUh9EUj&3K8*Q}uP0}psK9s#)qrN&R20J=jy08&DNZreQWqT&Ea?Jq$k zG#KGPsy19UKS^FaZA&CCxjmWN7j`E;IqaqKfQ1IRCJ;De_G zTvRGP^T$9MP@nlDSdSZk8$qH_T6VVq=kP^@jBuv4IBkUncGNJ-P< zf1u6R0=$z!JpB{=&C!eu44}AbczFsUaFg67Zl$=kXW2=fD%c9)Alfs4lnGUG^Q6_@99jKfKv8@jDO0 z3!CX!n=PdvIfdz<%=q%fgip*2FIR#SAcIFYYvgwxhR^)@3Lf38b|7;#Q&bH21r;F2 zvU+xha)47v^F8p$xD%)qqy8PG71Qm+()@za@`DGz`!Ua6kp>@FGX$ld^l~-m%qh?z zm>w_qKrR5S2J`5)z4eWU!L#%4OD(YZwx_@GfQL=(N?yHW{rms_XAgdz126NzuEiWb zjo{ZT0TrJ$Dh{Bn0H9rZo}K4BIM4H53%qXOEx zXZWpqjS6T?2vo~UfREu2u$`pG&5$;sTiCIiN5%3Ke{&E>Cuq%vYj>E72WVG<3#;5W zP{#8RaO?)13;cr7@`4Ay`yroRmPU_mRz{G=EKm6GJAqCW;DD@pe8}O#c+j==5`W7j z&<2EV7ZnNL)&oBLE(ct@JtRO!ue6*5^(VKVOyht5?K8jDN5|%$!euO;-3|iq`!#*L z{XD?aSMUonxgb+l;L9?(9T`vfbRP6%JkWa5hu?*@@+%Lhn)d*0kBVSE2y($q{_Q7Q zPnM)xo^t7p{O`!W&4baA-}$mD|27Hm?k2|5E}b_IzGP{B$lQF8k$?R~&)yIL7SKE; z<3$(#ZB`)LKpjO_#vdM*7fatbHb3SE4{tj5dNW>r)clIkMe&g1U0=|D5|d5pU?kAszH;ka89oToqYM;rquukSZN^}Z+ndN%_P z#@C=Fz6XB@ICi=+cryOA+yYKO{H>orNl*in+B9lZ9FUJpN1k{1e$#`0|H0RrVf|~! zIk}*rd!b+d|3fT#JryxNZFr#dWNE7-|8^G@4v6f_63{F}w;gym7PO@rshSjf4=N}? z)pki1tcv{gqGKnhhyZtOQW^ML!21TQRhvG8$_Qp~8R4S>JraR8=Q9t(3-QUILIU$x z1YSRo?9WM{V&dV8%y-NTFAsyyf)F+R%mbYd<8R#nY6f&(dAS23CH0wy;q`mCe^KW* z@a0d?#YQfjkcvIgrzl^5?#ENdENGgyc^zO`Q2t9jt`7{0YmQ8n|;OcnA%5?u5_xKyoJ{|AAYX zA77My`~M$g%j+4?@hot@?Dpi}@1nx-y4eSNc5Hu*Ejw~UpU(3>y_-Ngv0?4Ydyw{}XXj7I&=qJ!3D*)(Q>{b}XWtUsKlJIXOMrFFK?l)z zcD@65&EsVFo4Y`Z*1COEKz(xy&u%uKZq}#oKpB(RuK9IPn+V=D2i?~B;z=e-*Bmr+ z>j9eKM0CwTE3BZ${l1uX7}6`Z02Qshbr~?1KEvYQs+AD6JYcnD1+cII*Z-YwQNm{5 z8i?8lpk`U`Hc%%VrhF@?I6_k{@5&C^68;i=EdXRZ8az%2ZY)DW9NbHUbS67%R6spV z7nK5^&X=(6Bv>BOi$v;drt#-PHhY4Ufd&ph-P8oosksjPnm#H4FTN(TGrar-9vtNZ z_bb1E`jztkKK$`}Fu*K;!p5*1C3YL5UXB^7BL*|9{KF@Zw4jC{@0E z;qro+;pJXX)d=-ZHye0(&Idf)51U5>HFGUqM7#i52kFLwc4~k|#w|QR!*fSpT$u>U zG+^t^`CCA@ZTVQ6?tcTaeknN5_`!OetKRT1ya??9Wf?yW&*N_3NkwQMuMZ?=33l4Y z7b~ALGrY_II}J2n0&&+(aPu2B4FPf2f#(Q!od5+xcZdqiU2kHM-38hl;bU#84tCde zu)83W5w_3qO-6iAf=ot;gIv_`7kU4?4>Y_$+fjFcnxNnrNr<~N!0v){ib1zqAct2; zIow@#{4MF=GRC(5H7LBiL7dK?FBHo_w*Gvv@EJ41OEYLVcyx;pJNRJh14-S73L0 zc3ykA1T=)-Ejs@d#OdNC&%qZ~dvuHTKoq^ygm|tNuHw~8c8E|GR0U|l)uUT98ma>1 zeL;u{52y+U2-gxxg&b&11$0gX3?mQMf))sz;Gc2;`9Lg>&I|n8gh0!-LF=#%86E)5 z$qViR9n!!*^#H%qA!Nm%^)w-&;h_7`G&(PM^s+Q~^x8D??{^n);op`n)Oob^0Q7z_ z(9j-az1X)SOeJqz4KMY|Fr~S4h6}h@o-Vo5dCR5KMI`}rsZGF(m7vAN-5_qak4ix2 zEstK7Nsi4A{(1DWG&(l_U?~yl4hP-j8^H1Xu1iOPP+Dh(!0Vaa;XL1Obq4UfeucE) zCvAdb2y`Y{0kk9zbo=RHh&xRhUHJFA3Gi>r6LM`mP|A;3$pv<&;Q_Z^73Q=~Hvvb> zE5(moJ0F0yrewTW16rT|3bZdJqxlhI^Hb18oEC@pTRpb2U4q;Ib?ql@JM z{g0`tgp<5C1tf|70mK>vrH^bmIW8>jlNzj;)}Rk9$RDD}c|ryP^O(=Wd@q zANX|q45$$f4BZYqjBY$H?}3M3LH*eshavisA^L8D^|k5qF*N^W;co@qrT%gwSTSTg zviUWmi{@iwM?>}}YJ)Dy5$O!$(DwMy>Br*Yv7j(V*S(b5ws+}}Ed)>hd3vl}Z zWOoGgeiHs|?4bRw(82i|E|#D9n?XwyKuZ-&m>3xNw;%B7eCXS&)9%+>qkPT%wYoU7}*5c}=@SMTPMg zf6Gw@1_s6w6$969@CB&`pbY}Or@*7>*^I5<`1@WmFfh3FikLYz|8fBJnoaoImw}`~ zTe?2D_44R>BwusYeBs+`((b`{0hG;DJi$wxc-ld$C9NJXgVUr6_6H%`)Gk`4Eds=j-MJjGaz@Tr6LfK6CB7=4yGaOw+M940Q6Mi{>fM zUY35)5f-59U_E+8CW6uzqk#wX?$xgz&Bs|hENfIW_*>;b2@xF6E}#f<={y7)&fl>2 z-+xG}viXPy>Nq2OKFtMmweKqz%@39z_1CQimj-B^B z7%zbQ=+k-1vzMp+Mc9322G`D)FTEjC3*dVh!kIuZ4Jw5}lT4OVK_`pww{H0R|NqM% z(99wv{dPO4H2;t<=L36Og@2oqLd$_tF2ub)hL_SnCmzDxM@ao~(4sGf!xM1yk0rqM zgP=#}Y4GIzBM!z>Y0bYF`CEEGx9BwgV&ZSjVPs$c&5(iS%N#qeIv#w=;mCN_m4EwN zSI|OkUr>Xkx0=Q98~EOH$9}Da0KaLJO$cPtfMaRnz zTswcdYW@Hl`y6Df z@^ABI0&Um>@6h$=4Q7Fipj~P{$mG&3;0f9}!Q;If6xon;Wx`2Z7S z)a~F)mdno_Ie)oy3iw){D822{9l+w*dBG7?A83!pJ&>l$&m1{FxpW4wfD}J->2~0N zs08IR$axe&j4qwGJ(>?e%)fZ>CFkYGj+{4KIvqHCEKil*dZ`b}0EikO4efkR$Y~v& z7d$%8`*a@m?L6bztK;C&dCb%DMXBIxW6(TQ^I@jucZ?pEcS}@Szm*vIcE0fFyaigN z^#4lBfzk)?^~2yL+lMFY00jZc;aVQurr#g%Fudjhha*+? z%K(*!OYpZi!E#ayXu+RPH*4kt9tMbNaJc|B52l`pzeNb5o|(S|w64gfo7M6G4+F@K z(mDLw0+{%>d4P_XN@F}#(!;;~l20#-0K_m@egn1D96+l`T^J96we^4|VO$`yFcOXj zL5CQFM?~2``3$t(fPb3}L6Ga=j&`&>SS$tE z$ms$a3KxL)2>7>OdOh2toAvTt9){P?CV=Y$M1O&Q`=yteJ2)5+<2j-57PtkX@8QvT z4s<<03m>Si*nYqhe8f9w&_4hi0MPISHEAHBTL)?|Qv}L0tqxl7+Z*K+*Xqrz4 zw6fc`H^qSq)V}54<_a<}l+mN}qa**eSWuwUfQxwek)R!^=0| zr0RgWzN`6-hEMkr@MTsW-IW5qpc7F%yG>L)I#0WHo^8EUqS^e4(YN!MXKzjb6U1Jh z&QG4r$C!LOe|U8M{C~~U@?Gg0kQR_$0oT^IC1xJo)e?@)e;G@3e7d)QFYR*d4gKfY zn-j(aIyVr9{_Y;|Rdk^35fVP#$qKC}OANXp*VBQv$bh1*`30j-Z;m??q#W)11@fn7 z=L?_ChySnnSiUcP(>+B6beJco5xX5UVg{Y$03sC!>Q-=AyZLk%3;1+rOL%lwE4*+JVrFpZeB{x2vpL&=(WBE@!K2ez!lTn!;D4|| zv$F#u$Pky#M?Rg!0zRGD5+0q^3NN%Du`+lxA7k+V)xV(q+{l#&cxDB)|A|Qd8lZJf zpvyfvuYp!Of$OlN;IiaDf6H7Z28Ql-P?`drIX4}|u)V;}z);4AZ2sX1KE3H4j-6j! zwDny;TL&M$_`L<}vzt(E&qG!Q@M09uAvP}Eu?!yFvKqH|7+hO#muv-}f8@r(zby>1 zt_7T0A!pWsBCDI-qt}nkr#Hln<8=l!-GizO@V+)B7yfNojG&-(Wqbn)R#(f1{LO1Y z>)E%1_L@0>)|xUwwqYefj=z5*;KKO8g@0QTXkL{Wq}7G-0cfw;;Svvz=7UV0mZwU* z!Q~$K!VvI&@)M4YKS8(5mD~drO>D0G+Y-QKvfZPL)eZ@ml$Y2W6?#J|mtxqCWj(F>?7 zJdxJ?<9~@k^C8Aguvp`-JFE;0MaA^@eJDL1#YH6vK6=-@$Jn~5pe9h z=c;X@;?nsEG~oYpBRB_~gL1p>L36+#P$#oHl)JhRh#>4i&lW+UxxvluzP8%gFd4>BXhj>%XhziF$A6UJ(vRea++G!FbZQw}cl| zzkpI`9VEFw7jR+x;mW_Q4m5FH#_V|TIfo154;RJ{E|wR{x0k58fLE8DsN3q&9STjS zm-t(YK@AgrP_q~8E=SAD9=$HyEFPV|Jow#_7yf}lz2y!pzlkt=f;L$_1f};E(|?0* zWDjKk&C|CkfehRSsy@KycYrEXkk(dkR^0|V%p;h&^El{!iR=8^|ASKBL~t6_WxNIo zq+%9V!?&QOG^hvyk6n25!Yp%aKFa9Xe2ndd8puM+_xvqkV0$2jf-(`bZgsJI;mPlQ zjenaH3;#Covc)vU3#FSqx<&6?K zs2_Vpm|txE_5c4%8&Ei*rZ>cWpv`X-__tX>Z+s141o`kdsPX36dCsTvF#q=dU!=U>Y9Y8A+16VPgdfBI2*X9b?sceSd zUQ2-TKg69(Aa`!z-{#E1zbzPCR9)}^H-f;6V6O6m&fbOZVL4!Vyz~U5AMVWT)AFT%dJ+dZB(DlqC<8 zh#Y*!whL6Gb>3`##_n7-)e_=lSm77|Y;< z^6Hn}pk}8$wEl1|@UV2Q;BNu#?{wS&avj)-pgS-BFNKWMwKFm>bUUYbbO%>>bbA*- z29Q~rx`SgpdPOFIhLS$>=QHsOGIR$CbOs1?JEwF9$ACs;oKry63D{cxHc>_fhK6d; zpdmMC45Zt+0HoWemt_LjLf3AN&I^#yipvj_*-BKwyvq-i-B?N_!Qz~kA1Q}%l<+uq zJFqCXgN_R-)o7@WWZ-WFZGG(yj(I(CLbr2_rE>~@s}X3N`q0aAP*n%&4|Pumtu=Dw z-|oTFdA0L|;@Re>e5Hq0aPYV80vD5hBA`3gHada_WkCJt?tW0fb-wU8_<+@e*-fH5 zFvh3b5$t5oUXckd-Apc>uUtA0g2o6QDF+CY_(J%XA1McjlsLF_9(3t^1?u2GQVx(P zG4SZ-@aX*YKY*jO&|InEsfK6&`CCD~&X*dX`OxlmPzw`O z3V;_4x$fe9R3L^*5nQb1t;1cQte+y{E z9%vjFlv_DKonz1`GcJq=)0%%W^0$_OT(r#tboR0X^TAgTQxAd;Mmtp;?a}Kqfdz3^ z08*D4)VuR!29*LXjE5L6f(}AvJORFmgSF%WXtD3X7dEdU$-Ola)IsF~7m=*t7eFhb zL5-nqUhfM$46hf$`&-Ca*|YPcPv=1wkh42ay%c)J&X9(_zb?Y3dk%O>nMdd8&I`@I z9QfOvKCtPloqt;yzfY&Lg-e_J8nH%A^8*Us!c6zSBp=#_`)R0shtlpmmp>ACJ4JfY$Fb zG(Y6;^ii>J>=bVP!N}jXor!^=`2~|_uQv3 z=B(0kpoGiO%8j4D)gF=&HNZ`%O7OtBvw>qb-~S7sL2yNIw&!r^u6FR~4z}>rYX>Pu?1+P+NRS0Bw*mdTv5Qkt(>p( zL+956FIYh*h;2K;KlK2puAX{G@j~-c0sdAoP*bS$gJbgpeizG&{8JBstd9iw+1f?L zf`94(jteEC-7YFVpaFi+B_r_o2DcDBnq5>hSU}ckFqWuzcv!lqIPkZC<`+P2cLmk) zPZ$^&y0cxni#Z&7S~!XU`K`MN6tf^N`g9i*cryO;?fmfK z#81!#dq~>>Oc2)p|2Y)MQJO$K;6arb(UChy)?E*2qd=Yq@EdrLM!3{VU zaQuPx>O$ks_KY7q z!^Zso|NoaiK^oxW)jM{9;FywS)~cuk}m>G_O_d09FgOuk|GV)B`OS_*-^^ zPU`{%E9lPgm!MskV0lnr8u)a3RCGI}fMj+4|Nq|`@E>$GN3X~v-(Hr9pb~_y^VES? zto++9S%;|D@VB!6|NsBnL4gt_P}qWI4ElbsF@REN>swF*-$ezq%7Ede3CITz`Ae6- zzCNMbnFE|bK%HJt3Eg~vQQI-bqj?YbR%{07776|qP?-nXIer5ak2NYDot7_Wg92y)?0Qo5gWUdCt9u81x26uS3gMdqC zkID^D#-0MEj=QMjKo*39PR;FZQ2}Z2>E?KG`4`ArrSgWLh2~d_Vie&KVcHr>nX5eovWn^G*?XHRe9a0zI+F7IG;Rro(+M|0CIE=g!96KR*eH)&1 zv95|K753@&Dsbui>Cwy6>DkNE$-m8$-?KADrNZ!k=WEa25|s$Y4j+{i&rTPW3}4W# z`sH7lDI8b`=>~>Mf02gtfQ_4W+xD~+5IM7OPN9ZvxAXirO zM*Mf|oC7}l6;!%$f=V~f&JdM~=HrZ(fB9Q>GB7Z--Y!*g+;J5Y;=Q6=%-jqfy}Z`U zpo~^4$j9K=4bkq}U8CaB{F)J*?p!Q?^EYn*?^_E|32^Ln|L@Vu)8Gh-Fwf58KHcDQ z$Ftj^!l&1y!vl0{{f8F;U*YA>0Z_T)sO+MW0CpsQs|e^OZqR&E3@8_%+4y>*Yj;)3 z%QkSQG>cRj2FFinO*Fo)npY9mYF|v-JyCDKu4?d7^ zJore!1vJ#MEszZ~V+LijJ2D>f>Ac{{2-;u{9(MKw4d{!$InDzb{bmG>jxd)frZxXy zFBO3v-UA(D2KA^)%)wKR;Qd*k;ZP*0(x;x?%s!nL!CBI`o71(MpIRF-a-1Ch6fH$K<-}{qO4BAXunu=J0|#a7Z!MQ?*ugu5hr0!Q2`CYfChL$rT1yb zK7Uuk|E~j~{rYY<4$Bx79sage44|8QL2Y_hOP4l|5?ye832I$~Qz_`gCzb}!UY0hO z?f?!~%M1KXpgaYyZ#wU|bUtwGjZt9)T^i-ptFsnVoOt${=y`O0{10(P%Yo8Nx>B2AI2ud+A zDmvv;Uvu-zGq|??FLib`1SbcOk6k(|5*l3;NWis4Zpcs9x4&(_F(Be*ZlBb z^EpP)n49alP7fB)Twd#?(&H~d=h381=ypnIJy2ri)63FecmOoz%@6B$b%C8{c=DJF zqY#5fH<+8|(&+%oc^^6)W$ZYkCQ<=ZJ6|NZyqJoe35gQG;JJ48jN^-_sSceRD#ZAiE|cHVFV-7xX7 z`7q;)^4tIagVb2wDu3?Le8d29D++{01q$T#3P`2 zz*8?PAFwkZ=I4>eKMeS{frfj)qiunV9-U{wqsvSsT4~KcnE6{ez%zwE82MYSfri^5 z4uKA^!TR5jDW^ctYzAm#rezIe{fb8~52HtSu*8c$_d!cSU0L|Ig@VQrz-ned)iAyQ z=W+gRu52E?wn^{)|L5Np$_`%U3Lbg^4>y;zgNB-WQ#nA*4h4_i8dt8@8c0Jr+fRBh zzVz$_ZK3pRKEm|k_62s(eT)1ppqWBP{%t%ekUNMEKIBMaJXm_(qnp>`Fb~7)Gmvmc zcRvr*Z7}!S+-GO-=w)?%4|W_YXcHK8vzLpC0{=Ew_zW1R*Z|EeLR`xRcP+sNBdCq9_3!`x-thlky)L>uUcDu{93H(o z6QJn_&%BA{PbLOj^ColWfX7x*=S?_%GLb%S^7#bjya^~Hprt>b?qUg0i@8M`)JT58 z77^ySMxpdPq9==>dC%Y!@&FG0i8 zpm_4=X4M4oli=$~c_l%7@WDF}^_(DnJ5)bfdlOWNKr)qQ=M~UV@t_(8v;_;AvkV|P zD~yGK0aOk0x72{zn~g_6`cN8-u=)a2jf3=q&K(2Mph->sZDH{I7QhM_b7lMhT4>xI zq9XC4^A0-$7HzO;9B>v?Mb?HzF&qE3FnC&HK~j7Oi(=6Dh8rg+Wx6mP;BR@z0(Vlc zY0sqH(a2bf(rPzg>i#=-WiCD&)@Ro-~a#M?3Bmj(d**I2QnuD z8n2)!TF`j9E91e(9BGV)`CF{O*53ADo&z4B;D?W9gNIT<+4D8%kR{M0V=a;OdgCEL2YNB-byB)&Kecaw526zwGt?N3_N=Sn0$I2m_U;RAOQuJ&Py(gKS2wT zH2All1PyM0`j7t}{{Qb|`IW!b6m)=4^HC-r%N&&m$hx1GQ$cM!k8W1aeLM`{g)^Y^ zj$Zy5fUc?rdG`c7Jz3rY7lBT%K(_;L0S7Lq7zCeI0E&_Xc+?(uQ33D&2Td4)lz`6w z;NRu|Esa1k@cb=&e_^r828vYg-kje{iKJe&`0nI-$^KbKJ^ym!+O}3>mo&c?s zG1>!K90Hnpg{OUeXeEOvTs(SBLDxIKP`$wpT35#nnkoc!`V&Bt_@MF$lKw&aG{c!d z$vndqRP%v)JI=i>oJ^p+0}`$P-Nn^>7}U!EEv%VX@ zI5z*_ELV5!Jm8hg(&WK-;r|0rdIjHBAEE+^1#qpw$luZj>QQ2z1nC00eB~A7FkzI* z&zGq`LB|Q>mjC({D(}d@4a2??Hqca8X&<=Z1nQlIs4)9>yGnpcc*YC-ExC|3l4mau zi%;hvs-Ukw1pl&B4f9r*R;4yg@70}d|j|!_R|27vDCfFsAj{MtvR6tvE89~GPJ}T^> z1a`uQ@ge9eU5F5~2fque!cNfc+y@+vj3+!hLG$ScUV4G6eaN~f7ZqsOz`_MI&(Tk^#nLMf zqo4nUdK6Uqgs5w_HUp=S5Jbsoa;vH;9>CXEm7eD&D07(+Pz?VpqgNH zu8ZXhk514;>@ogr65s_~;HtHxnt%IkAI8VvU;_oHiwdhFWM&t%(vA@{Z}B3fmKjtX z`>3!vc7kS6T~xq#Y=Y%HYMDWW1v99;@#y^N+Uvv42r4*06B(|ICmk6Nfb#qc#v`l@ zE|%~3TS4bazT^dGOa_n6*RR_=x_PH;=V5r+2lfwd2Z#+i>Di;3w+6%p&0c$S^A>>E zpq&RueLz_L1MN9c@af(O8bovLj!*FHJmcAU)wlB)Xac{$rF$Z%0}q<+PXVpE0j;-z zhRTH%0{pF@eS?mjQ&d1LXHY$Rjf(~3Tj+{0m`c!KM~PqaFOHH*pU$5z1pEH|cRcPM z1M1)VfR-LSe9`w9JV+=6o}~qiTY@qSc>W4>WLEPLg=m=IOXoh&U9JpzO z_b4kl8B1qF)+{=JmTQ6w3Xal_2_TCrdjI`*>~>G^?Op>OYixeO=-BBV!{1Q|n)tin(JRv6+3i~3)5`;!U1S8!CxWNz9yltqm7D`}FF$Yu%`YAV zPvmi4e&h(6VBGB3?a1P&+@b;s!;+R?!V7d99S8ud8%fYlT0Od@Fe57=eki9{1H7c!5i;nI1q^A>y> zQPQKE!>98RWEznN6aX(lQvjg#e$B@jU9IaxiuzuI@2dmdZUjo(zM$O62wIrq+3VxV z23~ChK6Q@q#K8vwjE7!=mL4D`5kY5~LMIVH^MEgv|AQ{R=mD=&1Dzb?2x`H(f)<~H z5(%hm@x(rhm;)&z9C<)GptFc2b)ddI;|cz4pcb|VWCrmhWCqa&R1j?g&melhXAn<9 zW)NeLW)M9Y4?dD`Jor!ma+bFz6X*(AP$licc#82xbkmH29?Op%%CM1X^xCX_*&mksiyPo4N(ELe84Rtm)?T^tp`dHTsuFatmENwkl>9#vhi4i}v!j^n+&PdL2PGves_*>E=DZi3e0{ zID!rb69h#x^T9_FpkxI)Og@kav~c2rPvu5xfWmTtD!Gufv5Od5X6l*C?Qq^ZB5FgyuAe+#tE`Cz@9Q?Cf)#aE7#36yWs7!UHdq=WKN^Bxt@L4yqZEued5K*bIy;kq)q z@^AA6_3B+fwc$2bP$>baA0f9MF&^;gX6@g=13I;qk)g~4q!F|M!aJ_JTT8p|H_`)>`nXSF)ei^Dw-u1QiD0@nV!(6m;@H z^Iw+I*&s{6hoZfn39W}9@!$n2b<-G6@V7jHv@Jb)d6@XOMKOU+?eysUb?`9<<6-{& zx10a6@wap^F)+MP$z^9?ya6&8e7>4bw`vi{0pj2-t>6>C6C%Kc%Y4uUk)01=(~rko zR00@YT)Xz~zfb4GU9Q27PRCqSQa~%a6JA`n3L2w5=-GMXMXTSx|DAKdbE@F}sYfSh z2{))c-JLDq(p@a!+xf|t@g1m0vjCk??BHwpmA@UdiEqdM|NreB8-M-#|6jgb2DA~@ z-l>=6DyR`)d4b>k&@KiC1_sLu{7#2Jb6Lk-R6;;f$6ZtmKs5O5u#KR})aGC8WvsrI zU&~@WJMVQvoB}###o7<-^cTi{|Ng%?=Lj>DRhZz|d3=e=#zy%$WvgX(S|1Z{q zq%Du|w@my6x_0B?i+{fV{=aO2bb=uBC!n?g|F%$20C<4n7Cdf2j@{!szwofZ8Z7|ev+yPq5<-KKLxXS4}#d@pflRo zeZbN9^81hf|6ly_26GTm`S8d8|KJ!t{p0`tm+GL3U!DQnpnM5SJ}<5^u`_gssDwCn z9&No;!Vg*^5b;6)D{|`X@T=3!Y&Y*2UjE6kB zS)Z?tY%?UUAsjynu1KOpM_y+LhO&=w<558b1eMHteFJe)RxA8FVQG(rmPi<&`7 z;9zD*?NXu!8Ipr)1FusDT|S50XWj&wv*>1xUd_V*SLVQg?9R02UrZ&-Ap43uKm|Xz zln2`ZZW(y=x_}lyf}7o-!3W6RA5hPbZ8d1D1h&Z~jqwnFE2t&-x_<(?`TQ+TpgA<~ z-X+j@CjT~PHvVnF@X`~sw&P_e$Z~n`{EkPjH;YH-trsGXK`s7ZCeW@(kIuueJOn-s z7^!;$-tQI`?9uoJ)HU(wm2G*-#Q^EsI5z*_;BR*attbEwFf@BG-uV9j-0uUml0sCV zVaeYj3mNl+^+R8H90O%F{ua=(Lr4B?G2mV_sME*44LlN%s{t;LAx80UzYU2K{+5T3 zvfHy)gav%D@cxh&=82HGZw1hK3L2e|>3-179tNOe@hm|3)B$u>HfRrjXA4*l zXdDX^AfSOB572QD0ia9TBS72?5Vrutt?=lCtfuhkgq}X!32AzRjtK#633+V`S|09t;+Jc?)6s zu(_t;F{l;-k5{3D%#LTE!6q^P zbTS8`KLU$?=t=jWWZ(j7R2+N&y7LE=5DxM;D}g4$92q@&U7VP}gZ$wAjo^jVFCT-; zPhOGbJPa@Ifm;`%93Zw7Xfz#mzZ7Ja*}|h&*5?s&{wvpl4DLbl9;lqe8hR!~K*To|cQEm{JYxXQ zw=wg#fQBeQ^$LG$4-WI9nhBW4$ln?O)(cIKnRoG~N6^V#2=`$N#flGz_`)VXqZGfq zM-P5^jZTC-xX=bQ;6qekbx;fF@CN9(rEhns0H~?=bT6a|03Eyot^z<+hKmYldB0CD zZ}>6rsACDZVyIDJ1s(FF;M?n>!U3)rK!?EGZoSHoHcEt}SQrw7gS#^yMb-nL3d21Y3A^@UVeS zm33Uq!|;+DR68T0XM$r0Brj`tbe{I;-T4FDh%om6jiw5MS806#k5n*wbn`MU=3yvf z1>Mpp03Id^1l0iGE+FWRSWqG>t#skv<_X?z>(Lv?0lsVOp@bvjLH=!yY@qE5U>3V0 zvgYl4~<;jxO-<()kO74O!eBBG_PkVHGM}Y3CH+xZZ7IbzJ`0PeAk52II zUF!TTpm~rN>W-lEn~(6ffZE@n%C*e#-~X4Og%2-yKvJDYz#Fk&{C5C1eG$4RfUom= z!ruZq>E-oy(6}A0_$dkX?1aaSXzD^9hH_(Y&m24?a`2%5XdKN8G`$5nB9!q2;{|@m zmJnDNLDGw7cZiC>>tpcwNSObOUQ9Xz_n#5Wg(ZD2yg_aT^|3%hnION-a`^ZECFlZ| z7X~1y&LiO4zh5XrI53_3EucHfz|DHlCMA&HK+PQn64GDef&or{4OOg+rSwdH4OJ|R zrMS}Hr&I9wK~I0n?aj6o@(qBDI3aV1eJei{kT@psncNf9~Xc_;uIt#UVZ|#nKAv-3Yi%4 zK;SNJv4tY z@wY63v{ab+TR?-|5OW~=Z#+3(m_p3ygZkABPW0lAIR z8G3-m0T=#l&g_ni2YfmYcrxB-1<@cOCQwhbW)5VI5_Hc!LmK7u)B9 zLvF(_urI*Lr!#;9GYO&eOhJbprcLnZ=9Qeo!|-w&csdTWUdof>MLNVhh2LQFpl1+5 z%1^L;?hyHgzYuxQ;$jr{s6*rhz}J#V;C2t>L>lO3NZh^girMJB@fPsDjO~{^dU=Fj z{)P-nBDrt*JaBk0Kx1PCQhNdH{&t9b!Vif1JCNkzr&B0+beE_UfJUM!JQ@#zPR0b^ zA#&8W^URCzU91cq-J%a>!43iS;CDIX(d_}cpM%qb-|ZBr{zqQTx0MmPWa=QIB>^6S z01a}1R;hvyGzeq@omk=1>*B}(ub=q0fvRh89S51^0T1;vfogacMlc&Z?4MedSzH

%5_D2MWDW`<>&kc$ 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