Add protection from min/max macros
authorHoward Hinnant <hhinnant@apple.com>
Tue, 29 Nov 2011 16:45:27 +0000 (16:45 +0000)
committerHoward Hinnant <hhinnant@apple.com>
Tue, 29 Nov 2011 16:45:27 +0000 (16:45 +0000)
llvm-svn: 145407

24 files changed:
libcxx/include/__bit_reference
libcxx/include/__hash_table
libcxx/include/__split_buffer
libcxx/include/__std_stream
libcxx/include/__undef_min_max [new file with mode: 0644]
libcxx/include/algorithm
libcxx/include/bitset
libcxx/include/chrono
libcxx/include/deque
libcxx/include/forward_list
libcxx/include/fstream
libcxx/include/istream
libcxx/include/limits
libcxx/include/list
libcxx/include/locale
libcxx/include/memory
libcxx/include/mutex
libcxx/include/random
libcxx/include/ratio
libcxx/include/regex
libcxx/include/sstream
libcxx/include/string
libcxx/include/valarray
libcxx/include/vector

index 4621333..9ee1dd9 100644 (file)
@@ -14,6 +14,8 @@
 #include <__config>
 #include <algorithm>
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index 4399caa..39de62a 100644 (file)
@@ -18,6 +18,8 @@
 #include <algorithm>
 #include <cmath>
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index 33ce42d..581f159 100644 (file)
@@ -6,6 +6,8 @@
 #include <type_traits>
 #include <algorithm>
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index 6df6556..7fe34d4 100644 (file)
@@ -17,6 +17,8 @@
 #include <__locale>
 #include <cstdio>
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
diff --git a/libcxx/include/__undef_min_max b/libcxx/include/__undef_min_max
new file mode 100644 (file)
index 0000000..88bc53f
--- /dev/null
@@ -0,0 +1,19 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifdef min
+#warning: macro min is incompatible with C++.  #undef'ing min
+#undef min
+#endif
+
+#ifdef max
+#warning: macro max is incompatible with C++.  #undef'ing max
+#undef max
+#endif
index 6749bf6..6255c52 100644 (file)
@@ -595,6 +595,8 @@ template <class BidirectionalIterator, class Compare>
 #include <iterator>
 #include <cstdlib>
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index c970f32..4735754 100644 (file)
@@ -129,6 +129,8 @@ template <size_t N> struct hash<std::bitset<N>>;
     #include <cassert>
 #endif
 
+#include <__undef_min_max>
+
 _LIBCPP_BEGIN_NAMESPACE_STD
 
 template <size_t _N_words, size_t _Size>
index 1c79f4b..0571f9d 100644 (file)
@@ -255,6 +255,8 @@ typedef steady_clock high_resolution_clock;
 #include <ratio>
 #include <limits>
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index ab9ba58..f304f56 100644 (file)
@@ -162,6 +162,8 @@ template <class T, class Allocator>
 #include <algorithm>
 #include <stdexcept>
 
+#include <__undef_min_max>
+
 _LIBCPP_BEGIN_NAMESPACE_STD
 
 template <class _Tp, class _Allocator> class __deque_base;
index 61fe290..ffd44a5 100644 (file)
@@ -174,6 +174,8 @@ template <class T, class Allocator>
 #include <iterator>
 #include <algorithm>
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index b6a2ab0..4456c01 100644 (file)
@@ -171,6 +171,8 @@ typedef basic_fstream<wchar_t> wfstream;
 #include <__locale>
 #include <cstdio>
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index 24d9f3a..f271393 100644 (file)
@@ -155,6 +155,8 @@ template <class charT, class traits, class T>
 #include <__config>
 #include <ostream>
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index 14b49b1..ea579ad 100644 (file)
@@ -109,6 +109,8 @@ template<> class numeric_limits<cv long double>;
 #include <__config>
 #include <type_traits>
 
+#include <__undef_min_max>
+
 #if defined(_MSC_VER)
 #include "support/win32/limits_win32.h"
 #endif // _MSC_VER
index 345f24d..add519f 100644 (file)
@@ -176,6 +176,8 @@ template <class T, class Alloc>
 #include <iterator>
 #include <algorithm>
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index b2afbd4..5dc3ff2 100644 (file)
@@ -192,6 +192,8 @@ template <class charT> class messages_byname;
 #include <nl_types.h>
 #endif  // !_WIN32
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index 878dda8..7576aae 100644 (file)
@@ -600,6 +600,8 @@ void* align(size_t alignment, size_t size, void*& ptr, size_t& space);
     #include <cassert>
 #endif
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index 37e74d6..d1d0a6e 100644 (file)
@@ -179,6 +179,8 @@ template<class Callable, class ...Args>
 #include <tuple>
 #endif
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index c5c33c0..e14425d 100644 (file)
@@ -1646,6 +1646,8 @@ class piecewise_linear_distribution
 #include <ostream>
 #include <cmath>
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index 654cb33..eb1ad24 100644 (file)
@@ -70,6 +70,8 @@ typedef ratio<1000000000000000000000000, 1> yotta;  // not supported
 #include <climits>
 #include <type_traits>
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index 048fbef..1da7b0e 100644 (file)
@@ -732,6 +732,8 @@ typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator;
 #include <vector>
 #include <deque>
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index 1b27195..22450f0 100644 (file)
@@ -175,6 +175,8 @@ typedef basic_stringstream<wchar_t> wstringstream;
 #include <istream>
 #include <string>
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index 5f5a347..344bb55 100644 (file)
@@ -446,6 +446,8 @@ template <> struct hash<wstring>;
 #include <cassert>
 #endif
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index 5d3154c..3ac9494 100644 (file)
@@ -346,6 +346,8 @@ template <class T> unspecified2 end(const valarray<T>& v);
 #include <algorithm>
 #include <functional>
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
index 7f7e3d3..10702f3 100644 (file)
@@ -270,6 +270,8 @@ void swap(vector<T,Allocator>& x, vector<T,Allocator>& y)
 #include <__split_buffer>
 #include <__functional_base>
 
+#include <__undef_min_max>
+
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif