Sha256: b729c0cee8c409e6897cdc8b3b9820d8244ce1794b0172cd87fb0b793b6b59b5

Contents?: true

Size: 1.64 KB

Versions: 4

Compression:

Stored size: 1.64 KB

Contents

# encoding: utf-8
# frozen_string_literal: true

require "carbon/concrete/item/base"
require "carbon/concrete/item/data"
require "carbon/concrete/item/function"
require "carbon/concrete/item/internal"
require "carbon/concrete/item/struct"
require "carbon/concrete/item/trait"

module Carbon
  module Concrete
    # Items.  These are buildable concepts that have dependencies.  Each item
    # includes {Item::Base} in order to respond to the item API.  The main
    # API for items are the following set of methods:
    #
    # - `#intern` (`String`) - Returns an "interned" name of the item.  See
    #   {Base#intern}.
    # - `#name` (`String`) - The full name of the item.  See {Base#name}.
    # - `#generics` (`<Type::Generic>`) - The generics of the item.
    #   This is normally something like `[T]`; these most likely have no
    #   correspondance to an actual type.  See {Base#generics}.
    # - `#dependencies` (`Set<Request>`) - A set of dependencies that
    #   the item has.  This includes the generics that the item uses.
    #   See {Base#dependencies}.
    # - `#==`, `#eql?` (`Boolean`) - Comparison.  Normally uses the `#intern`
    #   name for a basis of comarison.  See {Base#==}.
    # - `#call` - Builds the item for compilation.  This is the last stage.
    #   This should generate something for LLVM in some way.  See {Base#call}.
    # - `#corrected_dependencies` (`Enumerable`) - Corrects the depdenencies of
    #   the Item.  This makes it so that the generics of the passed request
    #   are matched with the generics of the dependencies, essentially
    #   resolving them.  See {Base#corrected_dependencies}.
    module Item
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

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