Class
A pointer to a C union
Class Methods
::
ext/fiddle/lib/fiddle/struct.rb
View on GitHub
# File tmp/rubies/ruby-3.4.0-preview1/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
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
Instance Methods
ext/fiddle/lib/fiddle/struct.rb
View on GitHub
# File tmp/rubies/ruby-3.4.0-preview1/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
Calculate the necessary offset and for each union member with the given types