Replace identifiers called __out because Windows.h #defines it.

Windows is greedy and it defines the identifier `__out` as a macro.
This patch renames all conflicting libc++ identifiers in order
to correctly work on Windows.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@291345 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Fiselier
2017-01-07 11:27:06 +00:00
parent 09a03c6b1f
commit c60e8fcdcd
5 changed files with 58 additions and 51 deletions

View File

@@ -3100,28 +3100,28 @@ template <class _PopulationIterator, class _SampleIterator, class _Distance,
class _UniformRandomNumberGenerator> class _UniformRandomNumberGenerator>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
_SampleIterator __sample(_PopulationIterator __first, _SampleIterator __sample(_PopulationIterator __first,
_PopulationIterator __last, _SampleIterator __out, _PopulationIterator __last, _SampleIterator __output,
_Distance __n, _Distance __n,
_UniformRandomNumberGenerator & __g, _UniformRandomNumberGenerator & __g,
input_iterator_tag) { input_iterator_tag) {
_Distance __k = 0; _Distance __k = 0;
for (; __first != __last && __k < __n; ++__first, (void)++__k) for (; __first != __last && __k < __n; ++__first, (void)++__k)
__out[__k] = *__first; __output[__k] = *__first;
_Distance __sz = __k; _Distance __sz = __k;
for (; __first != __last; ++__first, (void)++__k) { for (; __first != __last; ++__first, (void)++__k) {
_Distance __r = _VSTD::uniform_int_distribution<_Distance>(0, __k)(__g); _Distance __r = _VSTD::uniform_int_distribution<_Distance>(0, __k)(__g);
if (__r < __sz) if (__r < __sz)
__out[__r] = *__first; __output[__r] = *__first;
} }
return __out + _VSTD::min(__n, __k); return __output + _VSTD::min(__n, __k);
} }
template <class _PopulationIterator, class _SampleIterator, class _Distance, template <class _PopulationIterator, class _SampleIterator, class _Distance,
class _UniformRandomNumberGenerator> class _UniformRandomNumberGenerator>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
_SampleIterator __sample(_PopulationIterator __first, _SampleIterator __sample(_PopulationIterator __first,
_PopulationIterator __last, _SampleIterator __out, _PopulationIterator __last, _SampleIterator __output,
_Distance __n, _Distance __n,
_UniformRandomNumberGenerator& __g, _UniformRandomNumberGenerator& __g,
forward_iterator_tag) { forward_iterator_tag) {
@@ -3130,18 +3130,18 @@ _SampleIterator __sample(_PopulationIterator __first,
_Distance __r = _Distance __r =
_VSTD::uniform_int_distribution<_Distance>(0, --__unsampled_sz)(__g); _VSTD::uniform_int_distribution<_Distance>(0, --__unsampled_sz)(__g);
if (__r < __n) { if (__r < __n) {
*__out++ = *__first; *__output++ = *__first;
--__n; --__n;
} }
} }
return __out; return __output;
} }
template <class _PopulationIterator, class _SampleIterator, class _Distance, template <class _PopulationIterator, class _SampleIterator, class _Distance,
class _UniformRandomNumberGenerator> class _UniformRandomNumberGenerator>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
_SampleIterator __sample(_PopulationIterator __first, _SampleIterator __sample(_PopulationIterator __first,
_PopulationIterator __last, _SampleIterator __out, _PopulationIterator __last, _SampleIterator __output,
_Distance __n, _UniformRandomNumberGenerator& __g) { _Distance __n, _UniformRandomNumberGenerator& __g) {
typedef typename iterator_traits<_PopulationIterator>::iterator_category typedef typename iterator_traits<_PopulationIterator>::iterator_category
_PopCategory; _PopCategory;
@@ -3153,7 +3153,7 @@ _SampleIterator __sample(_PopulationIterator __first,
typedef typename common_type<_Distance, _Difference>::type _CommonType; typedef typename common_type<_Distance, _Difference>::type _CommonType;
_LIBCPP_ASSERT(__n >= 0, "N must be a positive number."); _LIBCPP_ASSERT(__n >= 0, "N must be a positive number.");
return _VSTD::__sample( return _VSTD::__sample(
__first, __last, __out, _CommonType(__n), __first, __last, __output, _CommonType(__n),
__g, _PopCategory()); __g, _PopCategory());
} }
@@ -3162,9 +3162,9 @@ template <class _PopulationIterator, class _SampleIterator, class _Distance,
class _UniformRandomNumberGenerator> class _UniformRandomNumberGenerator>
inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY
_SampleIterator sample(_PopulationIterator __first, _SampleIterator sample(_PopulationIterator __first,
_PopulationIterator __last, _SampleIterator __out, _PopulationIterator __last, _SampleIterator __output,
_Distance __n, _UniformRandomNumberGenerator&& __g) { _Distance __n, _UniformRandomNumberGenerator&& __g) {
return _VSTD::__sample(__first, __last, __out, __n, __g); return _VSTD::__sample(__first, __last, __output, __n, __g);
} }
#endif // _LIBCPP_STD_VER > 14 #endif // _LIBCPP_STD_VER > 14

View File

@@ -60,9 +60,9 @@ template <class _PopulationIterator, class _SampleIterator, class _Distance,
class _UniformRandomNumberGenerator> class _UniformRandomNumberGenerator>
inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY
_SampleIterator sample(_PopulationIterator __first, _PopulationIterator __last, _SampleIterator sample(_PopulationIterator __first, _PopulationIterator __last,
_SampleIterator __out, _Distance __n, _SampleIterator __output, _Distance __n,
_UniformRandomNumberGenerator &&__g) { _UniformRandomNumberGenerator &&__g) {
return _VSTD::__sample(__first, __last, __out, __n, __g); return _VSTD::__sample(__first, __last, __output, __n, __g);
} }
_LIBCPP_END_NAMESPACE_LFTS _LIBCPP_END_NAMESPACE_LFTS

View File

@@ -75,19 +75,19 @@ public:
typedef void reference; typedef void reference;
ostream_joiner(ostream_type& __os, _Delim&& __d) ostream_joiner(ostream_type& __os, _Delim&& __d)
: __out(_VSTD::addressof(__os)), __delim(_VSTD::move(__d)), __first(true) {} : __output(_VSTD::addressof(__os)), __delim(_VSTD::move(__d)), __first(true) {}
ostream_joiner(ostream_type& __os, const _Delim& __d) ostream_joiner(ostream_type& __os, const _Delim& __d)
: __out(_VSTD::addressof(__os)), __delim(__d), __first(true) {} : __output(_VSTD::addressof(__os)), __delim(__d), __first(true) {}
template<typename _Tp> template<typename _Tp>
ostream_joiner& operator=(const _Tp& __v) ostream_joiner& operator=(const _Tp& __v)
{ {
if (!__first) if (!__first)
*__out << __delim; *__output << __delim;
__first = false; __first = false;
*__out << __v; *__output << __v;
return *this; return *this;
} }
@@ -96,7 +96,7 @@ public:
ostream_joiner& operator++(int) _NOEXCEPT { return *this; } ostream_joiner& operator++(int) _NOEXCEPT { return *this; }
private: private:
ostream_type* __out; ostream_type* __output;
_Delim __delim; _Delim __delim;
bool __first; bool __first;
}; };

