class GirFFI::Builder::Field

Creates field getter and setter code for a given IFieldInfo.

Public Class Methods

new(field_info, lib_module, struct_class) click to toggle source
# File lib/gir_ffi/builder/field.rb, line 8
def initialize field_info, lib_module, struct_class
  @info = field_info
  @libmodule = lib_module
  @struct_class = struct_class
end

Public Instance Methods

getter_def() click to toggle source
# File lib/gir_ffi/builder/field.rb, line 14
      def getter_def
        builder = return_value_builder

        return "        def #{@info.name}
          struct = #{@struct_class}.new @struct.to_ptr
          #{builder.cvar} = struct[#{field_symbol.inspect}]
          #{builder.post.join("\n")}
          #{builder.retval}
        end
"
      end
setter_def() click to toggle source
# File lib/gir_ffi/builder/field.rb, line 27
      def setter_def
        builder = setter_builder
        name = @info.name

        return "        def #{name}= #{builder.inarg}
          #{builder.pre.join("\n")}
          struct = #{@struct_class}.new @struct.to_ptr
          struct[#{name.to_sym.inspect}] = #{builder.callarg}
        end
"
      end