Commit f7ab3fd1 by Paolo Carlini Committed by Paolo Carlini

istream.tcc (operator>>(__istream_type& (*)(__istream_type&)),…

istream.tcc (operator>>(__istream_type& (*)(__istream_type&)), operator>>(__ios_type& (*)(__ios_type&)), operator>>(ios_base& (*)(ios_base&))): Move...

2006-10-13  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/istream.tcc (operator>>(__istream_type&
	(*)(__istream_type&)), operator>>(__ios_type& (*)(__ios_type&)),
	operator>>(ios_base& (*)(ios_base&))): Move...
	* include/std/std_istream.h: ... here.
	(operator>>(basic_istream<char,>&, unsigned char&),
	operator>>(basic_istream<char,>&, signed char&),
	operator>>(basic_istream<char,>&, unsigned char*),
	operator>>(basic_istream<char,>&, signed char*)): Mark inline.
	* include/bits/ostream.tcc (operator<<(__ostream_type&
	(*)(__ostream_type&)), operator<<(__ios_type& (*)(__ios_type&)),
	operator<<(ios_base& (*)(ios_base&))): Move...
	* include/std/std_ostream.h: ... here.
	(operator<<(basic_ostream<>&, _CharT),
	operator<<(basic_ostream<>&, char),
	operator<<(basic_ostream<char,>&, char),
	operator<<(basic_ostream<char,>&, signed char),
	operator<<(basic_ostream<char,>&, unsigned char),
	operator<<(basic_ostream<>&, const _CharT*),
	operator<<(basic_ostream<char,>&, const char*),
	operator<<(basic_ostream<char,>&, const signed char*),
	operator<<(basic_ostream<char,>&, const unsigned char*),
	endl(basic_ostream<>&), ends(basic_ostream<>&),
	flush(basic_ostream<>&)): Mark inline.

From-SVN: r117715
parent 164ea65a
2006-10-13 Paolo Carlini <pcarlini@suse.de> 2006-10-13 Paolo Carlini <pcarlini@suse.de>
* include/bits/istream.tcc (operator>>(__istream_type&
(*)(__istream_type&)), operator>>(__ios_type& (*)(__ios_type&)),
operator>>(ios_base& (*)(ios_base&))): Move...
* include/std/std_istream.h: ... here.
(operator>>(basic_istream<char,>&, unsigned char&),
operator>>(basic_istream<char,>&, signed char&),
operator>>(basic_istream<char,>&, unsigned char*),
operator>>(basic_istream<char,>&, signed char*)): Mark inline.
* include/bits/ostream.tcc (operator<<(__ostream_type&
(*)(__ostream_type&)), operator<<(__ios_type& (*)(__ios_type&)),
operator<<(ios_base& (*)(ios_base&))): Move...
* include/std/std_ostream.h: ... here.
(operator<<(basic_ostream<>&, _CharT),
operator<<(basic_ostream<>&, char),
operator<<(basic_ostream<char,>&, char),
operator<<(basic_ostream<char,>&, signed char),
operator<<(basic_ostream<char,>&, unsigned char),
operator<<(basic_ostream<>&, const _CharT*),
operator<<(basic_ostream<char,>&, const char*),
operator<<(basic_ostream<char,>&, const signed char*),
operator<<(basic_ostream<char,>&, const unsigned char*),
endl(basic_ostream<>&), ends(basic_ostream<>&),
flush(basic_ostream<>&)): Mark inline.
2006-10-13 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/28277 (partial: ostream bits 2) PR libstdc++/28277 (partial: ostream bits 2)
* include/std/std_ostream.h (basic_ostream<>::_M_insert(const * include/std/std_ostream.h (basic_ostream<>::_M_insert(const
char_type*, streamsize)): New. char_type*, streamsize)): New.
......
...@@ -86,30 +86,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -86,30 +86,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
} }
template<typename _CharT, typename _Traits> template<typename _CharT, typename _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::
operator>>(__istream_type& (*__pf)(__istream_type&))
{ return __pf(*this); }
template<typename _CharT, typename _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::
operator>>(__ios_type& (*__pf)(__ios_type&))
{
__pf(*this);
return *this;
}
template<typename _CharT, typename _Traits>
basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>::
operator>>(ios_base& (*__pf)(ios_base&))
{
__pf(*this);
return *this;
}
template<typename _CharT, typename _Traits>
template<typename _ValueT> template<typename _ValueT>
basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>&
basic_istream<_CharT, _Traits>:: basic_istream<_CharT, _Traits>::
......
...@@ -62,41 +62,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -62,41 +62,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
} }
template<typename _CharT, typename _Traits> template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::
operator<<(__ostream_type& (*__pf)(__ostream_type&))
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// DR 60. What is a formatted input function?
// The inserters for manipulators are *not* formatted output functions.
return __pf(*this);
}
template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::
operator<<(__ios_type& (*__pf)(__ios_type&))
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// DR 60. What is a formatted input function?
// The inserters for manipulators are *not* formatted output functions.
__pf(*this);
return *this;
}
template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>::
operator<<(ios_base& (*__pf)(ios_base&))
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// DR 60. What is a formatted input function?
// The inserters for manipulators are *not* formatted output functions.
__pf(*this);
return *this;
}
template<typename _CharT, typename _Traits>
template<typename _ValueT> template<typename _ValueT>
basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>&
basic_ostream<_CharT, _Traits>:: basic_ostream<_CharT, _Traits>::
......
...@@ -127,14 +127,23 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -127,14 +127,23 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* functions in constructs like "std::cin >> std::ws". For more * functions in constructs like "std::cin >> std::ws". For more
* information, see the iomanip header. * information, see the iomanip header.
*/ */
inline __istream_type& __istream_type&
operator>>(__istream_type& (*__pf)(__istream_type&)); operator>>(__istream_type& (*__pf)(__istream_type&))
{ return __pf(*this); }
inline __istream_type& __istream_type&
operator>>(__ios_type& (*__pf)(__ios_type&)); operator>>(__ios_type& (*__pf)(__ios_type&))
{
__pf(*this);
return *this;
}
inline __istream_type& __istream_type&
operator>>(ios_base& (*__pf)(ios_base&)); operator>>(ios_base& (*__pf)(ios_base&))
{
__pf(*this);
return *this;
}
//@} //@}
// [27.6.1.2.2] arithmetic extractors // [27.6.1.2.2] arithmetic extractors
...@@ -247,7 +256,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -247,7 +256,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @return The number of characters extracted by the previous * @return The number of characters extracted by the previous
* unformatted input function dispatched for this stream. * unformatted input function dispatched for this stream.
*/ */
inline streamsize streamsize
gcount() const gcount() const
{ return _M_gcount; } { return _M_gcount; }
...@@ -331,7 +340,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -331,7 +340,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* *
* Returns @c get(s,n,widen('\n')). * Returns @c get(s,n,widen('\n')).
*/ */
inline __istream_type& __istream_type&
get(char_type* __s, streamsize __n) get(char_type* __s, streamsize __n)
{ return this->get(__s, __n, this->widen('\n')); } { return this->get(__s, __n, this->widen('\n')); }
...@@ -364,7 +373,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -364,7 +373,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* *
* Returns @c get(sb,widen('\n')). * Returns @c get(sb,widen('\n')).
*/ */
inline __istream_type& __istream_type&
get(__streambuf_type& __sb) get(__streambuf_type& __sb)
{ return this->get(__sb, this->widen('\n')); } { return this->get(__sb, this->widen('\n')); }
...@@ -404,7 +413,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -404,7 +413,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* *
* Returns @c getline(s,n,widen('\n')). * Returns @c getline(s,n,widen('\n')).
*/ */
inline __istream_type& __istream_type&
getline(char_type* __s, streamsize __n) getline(char_type* __s, streamsize __n)
{ return this->getline(__s, __n, this->widen('\n')); } { return this->getline(__s, __n, this->widen('\n')); }
...@@ -675,7 +684,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -675,7 +684,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* For ease of use, sentries may be converted to booleans. The * For ease of use, sentries may be converted to booleans. The
* return value is that of the sentry state (true == okay). * return value is that of the sentry state (true == okay).
*/ */
operator bool() const { return _M_ok; } operator bool() const
{ return _M_ok; }
private: private:
bool _M_ok; bool _M_ok;
...@@ -699,12 +709,12 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -699,12 +709,12 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c); operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c);
template<class _Traits> template<class _Traits>
basic_istream<char, _Traits>& inline basic_istream<char, _Traits>&
operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c) operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c)
{ return (__in >> reinterpret_cast<char&>(__c)); } { return (__in >> reinterpret_cast<char&>(__c)); }
template<class _Traits> template<class _Traits>
basic_istream<char, _Traits>& inline basic_istream<char, _Traits>&
operator>>(basic_istream<char, _Traits>& __in, signed char& __c) operator>>(basic_istream<char, _Traits>& __in, signed char& __c)
{ return (__in >> reinterpret_cast<char&>(__c)); } { return (__in >> reinterpret_cast<char&>(__c)); }
//@} //@}
...@@ -745,12 +755,12 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -745,12 +755,12 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
operator>>(basic_istream<char>& __in, char* __s); operator>>(basic_istream<char>& __in, char* __s);
template<class _Traits> template<class _Traits>
basic_istream<char, _Traits>& inline basic_istream<char, _Traits>&
operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s) operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s)
{ return (__in >> reinterpret_cast<char*>(__s)); } { return (__in >> reinterpret_cast<char*>(__s)); }
template<class _Traits> template<class _Traits>
basic_istream<char, _Traits>& inline basic_istream<char, _Traits>&
operator>>(basic_istream<char, _Traits>& __in, signed char* __s) operator>>(basic_istream<char, _Traits>& __in, signed char* __s)
{ return (__in >> reinterpret_cast<char*>(__s)); } { return (__in >> reinterpret_cast<char*>(__s)); }
//@} //@}
......
...@@ -131,14 +131,34 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -131,14 +131,34 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* functions in constructs like "std::cout << std::endl". For more * functions in constructs like "std::cout << std::endl". For more
* information, see the iomanip header. * information, see the iomanip header.
*/ */
inline __ostream_type& __ostream_type&
operator<<(__ostream_type& (*__pf)(__ostream_type&)); operator<<(__ostream_type& (*__pf)(__ostream_type&))
{
inline __ostream_type& // _GLIBCXX_RESOLVE_LIB_DEFECTS
operator<<(__ios_type& (*__pf)(__ios_type&)); // DR 60. What is a formatted input function?
// The inserters for manipulators are *not* formatted output functions.
inline __ostream_type& return __pf(*this);
operator<<(ios_base& (*__pf) (ios_base&)); }
__ostream_type&
operator<<(__ios_type& (*__pf)(__ios_type&))
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// DR 60. What is a formatted input function?
// The inserters for manipulators are *not* formatted output functions.
__pf(*this);
return *this;
}
__ostream_type&
operator<<(ios_base& (*__pf) (ios_base&))
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// DR 60. What is a formatted input function?
// The inserters for manipulators are *not* formatted output functions.
__pf(*this);
return *this;
}
//@} //@}
// [27.6.2.5.2] arithmetic inserters // [27.6.2.5.2] arithmetic inserters
...@@ -405,7 +425,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -405,7 +425,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ {
// Data Members: // Data Members:
bool _M_ok; bool _M_ok;
basic_ostream<_CharT,_Traits>& _M_os; basic_ostream<_CharT, _Traits>& _M_os;
public: public:
/** /**
...@@ -420,7 +440,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -420,7 +440,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* true ("okay"). * true ("okay").
*/ */
explicit explicit
sentry(basic_ostream<_CharT,_Traits>& __os); sentry(basic_ostream<_CharT, _Traits>& __os);
/** /**
* @brief Possibly flushes the stream. * @brief Possibly flushes the stream.
...@@ -469,29 +489,29 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -469,29 +489,29 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @c char, the character is widened before insertion. * @c char, the character is widened before insertion.
*/ */
template<typename _CharT, typename _Traits> template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>& inline basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c)
{ return __out._M_insert(&__c, 1); } { return __out._M_insert(&__c, 1); }
template<typename _CharT, typename _Traits> template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>& inline basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __out, char __c) operator<<(basic_ostream<_CharT, _Traits>& __out, char __c)
{ return (__out << __out.widen(__c)); } { return (__out << __out.widen(__c)); }
// Specialization // Specialization
template <class _Traits> template <class _Traits>
basic_ostream<char, _Traits>& inline basic_ostream<char, _Traits>&
operator<<(basic_ostream<char, _Traits>& __out, char __c) operator<<(basic_ostream<char, _Traits>& __out, char __c)
{ return __out._M_insert(&__c, 1); } { return __out._M_insert(&__c, 1); }
// Signed and unsigned // Signed and unsigned
template<class _Traits> template<class _Traits>
basic_ostream<char, _Traits>& inline basic_ostream<char, _Traits>&
operator<<(basic_ostream<char, _Traits>& __out, signed char __c) operator<<(basic_ostream<char, _Traits>& __out, signed char __c)
{ return (__out << static_cast<char>(__c)); } { return (__out << static_cast<char>(__c)); }
template<class _Traits> template<class _Traits>
basic_ostream<char, _Traits>& inline basic_ostream<char, _Traits>&
operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c) operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c)
{ return (__out << static_cast<char>(__c)); } { return (__out << static_cast<char>(__c)); }
//@} //@}
...@@ -511,7 +531,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -511,7 +531,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* determined by [22.2.2.2.2]). @c out.width(0) is then called. * determined by [22.2.2.2.2]). @c out.width(0) is then called.
*/ */
template<typename _CharT, typename _Traits> template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>& inline basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s) operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)
{ {
if (!__s) if (!__s)
...@@ -527,7 +547,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -527,7 +547,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// Partial specializationss // Partial specializationss
template<class _Traits> template<class _Traits>
basic_ostream<char, _Traits>& inline basic_ostream<char, _Traits>&
operator<<(basic_ostream<char, _Traits>& __out, const char* __s) operator<<(basic_ostream<char, _Traits>& __out, const char* __s)
{ {
if (!__s) if (!__s)
...@@ -539,12 +559,12 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -539,12 +559,12 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// Signed and unsigned // Signed and unsigned
template<class _Traits> template<class _Traits>
basic_ostream<char, _Traits>& inline basic_ostream<char, _Traits>&
operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s) operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s)
{ return (__out << reinterpret_cast<const char*>(__s)); } { return (__out << reinterpret_cast<const char*>(__s)); }
template<class _Traits> template<class _Traits>
basic_ostream<char, _Traits> & inline basic_ostream<char, _Traits> &
operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s) operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)
{ return (__out << reinterpret_cast<const char*>(__s)); } { return (__out << reinterpret_cast<const char*>(__s)); }
//@} //@}
...@@ -559,7 +579,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -559,7 +579,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* on this subject. * on this subject.
*/ */
template<typename _CharT, typename _Traits> template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>& inline basic_ostream<_CharT, _Traits>&
endl(basic_ostream<_CharT, _Traits>& __os) endl(basic_ostream<_CharT, _Traits>& __os)
{ return flush(__os.put(__os.widen('\n'))); } { return flush(__os.put(__os.widen('\n'))); }
...@@ -570,7 +590,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -570,7 +590,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* this correctly writes the ASCII @c NUL character string terminator. * this correctly writes the ASCII @c NUL character string terminator.
*/ */
template<typename _CharT, typename _Traits> template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>& inline basic_ostream<_CharT, _Traits>&
ends(basic_ostream<_CharT, _Traits>& __os) ends(basic_ostream<_CharT, _Traits>& __os)
{ return __os.put(_CharT()); } { return __os.put(_CharT()); }
...@@ -580,7 +600,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -580,7 +600,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* This manipulator simply calls the stream's @c flush() member function. * This manipulator simply calls the stream's @c flush() member function.
*/ */
template<typename _CharT, typename _Traits> template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>& inline basic_ostream<_CharT, _Traits>&
flush(basic_ostream<_CharT, _Traits>& __os) flush(basic_ostream<_CharT, _Traits>& __os)
{ return __os.flush(); } { return __os.flush(); }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment