class Fiddle::StructArray - Documentation for Ruby 3.2

# class Fiddle::StructArray

Wrapper for arrays within a struct

### Public Class Methods

new(ptr, type, initial_values) click to toggle source
Calls superclass method `Array::new`

    # File ext/fiddle/lib/fiddle/struct.rb, line 140
    def initialize(ptr, type, initial_values)
      @ptr = ptr
      @type = type
      @is_struct = @type.respond_to?(:entity_class)
      if @is_struct
        super(initial_values)
      else
        @size = Fiddle::PackInfo::SIZE_MAP[type]
        @pack_format = Fiddle::PackInfo::PACK_MAP[type]
        super(initial_values.collect { |v| unsigned_value(v, type) })
      end
    end

### Public Instance Methods

[]=(index, value) click to toggle source
Calls superclass method `Array#[]=`

    # File ext/fiddle/lib/fiddle/struct.rb, line 157
    def []=(index, value)
      if index < 0 || index >= size
        raise IndexError, 'index %d outside of array bounds 0...%d' % [index, size]
      end

      if @is_struct
        self[index].replace(value)
      else
        to_ptr[index * @size, @size] = [value].pack(@pack_format)
        super(index, value)
      end
    end

to_ptr() click to toggle source

    # File ext/fiddle/lib/fiddle/struct.rb, line 153
    def to_ptr
      @ptr
    end