class Fiddle::CUnionEntity - RDoc Documentation

# class Fiddle::CUnionEntity

A pointer to a C union

### Public Class Methods

size(types) click to toggle source

Returns the size needed for the union with the given `types`.

    Fiddle::CUnionEntity.size(
      [ Fiddle::TYPE_DOUBLE,
        Fiddle::TYPE_INT,
        Fiddle::TYPE_CHAR,
        Fiddle::TYPE_VOIDP ]) #=> 8

    # File ext/fiddle/lib/fiddle/struct.rb, line 521
    def CUnionEntity.size(types)
      types.map { |type, count = 1|
        if type.respond_to?(:entity_class)
          type.size * count
        else
          PackInfo::SIZE_MAP[type] * count
        end
      }.max
    end

### Public Instance Methods

set_ctypes(types) click to toggle source

Calculate the necessary offset and for each union member with the given `types`

    # File ext/fiddle/lib/fiddle/struct.rb, line 533
    def set_ctypes(types)
      @ctypes = types
      @offset = Array.new(types.length, 0)
      @size   = self.class.size types
    end