Make a couple organizational changes. Type no longer derives from Value
authorReid Spencer <rspencer@reidspencer.com>
Fri, 12 Jan 2007 17:26:25 +0000 (17:26 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Fri, 12 Jan 2007 17:26:25 +0000 (17:26 +0000)
(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

docs/ProgrammersManual.html

index 9a09c9bb4841e1add5a8733accaa64422ae9d128..81e37f7e1b547e8ab57d916a20b27e5887c56739 100644 (file)
@@ -99,6 +99,7 @@ with another <tt>Value</tt></a> </li>
 
   <li><a href="#coreclasses">The Core LLVM Class Hierarchy Reference</a>
     <ul>
+      <li><a href="#Type">The <tt>Type</tt> class</a> </li>
       <li><a href="#Value">The <tt>Value</tt> class</a>
         <ul>
           <li><a href="#User">The <tt>User</tt> class</a>
@@ -122,7 +123,6 @@ with another <tt>Value</tt></a> </li>
               </li>
            </ul>
          </li>
-          <li><a href="#Type">The <tt>Type</tt> class</a> </li>
           <li><a href="#Argument">The <tt>Argument</tt> class</a></li>
         </ul>
       </li>
@@ -1602,6 +1602,8 @@ will loop infinitely.</p>
 <!-- *********************************************************************** -->
 
 <div class="doc_text">
+<p><tt>#include "<a href="/doxygen/Type_8h-source.html">llvm/Type.h</a>"</tt>
+<br>doxygen info: <a href="/doxygen/classllvm_1_1Type.html">Type Class</a></p>
 
 <p>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 <tt>lib/VMCore</tt> directory.</p>
 
 </div>
 
+<!-- ======================================================================= -->
+<div class="doc_subsection">
+  <a name="Type">The <tt>Type</tt> class and Derived Types</a>
+</div>
+
+<div class="doc_text">
+
+  <p><tt>Type</tt> is a superclass of all type classes. Every <tt>Value</tt> has
+  a <tt>Type</tt>. <tt>Type</tt> cannot be instantiated directly but only
+  through its subclasses. Certain primitive types (<tt>VoidType</tt>,
+  <tt>LabelType</tt>, <tt>FloatType</tt> and <tt>DoubleType</tt>) have hidden 
+  subclasses. They are hidden because they offer no useful functionality beyond
+  what the <tt>Type</tt> class offers except to distinguish themselves from 
+  other subclasses of <tt>Type</tt>.</p>
+  <p>All other types are subclasses of <tt>DerivedType</tt>.  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 
+  <tt>Type*</tt> values, the types are identical if the pointers are identical.
+  </p>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<div class="doc_subsubsection">
+  <a name="m_Value">Important Public Methods</a>
+</div>
+
+<div class="doc_text">
+
+<ul>
+  <li><tt>bool isInteger() const</tt>: Returns true for any integer type except
+  a one-bit integer (i1). </li> 
+
+  <li><tt>bool isIntegral() const</tt>: Returns true for any integer type 
+  including a one-bit integer.</li>
+
+  <li><tt>bool isFloatingPoint()</tt>: Return true if this is one of the two
+  floating point types.</li>
+
+  <li><tt>bool isAbstract()</tt>: Return true if the type is abstract (contains
+  an OpaqueType anywhere in its definition).</li>
+
+  <li><tt>bool isSized()</tt>: Return true if the type has known size. Things
+  that don't have a size are abstract types, labels and void.</li>
+
+</ul>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<div class="doc_subsubsection">
+  <a name="m_Value">Important Derived Types</a>
+</div>
+<div class="doc_text">
+<dl>
+  <dt><tt>IntegerType</tt></dt>
+  <dd>Subclass of DerivedType that represents integer types of any bit width. 
+  Any bit width between <tt>IntegerType::MIN_INT_BITS</tt> (1) and 
+  <tt>IntegerType::MAX_INT_BITS</tt> (~8 million) can be represented.
+  <ul>
+    <li><tt>static const IntegerType* get(unsigned NumBits)</tt>: get an integer
+    type of a specific bit width.</li>
+    <li><tt>unsigned getBitWidth() const</tt>: Get the bit width of an integer
+    type.</li>
+  </ul>
+  </dd>
+  <dt><tt>SequentialType</tt></dt>
+  <dd>This is subclassed by ArrayType and PointerType
+    <ul>
+      <li><tt>const Type * getElementType() const</tt>: Returns the type of each
+      of the elements in the sequential type. </li>
+    </ul>
+  </dd>
+  <dt><tt>ArrayType</tt></dt>
+  <dd>This is a subclass of SequentialType and defines the interface for array 
+  types.
+    <ul>
+      <li><tt>unsigned getNumElements() const</tt>: Returns the number of 
+      elements in the array. </li>
+    </ul>
+  </dd>
+  <dt><tt>PointerType</tt></dt>
+  <dd>Subclass of SequentialType for pointer types.</li>
+  <dt><tt>PackedType</tt></dt>
+  <dd>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.</dd>
+  <dt><tt>StructType</tt></dt>
+  <dd>Subclass of DerivedTypes for struct types.</dd>
+  <dt><tt>FunctionType</tt></dt>
+  <dd>Subclass of DerivedTypes for function types.
+    <ul>
+      <li><tt>bool isVarArg() const</tt>: Returns true if its a vararg
+      function</li>
+      <li><tt> const Type * getReturnType() const</tt>: Returns the
+      return type of the function.</li>
+      <li><tt>const Type * getParamType (unsigned i)</tt>: Returns
+      the type of the ith parameter.</li>
+      <li><tt> const unsigned getNumParams() const</tt>: Returns the
+      number of formal parameters.</li>
+    </ul>
+  </dd>
+  <dt><tt>OpaqueType</tt></dt>
+  <dd>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.</dd>
+</dl>
+</div>
+
 <!-- ======================================================================= -->
 <div class="doc_subsection">
   <a name="Value">The <tt>Value</tt> class</a>
@@ -2421,113 +2537,6 @@ the various types of Constants.</p>
   </li>
 </ul>
 </div>
-
-<!-- ======================================================================= -->
-<div class="doc_subsection">
-  <a name="Type">The <tt>Type</tt> class and Derived Types</a>
-</div>
-
-<div class="doc_text">
-
-  <p><tt>Type</tt> is a superclass of all type classes. Every <tt>Value</tt> has
-  a <tt>Type</tt>. <tt>Type</tt> cannot be instantiated directly but only
-  through its subclasses. Certain primitive types (<tt>VoidType</tt>,
-  <tt>LabelType</tt>, <tt>FloatType</tt> and <tt>DoubleType</tt>) have hidden 
-  subclasses. They are hidden because they offer no useful functionality beyond
-  what the <tt>Type</tt> class offers except to distinguish themselves from 
-  other subclasses of <tt>Type</tt>.</p>
-  <p>All other types are subclasses of <tt>DerivedType</tt>.  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 
-  <tt>Type*</tt> values, the types are identical if the pointers are identical.
-  </p>
-</div>
-
-<!-- _______________________________________________________________________ -->
-<div class="doc_subsubsection">
-  <a name="m_Value">Important Public Methods</a>
-</div>
-
-<div class="doc_text">
-
-<ul>
-  <li><tt>bool isInteger() const</tt>: Returns true for any integer type except
-  a one-bit integer (i1). </li> 
-
-  <li><tt>bool isIntegral() const</tt>: Returns true for any integer type 
-  including a one-bit integer.</li>
-
-  <li><tt>bool isFloatingPoint()</tt>: Return true if this is one of the two
-  floating point types.</li>
-
-  <li><tt>bool isAbstract()</tt>: Return true if the type is abstract (contains
-  an OpaqueType anywhere in its definition).</li>
-
-  <li><tt>bool isSized()</tt>: Return true if the type has known size. Things
-  that don't have a size are abstract types, labels and void.</li>
-
-</ul>
-</div>
-
-<!-- _______________________________________________________________________ -->
-<div class="doc_subsubsection">
-  <a name="m_Value">Important Derived Types</a>
-</div>
-<div class="doc_text">
-<ul>
-  <li>IntegerType: Subclass of DerivedType that represents integer types of
-  any bit width. Any bit width between <tt>IntegerType::MIN_INT_BITS</tt> (1) 
-  and <tt>IntegerType::MAX_INT_BITS</tt> (~8 million) can be represented.
-  <ul>
-    <li><tt>static const IntegerType* get(unsigned NumBits)</tt>: get an integer
-    type of a specific bit width.</li>
-    <li><tt>unsigned getBitWidth() const</tt>: Get the bit width of an integer
-    type.</li>
-  </ul>
-  </li>
-  <li>SequentialType : This is subclassed by ArrayType and PointerType
-    <ul>
-      <li><tt>const Type * getElementType() const</tt>: Returns the type of each
-      of the elements in the sequential type. </li>
-    </ul>
-  </li>
-  <li>ArrayType : This is a subclass of SequentialType and defines interface for
-  array types.
-    <ul>
-      <li><tt>unsigned getNumElements() const</tt>: Returns the number of 
-      elements in the array. </li>
-    </ul>
-  </li>
-  <li>PointerType : Subclass of SequentialType for  pointer types. </li>
-  <li>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.</dd>
-  <li>StructType : subclass of DerivedTypes for struct types </li>
-  <li>FunctionType : subclass of DerivedTypes for function types.
-    <ul>
-      <li><tt>bool isVarArg() const</tt>: Returns true if its a vararg
-      function</li>
-      <li><tt> const Type * getReturnType() const</tt>: Returns the
-      return type of the function.</li>
-      <li><tt>const Type * getParamType (unsigned i)</tt>: Returns
-      the type of the ith parameter.</li>
-      <li><tt> const unsigned getNumParams() const</tt>: Returns the
-      number of formal parameters.</li>
-    </ul>
-  </li>
-  <li>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.</li>
-</ul>
-</div>
-
 <!-- ======================================================================= -->
 <div class="doc_subsection">
   <a name="Argument">The <tt>Argument</tt> class</a>