Module: RubyVM::RJIT::CType::Immediate

Defined in:
lib/ruby_vm/rjit/c_type.rb

Class Method Summary collapse

Class Method Details

.find(size, signed) ⇒ Object



49
50
51
52
53
# File 'lib/ruby_vm/rjit/c_type.rb', line 49

def self.find(size, signed)
  fiddle_type = TYPE_MAP.fetch(size)
  fiddle_type = -fiddle_type unless signed
  new(fiddle_type)
end

.new(fiddle_type) ⇒ Object

Parameters:



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/ruby_vm/rjit/c_type.rb', line 31

def self.new(fiddle_type)
  name = Fiddle.constants.find do |const|
    const.start_with?('TYPE_') && Fiddle.const_get(const) == fiddle_type.abs
  end&.to_s
  name.delete_prefix!('TYPE_')
  if fiddle_type.negative?
    name.prepend('U')
  end
  CPointer.with_class_name('Immediate', name, cache: true) do
    CPointer::Immediate.define(fiddle_type)
  end
end

.parse(ctype) ⇒ Object

Parameters:



45
46
47
# File 'lib/ruby_vm/rjit/c_type.rb', line 45

def self.parse(ctype)
  new(Fiddle::Importer.parse_ctype(ctype))
end