[cfe-commits] [libcxx] r134639 - in /libcxx/trunk: include/future include/istream include/ostream include/string include/strstream src/string.cpp src/strstream.cpp test/utilities/type.index/type.index.members/lt.pass.cpp
Howard Hinnant
hhinnant at apple.com
Thu Jul 7 14:03:52 PDT 2011
Author: hhinnant
Date: Thu Jul 7 16:03:52 2011
New Revision: 134639
URL: http://llvm.org/viewvc/llvm-project?rev=134639&view=rev
Log:
Fixing up some ABI issues
Modified:
libcxx/trunk/include/future
libcxx/trunk/include/istream
libcxx/trunk/include/ostream
libcxx/trunk/include/string
libcxx/trunk/include/strstream
libcxx/trunk/src/string.cpp
libcxx/trunk/src/strstream.cpp
libcxx/trunk/test/utilities/type.index/type.index.members/lt.pass.cpp
Modified: libcxx/trunk/include/future
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/future?rev=134639&r1=134638&r2=134639&view=diff
==============================================================================
--- libcxx/trunk/include/future (original)
+++ libcxx/trunk/include/future Thu Jul 7 16:03:52 2011
@@ -452,6 +452,8 @@
_LIBCPP_INLINE_VISIBILITY
const error_code& code() const throw() {return __ec_;}
+
+ virtual ~future_error() _NOEXCEPT;
};
class __assoc_sub_state
Modified: libcxx/trunk/include/istream
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/istream?rev=134639&r1=134638&r2=134639&view=diff
==============================================================================
--- libcxx/trunk/include/istream (original)
+++ libcxx/trunk/include/istream Thu Jul 7 16:03:52 2011
@@ -177,11 +177,13 @@
virtual ~basic_istream();
protected:
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+ _LIBCPP_INLINE_VISIBILITY
basic_istream(basic_istream&& __rhs);
#endif
// 27.7.1.1.2 Assign/swap:
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+ _LIBCPP_INLINE_VISIBILITY
basic_istream& operator=(basic_istream&& __rhs);
#endif
void swap(basic_istream& __rhs);
@@ -1504,11 +1506,13 @@
virtual ~basic_iostream();
protected:
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+ _LIBCPP_INLINE_VISIBILITY
basic_iostream(basic_iostream&& __rhs);
#endif
// assign/swap
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+ _LIBCPP_INLINE_VISIBILITY
basic_iostream& operator=(basic_iostream&& __rhs);
#endif
void swap(basic_iostream& __rhs);
Modified: libcxx/trunk/include/ostream
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/ostream?rev=134639&r1=134638&r2=134639&view=diff
==============================================================================
--- libcxx/trunk/include/ostream (original)
+++ libcxx/trunk/include/ostream Thu Jul 7 16:03:52 2011
@@ -154,11 +154,13 @@
virtual ~basic_ostream();
protected:
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+ _LIBCPP_INLINE_VISIBILITY
basic_ostream(basic_ostream&& __rhs);
#endif
// 27.7.2.3 Assign/swap
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+ _LIBCPP_INLINE_VISIBILITY
basic_ostream& operator=(basic_ostream&& __rhs);
#endif
void swap(basic_ostream& __rhs);
Modified: libcxx/trunk/include/string
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/string?rev=134639&r1=134638&r2=134639&view=diff
==============================================================================
--- libcxx/trunk/include/string (original)
+++ libcxx/trunk/include/string Thu Jul 7 16:03:52 2011
@@ -3970,54 +3970,6 @@
extern template class basic_string<wchar_t>;
extern template
- enable_if<__is_forward_iterator<char const*>::value, void>::type
- basic_string<char, char_traits<char>, allocator<char> >::
- __init<char const*>(char const*, char const*);
-
-extern template
- enable_if<__is_forward_iterator<wchar_t const*>::value, void>::type
- basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >::
- __init<wchar_t const*>(wchar_t const*, wchar_t const*);
-
-extern template
- enable_if<__is_forward_iterator<char*>::value,
- basic_string<char, char_traits<char>, allocator<char> >&>::type
- basic_string<char, char_traits<char>, allocator<char> >::
- append<char*>(char*, char*);
-
-extern template
- enable_if<__is_forward_iterator<wchar_t*>::value,
- basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >&>::type
- basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >::
- append<wchar_t*>(wchar_t*, wchar_t*);
-
-extern template
- enable_if<__is_forward_iterator<char const*>::value,
- string::iterator>::type
- string::
- insert<char const*>(string::const_iterator, char const*, char const*);
-
-extern template
- enable_if<__is_forward_iterator<wchar_t const*>::value,
- wstring::iterator>::type
- wstring::
- insert<wchar_t const*>(wstring::const_iterator, wchar_t const*, wchar_t const*);
-
-extern template
- enable_if<__is_input_iterator<char const*>::value, string&>::type
- string::
- replace<char const*>(string::const_iterator, string::const_iterator, char const*, char const*);
-
-extern template
- enable_if<__is_input_iterator<wchar_t const*>::value, wstring&>::type
- wstring::
- replace<wchar_t const*>(wstring::const_iterator, wstring::const_iterator, wchar_t const*, wchar_t const*);
-
-extern template
- enable_if<__is_forward_iterator<wchar_t*>::value, wstring&>::type
- wstring::assign<wchar_t*>(wchar_t*, wchar_t*);
-
-extern template
string
operator+<char, char_traits<char>, allocator<char> >(char const*, string const&);
Modified: libcxx/trunk/include/strstream
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/strstream?rev=134639&r1=134638&r2=134639&view=diff
==============================================================================
--- libcxx/trunk/include/strstream (original)
+++ libcxx/trunk/include/strstream Thu Jul 7 16:03:52 2011
@@ -150,7 +150,9 @@
strstreambuf(const unsigned char* __gnext, streamsize __n);
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+ _LIBCPP_INLINE_VISIBILITY
strstreambuf(strstreambuf&& __rhs);
+ _LIBCPP_INLINE_VISIBILITY
strstreambuf& operator=(strstreambuf&& __rhs);
#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
@@ -187,6 +189,43 @@
void __init(char* __gnext, streamsize __n, char* __pbeg);
};
+#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+
+inline _LIBCPP_INLINE_VISIBILITY
+strstreambuf::strstreambuf(strstreambuf&& __rhs)
+ : streambuf(__rhs),
+ __strmode_(__rhs.__strmode_),
+ __alsize_(__rhs.__alsize_),
+ __palloc_(__rhs.__palloc_),
+ __pfree_(__rhs.__pfree_)
+{
+ __rhs.setg(nullptr, nullptr, nullptr);
+ __rhs.setp(nullptr, nullptr);
+}
+
+inline _LIBCPP_INLINE_VISIBILITY
+strstreambuf&
+strstreambuf::operator=(strstreambuf&& __rhs)
+{
+ if (eback() && (__strmode_ & __allocated) != 0 && (__strmode_ & __frozen) == 0)
+ {
+ if (__pfree_)
+ __pfree_(eback());
+ else
+ delete [] eback();
+ }
+ streambuf::operator=(__rhs);
+ __strmode_ = __rhs.__strmode_;
+ __alsize_ = __rhs.__alsize_;
+ __palloc_ = __rhs.__palloc_;
+ __pfree_ = __rhs.__pfree_;
+ __rhs.setg(nullptr, nullptr, nullptr);
+ __rhs.setp(nullptr, nullptr);
+ return *this;
+}
+
+#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
+
class _LIBCPP_VISIBLE istrstream
: public istream
{
Modified: libcxx/trunk/src/string.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/src/string.cpp?rev=134639&r1=134638&r2=134639&view=diff
==============================================================================
--- libcxx/trunk/src/string.cpp (original)
+++ libcxx/trunk/src/string.cpp Thu Jul 7 16:03:52 2011
@@ -19,52 +19,6 @@
template class basic_string<char>;
template class basic_string<wchar_t>;
-template enable_if<__is_forward_iterator<char const*>::value, void>::type
- basic_string<char, char_traits<char>, allocator<char> >
- ::__init<char const*>(char const*, char const*);
-
-template enable_if<__is_forward_iterator<wchar_t const*>::value, void>::type
- basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >
- ::__init<wchar_t const*>(wchar_t const*, wchar_t const*);
-
-template
- enable_if<__is_forward_iterator<char*>::value,
- basic_string<char, char_traits<char>, allocator<char> >&>::type
- basic_string<char, char_traits<char>, allocator<char> >::
- append<char*>(char*, char*);
-
-template
- enable_if<__is_forward_iterator<wchar_t*>::value,
- basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >&>::type
- basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >::
- append<wchar_t*>(wchar_t*, wchar_t*);
-
-template
- enable_if<__is_forward_iterator<char const*>::value,
- string::iterator>::type
- string::
- insert<char const*>(string::const_iterator, char const*, char const*);
-
-template
- enable_if<__is_forward_iterator<wchar_t const*>::value,
- wstring::iterator>::type
- wstring::
- insert<wchar_t const*>(wstring::const_iterator, wchar_t const*, wchar_t const*);
-
-template
- enable_if<__is_input_iterator<char const*>::value, string&>::type
- string::
- replace<char const*>(string::const_iterator, string::const_iterator, char const*, char const*);
-
-template
- enable_if<__is_input_iterator<wchar_t const*>::value, wstring&>::type
- wstring::
- replace<wchar_t const*>(wstring::const_iterator, wstring::const_iterator, wchar_t const*, wchar_t const*);
-
-template
- enable_if<__is_forward_iterator<wchar_t*>::value, wstring&>::type
- wstring::assign<wchar_t*>(wchar_t*, wchar_t*);
-
template
string
operator+<char, char_traits<char>, allocator<char> >(char const*, string const&);
Modified: libcxx/trunk/src/strstream.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/src/strstream.cpp?rev=134639&r1=134638&r2=134639&view=diff
==============================================================================
--- libcxx/trunk/src/strstream.cpp (original)
+++ libcxx/trunk/src/strstream.cpp Thu Jul 7 16:03:52 2011
@@ -100,41 +100,6 @@
__init((char*)__gnext, __n, nullptr);
}
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
-
-strstreambuf::strstreambuf(strstreambuf&& __rhs)
- : streambuf(__rhs),
- __strmode_(__rhs.__strmode_),
- __alsize_(__rhs.__alsize_),
- __palloc_(__rhs.__palloc_),
- __pfree_(__rhs.__pfree_)
-{
- __rhs.setg(nullptr, nullptr, nullptr);
- __rhs.setp(nullptr, nullptr);
-}
-
-strstreambuf&
-strstreambuf::operator=(strstreambuf&& __rhs)
-{
- if (eback() && (__strmode_ & __allocated) != 0 && (__strmode_ & __frozen) == 0)
- {
- if (__pfree_)
- __pfree_(eback());
- else
- delete [] eback();
- }
- streambuf::operator=(__rhs);
- __strmode_ = __rhs.__strmode_;
- __alsize_ = __rhs.__alsize_;
- __palloc_ = __rhs.__palloc_;
- __pfree_ = __rhs.__pfree_;
- __rhs.setg(nullptr, nullptr, nullptr);
- __rhs.setp(nullptr, nullptr);
- return *this;
-}
-
-#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
-
strstreambuf::~strstreambuf()
{
if (eback() && (__strmode_ & __allocated) != 0 && (__strmode_ & __frozen) == 0)
Modified: libcxx/trunk/test/utilities/type.index/type.index.members/lt.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/utilities/type.index/type.index.members/lt.pass.cpp?rev=134639&r1=134638&r2=134639&view=diff
==============================================================================
--- libcxx/trunk/test/utilities/type.index/type.index.members/lt.pass.cpp (original)
+++ libcxx/trunk/test/utilities/type.index/type.index.members/lt.pass.cpp Thu Jul 7 16:03:52 2011
@@ -28,8 +28,18 @@
assert( (t1 <= t2));
assert(!(t1 > t2));
assert( (t1 >= t2));
- assert(!(t1 < t3));
- assert(!(t1 <= t3));
- assert( (t1 > t3));
- assert( (t1 >= t3));
+ if (t1 < t3)
+ {
+ assert( (t1 < t3));
+ assert( (t1 <= t3));
+ assert(!(t1 > t3));
+ assert(!(t1 >= t3));
+ }
+ else
+ {
+ assert(!(t1 < t3));
+ assert(!(t1 <= t3));
+ assert( (t1 > t3));
+ assert( (t1 >= t3));
+ }
}
More information about the cfe-commits
mailing list