def link_fields(struct_name, field_hash)
field_hash.each do |field_name, c_type|
delegate_function_name = "#{struct_name.gsub(' ', '_')}_#{field_name}"
type = Type.new(c_type, link_type(c_type))
c_code = "\#{type.c_transfer_type} \#{delegate_function_name}(\#{TRANSFER_TYPE} pointer) {\n\#{type.c_transfer_type} result = (\#{type.c_transfer_type}) ((\#{struct_name}*) pointer)->\#{field_name};\n\#{type.is_simple_type? ? 'return result;' : \"if(result) { return result; } else { return(Qfalse); }\"}\n}\n"
self.c_singleton c_code
line = __LINE__; ruby_code = "def \#{field_name}\nresult = (\#{@mod.name}.\#{delegate_function_name}(memory_address))\n\#{type.is_pointer_type? ? 'return nil if !result' : ''}\n\#{type.ruby_type_conversion}(result)\nend\n"
link_type("#{struct_name}*").class_eval ruby_code, __FILE__, line + 1
end
end