In Files

Parent

Included Modules

FFI::Enum

Attributes

tag[R]

Public Class Methods

new(info, tag=nil) click to toggle source
# File lib/ffi/enum.rb, line 57
def initialize(info, tag=nil)
  @tag = tag
  @kv_map = Hash.new
  unless info.nil?
    last_cst = nil
    value = 0
    info.each do |i|
      case i
      when Symbol
        @kv_map[i] = value
        last_cst = i
        value += 1
      when Integer
        @kv_map[last_cst] = i
        value = i+1
      end
    end
  end
  @vk_map = Hash[@kv_map.map{|k,v| [v,k]}]
end

Public Instance Methods

[](query) click to toggle source
# File lib/ffi/enum.rb, line 82
def [](query)
  case query
  when Symbol
    @kv_map[query]
  when Integer
    @vk_map[query]
  end
end
Also aliased as: find
find(query) click to toggle source
Alias for: []
from_native(val, ctx) click to toggle source
# File lib/ffi/enum.rb, line 113
def from_native(val, ctx)
  @vk_map[val] || val
end
native_type() click to toggle source
# File lib/ffi/enum.rb, line 99
def native_type
  Type::INT
end
symbol_map() click to toggle source
# File lib/ffi/enum.rb, line 92
def symbol_map
  @kv_map
end
Also aliased as: to_h, to_hash
symbols() click to toggle source
# File lib/ffi/enum.rb, line 78
def symbols
  @kv_map.keys
end
to_h() click to toggle source
Alias for: symbol_map
to_hash() click to toggle source
Alias for: symbol_map
to_native(val, ctx) click to toggle source
# File lib/ffi/enum.rb, line 103
def to_native(val, ctx)
  @kv_map[val] || if val.is_a?(Integer)
    val
  elsif val.respond_to?(:to_int)
    val.to_int
  else
    raise ArgumentError, "invalid enum value, #{val.inspect}"
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.