class FFI::Enum
def initialize(*args)
-
tag
(nil, Symbol
) -- name of new Enum -
info
(nil, Enumerable
) -- symbols and values for new Enum -
native_type
(FFI::Type
) -- Native type for new Enum -
tag
(nil, Symbol
) -- enum tag -
info
(nil, Enumerable
) --
Overloads:
-
initialize(native_type, info, tag=nil)
-
initialize(info, tag=nil)
def initialize(*args) @native_type = args.first.kind_of?(FFI::Type) ? args.shift : Type::INT info, @tag = *args @kv_map = Hash.new unless info.nil? last_cst = nil value = 0 info.each do |i| case i when Symbol raise ArgumentError, "duplicate enum key" if @kv_map.has_key?(i) @kv_map[i] = value last_cst = i value += 1 when Integer @kv_map[last_cst] = i value = i+1 end end end @vk_map = @kv_map.invert end