# 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
# File lib/generator/struct.rb, line 28 def self.camelcase(name) name.gsub(/^_?\w|\_\w/) { |c| c.upcase }.delete('_') end
# File lib/generator/struct.rb, line 31 def initialize(params = { }) super @name = self.class.camelcase(@symname) end
# 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
# 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
Generated with the Darkfish Rdoc Generator 2.