1// Instantiation file for the -*- C++ -*- string classes.
2// Copyright (C) 1994 Free Software Foundation
3
4// This file is part of the GNU ANSI C++ Library.  This library is free
5// software; you can redistribute it and/or modify it under the
6// terms of the GNU General Public License as published by the
7// Free Software Foundation; either version 2, or (at your option)
8// any later version.
9
10// This library is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13// GNU General Public License for more details.
14
15// You should have received a copy of the GNU General Public License
16// along with this library; see the file COPYING.  If not, write to the Free
17// Software Foundation, 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18
19// As a special exception, if you link this library with files
20// compiled with a GNU compiler to produce an executable, this does not cause
21// the resulting executable to be covered by the GNU General Public License.
22// This exception does not however invalidate any other reasons why
23// the executable file might be covered by the GNU General Public License.
24
25// Written by Jason Merrill based upon the specification by Takanori Adachi
26// in ANSI X3J16/94-0013R2.
27
28#ifdef __GNUG__
29#ifdef TRAITS
30#ifdef C
31#pragma implementation "std/straits.h"
32#endif
33#endif
34#endif
35
36#include <string>
37
38#ifdef C
39typedef char c;
40#endif
41#ifdef W
42typedef wchar_t c;
43#endif
44
45#if defined(TRAITS) && !defined(C)
46template class string_char_traits <c>;
47#else
48/* string_char_traits<char> is already explicitly specialized in
49   std/straits.h.  */
50#endif
51
52typedef basic_string <c> s;
53
54#ifdef MAIN
55template class basic_string <c>;
56#endif
57
58#ifdef ADDSS
59template s operator+ (const s&, const s&);
60#endif
61#ifdef ADDPS
62template s operator+ (const c*, const s&);
63#endif
64#ifdef ADDCS
65template s operator+ (c, const s&);
66#endif
67#ifdef ADDSP
68template s operator+ (const s&, const c*);
69#endif
70#ifdef ADDSC
71template s operator+ (const s&, c);
72#endif
73#ifdef EQSS
74template bool operator== (const s&, const s&);
75#endif
76#ifdef EQPS
77template bool operator== (const c*, const s&);
78#endif
79#ifdef EQSP
80template bool operator== (const s&, const c*);
81#endif
82#ifdef NESS
83template bool operator!= (const s&, const s&);
84#endif
85#ifdef NEPS
86template bool operator!= (const c*, const s&);
87#endif
88#ifdef NESP
89template bool operator!= (const s&, const c*);
90#endif
91#ifdef LTSS
92template bool operator< (const s&, const s&);
93#endif
94#ifdef LTPS
95template bool operator< (const c*, const s&);
96#endif
97#ifdef LTSP
98template bool operator< (const s&, const c*);
99#endif
100#ifdef GTSS
101template bool operator> (const s&, const s&);
102#endif
103#ifdef GTPS
104template bool operator> (const c*, const s&);
105#endif
106#ifdef GTSP
107template bool operator> (const s&, const c*);
108#endif
109#ifdef LESS
110template bool operator<= (const s&, const s&);
111#endif
112#ifdef LEPS
113template bool operator<= (const c*, const s&);
114#endif
115#ifdef LESP
116template bool operator<= (const s&, const c*);
117#endif
118#ifdef GESS
119template bool operator>= (const s&, const s&);
120#endif
121#ifdef GEPS
122template bool operator>= (const c*, const s&);
123#endif
124#ifdef GESP
125template bool operator>= (const s&, const c*);
126#endif
127#ifdef EXTRACT
128template istream& operator>> (istream&, s&);
129#endif // EXTRACT
130#ifdef INSERT
131template ostream& operator<< (ostream&, const s&);
132#endif // INSERT
133#ifdef GETLINE
134template istream& getline (istream&, s&, c);
135#endif
136