Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 Dec 2012 16:22:46 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r244436 - stable/9/contrib/libc++/include
Message-ID:  <201212191622.qBJGMk1e035370@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Wed Dec 19 16:22:46 2012
New Revision: 244436
URL: http://svnweb.freebsd.org/changeset/base/244436

Log:
  MFC r243572:
  
    Pull in r168610 from upstream libc++:
  
      When using libc++ headers on FreeBSD, in combination with -std=c++98,
      -ansi or -std=c++03, the long long type is not supported.  So in this
      case, several functions and types, like lldiv_t, strtoll(), are not
      declared.
  
    This should make it possible to use the libc++ headers in c++98 mode.
  
    Note: libc++ is originally designed as a c++0x or higher library, so you
    should still take care when using it with c++98 or c++03.
  
    Noted by:	Yamaya Takashi <yamayan@kbh.biglobe.ne.jp>
  
  MFC r243673 (by theraven):
  
    Merge new libc++ into head.

Modified:
  stable/9/contrib/libc++/include/__config
  stable/9/contrib/libc++/include/cstdlib
  stable/9/contrib/libc++/include/cwchar
  stable/9/contrib/libc++/include/exception
  stable/9/contrib/libc++/include/iterator
  stable/9/contrib/libc++/include/locale
Directory Properties:
  stable/9/contrib/libc++/   (props changed)

Modified: stable/9/contrib/libc++/include/__config
==============================================================================
--- stable/9/contrib/libc++/include/__config	Wed Dec 19 13:26:46 2012	(r244435)
+++ stable/9/contrib/libc++/include/__config	Wed Dec 19 16:22:46 2012	(r244436)
@@ -51,6 +51,9 @@
 #   define _LIBCPP_LITTLE_ENDIAN 0
 #   define _LIBCPP_BIG_ENDIAN    1
 # endif  // _BYTE_ORDER == _LITTLE_ENDIAN
+# ifndef __LONG_LONG_SUPPORTED
+#  define _LIBCPP_HAS_NO_LONG_LONG
+# endif  // __LONG_LONG_SUPPORTED
 #endif  // __FreeBSD__
 
 #ifdef _WIN32

Modified: stable/9/contrib/libc++/include/cstdlib
==============================================================================
--- stable/9/contrib/libc++/include/cstdlib	Wed Dec 19 13:26:46 2012	(r244435)
+++ stable/9/contrib/libc++/include/cstdlib	Wed Dec 19 16:22:46 2012	(r244436)
@@ -97,18 +97,26 @@ _LIBCPP_BEGIN_NAMESPACE_STD
 using ::size_t;
 using ::div_t;
 using ::ldiv_t;
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 using ::lldiv_t;
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 using ::atof;
 using ::atoi;
 using ::atol;
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 using ::atoll;
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 using ::strtod;
 using ::strtof;
 using ::strtold;
 using ::strtol;
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 using ::strtoll;
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 using ::strtoul;
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 using ::strtoull;
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 using ::rand;
 using ::srand;
 using ::calloc;
@@ -125,10 +133,14 @@ using ::bsearch;
 using ::qsort;
 using ::abs;
 using ::labs;
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 using ::llabs;
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 using ::div;
 using ::ldiv;
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 using ::lldiv;
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 using ::mblen;
 using ::mbtowc;
 using ::wctomb;
@@ -145,10 +157,14 @@ using ::aligned_alloc;
 // MSVC already has the correct prototype in <stdlib.h.h> #ifdef __cplusplus
 #if !defined(_MSC_VER) && !defined(__sun__)
 inline _LIBCPP_INLINE_VISIBILITY long      abs(     long __x) _NOEXCEPT {return  labs(__x);}
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 inline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT {return llabs(__x);}
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 
 inline _LIBCPP_INLINE_VISIBILITY  ldiv_t div(     long __x,      long __y) _NOEXCEPT {return  ldiv(__x, __y);}
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x, long long __y) _NOEXCEPT {return lldiv(__x, __y);}
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 #endif // _MSC_VER
 
 _LIBCPP_END_NAMESPACE_STD

