Merge new libc++ into head.

This commit is contained in:
David Chisnall 2012-11-29 13:35:44 +00:00
commit fb6c5de628
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=243673
3 changed files with 27 additions and 10 deletions

View File

@ -143,7 +143,7 @@ public:
{return !(__x == __y);} {return !(__x == __y);}
friend exception_ptr current_exception() _NOEXCEPT; friend exception_ptr current_exception() _NOEXCEPT;
_LIBCPP_NORETURN friend void rethrow_exception(exception_ptr); friend void rethrow_exception(exception_ptr);
}; };
template<class _Ep> template<class _Ep>

View File

@ -317,6 +317,10 @@ template <class T, size_t N> T* end(T (&array)[N]);
#include <type_traits> #include <type_traits>
#include <cstddef> #include <cstddef>
#include <iosfwd> #include <iosfwd>
#if __APPLE__
#include <Availability.h>
#endif
#ifdef _LIBCPP_DEBUG #ifdef _LIBCPP_DEBUG
#include <cassert> #include <cassert>
#endif #endif
@ -795,7 +799,7 @@ public:
typedef basic_streambuf<_CharT,_Traits> streambuf_type; typedef basic_streambuf<_CharT,_Traits> streambuf_type;
typedef basic_istream<_CharT,_Traits> istream_type; typedef basic_istream<_CharT,_Traits> istream_type;
private: private:
streambuf_type* __sbuf_; mutable streambuf_type* __sbuf_;
class __proxy class __proxy
{ {
@ -809,13 +813,14 @@ private:
}; };
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
void __test_for_eof() bool __test_for_eof() const
{ {
if (__sbuf_ && traits_type::eq_int_type(__sbuf_->sgetc(), traits_type::eof())) if (__sbuf_ && traits_type::eq_int_type(__sbuf_->sgetc(), traits_type::eof()))
__sbuf_ = 0; __sbuf_ = 0;
return __sbuf_ == 0;
} }
public: public:
_LIBCPP_INLINE_VISIBILITY istreambuf_iterator() _NOEXCEPT : __sbuf_(0) {} _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR istreambuf_iterator() _NOEXCEPT : __sbuf_(0) {}
_LIBCPP_INLINE_VISIBILITY istreambuf_iterator(istream_type& __s) _NOEXCEPT _LIBCPP_INLINE_VISIBILITY istreambuf_iterator(istream_type& __s) _NOEXCEPT
: __sbuf_(__s.rdbuf()) {__test_for_eof();} : __sbuf_(__s.rdbuf()) {__test_for_eof();}
_LIBCPP_INLINE_VISIBILITY istreambuf_iterator(streambuf_type* __s) _NOEXCEPT _LIBCPP_INLINE_VISIBILITY istreambuf_iterator(streambuf_type* __s) _NOEXCEPT
@ -828,19 +833,16 @@ public:
_LIBCPP_INLINE_VISIBILITY char_type* operator->() const {return nullptr;} _LIBCPP_INLINE_VISIBILITY char_type* operator->() const {return nullptr;}
_LIBCPP_INLINE_VISIBILITY istreambuf_iterator& operator++() _LIBCPP_INLINE_VISIBILITY istreambuf_iterator& operator++()
{ {
if (traits_type::eq_int_type(__sbuf_->snextc(), traits_type::eof())) __sbuf_->sbumpc();
__sbuf_ = 0;
return *this; return *this;
} }
_LIBCPP_INLINE_VISIBILITY __proxy operator++(int) _LIBCPP_INLINE_VISIBILITY __proxy operator++(int)
{ {
char_type __c = __sbuf_->sgetc(); return __proxy(__sbuf_->sbumpc(), __sbuf_);
++(*this);
return __proxy(__c, __sbuf_);
} }
_LIBCPP_INLINE_VISIBILITY bool equal(const istreambuf_iterator& __b) const _LIBCPP_INLINE_VISIBILITY bool equal(const istreambuf_iterator& __b) const
{return (__sbuf_ == 0) == (__b.__sbuf_ == 0);} {return __test_for_eof() == __b.__test_for_eof();}
}; };
template <class _CharT, class _Traits> template <class _CharT, class _Traits>
@ -882,6 +884,10 @@ public:
_LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator++(int) {return *this;} _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator++(int) {return *this;}
_LIBCPP_INLINE_VISIBILITY bool failed() const _NOEXCEPT {return __sbuf_ == 0;} _LIBCPP_INLINE_VISIBILITY bool failed() const _NOEXCEPT {return __sbuf_ == 0;}
#if !defined(__APPLE__) || \
(defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED > __MAC_10_8) || \
(defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_6_0)
template <class _Ch, class _Tr> template <class _Ch, class _Tr>
friend friend
_LIBCPP_HIDDEN _LIBCPP_HIDDEN
@ -889,6 +895,7 @@ public:
__pad_and_output(ostreambuf_iterator<_Ch, _Tr> __s, __pad_and_output(ostreambuf_iterator<_Ch, _Tr> __s,
const _Ch* __ob, const _Ch* __op, const _Ch* __oe, const _Ch* __ob, const _Ch* __op, const _Ch* __oe,
ios_base& __iob, _Ch __fl); ios_base& __iob, _Ch __fl);
#endif
}; };
template <class _Iter> template <class _Iter>

View File

@ -192,6 +192,10 @@ template <class charT> class messages_byname;
#include <nl_types.h> #include <nl_types.h>
#endif // !_WIN32 #endif // !_WIN32
#if __APPLE__
#include <Availability.h>
#endif
#include <__undef_min_max> #include <__undef_min_max>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
@ -1587,6 +1591,10 @@ __pad_and_output(_OutputIterator __s,
return __s; return __s;
} }
#if !defined(__APPLE__) || \
(defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED > __MAC_10_8) || \
(defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_6_0)
template <class _CharT, class _Traits> template <class _CharT, class _Traits>
_LIBCPP_HIDDEN _LIBCPP_HIDDEN
ostreambuf_iterator<_CharT, _Traits> ostreambuf_iterator<_CharT, _Traits>
@ -1633,6 +1641,8 @@ __pad_and_output(ostreambuf_iterator<_CharT, _Traits> __s,
return __s; return __s;
} }
#endif
template <class _CharT, class _OutputIterator> template <class _CharT, class _OutputIterator>
_OutputIterator _OutputIterator
num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob, num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,