diff options
Diffstat (limited to 'include/Support/TypeInfo.h')
-rw-r--r-- | include/Support/TypeInfo.h | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/include/Support/TypeInfo.h b/include/Support/TypeInfo.h deleted file mode 100644 index e23f906afa..0000000000 --- a/include/Support/TypeInfo.h +++ /dev/null @@ -1,76 +0,0 @@ -//===- Support/TypeInfo.h - Support class for type_info objects -*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This class makes std::type_info objects behave like first class objects that -// can be put in maps and hashtables. This code is based off of code in the -// Loki C++ library from the Modern C++ Design book. -// -//===----------------------------------------------------------------------===// - -#ifndef SUPPORT_TYPEINFO_H -#define SUPPORT_TYPEINFO_H - -#include <typeinfo> - -namespace llvm { - -struct TypeInfo { - TypeInfo() { // needed for containers - struct Nil {}; // Anonymous class distinct from all others... - Info = &typeid(Nil); - } - - TypeInfo(const std::type_info &ti) : Info(&ti) { // non-explicit - } - - // Access for the wrapped std::type_info - const std::type_info &get() const { - return *Info; - } - - // Compatibility functions - bool before(const TypeInfo &rhs) const { - return Info->before(*rhs.Info) != 0; - } - const char *getClassName() const { - return Info->name(); - } - -private: - const std::type_info *Info; -}; - -// Comparison operators -inline bool operator==(const TypeInfo &lhs, const TypeInfo &rhs) { - return lhs.get() == rhs.get(); -} - -inline bool operator<(const TypeInfo &lhs, const TypeInfo &rhs) { - return lhs.before(rhs); -} - -inline bool operator!=(const TypeInfo &lhs, const TypeInfo &rhs) { - return !(lhs == rhs); -} - -inline bool operator>(const TypeInfo &lhs, const TypeInfo &rhs) { - return rhs < lhs; -} - -inline bool operator<=(const TypeInfo &lhs, const TypeInfo &rhs) { - return !(lhs > rhs); -} - -inline bool operator>=(const TypeInfo &lhs, const TypeInfo &rhs) { - return !(lhs < rhs); -} - -} // End llvm namespace - -#endif |