class FFI::Enums
An instance of this class permits to manage {Enum}s. In fact, Enums
is a collection of {Enum}s.
Public Class Methods
# File lib/ffi/enum.rb, line 38 def initialize @all_enums = Array.new @tagged_enums = Hash.new @symbol_map = Hash.new end
Public Instance Methods
@param [Enum] enum Add an {Enum} to the collection.
# File lib/ffi/enum.rb, line 46 def <<(enum) @all_enums << enum @tagged_enums[enum.tag] = enum unless enum.tag.nil? @symbol_map.merge!(enum.symbol_map) end
@param symbol a symbol to find in merge symbol maps of all enums. @return a symbol
# File lib/ffi/enum.rb, line 65 def __map_symbol(symbol) @symbol_map[symbol] end
@param query enum tag or part of an enum name @return [Enum] Find a {Enum} in collection.
# File lib/ffi/enum.rb, line 55 def find(query) if @tagged_enums.has_key?(query) @tagged_enums[query] else @all_enums.detect { |enum| enum.symbols.include?(query) } end end