#ifndef __STD_HEADER_ISTREAM␊ |
#define __STD_HEADER_ISTREAM 1␊ |
␊ |
#ifdef __GCC__␊ |
#pragma GCC visibility push(default)␊ |
#endif␊ |
␊ |
namespace std{␊ |
␊ |
␉typedef basic_istream<char> istream;␊ |
|
␉␉␉␉basic_ios<charT, traits>::mstreambuf->sbumpc();␊ |
␉␉␉␉if(c == traits::eof() ){␊ |
␉␉␉␉␉if(i==0){␊ |
␉␉␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉␉}else{␊ |
␉␉␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉␉␉}␊ |
␉␉␉␉␉break;␊ |
␉␉␉␉}␊ |
␉␉␉␉if(c == delim){␊ |
␉␉␉␉␉if(i==0){␊ |
␉␉␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉␉}␊ |
␉␉␉␉␉basic_ios<charT, traits>::mstreambuf->sputbackc(c);␊ |
␉␉␉␉␉break;␊ |
|
␉␉␉␉c = basic_ios<charT, traits>::mstreambuf->sgetc();␊ |
␉␉␉␉if(c == traits::eof()){␊ |
␉␉␉␉␉if(i==0){␊ |
␉␉␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉␉}else{␊ |
␉␉␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉␉␉}␊ |
␉␉␉␉␉count_last_ufmt_input = i;␊ |
␉␉␉␉␉return *this;␊ |
␉␉␉␉}␊ |
␉␉␉␉if(c == delim){␊ |
␉␉␉␉␉if(i==0){␊ |
␉␉␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉␉}␊ |
␉␉␉␉␉count_last_ufmt_input = i;␊ |
␉␉␉␉␉return *this;␊ |
|
␉␉␉␉c = basic_ios<charT, traits>::mstreambuf->sgetc();␊ |
␉␉␉␉if(c == traits::eof() ){␊ |
␉␉␉␉␉if( basic_ios<charT,traits>::eof() ){␊ |
␉␉␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉␉}else{␊ |
␉␉␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉␉␉}␊ |
␉␉␉␉␉count_last_ufmt_input = i;␊ |
␉␉␉␉␉s[i] = traits::eos();␊ |
␉␉␉␉␉return *this;␊ |
␉␉␉␉}␊ |
␉␉␉␉if(basic_ios<charT, traits>::mstreambuf->sbumpc()==traits::eof() ){␊ |
␉␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉␉}␊ |
␉␉␉␉if(c == delim){␊ |
␉␉␉␉␉count_last_ufmt_input = i+1;␊ |
|
␉␉␉for(i=0;i<n;++i){␊ |
␉␉␉␉c = basic_ios<charT, traits>::mstreambuf->sgetc();␊ |
␉␉␉␉if(c == traits::eof()){␊ |
␉␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉␉␉return *this;␊ |
␉␉␉␉}␊ |
␉␉␉␉basic_ios<charT, traits>::mstreambuf->sbumpc();␊ |
|
␉␉␉}else{␊ |
␉␉␉␉int_type c = basic_ios<charT, traits>::mstreambuf->sgetc();␊ |
␉␉␉␉if(c == traits::eof()){␊ |
␉␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉␉}␊ |
␉␉␉␉return basic_ios<charT, traits>::mstreambuf->sgetc();␊ |
␉␉␉}␊ |
|
␉␉␉␉c = basic_ios<charT, traits>::mstreambuf->sgetc();␊ |
␊ |
␉␉␉␉if(c == traits::eof()){␊ |
␉␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉␉␉count_last_ufmt_input = i;␊ |
␉␉␉␉␉return *this;␊ |
␉␉␉␉}␊ |
|
␉␉␉sentry(*this, true);␊ |
␉␉␉if(!basic_ios<charT,traits>::good()){␊ |
␉␉␉␉count_last_ufmt_input = 0;␊ |
␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉return 0;␊ |
␉␉␉}␊ |
␉␉␉␊ |
␉␉␉if( basic_ios<charT, traits>::mstreambuf->in_avail() == -1){␊ |
␉␉␉␉count_last_ufmt_input=0;␊ |
␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉␉return 0;␊ |
␉␉␉}␊ |
␉␉␉␊ |
|
␉␉_UCXXEXPORT basic_istream<charT,traits>& putback(char_type c){␊ |
␉␉␉sentry(*this, true);␊ |
␉␉␉if(!basic_ios<charT,traits>::good()){␊ |
␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉return *this;␊ |
␉␉␉}␊ |
␉␉␉if(basic_ios<charT, traits>::mstreambuf == 0){␊ |
␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::badbit);␊ |
␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::badbit);␊ |
␉␉␉␉return *this;␊ |
␉␉␉}␊ |
␉␉␉if(basic_ios<charT, traits>::mstreambuf->sputbackc(c) == traits::eof()){␊ |
␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::badbit);␊ |
␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::badbit);␊ |
␉␉␉␉return *this;␊ |
␉␉␉}␊ |
␉␉␉return *this;␊ |
|
␉␉_UCXXEXPORT basic_istream<charT,traits>& unget(){␊ |
␉␉␉sentry(*this, true);␊ |
␉␉␉if(!basic_ios<charT,traits>::good()){␊ |
␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉return *this;␊ |
␉␉␉}␊ |
␉␉␉if(basic_ios<charT, traits>::mstreambuf == 0){␊ |
␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉return *this;␊ |
␉␉␉}␊ |
␉␉␉if(basic_ios<charT, traits>::mstreambuf->sungetc() == traits::eof()){␊ |
␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉}␊ |
␉␉␉return *this;␊ |
␉␉}␊ |
|
␉␉␉␉return -1;␊ |
␉␉␉}␊ |
␉␉␉if(basic_ios<charT, traits>::mstreambuf->pubsync() == -1){␊ |
␉␉␉␉basic_ios<charT,traits>::setstate(ios_base::badbit);␊ |
␉␉␉␉//basic_ios<charT,traits>::setstate(ios_base::badbit);␊ |
␉␉␉␉return traits::eof();␊ |
␉␉␉}␊ |
␉␉␉return 0;␊ |
|
␊ |
␉};␊ |
␉␊ |
␉template <class charT,class traits = char_traits<charT> > class _UCXXEXPORT basic_istream<charT,traits>::sentry {␊ |
␉template <class charT,class traits /*= char_traits<charT>*/ > class _UCXXEXPORT basic_istream<charT,traits>::sentry {␊ |
␉␉bool ok;␊ |
␉public:␊ |
␉␉explicit _UCXXEXPORT sentry(basic_istream<charT,traits>& os, bool noskipws = false){␊ |
|
␉␉int_type retval = basic_ios<charT, traits>::mstreambuf->sgetc();␊ |
␉␉if(retval == traits::eof()){␊ |
␉␉␉count_last_ufmt_input = 0;␊ |
␉␉␉basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉//basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉}else{␊ |
␉␉␉count_last_ufmt_input = 1;␊ |
␉␉␉basic_ios<charT, traits>::mstreambuf->sbumpc();␊ |
|
␉␉int_type retval = basic_ios<charT, traits>::mstreambuf->sgetc();␊ |
␉␉if(retval == traits::eof()){␊ |
␉␉␉count_last_ufmt_input = 0;␊ |
␉␉␉basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉␉//basic_ios<charT,traits>::setstate(ios_base::eofbit);␊ |
␉␉␉//basic_ios<charT,traits>::setstate(ios_base::failbit);␊ |
␉␉}else{␊ |
␉␉␉count_last_ufmt_input = 1;␊ |
␉␉␉c = traits::to_char_type(retval);␊ |
|
␊ |
}␊ |
␊ |
#ifdef __GCC__␊ |
#pragma GCC visibility pop␊ |
#endif␊ |
␊ |
#endif␊ |
␊ |