From: Reid Spencer Date: Fri, 12 Jan 2007 17:26:25 +0000 (+0000) Subject: Make a couple organizational changes. Type no longer derives from Value X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=303c4b4f8de08433e03eb633211b655da9cb80f5;p=oota-llvm.git Make a couple organizational changes. Type no longer derives from Value (hasn't for ages) so move it up one level in the table of contents. Type needs to be understood before Value so move it before Value. Make the descriptions of types stand out a little more. Add references to the doxygen for the Type class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33122 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/docs/ProgrammersManual.html b/docs/ProgrammersManual.html index 9a09c9bb484..81e37f7e1b5 100644 --- a/docs/ProgrammersManual.html +++ b/docs/ProgrammersManual.html @@ -99,6 +99,7 @@ with another Value
  • The Core LLVM Class Hierarchy Reference
  • @@ -1602,6 +1602,8 @@ will loop infinitely.

    +

    #include "llvm/Type.h" +
    doxygen info: Type Class

    The Core LLVM classes are the primary means of representing the program being inspected or transformed. The core LLVM classes are defined in @@ -1610,6 +1612,120 @@ the lib/VMCore directory.

    + +
    + The Type class and Derived Types +
    + +
    + +

    Type is a superclass of all type classes. Every Value has + a Type. Type cannot be instantiated directly but only + through its subclasses. Certain primitive types (VoidType, + LabelType, FloatType and DoubleType) have hidden + subclasses. They are hidden because they offer no useful functionality beyond + what the Type class offers except to distinguish themselves from + other subclasses of Type.

    +

    All other types are subclasses of DerivedType. Types can be + named, but this is not a requirement. There exists exactly + one instance of a given shape at any one time. This allows type equality to + be performed with address equality of the Type Instance. That is, given two + Type* values, the types are identical if the pointers are identical. +

    +
    + + +
    + Important Public Methods +
    + +
    + + +
    + + +
    + Important Derived Types +
    +
    +
    +
    IntegerType
    +
    Subclass of DerivedType that represents integer types of any bit width. + Any bit width between IntegerType::MIN_INT_BITS (1) and + IntegerType::MAX_INT_BITS (~8 million) can be represented. +
      +
    • static const IntegerType* get(unsigned NumBits): get an integer + type of a specific bit width.
    • +
    • unsigned getBitWidth() const: Get the bit width of an integer + type.
    • +
    +
    +
    SequentialType
    +
    This is subclassed by ArrayType and PointerType +
      +
    • const Type * getElementType() const: Returns the type of each + of the elements in the sequential type.
    • +
    +
    +
    ArrayType
    +
    This is a subclass of SequentialType and defines the interface for array + types. +
      +
    • unsigned getNumElements() const: Returns the number of + elements in the array.
    • +
    +
    +
    PointerType
    +
    Subclass of SequentialType for pointer types. +
    PackedType
    +
    Subclass of SequentialType for packed (vector) types. A + packed type is similar to an ArrayType but is distinguished because it is + a first class type wherease ArrayType is not. Packed types are used for + vector operations and are usually small vectors of of an integer or floating + point type.
    +
    StructType
    +
    Subclass of DerivedTypes for struct types.
    +
    FunctionType
    +
    Subclass of DerivedTypes for function types. +
      +
    • bool isVarArg() const: Returns true if its a vararg + function
    • +
    • const Type * getReturnType() const: Returns the + return type of the function.
    • +
    • const Type * getParamType (unsigned i): Returns + the type of the ith parameter.
    • +
    • const unsigned getNumParams() const: Returns the + number of formal parameters.
    • +
    +
    +
    OpaqueType
    +
    Sublcass of DerivedType for abstract types. This class + defines no content and is used as a placeholder for some other type. Note + that OpaqueType is used (temporarily) during type resolution for forward + references of types. Once the referenced type is resolved, the OpaqueType + is replaced with the actual type. OpaqueType can also be used for data + abstraction. At link time opaque types can be resolved to actual types + of the same name.
    +
    +
    +
    The Value class @@ -2421,113 +2537,6 @@ the various types of Constants.

    - - -
    - The Type class and Derived Types -
    - -
    - -

    Type is a superclass of all type classes. Every Value has - a Type. Type cannot be instantiated directly but only - through its subclasses. Certain primitive types (VoidType, - LabelType, FloatType and DoubleType) have hidden - subclasses. They are hidden because they offer no useful functionality beyond - what the Type class offers except to distinguish themselves from - other subclasses of Type.

    -

    All other types are subclasses of DerivedType. Types can be - named, but this is not a requirement. There exists exactly - one instance of a given shape at any one time. This allows type equality to - be performed with address equality of the Type Instance. That is, given two - Type* values, the types are identical if the pointers are identical. -

    -
    - - -
    - Important Public Methods -
    - -
    - - -
    - - -
    - Important Derived Types -
    -
    - -
    -
    The Argument class