Sha256: 4de7137d7aa804a832f3719a31d919aff2023a19335f02c7dc94cb823341460a

Contents?: true

Size: 1.39 KB

Versions: 4

Compression:

Stored size: 1.39 KB

Contents

# encoding: utf-8
# frozen_string_literal: true

module Carbon
  module Core
    # Defines the pointer type and functions for the Carbon Core library.
    #
    # @api private
    module Pointer
      # The pointer type name.  This is kept here to provide a shortcut to
      # the pointer type.
      #
      # @return [Concrete::Type]
      PTYPE = Carbon::Type("Carbon::Pointer<T>")

      # The pointer generic type name.  This is kept here to provide a
      # shortcut.
      #
      # @return [Concrete::Type]
      PTYPEGEN = PTYPE.generics[0].name

      require "carbon/core/pointer/access"
      require "carbon/core/pointer/cast"
      require "carbon/core/pointer/math"
      require "carbon/core/pointer/memory"
      require "carbon/core/pointer/type"

      extend Pointer::Access
      extend Pointer::Cast
      extend Pointer::Math
      extend Pointer::Memory
      extend Pointer::Type

      # Defines the pointer type and all of the pointer functions.
      #
      # @see #define_pointer_type
      # @see .define_pointer_functions
      # @return [self]
      def self.define_pointer
        define_pointer_type
        define_pointer_functions
        self
      end

      # Defines all of the pointer
      def self.define_pointer_functions
        define_math_functions
        define_cast_functions
        define_memory_functions
        define_access_functions
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
carbon-core-0.2.1 lib/carbon/core/pointer.rb
carbon-core-0.2.0 lib/carbon/core/pointer.rb
carbon-core-0.1.1 lib/carbon/core/pointer.rb
carbon-core-0.1.0 lib/carbon/core/pointer.rb