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
Source
# File lib/gir_ffi/builders/enum_builder.rb, line 60 def already_set_up klass.respond_to? :gtype end
Source
# File lib/gir_ffi/builders/enum_builder.rb, line 14 def enum_sym @classname.to_sym end
Source
# File lib/gir_ffi/builders/enum_builder.rb, line 34 def klass @klass ||= get_or_define_module namespace_module, @classname end
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
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
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
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
Source
# File lib/gir_ffi/builders/enum_builder.rb, line 64 def superclass EnumBase end
Source
# File lib/gir_ffi/builders/enum_builder.rb, line 68 def value_infos @value_infos ||= info.values end
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