# File lib/inline_acceleration.rb, line 187
    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))
        
        #build c delegate
        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"
        #        puts c_code
        self.c_singleton c_code
        
        #build ruby delegate
        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"
        #        puts ruby_code
        link_type("#{struct_name}*").class_eval ruby_code, __FILE__, line + 1
      end
    end