yat/utility/TypeInfo.cc

Code
Comments
Other
Rev Date Author Line
861 07 Sep 07 peter 1 // $Id$
861 07 Sep 07 peter 2
861 07 Sep 07 peter 3 /*
4359 23 Aug 23 peter 4   Copyright (C) 2007 Peter Johansson
4359 23 Aug 23 peter 5   Copyright (C) 2008 Jari Häkkinen, Peter Johansson
2919 19 Dec 12 peter 6   Copyright (C) 2012 Peter Johansson
861 07 Sep 07 peter 7
1437 25 Aug 08 peter 8   This file is part of the yat library, http://dev.thep.lu.se/yat
861 07 Sep 07 peter 9
861 07 Sep 07 peter 10   The yat library is free software; you can redistribute it and/or
861 07 Sep 07 peter 11   modify it under the terms of the GNU General Public License as
1486 09 Sep 08 jari 12   published by the Free Software Foundation; either version 3 of the
861 07 Sep 07 peter 13   License, or (at your option) any later version.
861 07 Sep 07 peter 14
861 07 Sep 07 peter 15   The yat library is distributed in the hope that it will be useful,
861 07 Sep 07 peter 16   but WITHOUT ANY WARRANTY; without even the implied warranty of
861 07 Sep 07 peter 17   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
861 07 Sep 07 peter 18   General Public License for more details.
861 07 Sep 07 peter 19
861 07 Sep 07 peter 20   You should have received a copy of the GNU General Public License
1487 10 Sep 08 jari 21   along with yat. If not, see <http://www.gnu.org/licenses/>.
861 07 Sep 07 peter 22 */
861 07 Sep 07 peter 23
2881 18 Nov 12 peter 24 #include <config.h>
2881 18 Nov 12 peter 25
861 07 Sep 07 peter 26 #include "TypeInfo.h"
861 07 Sep 07 peter 27
861 07 Sep 07 peter 28 #include <string>
861 07 Sep 07 peter 29 #include <typeinfo>
861 07 Sep 07 peter 30 #include <cassert>
861 07 Sep 07 peter 31
861 07 Sep 07 peter 32 namespace theplu {
861 07 Sep 07 peter 33 namespace yat {
861 07 Sep 07 peter 34 namespace utility {
861 07 Sep 07 peter 35
861 07 Sep 07 peter 36
861 07 Sep 07 peter 37   TypeInfo::TypeInfo(void)
861 07 Sep 07 peter 38   {}
861 07 Sep 07 peter 39
861 07 Sep 07 peter 40   TypeInfo::TypeInfo(const std::type_info& info)
861 07 Sep 07 peter 41     : info_(&info)
861 07 Sep 07 peter 42   {
861 07 Sep 07 peter 43     assert(info_);
861 07 Sep 07 peter 44   }
861 07 Sep 07 peter 45
4200 19 Aug 22 peter 46
861 07 Sep 07 peter 47   const std::type_info& TypeInfo::get(void) const
861 07 Sep 07 peter 48   {
861 07 Sep 07 peter 49     assert(info_);
861 07 Sep 07 peter 50     return *info_;
861 07 Sep 07 peter 51   }
861 07 Sep 07 peter 52
861 07 Sep 07 peter 53   std::string TypeInfo::name(void) const
861 07 Sep 07 peter 54   {
861 07 Sep 07 peter 55     assert(info_);
861 07 Sep 07 peter 56     return info_->name();
861 07 Sep 07 peter 57   }
861 07 Sep 07 peter 58
861 07 Sep 07 peter 59
861 07 Sep 07 peter 60   bool operator==(const TypeInfo& lhs, const TypeInfo& rhs)
861 07 Sep 07 peter 61   {
861 07 Sep 07 peter 62     return lhs.get()==rhs.get();
861 07 Sep 07 peter 63   }
861 07 Sep 07 peter 64
861 07 Sep 07 peter 65
861 07 Sep 07 peter 66   bool operator!=(const TypeInfo& lhs, const TypeInfo& rhs)
861 07 Sep 07 peter 67   {
861 07 Sep 07 peter 68     return !(lhs.get()==rhs.get());
861 07 Sep 07 peter 69   }
861 07 Sep 07 peter 70
861 07 Sep 07 peter 71   bool operator<(const TypeInfo& lhs, const TypeInfo& rhs)
861 07 Sep 07 peter 72   {
861 07 Sep 07 peter 73     return lhs.get().before(rhs.get());
861 07 Sep 07 peter 74   }
861 07 Sep 07 peter 75
861 07 Sep 07 peter 76
861 07 Sep 07 peter 77   bool operator<=(const TypeInfo& lhs, const TypeInfo& rhs)
861 07 Sep 07 peter 78   {
861 07 Sep 07 peter 79     return !(lhs>rhs);
861 07 Sep 07 peter 80   }
861 07 Sep 07 peter 81
861 07 Sep 07 peter 82
861 07 Sep 07 peter 83   bool operator>(const TypeInfo& lhs, const TypeInfo& rhs)
861 07 Sep 07 peter 84   {
861 07 Sep 07 peter 85     return rhs<lhs;
861 07 Sep 07 peter 86   }
861 07 Sep 07 peter 87
861 07 Sep 07 peter 88
861 07 Sep 07 peter 89   bool operator>=(const TypeInfo& lhs, const TypeInfo& rhs)
861 07 Sep 07 peter 90   {
861 07 Sep 07 peter 91     return rhs<=lhs;
861 07 Sep 07 peter 92   }
861 07 Sep 07 peter 93
861 07 Sep 07 peter 94 }}} // of namespace utility, yat, and theplu