View File

@@ -5262,15 +5262,15 @@ public:
// format: // format:
template <class _OutputIter> template <class _OutputIter>
_OutputIter _OutputIter
format(_OutputIter __out, const char_type* __fmt_first, format(_OutputIter __output, const char_type* __fmt_first,
const char_type* __fmt_last, const char_type* __fmt_last,
regex_constants::match_flag_type __flags = regex_constants::format_default) const; regex_constants::match_flag_type __flags = regex_constants::format_default) const;
template <class _OutputIter, class _ST, class _SA> template <class _OutputIter, class _ST, class _SA>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
_OutputIter _OutputIter
format(_OutputIter __out, const basic_string<char_type, _ST, _SA>& __fmt, format(_OutputIter __output, const basic_string<char_type, _ST, _SA>& __fmt,
regex_constants::match_flag_type __flags = regex_constants::format_default) const regex_constants::match_flag_type __flags = regex_constants::format_default) const
{return format(__out, __fmt.data(), __fmt.data() + __fmt.size(), __flags);} {return format(__output, __fmt.data(), __fmt.data() + __fmt.size(), __flags);}
template <class _ST, class _SA> template <class _ST, class _SA>
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
basic_string<char_type, _ST, _SA> basic_string<char_type, _ST, _SA>
@@ -5382,7 +5382,7 @@ match_results<_BidirectionalIterator, _Allocator>::__init(unsigned __s,
template <class _BidirectionalIterator, class _Allocator> template <class _BidirectionalIterator, class _Allocator>
template <class _OutputIter> template <class _OutputIter>
_OutputIter _OutputIter
match_results<_BidirectionalIterator, _Allocator>::format(_OutputIter __out, match_results<_BidirectionalIterator, _Allocator>::format(_OutputIter __output,
const char_type* __fmt_first, const char_type* __fmt_last, const char_type* __fmt_first, const char_type* __fmt_last,
regex_constants::match_flag_type __flags) const regex_constants::match_flag_type __flags) const
{ {
@@ -5391,27 +5391,27 @@ match_results<_BidirectionalIterator, _Allocator>::format(_OutputIter __out,
for (; __fmt_first != __fmt_last; ++__fmt_first) for (; __fmt_first != __fmt_last; ++__fmt_first)
{ {
if (*__fmt_first == '&') if (*__fmt_first == '&')
__out = _VSTD::copy(__matches_[0].first, __matches_[0].second, __output = _VSTD::copy(__matches_[0].first, __matches_[0].second,
__out); __output);
else if (*__fmt_first == '\\' && __fmt_first + 1 != __fmt_last) else if (*__fmt_first == '\\' && __fmt_first + 1 != __fmt_last)
{ {
++__fmt_first; ++__fmt_first;
if ('0' <= *__fmt_first && *__fmt_first <= '9') if ('0' <= *__fmt_first && *__fmt_first <= '9')
{ {
size_t __i = *__fmt_first - '0'; size_t __i = *__fmt_first - '0';
__out = _VSTD::copy((*this)[__i].first, __output = _VSTD::copy((*this)[__i].first,
(*this)[__i].second, __out); (*this)[__i].second, __output);
} }
else else
{ {
*__out = *__fmt_first; *__output = *__fmt_first;
++__out; ++__output;
} }
} }
else else
{ {
*__out = *__fmt_first; *__output = *__fmt_first;
++__out; ++__output;
} }
} }
} }
@@ -5424,21 +5424,21 @@ match_results<_BidirectionalIterator, _Allocator>::format(_OutputIter __out,
switch (__fmt_first[1]) switch (__fmt_first[1])
{ {
case '$': case '$':
*__out = *++__fmt_first; *__output = *++__fmt_first;
++__out; ++__output;
break; break;
case '&': case '&':
++__fmt_first; ++__fmt_first;
__out = _VSTD::copy(__matches_[0].first, __matches_[0].second, __output = _VSTD::copy(__matches_[0].first, __matches_[0].second,
__out); __output);
break; break;
case '`': case '`':
++__fmt_first; ++__fmt_first;
__out = _VSTD::copy(__prefix_.first, __prefix_.second, __out); __output = _VSTD::copy(__prefix_.first, __prefix_.second, __output);
break; break;
case '\'': case '\'':
++__fmt_first; ++__fmt_first;
__out = _VSTD::copy(__suffix_.first, __suffix_.second, __out); __output = _VSTD::copy(__suffix_.first, __suffix_.second, __output);
break; break;
default: default:
if ('0' <= __fmt_first[1] && __fmt_first[1] <= '9') if ('0' <= __fmt_first[1] && __fmt_first[1] <= '9')
@@ -5451,25 +5451,25 @@ match_results<_BidirectionalIterator, _Allocator>::format(_OutputIter __out,
++__fmt_first; ++__fmt_first;
__i = 10 * __i + *__fmt_first - '0'; __i = 10 * __i + *__fmt_first - '0';
} }
__out = _VSTD::copy((*this)[__i].first, __output = _VSTD::copy((*this)[__i].first,
(*this)[__i].second, __out); (*this)[__i].second, __output);
} }
else else
{ {
*__out = *__fmt_first; *__output = *__fmt_first;
++__out; ++__output;
} }
break; break;
} }
} }
else else
{ {
*__out = *__fmt_first; *__output = *__fmt_first;
++__out; ++__output;
} }
} }
} }
return __out; return __output;
} }
template <class _BidirectionalIterator, class _Allocator> template <class _BidirectionalIterator, class _Allocator>
@@ -6459,7 +6459,7 @@ typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator;
template <class _OutputIterator, class _BidirectionalIterator, template <class _OutputIterator, class _BidirectionalIterator,
class _Traits, class _CharT> class _Traits, class _CharT>
_OutputIterator _OutputIterator
regex_replace(_OutputIterator __out, regex_replace(_OutputIterator __output,
_BidirectionalIterator __first, _BidirectionalIterator __last, _BidirectionalIterator __first, _BidirectionalIterator __last,
const basic_regex<_CharT, _Traits>& __e, const _CharT* __fmt, const basic_regex<_CharT, _Traits>& __e, const _CharT* __fmt,
regex_constants::match_flag_type __flags = regex_constants::match_default) regex_constants::match_flag_type __flags = regex_constants::match_default)
@@ -6470,7 +6470,7 @@ regex_replace(_OutputIterator __out,
if (__i == __eof) if (__i == __eof)
{ {
if (!(__flags & regex_constants::format_no_copy)) if (!(__flags & regex_constants::format_no_copy))
__out = _VSTD::copy(__first, __last, __out); __output = _VSTD::copy(__first, __last, __output);
} }
else else
{ {
@@ -6478,29 +6478,29 @@ regex_replace(_OutputIterator __out,
for (size_t __len = char_traits<_CharT>::length(__fmt); __i != __eof; ++__i) for (size_t __len = char_traits<_CharT>::length(__fmt); __i != __eof; ++__i)
{ {
if (!(__flags & regex_constants::format_no_copy)) if (!(__flags & regex_constants::format_no_copy))
__out = _VSTD::copy(__i->prefix().first, __i->prefix().second, __out); __output = _VSTD::copy(__i->prefix().first, __i->prefix().second, __output);
__out = __i->format(__out, __fmt, __fmt + __len, __flags); __output = __i->format(__output, __fmt, __fmt + __len, __flags);
__lm = __i->suffix(); __lm = __i->suffix();
if (__flags & regex_constants::format_first_only) if (__flags & regex_constants::format_first_only)
break; break;
} }
if (!(__flags & regex_constants::format_no_copy)) if (!(__flags & regex_constants::format_no_copy))
__out = _VSTD::copy(__lm.first, __lm.second, __out); __output = _VSTD::copy(__lm.first, __lm.second, __output);
} }
return __out; return __output;
} }
template <class _OutputIterator, class _BidirectionalIterator, template <class _OutputIterator, class _BidirectionalIterator,
class _Traits, class _CharT, class _ST, class _SA> class _Traits, class _CharT, class _ST, class _SA>
inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY
_OutputIterator _OutputIterator
regex_replace(_OutputIterator __out, regex_replace(_OutputIterator __output,
_BidirectionalIterator __first, _BidirectionalIterator __last, _BidirectionalIterator __first, _BidirectionalIterator __last,
const basic_regex<_CharT, _Traits>& __e, const basic_regex<_CharT, _Traits>& __e,
const basic_string<_CharT, _ST, _SA>& __fmt, const basic_string<_CharT, _ST, _SA>& __fmt,
regex_constants::match_flag_type __flags = regex_constants::match_default) regex_constants::match_flag_type __flags = regex_constants::match_default)
{ {
return _VSTD::regex_replace(__out, __first, __last, __e, __fmt.c_str(), __flags); return _VSTD::regex_replace(__output, __first, __last, __e, __fmt.c_str(), __flags);
} }
template <class _Traits, class _CharT, class _ST, class _SA, class _FST, template <class _Traits, class _CharT, class _ST, class _SA, class _FST,

View File

@@ -37,4 +37,11 @@
#define _Y NASTY_MACRO #define _Y NASTY_MACRO
#define _Z NASTY_MACRO #define _Z NASTY_MACRO
// Test that libc++ doesn't use names reserved by WIN32 API Macros.
// NOTE: Obviously we can only define these on non-windows platforms.
#ifndef _WIN32
#define __deallocate NASTY_MACRO
#define __out NASTY_MACRO
#endif
#endif // SUPPORT_NASTY_MACROS_HPP #endif // SUPPORT_NASTY_MACROS_HPP