From a7bd67e334db5c5d835c64f9c4ede3bd8e9c95cd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 30 Sep 2024 21:11:21 +0000 Subject: [PATCH] deploy: 47c2ccb616e2d3f5b98c95537efe0a596e660e95 --- base/builtin/index.html | 350 +- base/runtime/index.html | 186 +- core/bufio/index.html | 2 +- core/bytes/index.html | 2 +- core/c/frontend/preprocessor/index.html | 2 +- core/c/frontend/tokenizer/index.html | 2 +- core/c/index.html | 2 +- core/c/libc/index.html | 2 +- core/compress/gzip/index.html | 2 +- core/compress/index.html | 2 +- core/compress/shoco/index.html | 2 +- core/compress/zlib/index.html | 2 +- core/container/avl/index.html | 2 +- core/container/bit_array/index.html | 33 +- core/container/intrusive/list/index.html | 2 +- core/container/lru/index.html | 2 +- core/container/priority_queue/index.html | 2 +- core/container/queue/index.html | 2 +- core/container/rbtree/index.html | 2 +- core/container/small_array/index.html | 2 +- core/container/topological_sort/index.html | 2 +- core/crypto/aead/index.html | 2 +- core/crypto/aes/index.html | 2 +- core/crypto/blake2b/index.html | 2 +- core/crypto/blake2s/index.html | 2 +- core/crypto/chacha20/index.html | 2 +- core/crypto/chacha20poly1305/index.html | 2 +- core/crypto/ed25519/index.html | 2 +- core/crypto/hash/index.html | 2 +- core/crypto/hkdf/index.html | 2 +- core/crypto/hmac/index.html | 2 +- core/crypto/index.html | 2 +- core/crypto/kmac/index.html | 2 +- core/crypto/legacy/keccak/index.html | 2 +- core/crypto/legacy/md5/index.html | 2 +- core/crypto/legacy/sha1/index.html | 2 +- core/crypto/pbkdf2/index.html | 2 +- core/crypto/poly1305/index.html | 2 +- core/crypto/ristretto255/index.html | 2 +- core/crypto/sha2/index.html | 2 +- core/crypto/sha3/index.html | 2 +- core/crypto/shake/index.html | 2 +- core/crypto/sm3/index.html | 2 +- core/crypto/tuplehash/index.html | 2 +- core/crypto/x25519/index.html | 2 +- core/debug/pe/index.html | 2 +- core/debug/trace/index.html | 2 +- core/dynlib/index.html | 2 +- core/encoding/ansi/index.html | 2 +- core/encoding/base32/index.html | 2 +- core/encoding/base64/index.html | 2 +- core/encoding/cbor/index.html | 2 +- core/encoding/csv/index.html | 2 +- core/encoding/endian/index.html | 2 +- core/encoding/entity/index.html | 2 +- core/encoding/hex/index.html | 2 +- core/encoding/hxa/index.html | 2 +- core/encoding/ini/index.html | 2 +- core/encoding/json/index.html | 2 +- core/encoding/uuid/index.html | 2 +- core/encoding/uuid/legacy/index.html | 2 +- core/encoding/varint/index.html | 2 +- core/encoding/xml/index.html | 2 +- core/flags/index.html | 2 +- core/fmt/index.html | 2 +- core/hash/index.html | 2 +- core/hash/xxhash/index.html | 2 +- core/image/bmp/index.html | 2 +- core/image/index.html | 2 +- core/image/netpbm/index.html | 2 +- core/image/png/index.html | 2 +- core/image/qoi/index.html | 2 +- core/image/tga/index.html | 2 +- core/io/index.html | 2 +- core/log/index.html | 2 +- core/math/big/index.html | 2 +- core/math/bits/index.html | 2 +- core/math/cmplx/index.html | 2 +- core/math/ease/index.html | 2 +- core/math/fixed/index.html | 2 +- core/math/index.html | 2 +- core/math/linalg/glsl/index.html | 2 +- core/math/linalg/hlsl/index.html | 2 +- core/math/linalg/index.html | 2 +- core/math/noise/index.html | 2 +- core/math/rand/index.html | 2 +- core/mem/index.html | 2 +- core/mem/tlsf/index.html | 2 +- core/mem/virtual/index.html | 2 +- core/net/index.html | 2 +- core/odin/ast/index.html | 51 +- core/odin/doc-format/index.html | 2 +- core/odin/parser/index.html | 32 +- core/odin/tokenizer/index.html | 2 +- core/os/index.html | 2 +- core/path/filepath/index.html | 2 +- core/path/slashpath/index.html | 2 +- core/prof/spall/index.html | 2 +- core/reflect/index.html | 2 +- core/relative/index.html | 2 +- core/simd/index.html | 2 +- core/simd/x86/index.html | 2 +- core/slice/heap/index.html | 2 +- core/slice/index.html | 2 +- core/sort/index.html | 2 +- core/strconv/decimal/index.html | 2 +- core/strconv/index.html | 2 +- core/strings/index.html | 6 +- core/sync/chan/index.html | 2 +- core/sync/index.html | 2 +- core/sys/darwin/Foundation/index.html | 2 +- core/sys/darwin/index.html | 2 +- core/sys/haiku/index.html | 2 +- core/sys/info/index.html | 2 +- core/sys/linux/index.html | 2 +- core/sys/orca/index.html | 2 +- core/sys/posix/index.html | 70 +- core/sys/valgrind/index.html | 2 +- core/sys/windows/index.html | 2 +- core/testing/index.html | 2 +- core/text/edit/index.html | 2 +- core/text/i18n/index.html | 2 +- core/text/match/index.html | 2 +- core/text/regex/common/index.html | 2 +- core/text/regex/compiler/index.html | 2 +- core/text/regex/index.html | 2 +- core/text/regex/optimizer/index.html | 2 +- core/text/regex/parser/index.html | 2 +- core/text/regex/tokenizer/index.html | 2 +- core/text/regex/virtual_machine/index.html | 2 +- core/text/scanner/index.html | 2 +- core/text/table/index.html | 2 +- core/thread/index.html | 2 +- core/time/datetime/index.html | 2 +- core/time/index.html | 2 +- core/unicode/index.html | 2 +- core/unicode/utf16/index.html | 2 +- core/unicode/utf8/index.html | 2 +- core/unicode/utf8/utf8string/index.html | 2 +- pkg-data.js | 79501 ++++++++++--------- vendor/ENet/index.html | 2 +- vendor/OpenEXRCore/index.html | 2 +- vendor/OpenGL/index.html | 2 +- vendor/box2d/index.html | 2 +- vendor/cgltf/index.html | 2 +- vendor/commonmark/index.html | 2 +- vendor/darwin/Metal/index.html | 2 +- vendor/darwin/MetalKit/index.html | 2 +- vendor/darwin/QuartzCore/index.html | 2 +- vendor/directx/d3d11/index.html | 2 +- vendor/directx/d3d12/index.html | 2 +- vendor/directx/d3d_compiler/index.html | 2 +- vendor/directx/dxc/index.html | 2 +- vendor/directx/dxgi/index.html | 2 +- vendor/fontstash/index.html | 2 +- vendor/ggpo/index.html | 2 +- vendor/glfw/bindings/index.html | 2 +- vendor/glfw/index.html | 2 +- vendor/lua/5.4/index.html | 2 +- vendor/microui/index.html | 2 +- vendor/miniaudio/index.html | 2 +- vendor/nanovg/gl/index.html | 2 +- vendor/nanovg/index.html | 2 +- vendor/portmidi/index.html | 2 +- vendor/raylib/index.html | 4 +- vendor/sdl2/image/index.html | 2 +- vendor/sdl2/index.html | 2 +- vendor/sdl2/mixer/index.html | 2 +- vendor/sdl2/net/index.html | 2 +- vendor/sdl2/ttf/index.html | 2 +- vendor/stb/easy_font/index.html | 2 +- vendor/stb/image/index.html | 2 +- vendor/stb/rect_pack/index.html | 2 +- vendor/stb/truetype/index.html | 2 +- vendor/stb/vorbis/index.html | 2 +- vendor/vulkan/index.html | 2 +- vendor/wgpu/index.html | 2 +- vendor/zlib/index.html | 2 +- 178 files changed, 40324 insertions(+), 40247 deletions(-) diff --git a/base/builtin/index.html b/base/builtin/index.html index 6e124c3be5..bd8636c86d 100644 --- a/base/builtin/index.html +++ b/base/builtin/index.html @@ -272,21 +272,36 @@

