From 4130d4f2ea5875e572198082ee1eb1b54308d423 Mon Sep 17 00:00:00 2001 From: rani_sharoni Date: Thu, 27 Feb 2003 20:22:43 +0000 Subject: [PATCH] Fix various issues related to stability when using highly compliant compilers such as Comeau 4.3.0.1, VC7.1 and GCC 3.2 git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@109 7ec92016-0320-0410-acc4-a06ded1c099a --- Borland/loki_typeinfo.h | 108 ---------------------------------------- MSVC/1200/TypeInfo.h | 106 --------------------------------------- 2 files changed, 214 deletions(-) delete mode 100644 Borland/loki_typeinfo.h delete mode 100644 MSVC/1200/TypeInfo.h diff --git a/Borland/loki_typeinfo.h b/Borland/loki_typeinfo.h deleted file mode 100644 index 51b8995..0000000 --- a/Borland/loki_typeinfo.h +++ /dev/null @@ -1,108 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The Loki Library -// Copyright (c) 2001 by Andrei Alexandrescu -// This code accompanies the book: -// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design -// Patterns Applied". Copyright (c) 2001. Addison-Wesley. -// Permission to use, copy, modify, distribute and sell this software for any -// purpose is hereby granted without fee, provided that the above copyright -// notice appear in all copies and that both that copyright notice and this -// permission notice appear in supporting documentation. -// The author or Addison-Wesley Longman make no representations about the -// suitability of this software for any purpose. It is provided "as is" -// without express or implied warranty. -//////////////////////////////////////////////////////////////////////////////// - -// Last update: August 9, 2002 - -#ifndef TYPEINFO_INC_ -#define TYPEINFO_INC_ - -#include -#include -#include "Typelist.h" - -namespace Loki -{ -//////////////////////////////////////////////////////////////////////////////// -// class TypeInfo -// Purpose: offer a first-class, comparable wrapper over std::type_info -//////////////////////////////////////////////////////////////////////////////// - - class TypeInfo - { - public: - - // Constructors - TypeInfo(); // needed for containers - TypeInfo(const std::type_info&); // non-explicit - - // Access for the wrapped std::type_info - const std::type_info& Get() const; - // Compatibility functions - bool before(const TypeInfo& rhs) const; - const char* name() const; - - private: - const std::type_info* pInfo_; - }; - -// Implementation - - inline TypeInfo::TypeInfo() - { - class Nil {}; - pInfo_ = &typeid(Nil); - assert(pInfo_); - } - - inline TypeInfo::TypeInfo(const std::type_info& ti) - : pInfo_(&ti) - { assert(pInfo_); } - - inline bool TypeInfo::before(const TypeInfo& rhs) const - { - assert(pInfo_); - return pInfo_->before(*rhs.pInfo_); - } - - inline const std::type_info& TypeInfo::Get() const - { - assert(pInfo_); - return *pInfo_; - } - - inline const char* TypeInfo::name() const - { - assert(pInfo_); - return pInfo_->name(); - } - -// 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); } -} - -//////////////////////////////////////////////////////////////////////////////// -// Change log: -// June 20, 2001: ported by Nick Thurn to gcc 2.95.3. Kudos, Nick!!! -// July 16, 2002: Ported by Terje Slettebų and Pavel Vozenilek to BCC 5.6 -//////////////////////////////////////////////////////////////////////////////// - -#endif // TYPEINFO_INC_ diff --git a/MSVC/1200/TypeInfo.h b/MSVC/1200/TypeInfo.h deleted file mode 100644 index a98bfe6..0000000 --- a/MSVC/1200/TypeInfo.h +++ /dev/null @@ -1,106 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// The Loki Library -// Copyright (c) 2001 by Andrei Alexandrescu -// This code accompanies the book: -// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design -// Patterns Applied". Copyright (c) 2001. Addison-Wesley. -// Permission to use, copy, modify, distribute and sell this software for any -// purpose is hereby granted without fee, provided that the above copyright -// notice appear in all copies and that both that copyright notice and this -// permission notice appear in supporting documentation. -// The author or Addison-Wesley Longman make no representations about the -// suitability of this software for any purpose. It is provided "as is" -// without express or implied warranty. -//////////////////////////////////////////////////////////////////////////////// - -// Last update: June 20, 2001 - -#ifndef TYPEINFO_INC_ -#define TYPEINFO_INC_ - -#include -#include -#include "Typelist.h" - -namespace Loki -{ -//////////////////////////////////////////////////////////////////////////////// -// class TypeInfo -// Purpose: offer a first-class, comparable wrapper over std::type_info -//////////////////////////////////////////////////////////////////////////////// - - class TypeInfo - { - public: - // Constructors - TypeInfo(); // needed for containers - TypeInfo(const std::type_info&); // non-explicit - - // Access for the wrapped std::type_info - const std::type_info& Get() const; - // Compatibility functions - bool before(const TypeInfo& rhs) const; - const char* name() const; - - private: - const std::type_info* pInfo_; - }; - -// Implementation - - inline TypeInfo::TypeInfo() - { - class Nil {}; - pInfo_ = &typeid(Nil); - assert(pInfo_); - } - - inline TypeInfo::TypeInfo(const std::type_info& ti) - : pInfo_(&ti) - { assert(pInfo_); } - - inline bool TypeInfo::before(const TypeInfo& rhs) const - { - assert(pInfo_); - return pInfo_->before(*rhs.pInfo_) != 0; - } - - inline const std::type_info& TypeInfo::Get() const - { - assert(pInfo_); - return *pInfo_; - } - - inline const char* TypeInfo::name() const - { - assert(pInfo_); - return pInfo_->name(); - } - -// Comparison operators - - inline bool operator==(const TypeInfo& lhs, const TypeInfo& rhs) - { return (lhs.Get() == rhs.Get()) != 0; } - - 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); } -} - -//////////////////////////////////////////////////////////////////////////////// -// Change log: -// June 20, 2001: ported by Nick Thurn to gcc 2.95.3. Kudos, Nick!!! -//////////////////////////////////////////////////////////////////////////////// - -#endif // TYPEINFO_INC_