Methods

DL::CStructBuilder

Public Class Methods

create(klass, types, members) click to toggle source
                
# File dl/lib/dl/struct.rb, line 18
def create(klass, types, members)
  new_class = Class.new(klass){
    define_method(:initialize){|addr|
      @entity = klass.entity_class.new(addr, types)
      @entity.assign_names(members)
    }
    define_method(:to_ptr){ @entity }
    define_method(:to_i){ @entity.to_i }
    members.each{|name|
      define_method(name){ @entity[name] }
      define_method(name + "="){|val| @entity[name] = val }
    }
  }
  size = klass.entity_class.size(types)
  new_class.module_eval(        def new_class.size()          #{size}        end        def new_class.malloc()          addr = DL.malloc(#{size})          new(addr)        end, __FILE__, __LINE__+1)
  return new_class
end
blog comments powered by Disqus