COVISE Core
unordered_set.h
Go to the documentation of this file.
1/* This file is part of COVISE.
2
3 You can use it under the terms of the GNU Lesser General Public License
4 version 2.1 or later, see lgpl-2.1.txt.
5
6 * License: LGPL 2+ */
7
8#ifndef UNORDERERD_SET_H
9#define UNORDERERD_SET_H
10
11// for checking whether we use libc++
12#include <ciso646>
13#if defined(_LIBCPP_VERSION) || (__cplusplus >= 201103L)
14#include <unordered_set>
15#include <unordered_map>
18#define HASH_NAMESPACE std
19
20#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
21#include <tr1/unordered_set>
22#include <tr1/unordered_map>
25#define HASH_NAMESPACE std
26#define HASH_NAMESPACE2 tr1
27
28#elif((defined(__linux__) && !defined(CO_ia64icc) && !defined(CO_linux)) || defined(__APPLE__) || (defined(__linux__) && defined(CO_ia64icc) && (__GNUC__ >= 4)))
29#include <ext/hash_map>
30#include <ext/hash_set>
31#if (defined(CO_ia64_glibc22) || (defined(CO_ia64icc) && (__GNUC__ < 4)))
32#define unordered_map std::hash_map
33#define unordered_set std::hash_set
34#define HASH_NAMESPACE std
35#else
36#define unordered_map __gnu_cxx::hash_map
37#define unordered_set __gnu_cxx::hash_set
38#define HASH_NAMESPACE __gnu_cxx
39#endif
40#elif defined(_WIN32)
41#if _MSC_VER < 1900
42#include <hash_map>
43#define unordered_map stdext::hash_map
44#include <hash_set>
45#define unordered_set stdext::hash_set
46#else
47#include <unordered_set>
48#include <unordered_map>
51#endif
52#define HASH_NAMESPACE std
53#else
54#include <hash_map>
55#define unordered_map std::hash_map
56#include <hash_set>
57#define unordered_set std::hash_set
58#define HASH_NAMESPACE stdext
59#endif
60
61#endif
#define unordered_set
Definition: unordered_set.h:57
#define unordered_map
Definition: unordered_set.h:55