bitarray.odin (4589B)
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 when ODIN_OS == .Windows { 8 foreign import lib "blend2d.lib" 9 } else when ODIN_OS == .Darwin { 10 foreign import lib "libblend2d.a" 11 } else when ODIN_OS == .Linux { 12 foreign import lib "libblend2d.a" 13 } 14 15 16 //! BitArray container [C API]. 17 BitArrayCore :: struct { 18 _d: ObjectDetail, 19 } 20 21 //! \cond INTERNAL 22 //! BitArray container [C API Impl]. 23 BitArrayImpl :: struct { 24 //! Size in bit units. 25 size: u32, 26 27 //! Capacity in bit-word units. 28 capacity: u32, 29 } 30 31 @(default_calling_convention="c", link_prefix="bl_") 32 foreign lib { 33 //! \endcond 34 bit_array_init :: proc(self: ^BitArrayCore) -> Result --- 35 bit_array_init_move :: proc(self: ^BitArrayCore, other: ^BitArrayCore) -> Result --- 36 bit_array_init_weak :: proc(self: ^BitArrayCore, other: ^BitArrayCore) -> Result --- 37 bit_array_destroy :: proc(self: ^BitArrayCore) -> Result --- 38 bit_array_reset :: proc(self: ^BitArrayCore) -> Result --- 39 bit_array_assign_move :: proc(self: ^BitArrayCore, other: ^BitArrayCore) -> Result --- 40 bit_array_assign_weak :: proc(self: ^BitArrayCore, other: ^BitArrayCore) -> Result --- 41 bit_array_assign_words :: proc(self: ^BitArrayCore, word_data: ^u32, word_count: u32) -> Result --- 42 bit_array_is_empty :: proc(self: ^BitArrayCore) -> i32 --- 43 bit_array_get_size :: proc(self: ^BitArrayCore) -> u32 --- 44 bit_array_get_word_count :: proc(self: ^BitArrayCore) -> u32 --- 45 bit_array_get_capacity :: proc(self: ^BitArrayCore) -> u32 --- 46 bit_array_get_data :: proc(self: ^BitArrayCore) -> ^u32 --- 47 bit_array_get_cardinality :: proc(self: ^BitArrayCore) -> u32 --- 48 bit_array_get_cardinality_in_range :: proc(self: ^BitArrayCore, start_bit: u32, end_bit: u32) -> u32 --- 49 bit_array_has_bit :: proc(self: ^BitArrayCore, bit_index: u32) -> i32 --- 50 bit_array_has_bits_in_range :: proc(self: ^BitArrayCore, start_bit: u32, end_bit: u32) -> i32 --- 51 bit_array_subsumes :: proc(a: ^BitArrayCore, b: ^BitArrayCore) -> i32 --- 52 bit_array_intersects :: proc(a: ^BitArrayCore, b: ^BitArrayCore) -> i32 --- 53 bit_array_get_range :: proc(self: ^BitArrayCore, start_out: ^u32, end_out: ^u32) -> i32 --- 54 bit_array_equals :: proc(a: ^BitArrayCore, b: ^BitArrayCore) -> i32 --- 55 bit_array_compare :: proc(a: ^BitArrayCore, b: ^BitArrayCore) -> i32 --- 56 bit_array_clear :: proc(self: ^BitArrayCore) -> Result --- 57 bit_array_resize :: proc(self: ^BitArrayCore, n_bits: u32) -> Result --- 58 bit_array_reserve :: proc(self: ^BitArrayCore, n_bits: u32) -> Result --- 59 bit_array_shrink :: proc(self: ^BitArrayCore) -> Result --- 60 bit_array_set_bit :: proc(self: ^BitArrayCore, bit_index: u32) -> Result --- 61 bit_array_fill_range :: proc(self: ^BitArrayCore, start_bit: u32, end_bit: u32) -> Result --- 62 bit_array_fill_words :: proc(self: ^BitArrayCore, bit_index: u32, word_data: ^u32, word_count: u32) -> Result --- 63 bit_array_clear_bit :: proc(self: ^BitArrayCore, bit_index: u32) -> Result --- 64 bit_array_clear_range :: proc(self: ^BitArrayCore, start_bit: u32, end_bit: u32) -> Result --- 65 bit_array_clear_word :: proc(self: ^BitArrayCore, bit_index: u32, word_value: u32) -> Result --- 66 bit_array_clear_words :: proc(self: ^BitArrayCore, bit_index: u32, word_data: ^u32, word_count: u32) -> Result --- 67 bit_array_replace_op :: proc(self: ^BitArrayCore, n_bits: u32, data_out: ^^u32) -> Result --- 68 bit_array_replace_bit :: proc(self: ^BitArrayCore, bit_index: u32, bit_value: i32) -> Result --- 69 bit_array_replace_word :: proc(self: ^BitArrayCore, bit_index: u32, word_value: u32) -> Result --- 70 bit_array_replace_words :: proc(self: ^BitArrayCore, bit_index: u32, word_data: ^u32, word_count: u32) -> Result --- 71 bit_array_append_bit :: proc(self: ^BitArrayCore, bit_value: i32) -> Result --- 72 bit_array_append_word :: proc(self: ^BitArrayCore, word_value: u32) -> Result --- 73 bit_array_append_words :: proc(self: ^BitArrayCore, word_data: ^u32, word_count: u32) -> Result --- 74 } 75