Sha256: a860cc38199e57608d30ac16c150cc2d4f364162ed51cb0fb0e65f79a97d49d4

Contents?: true

Size: 1.57 KB

Versions: 16

Compression:

Stored size: 1.57 KB

Contents

# Copyright (c) 2023 M.J.N. Corino, The Netherlands
#
# This software is released under the MIT license.

###
# wxRuby3 Common typemap definitions
###

require_relative '../core/mapping'

module WXRuby3

  module Typemap

    # Typemaps which convert a wxArrayInt (array of integers) input
    # argument to a ruby output argument of the same sort. Used by methods
    # in (Check)ListBox and the global function get_multiple_choices (Functions.i)
    # to retrieve a list of selected items.
    module ArrayIntSelections

      include Typemap::Module

      define do

        map 'wxArrayInt& selections', 'wxArrayInt &checkedItems', as: 'Array<Integer>' do

          map_in ignore: true, temp: 'wxArrayInt tmp', code: '$1 = &tmp;'

          # ignore C defined return value entirely (also affects directorout)
          map_out ignore: ['int', 'unsigned int']

          map_argout code: <<~__CODE
            $result = rb_ary_new();
            for (size_t i = 0; i < $1->GetCount(); i++)
            {
              rb_ary_push($result,INT2NUM( $1->Item(i) ) );
            }
            __CODE

          map_directorargout code: <<~__CODE
            c_result = 0;
            if (result != Qnil && TYPE(result) == T_ARRAY)
            {
              c_result = RARRAY_LEN(result);
              for (int i = 0, n = RARRAY_LEN(result); i < n ;i++)
              {
                int sel = NUM2INT(rb_ary_entry(result, i));
                $1.Add(sel);
              }
            }
            __CODE
        end

      end # define

    end # ArrayIntSelections

  end # Typemap

end # WXRuby3

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
wxruby3-1.3.1 rakelib/lib/typemap/array_int_selections.rb
wxruby3-1.3.0 rakelib/lib/typemap/array_int_selections.rb
wxruby3-1.2.1 rakelib/lib/typemap/array_int_selections.rb
wxruby3-1.2.0 rakelib/lib/typemap/array_int_selections.rb
wxruby3-1.1.2 rakelib/lib/typemap/array_int_selections.rb
wxruby3-1.1.1 rakelib/lib/typemap/array_int_selections.rb
wxruby3-1.1.0 rakelib/lib/typemap/array_int_selections.rb
wxruby3-1.0.1 rakelib/lib/typemap/array_int_selections.rb
wxruby3-0.9.8 rakelib/lib/typemap/array_int_selections.rb
wxruby3-0.9.7 rakelib/lib/typemap/array_int_selections.rb
wxruby3-0.9.5 rakelib/lib/typemap/array_int_selections.rb
wxruby3-0.9.4 rakelib/lib/typemap/array_int_selections.rb
wxruby3-0.9.3 rakelib/lib/typemap/array_int_selections.rb
wxruby3-0.9.2 rakelib/lib/typemap/array_int_selections.rb
wxruby3-0.9.1 rakelib/lib/typemap/array_int_selections.rb
wxruby3-0.9.0 rakelib/lib/typemap/array_int_selections.rb