odin-blend2d

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

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