]>
Commit | Line | Data |
---|---|---|
4a85780b | 1 | // Compatibility symbols for previous versions, C++0x bits -*- C++ -*- |
9adfc73c | 2 | |
0b284728 | 3 | // Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation, Inc. |
9adfc73c BK |
4 | // |
5 | // This file is part of the GNU ISO C++ Library. This library is free | |
6 | // software; you can redistribute it and/or modify it under the | |
7 | // terms of the GNU General Public License as published by the | |
748086b7 | 8 | // Free Software Foundation; either version 3, or (at your option) |
9adfc73c BK |
9 | // any later version. |
10 | ||
11 | // This library is distributed in the hope that it will be useful, | |
12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | // GNU General Public License for more details. | |
15 | ||
748086b7 JJ |
16 | // Under Section 7 of GPL version 3, you are granted additional |
17 | // permissions described in the GCC Runtime Library Exception, version | |
18 | // 3.1, as published by the Free Software Foundation. | |
9adfc73c | 19 | |
748086b7 JJ |
20 | // You should have received a copy of the GNU General Public License and |
21 | // a copy of the GCC Runtime Library Exception along with this program; | |
22 | // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
23 | // <http://www.gnu.org/licenses/>. | |
9adfc73c | 24 | |
15d81a3c | 25 | #define _GLIBCXX_COMPATIBILITY_CXX0X |
a00e3769 | 26 | #include <string> |
9adfc73c BK |
27 | #include <system_error> |
28 | ||
a00e3769 | 29 | #ifndef __GXX_EXPERIMENTAL_CXX0X__ |
4a85780b | 30 | # error "compatibility-c++0x.cc must be compiled with -std=gnu++0x" |
a00e3769 BK |
31 | #endif |
32 | ||
ac6d1200 | 33 | #ifdef _GLIBCXX_SHARED |
0b284728 | 34 | |
12ffa228 | 35 | namespace std _GLIBCXX_VISIBILITY(default) |
9adfc73c | 36 | { |
afd88205 BK |
37 | // gcc-4.4.0 |
38 | // <mutex> exported std::lock_error | |
39 | #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) | |
40 | class lock_error : public exception | |
41 | { | |
42 | public: | |
43 | virtual const char* | |
44 | _GLIBCXX_CONST what() const throw(); | |
45 | }; | |
46 | ||
47 | const char* | |
48 | lock_error::what() const throw() | |
49 | { return "std::lock_error"; } | |
50 | #endif | |
51 | ||
4a85780b PC |
52 | // We need these due to the symbols exported since GLIBCXX_3.4.10. |
53 | // See libstdc++/41662 for details. | |
3d68714e | 54 | |
2dd3121f PC |
55 | #ifndef _GLIBCXX_LONG_DOUBLE_COMPAT_IMPL |
56 | template<> | |
92637e93 PC |
57 | struct hash<string> |
58 | { | |
59 | size_t operator()(string) const; | |
60 | }; | |
61 | ||
62 | size_t | |
63 | hash<string>::operator()(string __s) const | |
64 | { return _Hash_impl::hash(__s.data(), __s.length()); } | |
2dd3121f PC |
65 | |
66 | template<> | |
92637e93 PC |
67 | struct hash<const string&> |
68 | { | |
69 | size_t operator()(const string&) const; | |
70 | }; | |
71 | ||
72 | size_t | |
73 | hash<const string&>::operator()(const string& __s) const | |
74 | { return _Hash_impl::hash(__s.data(), __s.length()); } | |
2dd3121f PC |
75 | |
76 | #ifdef _GLIBCXX_USE_WCHAR_T | |
77 | template<> | |
92637e93 PC |
78 | struct hash<wstring> |
79 | { | |
80 | size_t operator()(wstring) const; | |
81 | }; | |
82 | ||
83 | size_t | |
84 | hash<wstring>::operator()(wstring __s) const | |
85 | { return _Hash_impl::hash(__s.data(), __s.length() * sizeof(wchar_t)); } | |
2dd3121f PC |
86 | |
87 | template<> | |
92637e93 PC |
88 | struct hash<const wstring&> |
89 | { | |
90 | size_t operator()(const wstring&) const; | |
91 | }; | |
92 | ||
93 | size_t | |
94 | hash<const wstring&>::operator()(const wstring& __s) const | |
95 | { return _Hash_impl::hash(__s.data(), __s.length() * sizeof(wchar_t)); } | |
2dd3121f PC |
96 | #endif |
97 | #endif | |
a00e3769 | 98 | |
9adfc73c | 99 | template<> |
92637e93 | 100 | struct hash<error_code> |
5c8db18a | 101 | { |
92637e93 PC |
102 | size_t operator()(error_code) const; |
103 | }; | |
1b97ec17 | 104 | |
92637e93 PC |
105 | size_t |
106 | hash<error_code>::operator()(error_code __e) const | |
107 | { | |
108 | const size_t __tmp = std::_Hash_impl::hash(__e._M_value); | |
109 | return std::_Hash_impl::__hash_combine(__e._M_cat, __tmp); | |
110 | } | |
1b97ec17 BK |
111 | |
112 | // gcc-4.7.0 | |
113 | // <chrono> changes is_monotonic to is_steady. | |
114 | namespace chrono | |
115 | { | |
116 | struct system_clock | |
117 | { | |
118 | static constexpr bool is_monotonic = false; | |
119 | }; | |
120 | constexpr bool system_clock::is_monotonic; | |
121 | } // namespace chrono | |
9adfc73c | 122 | } |
1b97ec17 | 123 | |
0b284728 | 124 | #endif |