Improve documentation.
[oota-llvm.git] / include / llvm / ADT / APInt.h
index e38b7bc996c286dff529371928c8ec8a48c26cad..ca09ff68acffc9f2ecab7f192b5dc219384d678b 100644 (file)
@@ -107,8 +107,8 @@ public:
   }
 
   /// This method is used internally to clear the to "N" bits that are not used
-  /// by the APInt. This is needed after a word is assigned a value to ensure 
-  /// that those bits are zero'd out.
+  /// by the APInt. This is needed after the most significant word is assigned 
+  /// a value to ensure that those bits are zero'd out.
   /// @brief Clear high order bits
   inline void clearUnusedBits() {
     if (isSingleWord())
@@ -119,21 +119,35 @@ public:
   }
 
   /// @returns the corresponding word for the specified bit position.
-  /// This is a constant version.
+  /// @brief Get the word corresponding to a bit position
   inline uint64_t getWord(uint32_t bitPosition) const { 
     return isSingleWord() ? VAL : pVal[whichWord(bitPosition)]; 
   }
 
-  /// @brief Converts a char array into an integer.
+  /// This is used by the constructors that take string arguments.
+  /// @brief Converts a char array into an APInt
   void fromString(uint32_t numBits, const char *StrStart, uint32_t slen, 
                   uint8_t radix);
 
+  /// This is used by the toString method to divide by the radix. It simply
+  /// provides a more convenient form of divide for internal use.
+  /// @brief An internal division function for dividing APInts.
+  static void divide(const APInt LHS, uint32_t lhsWords, 
+                     const APInt &RHS, uint32_t rhsWords,
+                     APInt *Quotient, APInt *Remainder);
+
+#ifndef NDEBUG
+  /// @brief debug method
+  void dump() const;
+#endif
+
 public:
-  /// @brief Create a new APInt of numBits bit-width, and initialized as val.
+  /// @brief Create a new APInt of numBits width, initialized as val.
   APInt(uint32_t numBits, uint64_t val);
 
-  /// @brief Create a new APInt of numBits bit-width, and initialized as 
-  /// bigVal[].
+  /// Note that numWords can be smaller or larger than the corresponding bit
+  /// width but any extraneous bits will be dropped.
+  /// @brief Create a new APInt of numBits width, initialized as bigVal[].
   APInt(uint32_t numBits, uint32_t numWords, uint64_t bigVal[]);
 
   /// @brief Create a new APInt by translating the string represented 
@@ -407,7 +421,7 @@ public:
   /// computations to see how "wide" the value is.
   /// @brief Compute the number of active bits in the value
   inline uint32_t getActiveBits() const {
-    return getNumWords() * APINT_BITS_PER_WORD - countLeadingZeros();
+    return BitWidth - countLeadingZeros();
   }
 
   /// @returns a uint64_t value from this APInt. If this APInt contains a single