array.odin (5182B)
1 // This file is part of Blend2D project <https://blend2d.com> 2 // 3 // See blend2d.h or LICENSE.md for license and copyright information 4 // SPDX-License-Identifier: Zlib 5 package blend2d 6 7 import "core:c" 8 9 when ODIN_OS == .Windows { 10 foreign import lib "blend2d.lib" 11 } else when ODIN_OS == .Darwin { 12 foreign import lib "libblend2d.a" 13 } else when ODIN_OS == .Linux { 14 foreign import lib "libblend2d.a" 15 } 16 17 18 //! Array container [C API]. 19 ArrayCore :: struct { 20 _d: ObjectDetail, 21 } 22 23 //! \cond INTERNAL 24 //! Array container [C API Impl]. 25 ArrayImpl :: struct { 26 //! Pointer to array data. 27 data: rawptr, 28 29 //! Array size [in items]. 30 size: c.size_t, 31 32 //! Array capacity [in items]. 33 capacity: c.size_t, 34 } 35 36 @(default_calling_convention="c", link_prefix="bl_") 37 foreign lib { 38 //! \endcond 39 array_init :: proc(self: ^ArrayCore, array_type: ObjectType) -> Result --- 40 array_init_move :: proc(self: ^ArrayCore, other: ^ArrayCore) -> Result --- 41 array_init_weak :: proc(self: ^ArrayCore, other: ^ArrayCore) -> Result --- 42 array_destroy :: proc(self: ^ArrayCore) -> Result --- 43 array_reset :: proc(self: ^ArrayCore) -> Result --- 44 array_get_size :: proc(self: ^ArrayCore) -> c.size_t --- 45 array_get_capacity :: proc(self: ^ArrayCore) -> c.size_t --- 46 array_get_item_size :: proc(self: ^ArrayCore) -> c.size_t --- 47 array_get_data :: proc(self: ^ArrayCore) -> rawptr --- 48 array_clear :: proc(self: ^ArrayCore) -> Result --- 49 array_shrink :: proc(self: ^ArrayCore) -> Result --- 50 array_reserve :: proc(self: ^ArrayCore, n: c.size_t) -> Result --- 51 array_resize :: proc(self: ^ArrayCore, n: c.size_t, fill: rawptr) -> Result --- 52 array_make_mutable :: proc(self: ^ArrayCore, data_out: ^rawptr) -> Result --- 53 array_modify_op :: proc(self: ^ArrayCore, op: ModifyOp, n: c.size_t, data_out: ^rawptr) -> Result --- 54 array_insert_op :: proc(self: ^ArrayCore, index: c.size_t, n: c.size_t, data_out: ^rawptr) -> Result --- 55 array_assign_move :: proc(self: ^ArrayCore, other: ^ArrayCore) -> Result --- 56 array_assign_weak :: proc(self: ^ArrayCore, other: ^ArrayCore) -> Result --- 57 array_assign_deep :: proc(self: ^ArrayCore, other: ^ArrayCore) -> Result --- 58 array_assign_data :: proc(self: ^ArrayCore, data: rawptr, n: c.size_t) -> Result --- 59 array_assign_external_data :: proc(self: ^ArrayCore, data: rawptr, size: c.size_t, capacity: c.size_t, data_access_flags: DataAccessFlags, destroy_func: DestroyExternalDataFunc, user_data: rawptr) -> Result --- 60 array_append_u8 :: proc(self: ^ArrayCore, value: u8) -> Result --- 61 array_append_u16 :: proc(self: ^ArrayCore, value: u16) -> Result --- 62 array_append_u32 :: proc(self: ^ArrayCore, value: u32) -> Result --- 63 array_append_u64 :: proc(self: ^ArrayCore, value: u64) -> Result --- 64 array_append_f32 :: proc(self: ^ArrayCore, value: f32) -> Result --- 65 array_append_f64 :: proc(self: ^ArrayCore, value: f64) -> Result --- 66 array_append_item :: proc(self: ^ArrayCore, item: rawptr) -> Result --- 67 array_append_data :: proc(self: ^ArrayCore, data: rawptr, n: c.size_t) -> Result --- 68 array_insert_u8 :: proc(self: ^ArrayCore, index: c.size_t, value: u8) -> Result --- 69 array_insert_u16 :: proc(self: ^ArrayCore, index: c.size_t, value: u16) -> Result --- 70 array_insert_u32 :: proc(self: ^ArrayCore, index: c.size_t, value: u32) -> Result --- 71 array_insert_u64 :: proc(self: ^ArrayCore, index: c.size_t, value: u64) -> Result --- 72 array_insert_f32 :: proc(self: ^ArrayCore, index: c.size_t, value: f32) -> Result --- 73 array_insert_f64 :: proc(self: ^ArrayCore, index: c.size_t, value: f64) -> Result --- 74 array_insert_item :: proc(self: ^ArrayCore, index: c.size_t, item: rawptr) -> Result --- 75 array_insert_data :: proc(self: ^ArrayCore, index: c.size_t, data: rawptr, n: c.size_t) -> Result --- 76 array_replace_u8 :: proc(self: ^ArrayCore, index: c.size_t, value: u8) -> Result --- 77 array_replace_u16 :: proc(self: ^ArrayCore, index: c.size_t, value: u16) -> Result --- 78 array_replace_u32 :: proc(self: ^ArrayCore, index: c.size_t, value: u32) -> Result --- 79 array_replace_u64 :: proc(self: ^ArrayCore, index: c.size_t, value: u64) -> Result --- 80 array_replace_f32 :: proc(self: ^ArrayCore, index: c.size_t, value: f32) -> Result --- 81 array_replace_f64 :: proc(self: ^ArrayCore, index: c.size_t, value: f64) -> Result --- 82 array_replace_item :: proc(self: ^ArrayCore, index: c.size_t, item: rawptr) -> Result --- 83 array_replace_data :: proc(self: ^ArrayCore, r_start: c.size_t, r_end: c.size_t, data: rawptr, n: c.size_t) -> Result --- 84 array_remove_index :: proc(self: ^ArrayCore, index: c.size_t) -> Result --- 85 array_remove_range :: proc(self: ^ArrayCore, r_start: c.size_t, r_end: c.size_t) -> Result --- 86 array_equals :: proc(a: ^ArrayCore, b: ^ArrayCore) -> i32 --- 87 } 88