From: Nathan C. Myers Date: Wed, 25 Jun 2003 18:27:53 +0000 (+0000) Subject: streambuf.tcc (sbumpc, [...]): Move inline, from here... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=29d9ed9799340b4b3cb2ff9f3d4da07c2f22dbe2;p=gcc.git streambuf.tcc (sbumpc, [...]): Move inline, from here... 2003-06-25 Nathan C. Myers * include/bits/streambuf.tcc (sbumpc, sputbackc, sungetc, sputc): Move inline, from here... * include/std/std_streambuf.h: ... to here. * include/std/std_streambuf.h (snextc, sbumpc, sgetc, sputbackc, sungetc, sputc): Use __builtin_expect. From-SVN: r68486 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 2627883a437..2a494a148b9 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2003-06-25 Nathan C. Myers + + * include/bits/streambuf.tcc (sbumpc, sputbackc, sungetc, + sputc): Move inline, from here... + * include/std/std_streambuf.h: ... to here. + + * include/std/std_streambuf.h (snextc, sbumpc, sgetc, + sputbackc, sungetc, sputc): Use __builtin_expect. + 2003-06-24 Phil Edwards * docs/doxygen/mainpage.html: Use a useful title. diff --git a/libstdc++-v3/include/bits/streambuf.tcc b/libstdc++-v3/include/bits/streambuf.tcc index d78d8ea45d9..a16169ad5ef 100644 --- a/libstdc++-v3/include/bits/streambuf.tcc +++ b/libstdc++-v3/include/bits/streambuf.tcc @@ -39,72 +39,6 @@ namespace std { - template - typename basic_streambuf<_CharT, _Traits>::int_type - basic_streambuf<_CharT, _Traits>:: - sbumpc() - { - int_type __ret; - if (this->gptr() < this->egptr()) - { - __ret = traits_type::to_int_type(*this->gptr()); - this->gbump(1); - } - else - __ret = this->uflow(); - return __ret; - } - - template - typename basic_streambuf<_CharT, _Traits>::int_type - basic_streambuf<_CharT, _Traits>:: - sputbackc(char_type __c) - { - int_type __ret; - const bool __testpos = this->eback() < this->gptr(); - if (!__testpos || !traits_type::eq(__c, this->gptr()[-1])) - __ret = this->pbackfail(traits_type::to_int_type(__c)); - else - { - this->gbump(-1); - __ret = traits_type::to_int_type(*this->gptr()); - } - return __ret; - } - - template - typename basic_streambuf<_CharT, _Traits>::int_type - basic_streambuf<_CharT, _Traits>:: - sungetc() - { - int_type __ret; - if (this->eback() < this->gptr()) - { - this->gbump(-1); - __ret = traits_type::to_int_type(*this->gptr()); - } - else - __ret = this->pbackfail(); - return __ret; - } - - template - typename basic_streambuf<_CharT, _Traits>::int_type - basic_streambuf<_CharT, _Traits>:: - sputc(char_type __c) - { - int_type __ret; - if (this->pptr() < this->epptr()) - { - *this->pptr() = __c; - this->pbump(1); - __ret = traits_type::to_int_type(__c); - } - else - __ret = this->overflow(traits_type::to_int_type(__c)); - return __ret; - } - template streamsize basic_streambuf<_CharT, _Traits>:: diff --git a/libstdc++-v3/include/std/std_streambuf.h b/libstdc++-v3/include/std/std_streambuf.h index b69de0313a8..bf6aa428280 100644 --- a/libstdc++-v3/include/std/std_streambuf.h +++ b/libstdc++-v3/include/std/std_streambuf.h @@ -287,7 +287,8 @@ namespace std snextc() { int_type __ret = traits_type::eof(); - if (!traits_type::eq_int_type(this->sbumpc(), __ret)) + if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(), + __ret), true)) __ret = this->sgetc(); return __ret; } @@ -301,7 +302,18 @@ namespace std * @c uflow(). */ int_type - sbumpc(); + sbumpc() + { + int_type __ret; + if (__builtin_expect(this->gptr() < this->egptr(), true)) + { + __ret = traits_type::to_int_type(*this->gptr()); + this->gbump(1); + } + else + __ret = this->uflow(); + return __ret; + } /** * @brief Getting the next character. @@ -315,7 +327,7 @@ namespace std sgetc() { int_type __ret; - if (this->gptr() < this->egptr()) + if (__builtin_expect(this->gptr() < this->egptr(), true)) __ret = traits_type::to_int_type(*this->gptr()); else __ret = this->underflow(); @@ -345,7 +357,20 @@ namespace std * fetched from the input stream will be @a c. */ int_type - sputbackc(char_type __c); + sputbackc(char_type __c) + { + int_type __ret; + const bool __testpos = this->eback() < this->gptr(); + if (__builtin_expect(!__testpos || + !traits_type::eq(__c, this->gptr()[-1]), false)) + __ret = this->pbackfail(traits_type::to_int_type(__c)); + else + { + this->gbump(-1); + __ret = traits_type::to_int_type(*this->gptr()); + } + return __ret; + } /** * @brief Moving backwards in the input stream. @@ -357,7 +382,18 @@ namespace std * "gotten". */ int_type - sungetc(); + sungetc() + { + int_type __ret; + if (__builtin_expect(this->eback() < this->gptr(), true)) + { + this->gbump(-1); + __ret = traits_type::to_int_type(*this->gptr()); + } + else + __ret = this->pbackfail(); + return __ret; + } // [27.5.2.2.5] put area /** @@ -373,7 +409,19 @@ namespace std * position is not available, returns @c overflow(c). */ int_type - sputc(char_type __c); + sputc(char_type __c) + { + int_type __ret; + if (__builtin_expect(this->pptr() < this->epptr(), true)) + { + *this->pptr() = __c; + this->pbump(1); + __ret = traits_type::to_int_type(__c); + } + else + __ret = this->overflow(traits_type::to_int_type(__c)); + return __ret; + } /** * @brief Entry point for all single-character output functions.