eugenis created this revision. eugenis added reviewers: mclow.lists, EricWF. eugenis added a subscriber: cfe-commits. eugenis set the repository for this revision to rL LLVM.
No point in pretending that these methods are hidden - they are actually exported from libc++.so. Extern template declarations make them part of libc++ ABI. This patch does not change libc++.so export list (at least on Linux). Repository: rL LLVM http://reviews.llvm.org/D14409 Files: include/istream include/ostream include/streambuf
Index: include/streambuf =================================================================== --- include/streambuf +++ include/streambuf @@ -220,7 +220,7 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline locale basic_streambuf<_CharT, _Traits>::pubimbue(const locale& __loc) { @@ -231,23 +231,23 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline locale basic_streambuf<_CharT, _Traits>::getloc() const { return __loc_; } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_streambuf<_CharT, _Traits>* basic_streambuf<_CharT, _Traits>::pubsetbuf(char_type* __s, streamsize __n) { return setbuf(__s, __n); } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline typename basic_streambuf<_CharT, _Traits>::pos_type basic_streambuf<_CharT, _Traits>::pubseekoff(off_type __off, ios_base::seekdir __way, @@ -257,24 +257,24 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline typename basic_streambuf<_CharT, _Traits>::pos_type basic_streambuf<_CharT, _Traits>::pubseekpos(pos_type __sp, ios_base::openmode __which) { return seekpos(__sp, __which); } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline int basic_streambuf<_CharT, _Traits>::pubsync() { return sync(); } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline streamsize basic_streambuf<_CharT, _Traits>::in_avail() { @@ -284,7 +284,7 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline typename basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>::snextc() { @@ -294,7 +294,7 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline typename basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>::sbumpc() { @@ -304,7 +304,7 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline typename basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>::sgetc() { @@ -314,15 +314,15 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline streamsize basic_streambuf<_CharT, _Traits>::sgetn(char_type* __s, streamsize __n) { return xsgetn(__s, __n); } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline typename basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>::sputbackc(char_type __c) { @@ -332,7 +332,7 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline typename basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>::sungetc() { @@ -342,7 +342,7 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline typename basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>::sputc(char_type __c) { @@ -353,7 +353,7 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline streamsize basic_streambuf<_CharT, _Traits>::sputn(const char_type* __s, streamsize __n) { @@ -411,15 +411,15 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline void basic_streambuf<_CharT, _Traits>::gbump(int __n) { __ninp_ += __n; } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline void basic_streambuf<_CharT, _Traits>::setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) @@ -430,15 +430,15 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline void basic_streambuf<_CharT, _Traits>::pbump(int __n) { __nout_ += __n; } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline void basic_streambuf<_CharT, _Traits>::setp(char_type* __pbeg, char_type* __pend) { Index: include/ostream =================================================================== --- include/ostream +++ include/ostream @@ -275,23 +275,23 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_ostream<_CharT, _Traits>::basic_ostream(basic_streambuf<char_type, traits_type>* __sb) { this->init(__sb); } #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_ostream<_CharT, _Traits>::basic_ostream(basic_ostream&& __rhs) { this->move(__rhs); } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator=(basic_ostream&& __rhs) { @@ -307,23 +307,23 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline void basic_ostream<_CharT, _Traits>::swap(basic_ostream& __rhs) { basic_ios<char_type, traits_type>::swap(__rhs); } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(basic_ostream& (*__pf)(basic_ostream&)) { return __pf(*this); } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(basic_ios<char_type, traits_type>& (*__pf)(basic_ios<char_type,traits_type>&)) @@ -333,7 +333,7 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(ios_base& (*__pf)(ios_base&)) { @@ -989,7 +989,7 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline typename basic_ostream<_CharT, _Traits>::pos_type basic_ostream<_CharT, _Traits>::tellp() { @@ -999,7 +999,7 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::seekp(pos_type __pos) { @@ -1013,7 +1013,7 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::seekp(off_type __off, ios_base::seekdir __dir) { @@ -1027,7 +1027,7 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_ostream<_CharT, _Traits>& endl(basic_ostream<_CharT, _Traits>& __os) { @@ -1037,16 +1037,16 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_ostream<_CharT, _Traits>& ends(basic_ostream<_CharT, _Traits>& __os) { __os.put(_CharT()); return __os; } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_ostream<_CharT, _Traits>& flush(basic_ostream<_CharT, _Traits>& __os) { @@ -1057,7 +1057,7 @@ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES template <class _Stream, class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline typename enable_if < !is_lvalue_reference<_Stream>::value && @@ -1081,15 +1081,15 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __ec) { return __os << __ec.category().name() << ':' << __ec.value(); } template<class _CharT, class _Traits, class _Yp> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, shared_ptr<_Yp> const& __p) { Index: include/istream =================================================================== --- include/istream +++ include/istream @@ -304,7 +304,7 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<_CharT, _Traits>::basic_istream(basic_streambuf<char_type, traits_type>* __sb) : __gc_(0) { @@ -314,16 +314,16 @@ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<_CharT, _Traits>::basic_istream(basic_istream&& __rhs) : __gc_(__rhs.__gc_) { __rhs.__gc_ = 0; this->move(__rhs); } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator=(basic_istream&& __rhs) { @@ -339,7 +339,7 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline void basic_istream<_CharT, _Traits>::swap(basic_istream& __rhs) { @@ -725,15 +725,15 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator>>(basic_istream& (*__pf)(basic_istream&)) { return __pf(*this); } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator>>(basic_ios<char_type, traits_type>& (*__pf)(basic_ios<char_type, traits_type>&)) @@ -743,7 +743,7 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator>>(ios_base& (*__pf)(ios_base&)) { @@ -800,15 +800,15 @@ } template<class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<char, _Traits>& operator>>(basic_istream<char, _Traits>& __is, unsigned char* __s) { return __is >> (char*)__s; } template<class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<char, _Traits>& operator>>(basic_istream<char, _Traits>& __is, signed char* __s) { @@ -843,15 +843,15 @@ } template<class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<char, _Traits>& operator>>(basic_istream<char, _Traits>& __is, unsigned char& __c) { return __is >> (char&)__c; } template<class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<char, _Traits>& operator>>(basic_istream<char, _Traits>& __is, signed char& __c) { @@ -947,7 +947,7 @@ } template<class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::get(char_type& __c) { @@ -1006,7 +1006,7 @@ } template<class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::get(char_type* __s, streamsize __n) { @@ -1068,7 +1068,7 @@ } template<class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::get(basic_streambuf<char_type, traits_type>& __sb) { @@ -1129,7 +1129,7 @@ } template<class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::getline(char_type* __s, streamsize __n) { @@ -1462,7 +1462,7 @@ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES template <class _CharT, class _Traits, class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>&& __is, _Tp& __x) { @@ -1504,23 +1504,23 @@ }; template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_iostream<_CharT, _Traits>::basic_iostream(basic_streambuf<char_type, traits_type>* __sb) : basic_istream<_CharT, _Traits>(__sb) { } #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_iostream<_CharT, _Traits>::basic_iostream(basic_iostream&& __rhs) : basic_istream<_CharT, _Traits>(_VSTD::move(__rhs)) { } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_iostream<_CharT, _Traits>& basic_iostream<_CharT, _Traits>::operator=(basic_iostream&& __rhs) { @@ -1536,7 +1536,7 @@ } template <class _CharT, class _Traits> -inline _LIBCPP_INLINE_VISIBILITY +inline void basic_iostream<_CharT, _Traits>::swap(basic_iostream& __rhs) { @@ -1645,7 +1645,7 @@ } template<class _CharT, class _Traits, class _Allocator> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<_CharT, _Traits>& getline(basic_istream<_CharT, _Traits>& __is, basic_string<_CharT, _Traits, _Allocator>& __str) @@ -1656,16 +1656,16 @@ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES template<class _CharT, class _Traits, class _Allocator> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<_CharT, _Traits>& getline(basic_istream<_CharT, _Traits>&& __is, basic_string<_CharT, _Traits, _Allocator>& __str, _CharT __dlm) { return getline(__is, __str, __dlm); } template<class _CharT, class _Traits, class _Allocator> -inline _LIBCPP_INLINE_VISIBILITY +inline basic_istream<_CharT, _Traits>& getline(basic_istream<_CharT, _Traits>&& __is, basic_string<_CharT, _Traits, _Allocator>& __str)
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits