diff options
| author | Daniel Berlin <dberlin@dberlin.org> | 2017-03-07 18:47:50 +0000 | 
|---|---|---|
| committer | Daniel Berlin <dberlin@dberlin.org> | 2017-03-07 18:47:50 +0000 | 
| commit | 44b876e2591bd9bb6a989049d6b3524063cbfb9f (patch) | |
| tree | c8968847b76e4767d2a1e1e3624c033a771bca77 | |
| parent | 48522c9e13866e9e554040f10037dc617023e4f5 (diff) | |
| download | bcm5719-llvm-44b876e2591bd9bb6a989049d6b3524063cbfb9f.tar.gz bcm5719-llvm-44b876e2591bd9bb6a989049d6b3524063cbfb9f.zip  | |
Add PointerLikeTypeTraits for const things, as long as there is one for the non-const version. Clang and other users have a number of types they use as pointers, and this avoids having to define both const and non-const versions of PointerLikeTraits.
llvm-svn: 297181
| -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;  | 

