From 8dc67168ccbd09821ff6d963b26461e9b47028e7 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 24 Jul 2002 22:20:00 +0000 Subject: [PATCH] GCC 3.1 fixes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3066 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/Support/HashExtras.h | 6 +++--- include/Support/PostOrderIterator.h | 7 ++++--- include/Support/hash_map | 10 +++++++++- include/Support/hash_set | 9 ++++++++- include/llvm/ADT/HashExtras.h | 6 +++--- include/llvm/ADT/PostOrderIterator.h | 7 ++++--- 6 files changed, 31 insertions(+), 14 deletions(-) diff --git a/include/Support/HashExtras.h b/include/Support/HashExtras.h index da9e3f5cbad..5887a831162 100644 --- a/include/Support/HashExtras.h +++ b/include/Support/HashExtras.h @@ -14,10 +14,10 @@ #include // Cannot specialize hash template from outside of the std namespace. -namespace std { +namespace HASH_NAMESPACE { -template <> struct hash { - size_t operator()(string const &str) const { +template <> struct hash { + size_t operator()(std::string const &str) const { return hash()(str.c_str()); } }; diff --git a/include/Support/PostOrderIterator.h b/include/Support/PostOrderIterator.h index 29d315e89c9..4f94141b5c4 100644 --- a/include/Support/PostOrderIterator.h +++ b/include/Support/PostOrderIterator.h @@ -10,13 +10,14 @@ #define LLVM_SUPPORT_POSTORDER_ITERATOR_H #include "Support/GraphTraits.h" -#include +#include #include #include template > -class po_iterator : public std::forward_iterator { +class po_iterator : public forward_iterator { + typedef forward_iterator super; + typedef typename super::pointer pointer; typedef typename GT::NodeType NodeType; typedef typename GT::ChildIteratorType ChildItTy; diff --git a/include/Support/hash_map b/include/Support/hash_map index d6a0ac0faf4..af727c42cf1 100644 --- a/include/Support/hash_map +++ b/include/Support/hash_map @@ -12,9 +12,17 @@ #if __GNUC__ == 3 #include -using __gnu_cxx::hash_map; +#ifndef HASH_NAMESPACE +#define HASH_NAMESPACE __gnu_cxx +#endif #else #include +#ifndef HASH_NAMESPACE +#define HASH_NAMESPACE std +#endif #endif +using HASH_NAMESPACE::hash_map; +using HASH_NAMESPACE::hash; + #endif diff --git a/include/Support/hash_set b/include/Support/hash_set index 094f8921995..2214b918613 100644 --- a/include/Support/hash_set +++ b/include/Support/hash_set @@ -11,7 +11,14 @@ #define SUPPORT_HASHSET_H #if __GNUC__==3 #include -using __gnu_cxx::hash_set; +#define HASH_NAMESPACE __gnu_cxx #else #include +#define HASH_NAMESPACE std #endif + +using HASH_NAMESPACE::hash_set; +using HASH_NAMESPACE::hash; + +#endif + diff --git a/include/llvm/ADT/HashExtras.h b/include/llvm/ADT/HashExtras.h index da9e3f5cbad..5887a831162 100644 --- a/include/llvm/ADT/HashExtras.h +++ b/include/llvm/ADT/HashExtras.h @@ -14,10 +14,10 @@ #include // Cannot specialize hash template from outside of the std namespace. -namespace std { +namespace HASH_NAMESPACE { -template <> struct hash { - size_t operator()(string const &str) const { +template <> struct hash { + size_t operator()(std::string const &str) const { return hash()(str.c_str()); } }; diff --git a/include/llvm/ADT/PostOrderIterator.h b/include/llvm/ADT/PostOrderIterator.h index 29d315e89c9..4f94141b5c4 100644 --- a/include/llvm/ADT/PostOrderIterator.h +++ b/include/llvm/ADT/PostOrderIterator.h @@ -10,13 +10,14 @@ #define LLVM_SUPPORT_POSTORDER_ITERATOR_H #include "Support/GraphTraits.h" -#include +#include #include #include template > -class po_iterator : public std::forward_iterator { +class po_iterator : public forward_iterator { + typedef forward_iterator super; + typedef typename super::pointer pointer; typedef typename GT::NodeType NodeType; typedef typename GT::ChildIteratorType ChildItTy;