odin-blend2d

Odin bindings to Blend2D
Log | Files | Refs | README | LICENSE

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