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 60 def already_set_up klass.respond_to? :gtype end
enum_sym()
click to toggle source
# File lib/gir_ffi/builders/enum_builder.rb, line 14 def enum_sym @classname.to_sym end
klass()
click to toggle source
# File lib/gir_ffi/builders/enum_builder.rb, line 34 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 25 def setup_class setup_ffi_type klass.extend superclass setup_constants setup_value_constants stub_methods setup_inspect end
setup_ffi_type()
click to toggle source
# File lib/gir_ffi/builders/enum_builder.rb, line 38 def setup_ffi_type 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 52 def setup_inspect klass.instance_eval <<-RUBY, __FILE__, __LINE__ + 1 def self.inspect # def self.inspect "#{@namespace}::#{@classname}" # "GFoo::Bar" end # end RUBY end
setup_value_constants()
click to toggle source
# File lib/gir_ffi/builders/enum_builder.rb, line 44 def setup_value_constants value_infos.each do |vinfo| optionally_define_constant klass, vinfo.constant_name do vinfo.value end end end
superclass()
click to toggle source
# File lib/gir_ffi/builders/enum_builder.rb, line 64 def superclass EnumBase end
value_infos()
click to toggle source
# File lib/gir_ffi/builders/enum_builder.rb, line 68 def value_infos @value_infos ||= info.values end
value_spec()
click to toggle source
# File lib/gir_ffi/builders/enum_builder.rb, line 18 def value_spec value_infos.map do |vinfo| val = GirFFI::ArgHelper.cast_uint32_to_int32(vinfo.value) [vinfo.name.to_sym, val] end.flatten end