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