eliminate all 80-col violations that I have introduced in my recent checkins (and...
[oota-llvm.git] / include / llvm / Support / PointerLikeTypeTraits.h
index 000919ca109ad09dcff462d39c55f8d00ce14149..b0edd3bd09f99d8049cf27b9d21a5d8f82366c85 100644 (file)
@@ -15,6 +15,8 @@
 #ifndef LLVM_SUPPORT_POINTERLIKETYPETRAITS_H
 #define LLVM_SUPPORT_POINTERLIKETYPETRAITS_H
 
+#include "llvm/Support/DataTypes.h"
+
 namespace llvm {
   
 /// PointerLikeTypeTraits - This is a traits object that is used to handle
@@ -42,7 +44,7 @@ public:
   ///
   /// All clients should use assertions to do a run-time check to ensure that
   /// this is actually true.
-  enum { NumLowBitsAvailable = 3 };
+  enum { NumLowBitsAvailable = 2 };
 };
   
 // Provide PointerLikeTypeTraits for const pointers.
@@ -53,7 +55,21 @@ public:
   static inline const T *getFromVoidPointer(const void *P) {
     return static_cast<const T*>(P);
   }
-  enum { NumLowBitsAvailable = 3 };
+  enum { NumLowBitsAvailable = 2 };
+};
+
+// Provide PointerLikeTypeTraits for uintptr_t.
+template<>
+class PointerLikeTypeTraits<uintptr_t> {
+public:
+  static inline void *getAsVoidPointer(uintptr_t P) {
+    return reinterpret_cast<void*>(P);
+  }
+  static inline uintptr_t getFromVoidPointer(void *P) {
+    return reinterpret_cast<uintptr_t>(P);
+  }
+  // No bits are available!
+  enum { NumLowBitsAvailable = 0 };
 };
   
 } // end namespace llvm