Modified: stable/9/contrib/libc++/include/cwchar
==============================================================================
--- stable/9/contrib/libc++/include/cwchar	Wed Dec 19 13:26:46 2012	(r244435)
+++ stable/9/contrib/libc++/include/cwchar	Wed Dec 19 16:22:46 2012	(r244436)
@@ -151,9 +151,13 @@ using ::wcstof;
 using ::wcstold;
 #endif // _MSC_VER
 using ::wcstol;
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 using ::wcstoll;
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 using ::wcstoul;
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 using ::wcstoull;
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 using ::wcscpy;
 using ::wcsncpy;
 using ::wcscat;

Modified: stable/9/contrib/libc++/include/exception
==============================================================================
--- stable/9/contrib/libc++/include/exception	Wed Dec 19 13:26:46 2012	(r244435)
+++ stable/9/contrib/libc++/include/exception	Wed Dec 19 16:22:46 2012	(r244436)
@@ -143,7 +143,7 @@ public:
         {return !(__x == __y);}
 
     friend exception_ptr current_exception() _NOEXCEPT;
-    _LIBCPP_NORETURN friend void rethrow_exception(exception_ptr);
+    friend void rethrow_exception(exception_ptr);
 };
 
 template<class _Ep>

Modified: stable/9/contrib/libc++/include/iterator
==============================================================================
--- stable/9/contrib/libc++/include/iterator	Wed Dec 19 13:26:46 2012	(r244435)
+++ stable/9/contrib/libc++/include/iterator	Wed Dec 19 16:22:46 2012	(r244436)
@@ -317,6 +317,10 @@ template <class T, size_t N> T* end(T (&
 #include <type_traits>
 #include <cstddef>
 #include <iosfwd>
+#if __APPLE__
+#include <Availability.h>
+#endif
+
 #ifdef _LIBCPP_DEBUG
 #include <cassert>
 #endif
@@ -795,7 +799,7 @@ public:
     typedef basic_streambuf<_CharT,_Traits> streambuf_type;
     typedef basic_istream<_CharT,_Traits>   istream_type;
 private:
-    streambuf_type* __sbuf_;
+    mutable streambuf_type* __sbuf_;
 
     class __proxy
     {
@@ -809,13 +813,14 @@ private:
     };
 
     _LIBCPP_INLINE_VISIBILITY
-    void __test_for_eof()
+    bool __test_for_eof() const
     {
         if (__sbuf_ && traits_type::eq_int_type(__sbuf_->sgetc(), traits_type::eof()))
             __sbuf_ = 0;
+        return __sbuf_ == 0;
     }
 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
         : __sbuf_(__s.rdbuf()) {__test_for_eof();}
     _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 istreambuf_iterator& operator++()
         {
-            if (traits_type::eq_int_type(__sbuf_->snextc(), traits_type::eof()))
-                __sbuf_ = 0;
+            __sbuf_->sbumpc();
             return *this;
         }
     _LIBCPP_INLINE_VISIBILITY __proxy              operator++(int)
         {
-            char_type __c = __sbuf_->sgetc();
-            ++(*this);
-            return __proxy(__c, __sbuf_);
+            return __proxy(__sbuf_->sbumpc(), __sbuf_);
         }
 
     _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>
@@ -882,6 +884,10 @@ public:
     _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator++(int) {return *this;}
     _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>
     friend
     _LIBCPP_HIDDEN
@@ -889,6 +895,7 @@ public:
     __pad_and_output(ostreambuf_iterator<_Ch, _Tr> __s,
                      const _Ch* __ob, const _Ch* __op, const _Ch* __oe,
                      ios_base& __iob, _Ch __fl);
+#endif
 };
 
 template <class _Iter>

Modified: stable/9/contrib/libc++/include/locale
==============================================================================
--- stable/9/contrib/libc++/include/locale	Wed Dec 19 13:26:46 2012	(r244435)
+++ stable/9/contrib/libc++/include/locale	Wed Dec 19 16:22:46 2012	(r244436)
@@ -192,6 +192,10 @@ template <class charT> class messages_by
 #include <nl_types.h>
 #endif  // !_WIN32
 
+#if __APPLE__
+#include <Availability.h>
+#endif
+
 #include <__undef_min_max>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
@@ -1587,6 +1591,10 @@ __pad_and_output(_OutputIterator __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>
 _LIBCPP_HIDDEN
 ostreambuf_iterator<_CharT, _Traits>
@@ -1633,6 +1641,8 @@ __pad_and_output(ostreambuf_iterator<_Ch
     return __s;
 }
 
+#endif
+
 template <class _CharT, class _OutputIterator>
 _OutputIterator
 num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201212191622.qBJGMk1e035370>