aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@yorick.cygnus.com>1997-10-02 17:26:16 +0000
committerJason Merrill <jason@yorick.cygnus.com>1997-10-02 17:26:16 +0000
commit00771b199146fd9c91dd36675ec402dba27cafb7 (patch)
treedfd482af6f25c8ca1b9eaced75135363406f588d
parent5f3374391d7dc101183b7ca3bb46783eeed78dc9 (diff)
* std/bastring.h: Move exception stuff after definition of string.
Move typedef of string here. * string: From here. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@15832 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--libstdc++/ChangeLog6
-rw-r--r--libstdc++/std/bastring.h63
-rw-r--r--libstdc++/string5
3 files changed, 43 insertions, 31 deletions
diff --git a/libstdc++/ChangeLog b/libstdc++/ChangeLog
index 94a3460f806..f58f3da2d59 100644
--- a/libstdc++/ChangeLog
+++ b/libstdc++/ChangeLog
@@ -1,3 +1,9 @@
+Thu Oct 2 00:08:18 1997 Jason Merrill <jason@yorick.cygnus.com>
+
+ * std/bastring.h: Move exception stuff after definition of string.
+ Move typedef of string here.
+ * string: From here.
+
Sat Sep 27 16:48:00 1997 Jason Merrill <jason@yorick.cygnus.com>
* std/complext.h: Lose injection decls.
diff --git a/libstdc++/std/bastring.h b/libstdc++/std/bastring.h
index ba763a901c6..629bb583f3d 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>::
diff --git a/libstdc++/string b/libstdc++/string
index fa6f1abaa70..f18c1cfbdda 100644
--- a/libstdc++/string
+++ b/libstdc++/string
@@ -5,9 +5,4 @@
#include <std/bastring.h>
-extern "C++" {
-typedef basic_string <char> string;
-// typedef basic_string <wchar_t> wstring;
-} // extern "C++"
-
#endif