class FFI::Enum

def initialize(*args)

Parameters:
  • 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