diff options
| author | Howard Hinnant <hhinnant@apple.com> | 2010-05-11 19:42:16 +0000 |
|---|---|---|
| committer | Howard Hinnant <hhinnant@apple.com> | 2010-05-11 19:42:16 +0000 |
| commit | 3e519524c118651123eecf60c2bbc5d65ad9bac3 (patch) | |
| tree | b2dd4168cfe448920a602cd7d2e40f95da187153 /libcxx/include/typeindex | |
| parent | 9132c59d43b6c590c9bb33496eebf9f192d6857a (diff) | |
| download | bcm5719-llvm-3e519524c118651123eecf60c2bbc5d65ad9bac3.tar.gz bcm5719-llvm-3e519524c118651123eecf60c2bbc5d65ad9bac3.zip | |
libcxx initial import
llvm-svn: 103490
Diffstat (limited to 'libcxx/include/typeindex')
| -rw-r--r-- | libcxx/include/typeindex | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/libcxx/include/typeindex b/libcxx/include/typeindex new file mode 100644 index 00000000000..6ce2d7b682f --- /dev/null +++ b/libcxx/include/typeindex @@ -0,0 +1,84 @@ +// -*- C++ -*- +//===-------------------------- typeindex ---------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_TYPEINDEX +#define _LIBCPP_TYPEINDEX + +/* + + typeindex synopsis + +namespace std +{ + +class type_index +{ +public: + type_index(const type_info& rhs); + + bool operator==(const type_index& rhs) const; + bool operator!=(const type_index& rhs) const; + bool operator< (const type_index& rhs) const; + bool operator<=(const type_index& rhs) const; + bool operator> (const type_index& rhs) const; + bool operator>=(const type_index& rhs) const; + + size_t hash_code() const; + const char* name() const; +}; + +template <> +struct hash<type_index> + : public unary_function<type_index, size_t> +{ + size_t operator()(type_index index) const; +}; + +} // std + +*/ + +#include <__config> +#include <typeinfo> +#include <__functional_base> + +#pragma GCC system_header + +_LIBCPP_BEGIN_NAMESPACE_STD + +class type_index +{ + const type_info* __t_; +public: + type_index(const type_info& __y) : __t_(&__y) {} + + bool operator==(const type_index& __y) const {return *__t_ == *__y.__t_;} + bool operator!=(const type_index& __y) const {return *__t_ != *__y.__t_;} + bool operator< (const type_index& __y) const {return __t_->before(*__y.__t_);} + bool operator<=(const type_index& __y) const {return !__y.__t_->before(*__t_);} + bool operator> (const type_index& __y) const {return __y.__t_->before(*__t_);} + bool operator>=(const type_index& __y) const {return !__t_->before(*__y.__t_);} + + size_t hash_code() const {return __t_->hash_code();} + const char* name() const {return __t_->name();} +}; + +template <class _Tp> struct hash; + +template <> +struct hash<type_index> + : public unary_function<type_index, size_t> +{ + size_t operator()(type_index __index) const {return __index.hash_code();} +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_TYPEINDEX |

