mirror of git://gcc.gnu.org/git/gcc.git
re PR libstdc++/24645 (Commonize arithmetic inserters/extractors bodies)
2006-01-02 Paolo Carlini <pcarlini@suse.de> PR libstdc++/24645 * include/std/std_istream.h (basic_istream<>::_M_extract): New. (operator>>(bool&), operator>>(short&), operator>>(unsigned short&), operator>>(int&), operator>>(unsigned int&), operator>>(long&), operator>>(unsigned long&), operator>>(long long&), operator>> (unsigned long long&), operator>>(float&), operator>>(double&), operator>>(long double&), operator>>(void*&)): Use it. * include/bits/istream.tcc (basic_istream<>::_M_extract): Define. * include/std/std_ostream.h (basic_ostream<>::_M_insert): New. (operator<<(long), operator<<(unsigned long), operator<<(bool), operator<<(short), operator<<(unsigned short), operator<<(int), operator<<(unsigned int), operator<<(long long), operator<< (unsigned long long), operator<<(double), operator<<(float), operator<<(long double), operator<<(const void*): Use it. * include/bits/ostream.tcc (basic_ostream<>::_M_insert): Define. * src/istream-inst.cc: Add _M_insert instantiations. * src/ostream-inst.cc: Add _M_extract instantiations. * config/abi/pre/gnu.ver: Export the new symbols @GLIBCXX_3.4.7; detail existing @GLIBCXX_3.4 exports of basic_ostream, num_put, money_put, etc., symbols to avoid exporting _M_insert symbols @GLIBCXX_3.4. From-SVN: r109236
This commit is contained in:
parent
5f0926cd78
commit
49d5c016da
|
@ -1,3 +1,27 @@
|
||||||
|
2006-01-02 Paolo Carlini <pcarlini@suse.de>
|
||||||
|
|
||||||
|
PR libstdc++/24645
|
||||||
|
* include/std/std_istream.h (basic_istream<>::_M_extract): New.
|
||||||
|
(operator>>(bool&), operator>>(short&), operator>>(unsigned short&),
|
||||||
|
operator>>(int&), operator>>(unsigned int&), operator>>(long&),
|
||||||
|
operator>>(unsigned long&), operator>>(long long&), operator>>
|
||||||
|
(unsigned long long&), operator>>(float&), operator>>(double&),
|
||||||
|
operator>>(long double&), operator>>(void*&)): Use it.
|
||||||
|
* include/bits/istream.tcc (basic_istream<>::_M_extract): Define.
|
||||||
|
* include/std/std_ostream.h (basic_ostream<>::_M_insert): New.
|
||||||
|
(operator<<(long), operator<<(unsigned long), operator<<(bool),
|
||||||
|
operator<<(short), operator<<(unsigned short), operator<<(int),
|
||||||
|
operator<<(unsigned int), operator<<(long long), operator<<
|
||||||
|
(unsigned long long), operator<<(double), operator<<(float),
|
||||||
|
operator<<(long double), operator<<(const void*): Use it.
|
||||||
|
* include/bits/ostream.tcc (basic_ostream<>::_M_insert): Define.
|
||||||
|
* src/istream-inst.cc: Add _M_insert instantiations.
|
||||||
|
* src/ostream-inst.cc: Add _M_extract instantiations.
|
||||||
|
* config/abi/pre/gnu.ver: Export the new symbols @GLIBCXX_3.4.7;
|
||||||
|
detail existing @GLIBCXX_3.4 exports of basic_ostream, num_put,
|
||||||
|
money_put, etc., symbols to avoid exporting _M_insert symbols
|
||||||
|
@GLIBCXX_3.4.
|
||||||
|
|
||||||
2005-12-28 Paolo Carlini <pcarlini@suse.de>
|
2005-12-28 Paolo Carlini <pcarlini@suse.de>
|
||||||
|
|
||||||
* docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 40.
|
* docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 40.
|
||||||
|
|
|
@ -42,7 +42,10 @@ GLIBCXX_3.4 {
|
||||||
std::basic_[j-n]*;
|
std::basic_[j-n]*;
|
||||||
std::basic_o[a-e]*;
|
std::basic_o[a-e]*;
|
||||||
# std::basic_ofstream;
|
# std::basic_ofstream;
|
||||||
std::basic_o[g-z]*;
|
# std::basic_o[g-z]*;
|
||||||
|
std::basic_o[g-r]*;
|
||||||
|
std::basic_ostr[a-d]*;
|
||||||
|
std::basic_ostr[f-z]*;
|
||||||
std::basic_[p-r]*;
|
std::basic_[p-r]*;
|
||||||
std::basic_streambuf*;
|
std::basic_streambuf*;
|
||||||
# std::basic_string
|
# std::basic_string
|
||||||
|
@ -86,7 +89,12 @@ GLIBCXX_3.4 {
|
||||||
std::locale::_[J-Ra-z]*;
|
std::locale::_[J-Ra-z]*;
|
||||||
std::locale::_S_normalize_category*;
|
std::locale::_S_normalize_category*;
|
||||||
std::locale::_[T-Za-z]*;
|
std::locale::_[T-Za-z]*;
|
||||||
std::[A-Zm-r]*;
|
# std::[A-Zm-r]*;
|
||||||
|
std::[A-Zm-n]*;
|
||||||
|
std::[p-r]*;
|
||||||
|
std::ostrstream*;
|
||||||
|
std::out_of_range*;
|
||||||
|
std::overflow_error*;
|
||||||
std::set_new_handler*;
|
std::set_new_handler*;
|
||||||
std::set_terminate*;
|
std::set_terminate*;
|
||||||
std::set_unexpected*;
|
std::set_unexpected*;
|
||||||
|
@ -257,7 +265,7 @@ GLIBCXX_3.4 {
|
||||||
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE[il][ijlm];
|
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE[il][ijlm];
|
||||||
_ZNSt13basic_istreamIwSt11char_traitsIwEErsE*;
|
_ZNSt13basic_istreamIwSt11char_traitsIwEErsE*;
|
||||||
|
|
||||||
# std::istream operators and inserters
|
# std::istream operators and extractors
|
||||||
_ZSt7getlineI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_istream*;
|
_ZSt7getlineI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_istream*;
|
||||||
_ZSt2wsI[cw]St11char_traitsI[cw]EE*;
|
_ZSt2wsI[cw]St11char_traitsI[cw]EE*;
|
||||||
_ZStrsI[cw]St11char_traitsI[cw]EERSt13basic_istream*;
|
_ZStrsI[cw]St11char_traitsI[cw]EERSt13basic_istream*;
|
||||||
|
@ -267,6 +275,37 @@ GLIBCXX_3.4 {
|
||||||
_ZStrsIe[cw]St11char_traitsI[cw]EERSt13basic_istream*;
|
_ZStrsIe[cw]St11char_traitsI[cw]EERSt13basic_istream*;
|
||||||
_ZStrsIf[cw]St11char_traitsI[cw]EERSt13basic_istream*;
|
_ZStrsIf[cw]St11char_traitsI[cw]EERSt13basic_istream*;
|
||||||
|
|
||||||
|
# std::basic_ostream<char>
|
||||||
|
_ZNSoC*;
|
||||||
|
_ZNSoD*;
|
||||||
|
_ZNKSo6sentrycvbEv;
|
||||||
|
_ZNSo8_M_write*;
|
||||||
|
_ZNSo[0-9][a-z]*;
|
||||||
|
_ZNSolsE*;
|
||||||
|
|
||||||
|
# std::basic_ostream<wchar_t>
|
||||||
|
_ZNSt13basic_ostreamIwSt11char_traitsIwEEC*;
|
||||||
|
_ZNSt13basic_ostreamIwSt11char_traitsIwEED*;
|
||||||
|
_ZNKSt13basic_ostreamIwSt11char_traitsIwEE[0-9][a-z]*;
|
||||||
|
_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw;
|
||||||
|
_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv;
|
||||||
|
_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpE*;
|
||||||
|
_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv;
|
||||||
|
_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKw*;
|
||||||
|
_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentry*;
|
||||||
|
_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_write*;
|
||||||
|
_ZNSt13basic_ostreamIwSt11char_traitsIwEElsE*;
|
||||||
|
|
||||||
|
# std::ostream operators and inserters
|
||||||
|
_ZSt4end[ls]I[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
|
||||||
|
_ZSt5flushI[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
|
||||||
|
_ZStlsI[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
|
||||||
|
_ZStlsI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_ostream*;
|
||||||
|
_ZStlsISt11char_traitsI[cw]EERSt13basic_ostream*;
|
||||||
|
_ZStlsId[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
|
||||||
|
_ZStlsIe[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
|
||||||
|
_ZStlsIf[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
|
||||||
|
|
||||||
# std::locale destructors
|
# std::locale destructors
|
||||||
_ZNSt6localeD*;
|
_ZNSt6localeD*;
|
||||||
|
|
||||||
|
@ -287,9 +326,15 @@ GLIBCXX_3.4 {
|
||||||
# std::num_get
|
# std::num_get
|
||||||
_ZNKSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
|
_ZNKSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
|
||||||
|
|
||||||
|
# std::num_put
|
||||||
|
_ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
|
||||||
|
|
||||||
# std::money_get
|
# std::money_get
|
||||||
_ZNKSt9money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
|
_ZNKSt9money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
|
||||||
|
|
||||||
|
# std::money_put
|
||||||
|
_ZNKSt9money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
|
||||||
|
|
||||||
# std::_Rb_tree
|
# std::_Rb_tree
|
||||||
_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base;
|
_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base;
|
||||||
_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base;
|
_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base;
|
||||||
|
@ -328,25 +373,25 @@ GLIBCXX_3.4 {
|
||||||
_ZN9__gnu_cxx18__exchange_and_add*;
|
_ZN9__gnu_cxx18__exchange_and_add*;
|
||||||
|
|
||||||
# __gnu_debug
|
# __gnu_debug
|
||||||
_ZN10__gnu_norm15_List_node_base4hookEPS0_;
|
_ZN10__gnu_norm15_List_node_base4hookEPS0_;
|
||||||
_ZN10__gnu_norm15_List_node_base4swapERS0_S1_;
|
_ZN10__gnu_norm15_List_node_base4swapERS0_S1_;
|
||||||
_ZN10__gnu_norm15_List_node_base6unhookEv;
|
_ZN10__gnu_norm15_List_node_base6unhookEv;
|
||||||
_ZN10__gnu_norm15_List_node_base7reverseEv;
|
_ZN10__gnu_norm15_List_node_base7reverseEv;
|
||||||
_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_;
|
_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_;
|
||||||
_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb;
|
_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb;
|
||||||
_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv;
|
_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv;
|
||||||
_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv;
|
_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv;
|
||||||
_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_;
|
_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_;
|
||||||
_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv;
|
_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv;
|
||||||
_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv;
|
_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv;
|
||||||
_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv;
|
_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv;
|
||||||
_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_;
|
_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_;
|
||||||
_ZNK11__gnu_debug16_Error_formatter8_M_errorEv;
|
_ZNK11__gnu_debug16_Error_formatter8_M_errorEv;
|
||||||
_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE;
|
_ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE;
|
||||||
_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc;
|
_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc;
|
||||||
_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_;
|
_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_;
|
||||||
_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc;
|
_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc;
|
||||||
_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc;
|
_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc;
|
||||||
|
|
||||||
# operator new(size_t)
|
# operator new(size_t)
|
||||||
_Znw[jm];
|
_Znw[jm];
|
||||||
|
@ -596,25 +641,30 @@ GLIBCXX_3.4.7 {
|
||||||
|
|
||||||
_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetE[jm];
|
_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetE[jm];
|
||||||
|
|
||||||
_ZNSt10__gnu_norm15_List_node_base4hookEPS0_;
|
_ZNSt10__gnu_norm15_List_node_base4hookEPS0_;
|
||||||
_ZNSt10__gnu_norm15_List_node_base4swapERS0_S1_;
|
_ZNSt10__gnu_norm15_List_node_base4swapERS0_S1_;
|
||||||
_ZNSt10__gnu_norm15_List_node_base6unhookEv;
|
_ZNSt10__gnu_norm15_List_node_base6unhookEv;
|
||||||
_ZNSt10__gnu_norm15_List_node_base7reverseEv;
|
_ZNSt10__gnu_norm15_List_node_base7reverseEv;
|
||||||
_ZNSt10__gnu_norm15_List_node_base8transferEPS0_S1_;
|
_ZNSt10__gnu_norm15_List_node_base8transferEPS0_S1_;
|
||||||
_ZNKSt11__gnu_debug16_Error_formatter8_M_errorEv;
|
_ZNKSt11__gnu_debug16_Error_formatter8_M_errorEv;
|
||||||
_ZNKSt11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE;
|
_ZNKSt11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE;
|
||||||
_ZNKSt11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc;
|
_ZNKSt11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc;
|
||||||
_ZNKSt11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_;
|
_ZNKSt11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_;
|
||||||
_ZNKSt11__gnu_debug16_Error_formatter13_M_print_wordEPKc;
|
_ZNKSt11__gnu_debug16_Error_formatter13_M_print_wordEPKc;
|
||||||
_ZNKSt11__gnu_debug16_Error_formatter15_M_print_stringEPKc;
|
_ZNKSt11__gnu_debug16_Error_formatter15_M_print_stringEPKc;
|
||||||
_ZNKSt11__gnu_debug19_Safe_iterator_base11_M_singularEv;
|
_ZNKSt11__gnu_debug19_Safe_iterator_base11_M_singularEv;
|
||||||
_ZNKSt11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_;
|
_ZNKSt11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_;
|
||||||
_ZNSt11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb;
|
_ZNSt11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb;
|
||||||
_ZNSt11__gnu_debug19_Safe_iterator_base9_M_detachEv;
|
_ZNSt11__gnu_debug19_Safe_iterator_base9_M_detachEv;
|
||||||
_ZNSt11__gnu_debug19_Safe_sequence_base13_M_detach_allEv;
|
_ZNSt11__gnu_debug19_Safe_sequence_base13_M_detach_allEv;
|
||||||
_ZNSt11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv;
|
_ZNSt11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv;
|
||||||
_ZNSt11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv;
|
_ZNSt11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv;
|
||||||
_ZNSt11__gnu_debug19_Safe_sequence_base7_M_swapERS0_;
|
_ZNSt11__gnu_debug19_Safe_sequence_base7_M_swapERS0_;
|
||||||
|
|
||||||
|
_ZNSo9_M_insertI*;
|
||||||
|
_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertI*;
|
||||||
|
_ZNSi10_M_extractI*;
|
||||||
|
_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractI*;
|
||||||
|
|
||||||
} GLIBCXX_3.4.6;
|
} GLIBCXX_3.4.6;
|
||||||
|
|
||||||
|
|
|
@ -110,310 +110,27 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
template<typename _CharT, typename _Traits>
|
||||||
basic_istream<_CharT, _Traits>&
|
template<typename _ValueT>
|
||||||
basic_istream<_CharT, _Traits>::
|
basic_istream<_CharT, _Traits>&
|
||||||
operator>>(bool& __n)
|
basic_istream<_CharT, _Traits>::
|
||||||
{
|
_M_extract(_ValueT& __v)
|
||||||
sentry __cerb(*this, false);
|
{
|
||||||
if (__cerb)
|
sentry __cerb(*this, false);
|
||||||
{
|
if (__cerb)
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
{
|
||||||
try
|
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
||||||
{
|
try
|
||||||
const __num_get_type& __ng = __check_facet(this->_M_num_get);
|
{
|
||||||
__ng.get(*this, 0, *this, __err, __n);
|
const __num_get_type& __ng = __check_facet(this->_M_num_get);
|
||||||
}
|
__ng.get(*this, 0, *this, __err, __v);
|
||||||
catch(...)
|
}
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
catch(...)
|
||||||
if (__err)
|
{ this->_M_setstate(ios_base::badbit); }
|
||||||
this->setstate(__err);
|
if (__err)
|
||||||
}
|
this->setstate(__err);
|
||||||
return *this;
|
}
|
||||||
}
|
return *this;
|
||||||
|
}
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_istream<_CharT, _Traits>&
|
|
||||||
basic_istream<_CharT, _Traits>::
|
|
||||||
operator>>(short& __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this, false);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
long __l;
|
|
||||||
const __num_get_type& __ng = __check_facet(this->_M_num_get);
|
|
||||||
__ng.get(*this, 0, *this, __err, __l);
|
|
||||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
|
||||||
// 118. basic_istream uses nonexistent num_get member functions.
|
|
||||||
if (!(__err & ios_base::failbit)
|
|
||||||
&& (numeric_limits<short>::min() <= __l
|
|
||||||
&& __l <= numeric_limits<short>::max()))
|
|
||||||
__n = __l;
|
|
||||||
else
|
|
||||||
__err |= ios_base::failbit;
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_istream<_CharT, _Traits>&
|
|
||||||
basic_istream<_CharT, _Traits>::
|
|
||||||
operator>>(unsigned short& __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this, false);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_get_type& __ng = __check_facet(this->_M_num_get);
|
|
||||||
__ng.get(*this, 0, *this, __err, __n);
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_istream<_CharT, _Traits>&
|
|
||||||
basic_istream<_CharT, _Traits>::
|
|
||||||
operator>>(int& __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this, false);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
long __l;
|
|
||||||
const __num_get_type& __ng = __check_facet(this->_M_num_get);
|
|
||||||
__ng.get(*this, 0, *this, __err, __l);
|
|
||||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
|
||||||
// 118. basic_istream uses nonexistent num_get member functions.
|
|
||||||
if (!(__err & ios_base::failbit)
|
|
||||||
&& (numeric_limits<int>::min() <= __l
|
|
||||||
&& __l <= numeric_limits<int>::max()))
|
|
||||||
__n = __l;
|
|
||||||
else
|
|
||||||
__err |= ios_base::failbit;
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_istream<_CharT, _Traits>&
|
|
||||||
basic_istream<_CharT, _Traits>::
|
|
||||||
operator>>(unsigned int& __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this, false);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_get_type& __ng = __check_facet(this->_M_num_get);
|
|
||||||
__ng.get(*this, 0, *this, __err, __n);
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_istream<_CharT, _Traits>&
|
|
||||||
basic_istream<_CharT, _Traits>::
|
|
||||||
operator>>(long& __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this, false);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_get_type& __ng = __check_facet(this->_M_num_get);
|
|
||||||
__ng.get(*this, 0, *this, __err, __n);
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_istream<_CharT, _Traits>&
|
|
||||||
basic_istream<_CharT, _Traits>::
|
|
||||||
operator>>(unsigned long& __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this, false);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_get_type& __ng = __check_facet(this->_M_num_get);
|
|
||||||
__ng.get(*this, 0, *this, __err, __n);
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _GLIBCXX_USE_LONG_LONG
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_istream<_CharT, _Traits>&
|
|
||||||
basic_istream<_CharT, _Traits>::
|
|
||||||
operator>>(long long& __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this, false);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_get_type& __ng = __check_facet(this->_M_num_get);
|
|
||||||
__ng.get(*this, 0, *this, __err, __n);
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_istream<_CharT, _Traits>&
|
|
||||||
basic_istream<_CharT, _Traits>::
|
|
||||||
operator>>(unsigned long long& __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this, false);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_get_type& __ng = __check_facet(this->_M_num_get);
|
|
||||||
__ng.get(*this, 0, *this, __err, __n);
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_istream<_CharT, _Traits>&
|
|
||||||
basic_istream<_CharT, _Traits>::
|
|
||||||
operator>>(float& __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this, false);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_get_type& __ng = __check_facet(this->_M_num_get);
|
|
||||||
__ng.get(*this, 0, *this, __err, __n);
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_istream<_CharT, _Traits>&
|
|
||||||
basic_istream<_CharT, _Traits>::
|
|
||||||
operator>>(double& __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this, false);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_get_type& __ng = __check_facet(this->_M_num_get);
|
|
||||||
__ng.get(*this, 0, *this, __err, __n);
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_istream<_CharT, _Traits>&
|
|
||||||
basic_istream<_CharT, _Traits>::
|
|
||||||
operator>>(long double& __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this, false);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_get_type& __ng = __check_facet(this->_M_num_get);
|
|
||||||
__ng.get(*this, 0, *this, __err, __n);
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_istream<_CharT, _Traits>&
|
|
||||||
basic_istream<_CharT, _Traits>::
|
|
||||||
operator>>(void*& __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this, false);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_get_type& __ng = __check_facet(this->_M_num_get);
|
|
||||||
__ng.get(*this, 0, *this, __err, __n);
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
template<typename _CharT, typename _Traits>
|
||||||
basic_istream<_CharT, _Traits>&
|
basic_istream<_CharT, _Traits>&
|
||||||
|
|
|
@ -97,333 +97,29 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
template<typename _CharT, typename _Traits>
|
||||||
basic_ostream<_CharT, _Traits>&
|
template<typename _ValueT>
|
||||||
basic_ostream<_CharT, _Traits>::
|
basic_ostream<_CharT, _Traits>&
|
||||||
operator<<(bool __n)
|
basic_ostream<_CharT, _Traits>::
|
||||||
{
|
_M_insert(_ValueT __v)
|
||||||
sentry __cerb(*this);
|
{
|
||||||
if (__cerb)
|
sentry __cerb(*this);
|
||||||
{
|
if (__cerb)
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
{
|
||||||
try
|
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
||||||
{
|
try
|
||||||
const __num_put_type& __np = __check_facet(this->_M_num_put);
|
{
|
||||||
if (__np.put(*this, *this, this->fill(), __n).failed())
|
const __num_put_type& __np = __check_facet(this->_M_num_put);
|
||||||
__err |= ios_base::badbit;
|
if (__np.put(*this, *this, this->fill(), __v).failed())
|
||||||
}
|
__err |= ios_base::badbit;
|
||||||
catch(...)
|
}
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
catch(...)
|
||||||
if (__err)
|
{ this->_M_setstate(ios_base::badbit); }
|
||||||
this->setstate(__err);
|
if (__err)
|
||||||
}
|
this->setstate(__err);
|
||||||
return *this;
|
}
|
||||||
}
|
return *this;
|
||||||
|
}
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_ostream<_CharT, _Traits>&
|
|
||||||
basic_ostream<_CharT, _Traits>::
|
|
||||||
operator<<(short __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
|
||||||
// 117. basic_ostream uses nonexistent num_put member functions.
|
|
||||||
long __l;
|
|
||||||
const ios_base::fmtflags __fmt = (this->flags()
|
|
||||||
& ios_base::basefield);
|
|
||||||
if (__fmt == ios_base::oct || __fmt == ios_base::hex)
|
|
||||||
__l = static_cast<long>(static_cast<unsigned short>(__n));
|
|
||||||
else
|
|
||||||
__l = static_cast<long>(__n);
|
|
||||||
const __num_put_type& __np = __check_facet(this->_M_num_put);
|
|
||||||
if (__np.put(*this, *this, this->fill(), __l).failed())
|
|
||||||
__err |= ios_base::badbit;
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_ostream<_CharT, _Traits>&
|
|
||||||
basic_ostream<_CharT, _Traits>::
|
|
||||||
operator<<(unsigned short __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
|
||||||
// 117. basic_ostream uses nonexistent num_put member functions.
|
|
||||||
const __num_put_type& __np = __check_facet(this->_M_num_put);
|
|
||||||
if (__np.put(*this, *this, this->fill(),
|
|
||||||
static_cast<unsigned long>(__n)).failed())
|
|
||||||
__err |= ios_base::badbit;
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_ostream<_CharT, _Traits>&
|
|
||||||
basic_ostream<_CharT, _Traits>::
|
|
||||||
operator<<(int __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
|
||||||
// 117. basic_ostream uses nonexistent num_put member functions.
|
|
||||||
long __l;
|
|
||||||
const ios_base::fmtflags __fmt = (this->flags()
|
|
||||||
& ios_base::basefield);
|
|
||||||
if (__fmt == ios_base::oct || __fmt == ios_base::hex)
|
|
||||||
__l = static_cast<long>(static_cast<unsigned int>(__n));
|
|
||||||
else
|
|
||||||
__l = static_cast<long>(__n);
|
|
||||||
const __num_put_type& __np = __check_facet(this->_M_num_put);
|
|
||||||
if (__np.put(*this, *this, this->fill(), __l).failed())
|
|
||||||
__err |= ios_base::badbit;
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_ostream<_CharT, _Traits>&
|
|
||||||
basic_ostream<_CharT, _Traits>::
|
|
||||||
operator<<(unsigned int __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
|
||||||
// 117. basic_ostream uses nonexistent num_put member functions.
|
|
||||||
const __num_put_type& __np = __check_facet(this->_M_num_put);
|
|
||||||
if (__np.put(*this, *this, this->fill(),
|
|
||||||
static_cast<unsigned long>(__n)).failed())
|
|
||||||
__err |= ios_base::badbit;
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_ostream<_CharT, _Traits>&
|
|
||||||
basic_ostream<_CharT, _Traits>::
|
|
||||||
operator<<(long __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_put_type& __np = __check_facet(this->_M_num_put);
|
|
||||||
if (__np.put(*this, *this, this->fill(), __n).failed())
|
|
||||||
__err |= ios_base::badbit;
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_ostream<_CharT, _Traits>&
|
|
||||||
basic_ostream<_CharT, _Traits>::
|
|
||||||
operator<<(unsigned long __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_put_type& __np = __check_facet(this->_M_num_put);
|
|
||||||
if (__np.put(*this, *this, this->fill(), __n).failed())
|
|
||||||
__err |= ios_base::badbit;
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _GLIBCXX_USE_LONG_LONG
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_ostream<_CharT, _Traits>&
|
|
||||||
basic_ostream<_CharT, _Traits>::
|
|
||||||
operator<<(long long __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_put_type& __np = __check_facet(this->_M_num_put);
|
|
||||||
if (__np.put(*this, *this, this->fill(), __n).failed())
|
|
||||||
__err |= ios_base::badbit;
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_ostream<_CharT, _Traits>&
|
|
||||||
basic_ostream<_CharT, _Traits>::
|
|
||||||
operator<<(unsigned long long __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_put_type& __np = __check_facet(this->_M_num_put);
|
|
||||||
if (__np.put(*this, *this, this->fill(), __n).failed())
|
|
||||||
__err |= ios_base::badbit;
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_ostream<_CharT, _Traits>&
|
|
||||||
basic_ostream<_CharT, _Traits>::
|
|
||||||
operator<<(float __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
|
||||||
// 117. basic_ostream uses nonexistent num_put member functions.
|
|
||||||
const __num_put_type& __np = __check_facet(this->_M_num_put);
|
|
||||||
if (__np.put(*this, *this, this->fill(),
|
|
||||||
static_cast<double>(__n)).failed())
|
|
||||||
__err |= ios_base::badbit;
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_ostream<_CharT, _Traits>&
|
|
||||||
basic_ostream<_CharT, _Traits>::
|
|
||||||
operator<<(double __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_put_type& __np = __check_facet(this->_M_num_put);
|
|
||||||
if (__np.put(*this, *this, this->fill(), __n).failed())
|
|
||||||
__err |= ios_base::badbit;
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_ostream<_CharT, _Traits>&
|
|
||||||
basic_ostream<_CharT, _Traits>::
|
|
||||||
operator<<(long double __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_put_type& __np = __check_facet(this->_M_num_put);
|
|
||||||
if (__np.put(*this, *this, this->fill(), __n).failed())
|
|
||||||
__err |= ios_base::badbit;
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
|
||||||
basic_ostream<_CharT, _Traits>&
|
|
||||||
basic_ostream<_CharT, _Traits>::
|
|
||||||
operator<<(const void* __n)
|
|
||||||
{
|
|
||||||
sentry __cerb(*this);
|
|
||||||
if (__cerb)
|
|
||||||
{
|
|
||||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const __num_put_type& __np = __check_facet(this->_M_num_put);
|
|
||||||
if (__np.put(*this, *this, this->fill(), __n).failed())
|
|
||||||
__err |= ios_base::badbit;
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
|
||||||
if (__err)
|
|
||||||
this->setstate(__err);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits>
|
template<typename _CharT, typename _Traits>
|
||||||
basic_ostream<_CharT, _Traits>&
|
basic_ostream<_CharT, _Traits>&
|
||||||
basic_ostream<_CharT, _Traits>::
|
basic_ostream<_CharT, _Traits>::
|
||||||
|
|
|
@ -166,45 +166,86 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
* @c num_get facet) to parse the input data.
|
* @c num_get facet) to parse the input data.
|
||||||
*/
|
*/
|
||||||
__istream_type&
|
__istream_type&
|
||||||
operator>>(bool& __n);
|
operator>>(bool& __n)
|
||||||
|
{ return _M_extract(__n); }
|
||||||
|
|
||||||
__istream_type&
|
__istream_type&
|
||||||
operator>>(short& __n);
|
operator>>(short& __n)
|
||||||
|
{
|
||||||
|
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||||
|
// 118. basic_istream uses nonexistent num_get member functions.
|
||||||
|
long __l;
|
||||||
|
_M_extract(__l);
|
||||||
|
if (!this->fail())
|
||||||
|
{
|
||||||
|
if (numeric_limits<short>::min() <= __l
|
||||||
|
&& __l <= numeric_limits<short>::max())
|
||||||
|
__n = __l;
|
||||||
|
else
|
||||||
|
this->setstate(ios_base::failbit);
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
__istream_type&
|
__istream_type&
|
||||||
operator>>(unsigned short& __n);
|
operator>>(unsigned short& __n)
|
||||||
|
{ return _M_extract(__n); }
|
||||||
|
|
||||||
__istream_type&
|
__istream_type&
|
||||||
operator>>(int& __n);
|
operator>>(int& __n)
|
||||||
|
{
|
||||||
|
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||||
|
// 118. basic_istream uses nonexistent num_get member functions.
|
||||||
|
long __l;
|
||||||
|
_M_extract(__l);
|
||||||
|
if (!this->fail())
|
||||||
|
{
|
||||||
|
if (numeric_limits<int>::min() <= __l
|
||||||
|
&& __l <= numeric_limits<int>::max())
|
||||||
|
__n = __l;
|
||||||
|
else
|
||||||
|
this->setstate(ios_base::failbit);
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
__istream_type&
|
__istream_type&
|
||||||
operator>>(unsigned int& __n);
|
operator>>(unsigned int& __n)
|
||||||
|
{ return _M_extract(__n); }
|
||||||
|
|
||||||
__istream_type&
|
__istream_type&
|
||||||
operator>>(long& __n);
|
operator>>(long& __n)
|
||||||
|
{ return _M_extract(__n); }
|
||||||
|
|
||||||
__istream_type&
|
__istream_type&
|
||||||
operator>>(unsigned long& __n);
|
operator>>(unsigned long& __n)
|
||||||
|
{ return _M_extract(__n); }
|
||||||
|
|
||||||
#ifdef _GLIBCXX_USE_LONG_LONG
|
#ifdef _GLIBCXX_USE_LONG_LONG
|
||||||
__istream_type&
|
__istream_type&
|
||||||
operator>>(long long& __n);
|
operator>>(long long& __n)
|
||||||
|
{ return _M_extract(__n); }
|
||||||
|
|
||||||
__istream_type&
|
__istream_type&
|
||||||
operator>>(unsigned long long& __n);
|
operator>>(unsigned long long& __n)
|
||||||
|
{ return _M_extract(__n); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__istream_type&
|
__istream_type&
|
||||||
operator>>(float& __f);
|
operator>>(float& __f)
|
||||||
|
{ return _M_extract(__f); }
|
||||||
|
|
||||||
__istream_type&
|
__istream_type&
|
||||||
operator>>(double& __f);
|
operator>>(double& __f)
|
||||||
|
{ return _M_extract(__f); }
|
||||||
|
|
||||||
__istream_type&
|
__istream_type&
|
||||||
operator>>(long double& __f);
|
operator>>(long double& __f)
|
||||||
|
{ return _M_extract(__f); }
|
||||||
|
|
||||||
__istream_type&
|
__istream_type&
|
||||||
operator>>(void*& __p);
|
operator>>(void*& __p)
|
||||||
|
{ return _M_extract(__p); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Extracting into another streambuf.
|
* @brief Extracting into another streambuf.
|
||||||
|
@ -572,6 +613,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
protected:
|
protected:
|
||||||
explicit
|
explicit
|
||||||
basic_istream(): _M_gcount(streamsize(0)) { }
|
basic_istream(): _M_gcount(streamsize(0)) { }
|
||||||
|
|
||||||
|
template<typename _ValueT>
|
||||||
|
__istream_type&
|
||||||
|
_M_extract(_ValueT& __v);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Explicit specialization declarations, defined in src/istream.cc.
|
// Explicit specialization declarations, defined in src/istream.cc.
|
||||||
|
|
|
@ -164,45 +164,86 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
* @c num_get facet) to perform numeric formatting.
|
* @c num_get facet) to perform numeric formatting.
|
||||||
*/
|
*/
|
||||||
__ostream_type&
|
__ostream_type&
|
||||||
operator<<(long __n);
|
operator<<(long __n)
|
||||||
|
{ return _M_insert(__n); }
|
||||||
|
|
||||||
__ostream_type&
|
__ostream_type&
|
||||||
operator<<(unsigned long __n);
|
operator<<(unsigned long __n)
|
||||||
|
{ return _M_insert(__n); }
|
||||||
|
|
||||||
__ostream_type&
|
__ostream_type&
|
||||||
operator<<(bool __n);
|
operator<<(bool __n)
|
||||||
|
{ return _M_insert(__n); }
|
||||||
|
|
||||||
__ostream_type&
|
__ostream_type&
|
||||||
operator<<(short __n);
|
operator<<(short __n)
|
||||||
|
{
|
||||||
|
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||||
|
// 117. basic_ostream uses nonexistent num_put member functions.
|
||||||
|
const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
|
||||||
|
if (__fmt == ios_base::oct || __fmt == ios_base::hex)
|
||||||
|
return _M_insert(static_cast<long>(static_cast<unsigned short>(__n)));
|
||||||
|
else
|
||||||
|
return _M_insert(static_cast<long>(__n));
|
||||||
|
}
|
||||||
|
|
||||||
__ostream_type&
|
__ostream_type&
|
||||||
operator<<(unsigned short __n);
|
operator<<(unsigned short __n)
|
||||||
|
{
|
||||||
|
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||||
|
// 117. basic_ostream uses nonexistent num_put member functions.
|
||||||
|
return _M_insert(static_cast<unsigned long>(__n));
|
||||||
|
}
|
||||||
|
|
||||||
__ostream_type&
|
__ostream_type&
|
||||||
operator<<(int __n);
|
operator<<(int __n)
|
||||||
|
{
|
||||||
|
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||||
|
// 117. basic_ostream uses nonexistent num_put member functions.
|
||||||
|
const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
|
||||||
|
if (__fmt == ios_base::oct || __fmt == ios_base::hex)
|
||||||
|
return _M_insert(static_cast<long>(static_cast<unsigned int>(__n)));
|
||||||
|
else
|
||||||
|
return _M_insert(static_cast<long>(__n));
|
||||||
|
}
|
||||||
|
|
||||||
__ostream_type&
|
__ostream_type&
|
||||||
operator<<(unsigned int __n);
|
operator<<(unsigned int __n)
|
||||||
|
{
|
||||||
|
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||||
|
// 117. basic_ostream uses nonexistent num_put member functions.
|
||||||
|
return _M_insert(static_cast<unsigned long>(__n));
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef _GLIBCXX_USE_LONG_LONG
|
#ifdef _GLIBCXX_USE_LONG_LONG
|
||||||
__ostream_type&
|
__ostream_type&
|
||||||
operator<<(long long __n);
|
operator<<(long long __n)
|
||||||
|
{ return _M_insert(__n); }
|
||||||
|
|
||||||
__ostream_type&
|
__ostream_type&
|
||||||
operator<<(unsigned long long __n);
|
operator<<(unsigned long long __n)
|
||||||
|
{ return _M_insert(__n); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__ostream_type&
|
__ostream_type&
|
||||||
operator<<(double __f);
|
operator<<(double __f)
|
||||||
|
{ return _M_insert(__f); }
|
||||||
|
|
||||||
__ostream_type&
|
__ostream_type&
|
||||||
operator<<(float __f);
|
operator<<(float __f)
|
||||||
|
{
|
||||||
|
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||||
|
// 117. basic_ostream uses nonexistent num_put member functions.
|
||||||
|
return _M_insert(static_cast<double>(__f));
|
||||||
|
}
|
||||||
|
|
||||||
__ostream_type&
|
__ostream_type&
|
||||||
operator<<(long double __f);
|
operator<<(long double __f)
|
||||||
|
{ return _M_insert(__f); }
|
||||||
|
|
||||||
__ostream_type&
|
__ostream_type&
|
||||||
operator<<(const void* __p);
|
operator<<(const void* __p)
|
||||||
|
{ return _M_insert(__p); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Extracting from another streambuf.
|
* @brief Extracting from another streambuf.
|
||||||
|
@ -339,6 +380,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
protected:
|
protected:
|
||||||
explicit
|
explicit
|
||||||
basic_ostream() { }
|
basic_ostream() { }
|
||||||
|
|
||||||
|
template<typename _ValueT>
|
||||||
|
__ostream_type&
|
||||||
|
_M_insert(_ValueT __v);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -53,6 +53,20 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
template istream& operator>>(istream&, _Setprecision);
|
template istream& operator>>(istream&, _Setprecision);
|
||||||
template istream& operator>>(istream&, _Setw);
|
template istream& operator>>(istream&, _Setw);
|
||||||
|
|
||||||
|
template istream& istream::_M_extract(unsigned short&);
|
||||||
|
template istream& istream::_M_extract(unsigned int&);
|
||||||
|
template istream& istream::_M_extract(long&);
|
||||||
|
template istream& istream::_M_extract(unsigned long&);
|
||||||
|
template istream& istream::_M_extract(bool&);
|
||||||
|
#ifdef _GLIBCXX_USE_LONG_LONG
|
||||||
|
template istream& istream::_M_extract(long long&);
|
||||||
|
template istream& istream::_M_extract(unsigned long long&);
|
||||||
|
#endif
|
||||||
|
template istream& istream::_M_extract(float&);
|
||||||
|
template istream& istream::_M_extract(double&);
|
||||||
|
template istream& istream::_M_extract(long double&);
|
||||||
|
template istream& istream::_M_extract(void*&);
|
||||||
|
|
||||||
#ifdef _GLIBCXX_USE_WCHAR_T
|
#ifdef _GLIBCXX_USE_WCHAR_T
|
||||||
template class basic_istream<wchar_t>;
|
template class basic_istream<wchar_t>;
|
||||||
template wistream& ws(wistream&);
|
template wistream& ws(wistream&);
|
||||||
|
@ -65,6 +79,20 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
template wistream& operator>>(wistream&, _Setbase);
|
template wistream& operator>>(wistream&, _Setbase);
|
||||||
template wistream& operator>>(wistream&, _Setprecision);
|
template wistream& operator>>(wistream&, _Setprecision);
|
||||||
template wistream& operator>>(wistream&, _Setw);
|
template wistream& operator>>(wistream&, _Setw);
|
||||||
|
|
||||||
|
template wistream& wistream::_M_extract(unsigned short&);
|
||||||
|
template wistream& wistream::_M_extract(unsigned int&);
|
||||||
|
template wistream& wistream::_M_extract(long&);
|
||||||
|
template wistream& wistream::_M_extract(unsigned long&);
|
||||||
|
template wistream& wistream::_M_extract(bool&);
|
||||||
|
#ifdef _GLIBCXX_USE_LONG_LONG
|
||||||
|
template wistream& wistream::_M_extract(long long&);
|
||||||
|
template wistream& wistream::_M_extract(unsigned long long&);
|
||||||
|
#endif
|
||||||
|
template wistream& wistream::_M_extract(float&);
|
||||||
|
template wistream& wistream::_M_extract(double&);
|
||||||
|
template wistream& wistream::_M_extract(long double&);
|
||||||
|
template wistream& wistream::_M_extract(void*&);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_GLIBCXX_END_NAMESPACE
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// Explicit instantiation file.
|
// Explicit instantiation file.
|
||||||
|
|
||||||
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2005
|
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||||
// Free Software Foundation, Inc.
|
// Free Software Foundation, Inc.
|
||||||
//
|
//
|
||||||
// This file is part of the GNU ISO C++ Library. This library is free
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
@ -56,6 +56,17 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
template ostream& operator<<(ostream&, _Setprecision);
|
template ostream& operator<<(ostream&, _Setprecision);
|
||||||
template ostream& operator<<(ostream&, _Setw);
|
template ostream& operator<<(ostream&, _Setw);
|
||||||
|
|
||||||
|
template ostream& ostream::_M_insert(long);
|
||||||
|
template ostream& ostream::_M_insert(unsigned long);
|
||||||
|
template ostream& ostream::_M_insert(bool);
|
||||||
|
#ifdef _GLIBCXX_USE_LONG_LONG
|
||||||
|
template ostream& ostream::_M_insert(long long);
|
||||||
|
template ostream& ostream::_M_insert(unsigned long long);
|
||||||
|
#endif
|
||||||
|
template ostream& ostream::_M_insert(double);
|
||||||
|
template ostream& ostream::_M_insert(long double);
|
||||||
|
template ostream& ostream::_M_insert(const void*);
|
||||||
|
|
||||||
#ifdef _GLIBCXX_USE_WCHAR_T
|
#ifdef _GLIBCXX_USE_WCHAR_T
|
||||||
template class basic_ostream<wchar_t>;
|
template class basic_ostream<wchar_t>;
|
||||||
template wostream& endl(wostream&);
|
template wostream& endl(wostream&);
|
||||||
|
@ -72,6 +83,17 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
template wostream& operator<<(wostream&, _Setbase);
|
template wostream& operator<<(wostream&, _Setbase);
|
||||||
template wostream& operator<<(wostream&, _Setprecision);
|
template wostream& operator<<(wostream&, _Setprecision);
|
||||||
template wostream& operator<<(wostream&, _Setw);
|
template wostream& operator<<(wostream&, _Setw);
|
||||||
|
|
||||||
|
template wostream& wostream::_M_insert(long);
|
||||||
|
template wostream& wostream::_M_insert(unsigned long);
|
||||||
|
template wostream& wostream::_M_insert(bool);
|
||||||
|
#ifdef _GLIBCXX_USE_LONG_LONG
|
||||||
|
template wostream& wostream::_M_insert(long long);
|
||||||
|
template wostream& wostream::_M_insert(unsigned long long);
|
||||||
|
#endif
|
||||||
|
template wostream& wostream::_M_insert(double);
|
||||||
|
template wostream& wostream::_M_insert(long double);
|
||||||
|
template wostream& wostream::_M_insert(const void*);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_GLIBCXX_END_NAMESPACE
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
Loading…
Reference in New Issue