FFI::Generator::Struct

Public Class Methods

callback_accessors(field_name, indent = 0) click to toggle source
# File lib/generator/struct.rb, line 16
def self.callback_accessors(field_name, indent = 0)
  result = def #{field_name}=(cb)  @#{field_name} = cb  self[:#{field_name}] = @#{field_name}enddef #{field_name}  @#{field_name}end
result.split("\n").collect { |line| ' ' * indent + line }.join("\n") << "\n"
end
camelcase(name) click to toggle source
# File lib/generator/struct.rb, line 28
def self.camelcase(name)
  name.gsub(/^_?\w|\_\w/) { |c| c.upcase }.delete('_')
end
new(params = { }) click to toggle source
# File lib/generator/struct.rb, line 31
def initialize(params = { })
  super
  @name = self.class.camelcase(@symname)
end
string_accessors(field_name, indent = 0) click to toggle source
# File lib/generator/struct.rb, line 4
def self.string_accessors(field_name, indent = 0)
  result = def #{field_name}=(str)  @#{field_name} = FFI::MemoryPointer.from_string(str)  self[:#{field_name}] = @#{field_name}enddef #{field_name}  @#{field_name}.get_string(0)end
result.split("\n").map { |line| ' ' * indent + line }.join("\n") << "\n"
end

Public Instance Methods

to_s() click to toggle source
# File lib/generator/struct.rb, line 35
def to_s
  fields_str = fields.inject("") do |str, f|
    str << @indent_str + ' ' * 9 << f.join(', ') << ",\n"
  end
  code = klass_string + @indent_str + "  layout(\n" + fields_str.chomp.chomp(',') + "\n" + @indent_str + "  )\n" + accessors + @indent_str + "end\n"
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.