diff options
| -rw-r--r-- | llvm/include/llvm/Support/PointerLikeTypeTraits.h | 14 | 
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/include/llvm/Support/PointerLikeTypeTraits.h b/llvm/include/llvm/Support/PointerLikeTypeTraits.h index 9ff894edbeb..521a49684e4 100644 --- a/llvm/include/llvm/Support/PointerLikeTypeTraits.h +++ b/llvm/include/llvm/Support/PointerLikeTypeTraits.h @@ -60,6 +60,20 @@ public:    enum { NumLowBitsAvailable = 2 };  }; +// Provide PointerLikeTypeTraits for const things. +template <typename T> class PointerLikeTypeTraits<const T> { +  typedef PointerLikeTypeTraits<T> NonConst; + +public: +  static inline const void *getAsVoidPointer(const T P) { +    return NonConst::getAsVoidPointer(P); +  } +  static inline const T getFromVoidPointer(const void *P) { +    return NonConst::getFromVoidPointer(const_cast<void *>(P)); +  } +  enum { NumLowBitsAvailable = NonConst::NumLowBitsAvailable }; +}; +  // Provide PointerLikeTypeTraits for const pointers.  template <typename T> class PointerLikeTypeTraits<const T *> {    typedef PointerLikeTypeTraits<T *> NonConst;  | 