Index

  • runtime.non_zero_append_elem
  • runtime.append_elems
  • runtime.non_zero_append_elems
  • +
  • runtime.raw_soa_footer_slice
  • runtime.append_elem_string
  • runtime.non_zero_append_elem_string
  • +
  • runtime.raw_soa_footer_dynamic_array
  • runtime.append_string
  • +
  • runtime.make_soa_aligned
  • runtime.append_nothing
  • runtime.inject_at_elem
  • +
  • runtime.make_soa_slice
  • runtime.inject_at_elems
  • +
  • runtime.make_soa_dynamic_array
  • runtime.inject_at_elem_string
  • runtime.assign_at_elem
  • +
  • runtime.make_soa_dynamic_array_len
  • runtime.assign_at_elems
  • runtime.assign_at_elem_string
  • +
  • runtime.make_soa_dynamic_array_len_cap
  • runtime.clear_dynamic_array
  • +
  • runtime.resize_soa
  • +
  • runtime.non_zero_resize_soa
  • +
  • runtime.reserve_soa
  • +
  • runtime.non_zero_reserve_soa
  • runtime.reserve_dynamic_array
  • runtime.non_zero_reserve_dynamic_array
  • +
  • runtime.append_soa_elem
  • runtime.resize_dynamic_array
  • runtime.non_zero_resize_dynamic_array
  • +
  • runtime.non_zero_append_soa_elem
  • +
  • runtime.append_soa_elems
  • +
  • runtime.non_zero_append_soa_elems
  • runtime.map_insert
  • runtime.map_upsert
  • runtime.card
  • @@ -296,21 +311,6 @@

    Index

  • runtime.assert_contextless
  • runtime.panic_contextless
  • runtime.unimplemented_contextless
  • -
  • runtime.raw_soa_footer_slice
  • -
  • runtime.raw_soa_footer_dynamic_array
  • -
  • runtime.make_soa_aligned
  • -
  • runtime.make_soa_slice
  • -
  • runtime.make_soa_dynamic_array
  • -
  • runtime.make_soa_dynamic_array_len
  • -
  • runtime.make_soa_dynamic_array_len_cap
  • -
  • runtime.resize_soa
  • -
  • runtime.non_zero_resize_soa
  • -
  • runtime.reserve_soa
  • -
  • runtime.non_zero_reserve_soa
  • -
  • runtime.append_soa_elem
  • -
  • runtime.non_zero_append_soa_elem
  • -
  • runtime.append_soa_elems
  • -
  • runtime.non_zero_append_soa_elems
  • runtime.unordered_remove_soa
  • runtime.ordered_remove_soa
  • @@ -1461,19 +1461,51 @@

    raw_data
    -

    container_of ¶

    +

    container_of ¶

    container_of :: proc "contextless" (ptr: $P/^$T, $T: typeid, $field_name: string = ) -> ^typeid {…}
    +
    +  +

    Recovers the containing/parent struct from a pointer to one of its fields. +Works by "walking back" to the struct's starting address using the offset between the field and the struct.

    +

    Inputs:
    ptr: Pointer to the field of a container struct +T: The type of the container struct +field_name: The name of the field in the T struct

    +

    Returns:
    A pointer to the container struct based on a pointer to a field in it

    +
    +Example: +
    package container_of
    +import "base:runtime"
    +
    +Node :: struct {
    +	value: int,
    +	prev:  ^Node,
    +	next:  ^Node,
    +}
    +
    +main :: proc() {
    +	node: Node
    +	field_ptr := &node.next
    +	container_struct_ptr: ^Node = runtime.container_of(field_ptr, Node, "next")
    +	assert(container_struct_ptr == &node)
    +	assert(uintptr(field_ptr) - uintptr(container_struct_ptr) == size_of(node.value) + size_of(node.prev))
    +}
    +
    +
    +Output: +
    ^Node
    +
    +
    -

    init_global_temporary_allocator ¶

    +

    init_global_temporary_allocator ¶

    init_global_temporary_allocator :: proc(size: int, backup_allocator := context.allocator) {…}
    -

    copy_slice ¶

    +

    copy_slice ¶

    copy_slice :: proc "contextless" (dst, src: $T/[]$T) -> int {…}
    @@ -1486,7 +1518,7 @@

    copy_slice

    -

    copy_from_string ¶

    +

    copy_from_string ¶

    copy_from_string :: proc "contextless" (dst: $T/[]$E/u8, src: $S/string) -> int {…}
    @@ -1499,7 +1531,7 @@

    -

    unordered_remove ¶

    +

    unordered_remove ¶

    unordered_remove :: proc(array: ^$T/[dynamic]$T, #any_int index: int, loc := #caller_location) {…}
    @@ -1513,7 +1545,7 @@

    -

    ordered_remove ¶

    +

    ordered_remove ¶

    ordered_remove :: proc(array: ^$T/[dynamic]$T, #any_int index: int, loc := #caller_location) {…}
    @@ -1526,7 +1558,7 @@

    orde

    -

    remove_range ¶

    +

    remove_range ¶

    remove_range :: proc(array: ^$T/[dynamic]$T, #any_int lo, #any_int hi: int, loc := #caller_location) {…}
    @@ -1538,7 +1570,7 @@

    remove_r

    -

    pop ¶

    +

    pop ¶

    pop :: proc(array: ^$T/[dynamic]$T, loc := #caller_location) -> (res: $T) {…}
    @@ -1549,7 +1581,7 @@

    pop

    -

    pop_safe ¶

    +

    pop_safe ¶

    pop_safe :: proc "contextless" (array: ^$T/[dynamic]$T) -> (res: $T, ok: bool) {…}
    @@ -1560,7 +1592,7 @@

    pop_safe

    -

    pop_front ¶

    +

    pop_front ¶

    pop_front :: proc(array: ^$T/[dynamic]$T, loc := #caller_location) -> (res: $T) {…}
    @@ -1571,7 +1603,7 @@

    pop_front

    -

    pop_front_safe ¶

    +

    pop_front_safe ¶

    pop_front_safe :: proc "contextless" (array: ^$T/[dynamic]$T) -> (res: $T, ok: bool) {…}
    @@ -1582,7 +1614,7 @@

    pop_

    -

    delete_string ¶

    +

    delete_string ¶

    delete_string :: proc(str: string, allocator := context.allocator, loc := #caller_location) -> Allocator_Error {…}
    @@ -1593,7 +1625,7 @@

    delete

    -

    delete_cstring ¶

    +

    delete_cstring ¶

    delete_cstring :: proc(str: cstring, allocator := context.allocator, loc := #caller_location) -> Allocator_Error {…}
    @@ -1604,7 +1636,7 @@

    dele

    -

    delete_dynamic_array ¶

    +

    delete_dynamic_array ¶

    delete_dynamic_array :: proc(array: $T/[dynamic]$T, loc := #caller_location) -> Allocator_Error {…}
    @@ -1615,7 +1647,7 @@

    -

    delete_slice ¶

    +

    delete_slice ¶

    delete_slice :: proc(array: $T/[]$T, allocator := context.allocator, loc := #caller_location) -> Allocator_Error {…}
    @@ -1626,7 +1658,7 @@

    delete_s

    -

    delete_map ¶

    +

    delete_map ¶

    delete_map :: proc(m: $T/map[$T]$T, loc := #caller_location) -> Allocator_Error {…}
    @@ -1637,7 +1669,7 @@

    delete_map

    -

    new ¶

    +

    new ¶

    new :: proc($T: typeid, allocator := context.allocator, loc := #caller_location) -> (^typeid, Allocator_Error) #optional_ok {…}
    @@ -1648,13 +1680,13 @@

    new

    -

    new_clone ¶

    +

    new_clone ¶

    new_clone :: proc(data: $T, allocator := context.allocator, loc := #caller_location) -> (t: ^$T, err: Allocator_Error) #optional_ok {…}
    -

    make_slice ¶

    +

    make_slice ¶

    make_slice :: proc($T: typeid/[]T, #any_int len: int, allocator := context.allocator, loc := #caller_location) -> (T, Allocator_Error) #optional_ok {…}
    @@ -1666,7 +1698,7 @@

    make_slice

    -

    make_dynamic_array ¶

    +

    make_dynamic_array ¶

    make_dynamic_array :: proc($T: typeid/[dynamic]T, allocator := context.allocator, loc := #caller_location) -> (T, Allocator_Error) #optional_ok {…}
    @@ -1678,7 +1710,7 @@

    -

    make_dynamic_array_len ¶

    +

    make_dynamic_array_len ¶

    make_dynamic_array_len :: proc($T: typeid/[dynamic]T, #any_int len: int, allocator := context.allocator, loc := #caller_location) -> (T, Allocator_Error) #optional_ok {…}
    @@ -1690,7 +1722,7 @@

    -

    make_dynamic_array_len_cap ¶

    +

    make_dynamic_array_len_cap ¶

    make_dynamic_array_len_cap :: proc($T: typeid/[dynamic]T, #any_int len: int, #any_int cap: int, allocator := context.allocator, loc := #caller_location) -> (array: T, err: Allocator_Error) #optional_ok {…}
    @@ -1702,7 +1734,7 @@

    -

    make_map ¶

    +

    make_map ¶

    make_map :: proc($T: typeid/map[T]T, #any_int capacity: int = 1 << MAP_MIN_LOG2_CAPACITY, allocator := context.allocator, loc := #caller_location) -> (m: T, err: Allocator_Error) #optional_ok {…}
    @@ -1714,7 +1746,7 @@

    make_map

    -

    make_multi_pointer ¶

    +

    make_multi_pointer ¶

    make_multi_pointer :: proc($T: typeid/[^]T, #any_int len: int, allocator := context.allocator, loc := #caller_location) -> (mp: $/[^]T, err: Allocator_Error) #optional_ok {…}
    @@ -1727,7 +1759,7 @@

    -

    clear_map ¶

    +

    clear_map ¶

    clear_map :: proc "contextless" (m: ^$T/map[$T]$T) {…}
    @@ -1738,7 +1770,7 @@

    clear_map

    -

    reserve_map ¶

    +

    reserve_map ¶

    reserve_map :: proc(m: ^$T/map[$T]$T, #any_int capacity: int, loc := #caller_location) -> Allocator_Error {…}
    @@ -1749,7 +1781,7 @@

    reserve_ma

    -

    shrink_map ¶

    +

    shrink_map ¶

    shrink_map :: proc(m: ^$T/map[$T]$T, loc := #caller_location) -> (did_shrink: bool, err: Allocator_Error) {…}
    @@ -1760,7 +1792,7 @@

    shrink_map

    -

    delete_key ¶

    +

    delete_key ¶

    delete_key :: proc(m: ^$T/map[$T]$T, key: $T) -> (deleted_key: $T, deleted_value: $T) {…}
    @@ -1771,43 +1803,55 @@

    delete_key

    -

    append_elem ¶

    +

    append_elem ¶

    append_elem :: proc(array: ^$T/[dynamic]$T, #no_broadcast arg: $T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    -

    non_zero_append_elem ¶

    +

    non_zero_append_elem ¶

    non_zero_append_elem :: proc(array: ^$T/[dynamic]$T, #no_broadcast arg: $T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    -

    append_elems ¶

    +

    append_elems ¶

    append_elems :: proc(array: ^$T/[dynamic]$T, .. #no_broadcast args: ..$T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    -

    non_zero_append_elems ¶

    +

    non_zero_append_elems ¶

    non_zero_append_elems :: proc(array: ^$T/[dynamic]$T, .. #no_broadcast args: ..$T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    -

    append_elem_string ¶

    + +
    +
    raw_soa_footer_slice :: proc(array: ^$T/#soa[]$T) -> (footer: ^Raw_SOA_Footer_Slice) {…}
    +
    +
    +
    +

    append_elem_string ¶

    append_elem_string :: proc(array: ^$T/[dynamic]$E/u8, arg: $S/string, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    -

    non_zero_append_elem_string ¶

    +

    non_zero_append_elem_string ¶

    non_zero_append_elem_string :: proc(array: ^$T/[dynamic]$E/u8, arg: $S/string, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    -

    append_string ¶

    + +
    +
    raw_soa_footer_dynamic_array :: proc(array: ^$T/#soa[dynamic]$T) -> (footer: ^Raw_SOA_Footer_Dynamic_Array) {…}
    +
    +
    +
    +

    append_string ¶

    append_string :: proc(array: ^$T/[dynamic]$E/u8, .. args: ..string, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    @@ -1817,236 +1861,224 @@

    append

    -

    append_nothing ¶

    -
    -
    append_nothing :: proc(array: ^$T/[dynamic]$T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    -
    -
    -
    -

    inject_at_elem ¶

    +

    make_soa_aligned ¶

    -
    inject_at_elem :: proc(array: ^$T/[dynamic]$T, #any_int index: int, #no_broadcast arg: $T, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    +
    make_soa_aligned :: proc($T: typeid/#soa[]T, #any_int length, #any_int alignment: int, allocator := context.allocator, loc := #caller_location) -> (array: T, err: Allocator_Error) #optional_ok {…}
    -

    inject_at_elems ¶

    +

    append_nothing ¶

    -
    inject_at_elems :: proc(array: ^$T/[dynamic]$T, #any_int index: int, .. #no_broadcast args: ..$T, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    +
    append_nothing :: proc(array: ^$T/[dynamic]$T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    -

    inject_at_elem_string ¶

    +

    inject_at_elem ¶

    -
    inject_at_elem_string :: proc(array: ^$T/[dynamic]$E/u8, #any_int index: int, arg: string, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    +
    inject_at_elem :: proc(array: ^$T/[dynamic]$T, #any_int index: int, #no_broadcast arg: $T, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    -

    assign_at_elem ¶

    +

    make_soa_slice ¶

    -
    assign_at_elem :: proc(array: ^$T/[dynamic]$T, #any_int index: int, #no_broadcast arg: $T, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    +
    make_soa_slice :: proc($T: typeid/#soa[]T, #any_int length: int, allocator := context.allocator, loc := #caller_location) -> (array: T, err: Allocator_Error) #optional_ok {…}
    -

    assign_at_elems ¶

    +

    inject_at_elems ¶

    -
    assign_at_elems :: proc(array: ^$T/[dynamic]$T, #any_int index: int, .. #no_broadcast args: ..$T, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    +
    inject_at_elems :: proc(array: ^$T/[dynamic]$T, #any_int index: int, .. #no_broadcast args: ..$T, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    -

    assign_at_elem_string ¶

    +

    make_soa_dynamic_array ¶

    -
    assign_at_elem_string :: proc(array: ^$T/[dynamic]$E/u8, #any_int index: int, arg: string, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    +
    make_soa_dynamic_array :: proc($T: typeid/#soa[dynamic]T, allocator := context.allocator, loc := #caller_location) -> (array: T, err: Allocator_Error) #optional_ok {…}
    -

    clear_dynamic_array ¶

    +

    inject_at_elem_string ¶

    -
    clear_dynamic_array :: proc "contextless" (array: ^$T/[dynamic]$T) {…}
    +
    inject_at_elem_string :: proc(array: ^$T/[dynamic]$E/u8, #any_int index: int, arg: string, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    -
    -  -

    clear_dynamic_array will set the length of a passed dynamic array to 0

    -

    Note: Prefer the procedure group clear.

    -
    -

    reserve_dynamic_array ¶

    +

    assign_at_elem ¶

    -
    reserve_dynamic_array :: proc(array: ^$T/[dynamic]$T, #any_int capacity: int, loc := #caller_location) -> Allocator_Error {…}
    +
    assign_at_elem :: proc(array: ^$T/[dynamic]$T, #any_int index: int, #no_broadcast arg: $T, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    -

    non_zero_reserve_dynamic_array ¶

    +

    make_soa_dynamic_array_len ¶

    -
    non_zero_reserve_dynamic_array :: proc(array: ^$T/[dynamic]$T, #any_int capacity: int, loc := #caller_location) -> Allocator_Error {…}
    +
    make_soa_dynamic_array_len :: proc($T: typeid/#soa[dynamic]T, #any_int length: int, allocator := context.allocator, loc := #caller_location) -> (array: T, err: Allocator_Error) #optional_ok {…}
    -

    resize_dynamic_array ¶

    +

    assign_at_elems ¶

    -
    resize_dynamic_array :: proc(array: ^$T/[dynamic]$T, #any_int length: int, loc := #caller_location) -> Allocator_Error {…}
    +
    assign_at_elems :: proc(array: ^$T/[dynamic]$T, #any_int index: int, .. #no_broadcast args: ..$T, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    -
    -  -

    resize_dynamic_array will try to resize memory of a passed dynamic array or map to the requested element count (setting the len, and possibly cap).

    -

    Note: Prefer the procedure group resize

    -
    -

    non_zero_resize_dynamic_array ¶

    +

    assign_at_elem_string ¶

    -
    non_zero_resize_dynamic_array :: proc(array: ^$T/[dynamic]$T, #any_int length: int, loc := #caller_location) -> Allocator_Error {…}
    +
    assign_at_elem_string :: proc(array: ^$T/[dynamic]$E/u8, #any_int index: int, arg: string, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    -

    map_insert ¶

    +

    make_soa_dynamic_array_len_cap ¶

    -
    map_insert :: proc(m: ^$T/map[$T]$T, key: $T, value: $T, loc := #caller_location) -> (ptr: ^$T) {…}
    +
    make_soa_dynamic_array_len_cap :: proc($T: typeid/#soa[dynamic]T, #any_int length, #any_int capacity: int, allocator := context.allocator, loc := #caller_location) -> (array: T, err: Allocator_Error) #optional_ok {…}
    -

    map_upsert ¶

    +

    clear_dynamic_array ¶

    -
    map_upsert :: proc(m: ^$T/map[$T]$T, key: $T, value: $T, loc := #caller_location) -> (prev_key: $T, value_ptr: ^$T, found_previous: bool) {…}
    +
    clear_dynamic_array :: proc "contextless" (array: ^$T/[dynamic]$T) {…}
      -

    Explicitly inserts a key and value into a map m, the same as map_insert, but the return values differ. -prev_key will return the previous pointer of a key if it exists, check found_previous if was previously found -value_ptr will return the pointer of the memory where the insertion happens, and nil if the map failed to resize -found_previous will be true a previous key was found

    +

    clear_dynamic_array will set the length of a passed dynamic array to 0

    +

    Note: Prefer the procedure group clear.

    -

    card ¶

    -
    -
    card :: proc "contextless" (s: $S/bit_set[$T]) -> int {…}
    -
    -
    -
    -

    assert ¶

    +

    resize_soa ¶

    -
    assert :: proc(condition: bool, message: string = "", loc := #caller_location) {…}
    +
    resize_soa :: proc(array: ^$T/#soa[dynamic]$T, #any_int length: int, loc := #caller_location) -> Allocator_Error {…}
    -

    panic ¶

    +

    non_zero_resize_soa ¶

    -
    panic :: proc(message: string, loc := #caller_location) -> ! {…}
    +
    non_zero_resize_soa :: proc(array: ^$T/#soa[dynamic]$T, #any_int length: int, loc := #caller_location) -> Allocator_Error {…}
    -

    unimplemented ¶

    +

    reserve_soa ¶

    -
    unimplemented :: proc(message: string, loc := #caller_location) -> ! {…}
    +
    reserve_soa :: proc(array: ^$T/#soa[dynamic]$T, #any_int capacity: int, loc := #caller_location) -> Allocator_Error {…}
    -

    assert_contextless ¶

    +

    non_zero_reserve_soa ¶

    -
    assert_contextless :: proc "contextless" (condition: bool, message: string = "", loc := #caller_location) {…}
    +
    non_zero_reserve_soa :: proc(array: ^$T/#soa[dynamic]$T, #any_int capacity: int, loc := #caller_location) -> Allocator_Error {…}
    -

    panic_contextless ¶

    +

    reserve_dynamic_array ¶

    -
    panic_contextless :: proc "contextless" (message: string, loc := #caller_location) -> ! {…}
    +
    reserve_dynamic_array :: proc(array: ^$T/[dynamic]$T, #any_int capacity: int, loc := #caller_location) -> Allocator_Error {…}
    -

    unimplemented_contextless ¶

    +

    non_zero_reserve_dynamic_array ¶

    -
    unimplemented_contextless :: proc "contextless" (message: string, loc := #caller_location) -> ! {…}
    +
    non_zero_reserve_dynamic_array :: proc(array: ^$T/[dynamic]$T, #any_int capacity: int, loc := #caller_location) -> Allocator_Error {…}
    - +

    append_soa_elem ¶

    -
    raw_soa_footer_slice :: proc(array: ^$T/#soa[]$T) -> (footer: ^Raw_SOA_Footer_Slice) {…}
    +
    append_soa_elem :: proc(array: ^$T/#soa[dynamic]$T, #no_broadcast arg: $T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    - +

    resize_dynamic_array ¶

    -
    raw_soa_footer_dynamic_array :: proc(array: ^$T/#soa[dynamic]$T) -> (footer: ^Raw_SOA_Footer_Dynamic_Array) {…}
    +
    resize_dynamic_array :: proc(array: ^$T/[dynamic]$T, #any_int length: int, loc := #caller_location) -> Allocator_Error {…}
    +
    +  +

    resize_dynamic_array will try to resize memory of a passed dynamic array or map to the requested element count (setting the len, and possibly cap).

    +

    Note: Prefer the procedure group resize

    +
    -

    make_soa_aligned ¶

    +

    non_zero_resize_dynamic_array ¶

    -
    make_soa_aligned :: proc($T: typeid/#soa[]T, #any_int length, #any_int alignment: int, allocator := context.allocator, loc := #caller_location) -> (array: T, err: Allocator_Error) #optional_ok {…}
    +
    non_zero_resize_dynamic_array :: proc(array: ^$T/[dynamic]$T, #any_int length: int, loc := #caller_location) -> Allocator_Error {…}
    -

    make_soa_slice ¶

    +

    non_zero_append_soa_elem ¶

    -
    make_soa_slice :: proc($T: typeid/#soa[]T, #any_int length: int, allocator := context.allocator, loc := #caller_location) -> (array: T, err: Allocator_Error) #optional_ok {…}
    +
    non_zero_append_soa_elem :: proc(array: ^$T/#soa[dynamic]$T, #no_broadcast arg: $T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    -

    make_soa_dynamic_array ¶

    +

    append_soa_elems ¶

    -
    make_soa_dynamic_array :: proc($T: typeid/#soa[dynamic]T, allocator := context.allocator, loc := #caller_location) -> (array: T, err: Allocator_Error) #optional_ok {…}
    +
    append_soa_elems :: proc(array: ^$T/#soa[dynamic]$T, .. #no_broadcast args: ..$T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    -

    make_soa_dynamic_array_len ¶

    +

    non_zero_append_soa_elems ¶

    -
    make_soa_dynamic_array_len :: proc($T: typeid/#soa[dynamic]T, #any_int length: int, allocator := context.allocator, loc := #caller_location) -> (array: T, err: Allocator_Error) #optional_ok {…}
    +
    non_zero_append_soa_elems :: proc(array: ^$T/#soa[dynamic]$T, .. #no_broadcast args: ..$T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    -

    make_soa_dynamic_array_len_cap ¶

    +

    map_insert ¶

    -
    make_soa_dynamic_array_len_cap :: proc($T: typeid/#soa[dynamic]T, #any_int length, #any_int capacity: int, allocator := context.allocator, loc := #caller_location) -> (array: T, err: Allocator_Error) #optional_ok {…}
    +
    map_insert :: proc(m: ^$T/map[$T]$T, key: $T, value: $T, loc := #caller_location) -> (ptr: ^$T) {…}
    -

    resize_soa ¶

    +

    map_upsert ¶

    -
    resize_soa :: proc(array: ^$T/#soa[dynamic]$T, #any_int length: int, loc := #caller_location) -> Allocator_Error {…}
    +
    map_upsert :: proc(m: ^$T/map[$T]$T, key: $T, value: $T, loc := #caller_location) -> (prev_key: $T, value_ptr: ^$T, found_previous: bool) {…}
    +
    +  +

    Explicitly inserts a key and value into a map m, the same as map_insert, but the return values differ. +prev_key will return the previous pointer of a key if it exists, check found_previous if was previously found +value_ptr will return the pointer of the memory where the insertion happens, and nil if the map failed to resize +found_previous will be true a previous key was found

    +
    -

    non_zero_resize_soa ¶

    +

    card ¶

    -
    non_zero_resize_soa :: proc(array: ^$T/#soa[dynamic]$T, #any_int length: int, loc := #caller_location) -> Allocator_Error {…}
    +
    card :: proc "contextless" (s: $S/bit_set[$T]) -> int {…}
    -

    reserve_soa ¶

    +

    assert ¶

    -
    reserve_soa :: proc(array: ^$T/#soa[dynamic]$T, #any_int capacity: int, loc := #caller_location) -> Allocator_Error {…}
    +
    assert :: proc(condition: bool, message: string = "", loc := #caller_location) {…}
    -

    non_zero_reserve_soa ¶

    +

    panic ¶

    -
    non_zero_reserve_soa :: proc(array: ^$T/#soa[dynamic]$T, #any_int capacity: int, loc := #caller_location) -> Allocator_Error {…}
    +
    panic :: proc(message: string, loc := #caller_location) -> ! {…}
    -

    append_soa_elem ¶

    +

    unimplemented ¶

    -
    append_soa_elem :: proc(array: ^$T/#soa[dynamic]$T, #no_broadcast arg: $T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    +
    unimplemented :: proc(message: string, loc := #caller_location) -> ! {…}
    -

    non_zero_append_soa_elem ¶

    +

    assert_contextless ¶

    -
    non_zero_append_soa_elem :: proc(array: ^$T/#soa[dynamic]$T, #no_broadcast arg: $T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    +
    assert_contextless :: proc "contextless" (condition: bool, message: string = "", loc := #caller_location) {…}
    -

    append_soa_elems ¶

    +

    panic_contextless ¶

    -
    append_soa_elems :: proc(array: ^$T/#soa[dynamic]$T, .. #no_broadcast args: ..$T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    +
    panic_contextless :: proc "contextless" (message: string, loc := #caller_location) -> ! {…}
    -

    non_zero_append_soa_elems ¶

    +

    unimplemented_contextless ¶

    -
    non_zero_append_soa_elems :: proc(array: ^$T/#soa[dynamic]$T, .. #no_broadcast args: ..$T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    +
    unimplemented_contextless :: proc "contextless" (message: string, loc := #caller_location) -> ! {…}
    @@ -2078,7 +2110,7 @@

    Procedure Groups

    -

    copy ¶

    +

    copy ¶

    copy :: proc{
     	copy_slice,
    @@ -2094,7 +2126,7 @@ 

    copy -

    clear ¶

    +

    clear ¶

    clear :: proc{
     	clear_dynamic_array,
    @@ -2109,7 +2141,7 @@ 

    clear -

    reserve ¶

    +

    reserve ¶

    reserve :: proc{
     	reserve_dynamic_array,
    @@ -2124,7 +2156,7 @@ 

    reserve

    -

    resize ¶

    +

    resize ¶

    resize :: proc{
     	resize_dynamic_array,
    @@ -2148,7 +2180,7 @@ 

    resize -

    non_zero_resize ¶

    +

    non_zero_resize ¶

    non_zero_resize :: proc{
     	non_zero_resize_dynamic_array,
    @@ -2158,7 +2190,7 @@ 

    no

    -

    shrink ¶

    +

    shrink ¶

    shrink :: proc{
     	shrink_dynamic_array,
    @@ -2172,7 +2204,7 @@ 

    shrink -

    free ¶

    +

    free ¶

    free :: proc{
     	mem_free,
    @@ -2185,7 +2217,7 @@ 

    free -

    free_all ¶

    +

    free_all ¶

    free_all :: proc{
     	mem_free_all,
    @@ -2198,7 +2230,7 @@ 

    free_all

    -

    delete ¶

    +

    delete ¶

    delete :: proc{
     	delete_string,
    @@ -2218,7 +2250,7 @@ 

    delete -

    make ¶

    +

    make ¶

    make :: proc{
     	make_slice,
    @@ -2243,7 +2275,7 @@ 

    make -

    append ¶

    +

    append ¶

    append :: proc{
     	append_elem,
    @@ -2260,7 +2292,7 @@ 

    append -

    non_zero_append ¶

    +

    non_zero_append ¶

    non_zero_append :: proc{
     	non_zero_append_elem,
    @@ -2273,7 +2305,7 @@ 

    no

    -

    inject_at ¶

    +

    inject_at ¶

    inject_at :: proc{
     	inject_at_elem,
    @@ -2284,7 +2316,7 @@ 

    inject_at

    -

    assign_at ¶

    +

    assign_at ¶

    assign_at :: proc{
     	assign_at_elem,
    diff --git a/base/runtime/index.html b/base/runtime/index.html
    index 531aa81935..df0a2ca463 100644
    --- a/base/runtime/index.html
    +++ b/base/runtime/index.html
    @@ -2289,7 +2289,7 @@ 

    -

    DEFAULT_DYNAMIC_ARRAY_CAPACITY ¶

    +

    DEFAULT_DYNAMIC_ARRAY_CAPACITY ¶

    DEFAULT_DYNAMIC_ARRAY_CAPACITY :: 8
    @@ -2431,7 +2431,7 @@

    dll_inst

    -

    global_default_temp_allocator_data ¶

    +

    global_default_temp_allocator_data ¶

    @(thread_local)
     global_default_temp_allocator_data: Default_Temp_Allocator
    @@ -2535,25 +2535,25 @@

    -

    append_elem ¶

    +

    append_elem ¶

    append_elem :: proc(array: ^$T/[dynamic]$T, #no_broadcast arg: $T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}

    -

    append_elem_string ¶

    +

    append_elem_string ¶

    append_elem_string :: proc(array: ^$T/[dynamic]$E/u8, arg: $S/string, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    -

    append_elems ¶

    +

    append_elems ¶

    append_elems :: proc(array: ^$T/[dynamic]$T, .. #no_broadcast args: ..$T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    -

    append_nothing ¶

    +

    append_nothing ¶

    append_nothing :: proc(array: ^$T/[dynamic]$T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    @@ -2571,7 +2571,7 @@

    -

    append_string ¶

    +

    append_string ¶

    append_string :: proc(array: ^$T/[dynamic]$E/u8, .. args: ..string, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    @@ -2667,31 +2667,31 @@

    -

    assert ¶

    +

    assert ¶

    assert :: proc(condition: bool, message: string = "", loc := #caller_location) {…}

    -

    assert_contextless ¶

    +

    assert_contextless ¶

    assert_contextless :: proc "contextless" (condition: bool, message: string = "", loc := #caller_location) {…}
    -

    assign_at_elem ¶

    +

    assign_at_elem ¶

    assign_at_elem :: proc(array: ^$T/[dynamic]$T, #any_int index: int, #no_broadcast arg: $T, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    -

    assign_at_elem_string ¶

    +

    assign_at_elem_string ¶

    assign_at_elem_string :: proc(array: ^$T/[dynamic]$E/u8, #any_int index: int, arg: string, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    -

    assign_at_elems ¶

    +

    assign_at_elems ¶

    assign_at_elems :: proc(array: ^$T/[dynamic]$T, #any_int index: int, .. #no_broadcast args: ..$T, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    @@ -2715,13 +2715,13 @@

    bounds_tra

    -

    card ¶

    +

    card ¶

    card :: proc "contextless" (s: $S/bit_set[$T]) -> int {…}
    -

    clear_dynamic_array ¶

    +

    clear_dynamic_array ¶

    clear_dynamic_array :: proc "contextless" (array: ^$T/[dynamic]$T) {…}
    @@ -2732,7 +2732,7 @@

    -

    clear_map ¶

    +

    clear_map ¶

    clear_map :: proc "contextless" (m: ^$T/map[$T]$T) {…}
    @@ -2785,13 +2785,45 @@

    complex6

    -

    container_of ¶

    +

    container_of ¶

    container_of :: proc "contextless" (ptr: $P/^$T, $T: typeid, $field_name: string = ) -> ^typeid {…}
    +
    +  +

    Recovers the containing/parent struct from a pointer to one of its fields. +Works by "walking back" to the struct's starting address using the offset between the field and the struct.

    +

    Inputs:
    ptr: Pointer to the field of a container struct +T: The type of the container struct +field_name: The name of the field in the T struct

    +

    Returns:
    A pointer to the container struct based on a pointer to a field in it

    +
    +Example: +
    package container_of
    +import "base:runtime"
    +
    +Node :: struct {
    +	value: int,
    +	prev:  ^Node,
    +	next:  ^Node,
    +}
    +
    +main :: proc() {
    +	node: Node
    +	field_ptr := &node.next
    +	container_struct_ptr: ^Node = runtime.container_of(field_ptr, Node, "next")
    +	assert(container_struct_ptr == &node)
    +	assert(uintptr(field_ptr) - uintptr(container_struct_ptr) == size_of(node.value) + size_of(node.prev))
    +}
    +
    +
    +Output: +
    ^Node
    +
    +
    -

    copy_from_string ¶

    +

    copy_from_string ¶

    copy_from_string :: proc "contextless" (dst: $T/[]$E/u8, src: $S/string) -> int {…}
    @@ -2804,7 +2836,7 @@

    -

    copy_slice ¶

    +

    copy_slice ¶

    copy_slice :: proc "contextless" (dst, src: $T/[]$T) -> int {…}
    @@ -2992,7 +3024,7 @@

    -

    delete_cstring ¶

    +

    delete_cstring ¶

    delete_cstring :: proc(str: cstring, allocator := context.allocator, loc := #caller_location) -> Allocator_Error {…}
    @@ -3003,7 +3035,7 @@

    dele

    -

    delete_dynamic_array ¶

    +

    delete_dynamic_array ¶

    delete_dynamic_array :: proc(array: $T/[dynamic]$T, loc := #caller_location) -> Allocator_Error {…}
    @@ -3014,7 +3046,7 @@

    -

    delete_key ¶

    +

    delete_key ¶

    delete_key :: proc(m: ^$T/map[$T]$T, key: $T) -> (deleted_key: $T, deleted_value: $T) {…}
    @@ -3025,7 +3057,7 @@

    delete_key

    -

    delete_map ¶

    +

    delete_map ¶

    delete_map :: proc(m: $T/map[$T]$T, loc := #caller_location) -> Allocator_Error {…}
    @@ -3036,7 +3068,7 @@

    delete_map

    -

    delete_slice ¶

    +

    delete_slice ¶

    delete_slice :: proc(array: $T/[]$T, allocator := context.allocator, loc := #caller_location) -> Allocator_Error {…}
    @@ -3059,7 +3091,7 @@

    -

    delete_string ¶

    +

    delete_string ¶

    delete_string :: proc(str: string, allocator := context.allocator, loc := #caller_location) -> Allocator_Error {…}
    @@ -3190,25 +3222,25 @@

    heap_resiz

    -

    init_global_temporary_allocator ¶

    +

    init_global_temporary_allocator ¶

    init_global_temporary_allocator :: proc(size: int, backup_allocator := context.allocator) {…}
    -

    inject_at_elem ¶

    +

    inject_at_elem ¶

    inject_at_elem :: proc(array: ^$T/[dynamic]$T, #any_int index: int, #no_broadcast arg: $T, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    -

    inject_at_elem_string ¶

    +

    inject_at_elem_string ¶

    inject_at_elem_string :: proc(array: ^$T/[dynamic]$E/u8, #any_int index: int, arg: string, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    -

    inject_at_elems ¶

    +

    inject_at_elems ¶

    inject_at_elems :: proc(array: ^$T/[dynamic]$T, #any_int index: int, .. #no_broadcast args: ..$T, loc := #caller_location) -> (ok: bool, err: Allocator_Error) #optional_ok {…}
    @@ -3242,13 +3274,13 @@

    -

    make_aligned ¶

    +

    make_aligned ¶

    make_aligned :: proc($T: typeid/[]T, #any_int len: int, alignment: int, allocator := context.allocator, loc := #caller_location) -> (T, Allocator_Error) #optional_ok {…}

    -

    make_dynamic_array ¶

    +

    make_dynamic_array ¶

    make_dynamic_array :: proc($T: typeid/[dynamic]T, allocator := context.allocator, loc := #caller_location) -> (T, Allocator_Error) #optional_ok {…}
    @@ -3266,7 +3298,7 @@

    -

    make_dynamic_array_len ¶

    +

    make_dynamic_array_len ¶

    make_dynamic_array_len :: proc($T: typeid/[dynamic]T, #any_int len: int, allocator := context.allocator, loc := #caller_location) -> (T, Allocator_Error) #optional_ok {…}
    @@ -3278,7 +3310,7 @@

    -

    make_dynamic_array_len_cap ¶

    +

    make_dynamic_array_len_cap ¶

    make_dynamic_array_len_cap :: proc($T: typeid/[dynamic]T, #any_int len: int, #any_int cap: int, allocator := context.allocator, loc := #caller_location) -> (array: T, err: Allocator_Error) #optional_ok {…}
    @@ -3290,7 +3322,7 @@

    -

    make_map ¶

    +

    make_map ¶

    make_map :: proc($T: typeid/map[T]T, #any_int capacity: int = 1 << MAP_MIN_LOG2_CAPACITY, allocator := context.allocator, loc := #caller_location) -> (m: T, err: Allocator_Error) #optional_ok {…}
    @@ -3308,7 +3340,7 @@

    -

    make_multi_pointer ¶

    +

    make_multi_pointer ¶

    make_multi_pointer :: proc($T: typeid/[^]T, #any_int len: int, allocator := context.allocator, loc := #caller_location) -> (mp: $/[^]T, err: Allocator_Error) #optional_ok {…}
    @@ -3321,7 +3353,7 @@

    -

    make_slice ¶

    +

    make_slice ¶

    make_slice :: proc($T: typeid/[]T, #any_int len: int, allocator := context.allocator, loc := #caller_location) -> (T, Allocator_Error) #optional_ok {…}
    @@ -3526,7 +3558,7 @@

    map_info

    -

    map_insert ¶

    +

    map_insert ¶

    map_insert :: proc(m: ^$T/map[$T]$T, key: $T, value: $T, loc := #caller_location) -> (ptr: ^$T) {…}
    @@ -3659,7 +3691,7 @@

    -

    map_upsert ¶

    +

    map_upsert ¶

    map_upsert :: proc(m: ^$T/map[$T]$T, key: $T, value: $T, loc := #caller_location) -> (prev_key: $T, value_ptr: ^$T, found_previous: bool) {…}
    @@ -3828,7 +3860,7 @@

    -

    new ¶

    +

    new ¶

    new :: proc($T: typeid, allocator := context.allocator, loc := #caller_location) -> (^typeid, Allocator_Error) #optional_ok {…}
    @@ -3839,13 +3871,13 @@

    new

    -

    new_aligned ¶

    +

    new_aligned ¶

    new_aligned :: proc($T: typeid, alignment: int, allocator := context.allocator, loc := #caller_location) -> (t: ^typeid, err: Allocator_Error) {…}
    -

    new_clone ¶

    +

    new_clone ¶

    new_clone :: proc(data: $T, allocator := context.allocator, loc := #caller_location) -> (t: ^$T, err: Allocator_Error) #optional_ok {…}
    @@ -3870,19 +3902,19 @@

    -

    non_zero_append_elem ¶

    +

    non_zero_append_elem ¶

    non_zero_append_elem :: proc(array: ^$T/[dynamic]$T, #no_broadcast arg: $T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}

    -

    non_zero_append_elem_string ¶

    +

    non_zero_append_elem_string ¶

    non_zero_append_elem_string :: proc(array: ^$T/[dynamic]$E/u8, arg: $S/string, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    -

    non_zero_append_elems ¶

    +

    non_zero_append_elems ¶

    non_zero_append_elems :: proc(array: ^$T/[dynamic]$T, .. #no_broadcast args: ..$T, loc := #caller_location) -> (n: int, err: Allocator_Error) #optional_ok {…}
    @@ -3913,7 +3945,7 @@

    -

    non_zero_reserve_dynamic_array ¶

    +

    non_zero_reserve_dynamic_array ¶

    non_zero_reserve_dynamic_array :: proc(array: ^$T/[dynamic]$T, #any_int capacity: int, loc := #caller_location) -> Allocator_Error {…}
    @@ -3925,7 +3957,7 @@

    -

    non_zero_resize_dynamic_array ¶

    +

    non_zero_resize_dynamic_array ¶

    non_zero_resize_dynamic_array :: proc(array: ^$T/[dynamic]$T, #any_int length: int, loc := #caller_location) -> Allocator_Error {…}
    @@ -3937,7 +3969,7 @@

    -

    ordered_remove ¶

    +

    ordered_remove ¶

    ordered_remove :: proc(array: ^$T/[dynamic]$T, #any_int index: int, loc := #caller_location) {…}
    @@ -3963,7 +3995,7 @@

    -

    panic ¶

    +

    panic ¶

    panic :: proc(message: string, loc := #caller_location) -> ! {…}
    @@ -3988,13 +4020,13 @@

    -

    panic_contextless ¶

    +

    panic_contextless ¶

    panic_contextless :: proc "contextless" (message: string, loc := #caller_location) -> ! {…}

    -

    pop ¶

    +

    pop ¶

    pop :: proc(array: ^$T/[dynamic]$T, loc := #caller_location) -> (res: $T) {…}
    @@ -4005,7 +4037,7 @@

    pop

    -

    pop_front ¶

    +

    pop_front ¶

    pop_front :: proc(array: ^$T/[dynamic]$T, loc := #caller_location) -> (res: $T) {…}
    @@ -4016,7 +4048,7 @@

    pop_front

    -

    pop_front_safe ¶

    +

    pop_front_safe ¶

    pop_front_safe :: proc "contextless" (array: ^$T/[dynamic]$T) -> (res: $T, ok: bool) {…}
    @@ -4027,7 +4059,7 @@

    pop_

    -

    pop_safe ¶

    +

    pop_safe ¶

    pop_safe :: proc "contextless" (array: ^$T/[dynamic]$T) -> (res: $T, ok: bool) {…}
    @@ -4248,7 +4280,7 @@

    -

    remove_range ¶

    +

    remove_range ¶

    remove_range :: proc(array: ^$T/[dynamic]$T, #any_int lo, #any_int hi: int, loc := #caller_location) {…}
    @@ -4260,13 +4292,13 @@

    remove_r

    -

    reserve_dynamic_array ¶

    +

    reserve_dynamic_array ¶

    reserve_dynamic_array :: proc(array: ^$T/[dynamic]$T, #any_int capacity: int, loc := #caller_location) -> Allocator_Error {…}
    -

    reserve_map ¶

    +

    reserve_map ¶

    reserve_map :: proc(m: ^$T/map[$T]$T, #any_int capacity: int, loc := #caller_location) -> Allocator_Error {…}
    @@ -4283,7 +4315,7 @@

    reserve_so

    -

    resize_dynamic_array ¶

    +

    resize_dynamic_array ¶

    resize_dynamic_array :: proc(array: ^$T/[dynamic]$T, #any_int length: int, loc := #caller_location) -> Allocator_Error {…}
    @@ -4312,7 +4344,7 @@

    -

    shrink_dynamic_array ¶

    +

    shrink_dynamic_array ¶

    shrink_dynamic_array :: proc(array: ^$T/[dynamic]$T, #any_int new_cap: int = -1, loc := #caller_location) -> (did_shrink: bool, err: Allocator_Error) {…}
    @@ -4326,7 +4358,7 @@

    -

    shrink_map ¶

    +

    shrink_map ¶

    shrink_map :: proc(m: ^$T/map[$T]$T, loc := #caller_location) -> (did_shrink: bool, err: Allocator_Error) {…}
    @@ -4545,19 +4577,19 @@

    umodti3

    -

    unimplemented ¶

    +

    unimplemented ¶

    unimplemented :: proc(message: string, loc := #caller_location) -> ! {…}
    -

    unimplemented_contextless ¶

    +

    unimplemented_contextless ¶

    unimplemented_contextless :: proc "contextless" (message: string, loc := #caller_location) -> ! {…}
    -

    unordered_remove ¶

    +

    unordered_remove ¶

    unordered_remove :: proc(array: ^$T/[dynamic]$T, #any_int index: int, loc := #caller_location) {…}
    @@ -4597,7 +4629,7 @@

    align_

    -

    append ¶

    +

    append ¶

    append :: proc{
     	append_elem,
    @@ -4628,7 +4660,7 @@ 

    append_soa

    -

    assign_at ¶

    +

    assign_at ¶

    assign_at :: proc{
     	assign_at_elem,
    @@ -4639,7 +4671,7 @@ 

    assign_at

    -

    clear ¶

    +

    clear ¶

    clear :: proc{
     	clear_dynamic_array,
    @@ -4663,7 +4695,7 @@ 

    clear_soa

    -

    copy ¶

    +

    copy ¶

    copy :: proc{
     	copy_slice,
    @@ -4679,7 +4711,7 @@ 

    copy -

    delete ¶

    +

    delete ¶

    delete :: proc{
     	delete_string,
    @@ -4709,7 +4741,7 @@ 

    delete_soa

    -

    free ¶

    +

    free ¶

    free :: proc{
     	mem_free,
    @@ -4722,7 +4754,7 @@ 

    free -

    free_all ¶

    +

    free_all ¶

    free_all :: proc{
     	mem_free_all,
    @@ -4735,7 +4767,7 @@ 

    free_all

    -

    inject_at ¶

    +

    inject_at ¶

    inject_at :: proc{
     	inject_at_elem,
    @@ -4757,7 +4789,7 @@ 

    is

    -

    make ¶

    +

    make ¶

    make :: proc{
     	make_slice,
    @@ -4794,7 +4826,7 @@ 

    make_soa

    -

    non_zero_append ¶

    +

    non_zero_append ¶

    non_zero_append :: proc{
     	non_zero_append_elem,
    @@ -4807,7 +4839,7 @@ 

    no

    -

    reserve ¶

    +

    reserve ¶

    reserve :: proc{
     	reserve_dynamic_array,
    @@ -4852,7 +4884,7 @@ 

    reserve

    -

    resize ¶

    +

    resize ¶

    resize :: proc{
     	resize_dynamic_array,
    @@ -4866,7 +4898,7 @@ 

    resize -

    shrink ¶

    +

    shrink ¶

    shrink :: proc{
     	shrink_dynamic_array,
    @@ -4904,7 +4936,7 @@ 

    Source Files

  • (hidden platform specific files)
  • Generation Information

    -

    Generated with odin version dev-2024-09 (vendor "odin") Windows_amd64 @ 2024-09-29 21:10:08.241929600 +0000 UTC

    +

    Generated with odin version dev-2024-09 (vendor "odin") Windows_amd64 @ 2024-09-30 21:11:07.442313500 +0000 UTC