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