In Files

  • dl/lib/dl/struct.rb

Included Modules

DL::CUnionEntity

Public Class Methods

malloc(types, func=nil) click to toggle source
 
               # File dl/lib/dl/struct.rb, line 176
def CUnionEntity.malloc(types, func=nil)
  addr = DL.malloc(CUnionEntity.size(types))
  CUnionEntity.new(addr, types, func)
end
            
size(types) click to toggle source
 
               # File dl/lib/dl/struct.rb, line 181
def CUnionEntity.size(types)
  size   = 0
  types.each_with_index{|t,i|
    if( t.is_a?(Array) )
      tsize = PackInfo::SIZE_MAP[t[0]] * t[1]
    else
      tsize = PackInfo::SIZE_MAP[t]
    end
    if( tsize > size )
      size = tsize
    end
  }
end
            

Public Instance Methods

set_ctypes(types) click to toggle source
 
               # File dl/lib/dl/struct.rb, line 195
def set_ctypes(types)
  @ctypes = types
  @offset = []
  @size   = 0
  types.each_with_index{|t,i|
    @offset[i] = 0
    if( t.is_a?(Array) )
      size = SIZE_MAP[t[0]] * t[1]
    else
      size = SIZE_MAP[t]
    end
    if( size > @size )
      @size = size
    end
  }
end