diff options
author | Jason Merrill <jason@yorick.cygnus.com> | 1997-10-02 17:26:16 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1997-10-02 13:26:16 -0400 |
commit | b6aa195e2030d30015a353f8f96cb9cab7bbcb71 (patch) | |
tree | dfd482af6f25c8ca1b9eaced75135363406f588d /libstdc++/std/bastring.h | |
parent | 15039abedc2563946ce873dc986eb71acc5e1e0f (diff) | |
download | gcc-b6aa195e2030d30015a353f8f96cb9cab7bbcb71.zip gcc-b6aa195e2030d30015a353f8f96cb9cab7bbcb71.tar.gz gcc-b6aa195e2030d30015a353f8f96cb9cab7bbcb71.tar.bz2 |
bastring.h: Move exception stuff after definition of string.
* std/bastring.h: Move exception stuff after definition of string.
Move typedef of string here.
* string: From here.
From-SVN: r15832
Diffstat (limited to 'libstdc++/std/bastring.h')
-rw-r--r-- | libstdc++/std/bastring.h | 63 |
1 files changed, 37 insertions, 26 deletions
diff --git a/libstdc++/std/bastring.h b/libstdc++/std/bastring.h index ba763a9..629bb58 100644 --- a/libstdc++/std/bastring.h +++ b/libstdc++/std/bastring.h @@ -35,22 +35,6 @@ #include <cstddef> #include <std/straits.h> -#ifdef __STL_USE_EXCEPTIONS - -#include <stdexcept> -#define OUTOFRANGE(cond) \ - do { if (!(cond)) throw out_of_range (#cond); } while (0) -#define LENGTHERROR(cond) \ - do { if (!(cond)) throw length_error (#cond); } while (0) - -#else - -#include <cassert> -#define OUTOFRANGE(cond) assert (!(cond)) -#define LENGTHERROR(cond) assert (!(cond)) - -#endif - extern "C++" { class istream; class ostream; @@ -278,16 +262,8 @@ public: reference operator[] (size_type pos) { unique (); return (*rep ())[pos]; } - reference at (size_type pos) - { - OUTOFRANGE (pos >= length ()); - return (*this)[pos]; - } - const_reference at (size_type pos) const - { - OUTOFRANGE (pos >= length ()); - return data ()[pos]; - } + inline reference at (size_type pos); + inline const_reference at (size_type pos) const; private: void terminate () const @@ -383,6 +359,41 @@ private: charT *dat; }; +typedef basic_string <char> string; +// typedef basic_string <wchar_t> wstring; + +#ifdef __STL_USE_EXCEPTIONS + +#include <stdexcept> +#define OUTOFRANGE(cond) \ + do { if (!(cond)) throw out_of_range (#cond); } while (0) +#define LENGTHERROR(cond) \ + do { if (!(cond)) throw length_error (#cond); } while (0) + +#else + +#include <cassert> +#define OUTOFRANGE(cond) assert (!(cond)) +#define LENGTHERROR(cond) assert (!(cond)) + +#endif + +template <class charT, class traits> +inline basic_string <charT, traits>::reference +basic_string <charT, traits>::at (size_type pos) +{ + OUTOFRANGE (pos >= length ()); + return (*this)[pos]; +} + +template <class charT, class traits> +inline basic_string <charT, traits>::const_reference +basic_string <charT, traits>::at (size_type pos) const +{ + OUTOFRANGE (pos >= length ()); + return data ()[pos]; +} + #ifdef __STL_MEMBER_TEMPLATES template <class charT, class traits> template <class InputIterator> basic_string <charT, traits>& basic_string <charT, traits>:: |