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