module RubyVM::RJIT::CPointer - ruby_vm: Ruby Standard Library Documentation

# module RubyVM::RJIT::CPointer

Every class under this namespace is a pointer. Even if the type is immediate, it shouldn’t be dereferenced until ‘*` is called.

### Public Class Methods

with_class_name(prefix, name, cache: false, &block) click to toggle source

Give a name to a dynamic `CPointer` class to see it on inspect

    # File ruby_vm/rjit/c_pointer.rb, line 374
    def self.with_class_name(prefix, name, cache: false, &block)
      return block.call if !name.nil? && name.empty?

      # Use a cached result only if cache: true
      class_name = "#{prefix}_#{name}"
      klass =
        if cache && self.const_defined?(class_name)
          self.const_get(class_name)
        else
          block.call
        end

      # Give it a name unless it's already defined
      unless self.const_defined?(class_name)
        self.const_set(class_name, klass)
      end

      klass
    end