In Files

  • fiddle/lib/fiddle/struct.rb

Fiddle::CUnionEntity

A C union wrapper

Public Class Methods

malloc(types, func=nil) click to toggle source

Allocates a C union the types provided.

When the instance is garbage collected, the C function func is called.

 
               # File fiddle/lib/fiddle/struct.rb, line 216
def CUnionEntity.malloc(types, func=nil)
  addr = Fiddle.malloc(CUnionEntity.size(types))
  CUnionEntity.new(addr, types, func)
end
            
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 fiddle/lib/fiddle/struct.rb, line 228
def CUnionEntity.size(types)
  types.map { |type, count = 1|
    PackInfo::SIZE_MAP[type] * count
  }.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 fiddle/lib/fiddle/struct.rb, line 236
def set_ctypes(types)
  @ctypes = types
  @offset = Array.new(types.length, 0)
  @size   = self.class.size types
end
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.

blog comments powered by Disqus