class Hammer::Internal::HTokenType
Public Class Methods
from_name(name)
click to toggle source
# File lib/hammer/internal.rb, line 90 def self.from_name(name) unless @@known_type_map.key? name num = Hammer::Internal.h_get_token_type_number(name.to_s) if num <= 0 raise ArgumentError, "Unknown token type #{name}" end @@known_type_map[name] = num @@inverse_type_map[num] = name end return @@known_type_map[name] end
from_native(val, ctx)
click to toggle source
# File lib/hammer/internal.rb, line 124 def self.from_native(val, ctx) return from_num(val) || val end
from_num(num)
click to toggle source
# File lib/hammer/internal.rb, line 102 def self.from_num(num) unless @@inverse_type_map.key? num name = Hammer::Internal.h_get_token_type_name(num) if name.nil? return nil end name = name.to_sym @@known_type_map[name] = num @@inverse_type_map[num] = name end return @@inverse_type_map[num] end
native_type()
click to toggle source
# File lib/hammer/internal.rb, line 115 def self.native_type FFI::Type::INT end
new(name, &block)
click to toggle source
# File lib/hammer/internal.rb, line 76 def self.new(name, &block) if name.is_a?(Symbol) name_sym = name name_str = name.to_s else name_str = name.to_s name_sym = name.to_sym end num = Hammer::Internal.h_allocate_token_type(name_str) @@known_type_map[name_sym] = num @@inverse_type_map[num] = name_sym @@from_hpt[name_sym] = block end
to_native(val, ctx)
click to toggle source
# File lib/hammer/internal.rb, line 119 def self.to_native(val, ctx) return val if val.is_a?(Integer) return from_name(val) end