Maintenance of Ruby 2.0.0 ended on February 24, 2016. Read more
A C union wrapper
Allocates a C union the types
provided. The C function
func
is called when the instance is garbage collected.
# File dl/lib/dl/struct.rb, line 212 def CUnionEntity.malloc(types, func=nil) addr = DL.malloc(CUnionEntity.size(types)) CUnionEntity.new(addr, types, func) end
Given types
, returns the size needed for the union.
DL::CUnionEntity.size([DL::TYPE_DOUBLE, DL::TYPE_INT, DL::TYPE_CHAR, DL::TYPE_VOIDP]) => 8
# File dl/lib/dl/struct.rb, line 222 def CUnionEntity.size(types) types.map { |type, count = 1| PackInfo::SIZE_MAP[type] * count }.max end