class GirFFI::Builders::EnumBuilder

Implements the creation of an enum or flags type. The type will be attached to the appropriate namespace module, and will be defined as an enum for FFI.

Private Instance Methods

already_set_up() click to toggle source
# File lib/gir_ffi/builders/enum_builder.rb, line 49
def already_set_up
  klass.respond_to? :gtype
end
enum_sym() click to toggle source
# File lib/gir_ffi/builders/enum_builder.rb, line 12
def enum_sym
  @classname.to_sym
end
klass() click to toggle source
# File lib/gir_ffi/builders/enum_builder.rb, line 31
def klass
  @klass ||= get_or_define_module namespace_module, @classname
end
setup_class() click to toggle source
# File lib/gir_ffi/builders/enum_builder.rb, line 23
def setup_class
  setup_ffi_enum
  klass.extend superclass
  setup_constants
  stub_methods
  setup_inspect
end
setup_ffi_enum() click to toggle source
# File lib/gir_ffi/builders/enum_builder.rb, line 35
def setup_ffi_enum
  @enum = optionally_define_constant klass, :Enum do
    lib.enum(enum_sym, value_spec)
  end
end
setup_inspect() click to toggle source
# File lib/gir_ffi/builders/enum_builder.rb, line 41
def setup_inspect
  klass.instance_eval <<-EOS
    def self.inspect
      "#{@namespace}::#{@classname}"
    end
  EOS
end
superclass() click to toggle source
# File lib/gir_ffi/builders/enum_builder.rb, line 53
def superclass
  @superclass ||= EnumBase
end
value_spec() click to toggle source
# File lib/gir_ffi/builders/enum_builder.rb, line 16
def value_spec
  info.values.map do|vinfo|
    val = GirFFI::ArgHelper.cast_uint32_to_int32(vinfo.value)
    [vinfo.name.to_sym, val]
  end.flatten
end