typedef char charT;
typedef int size_t;
extern "C++" {
template <class charT> struct string_char_traits {
typedef charT char_type;
static char_type eos () { return char_type(); } // the null character
static void assign (char_type& c1, const char_type& c2) { c1 = c2; }
static bool ne (const char_type& c1, const char_type& c2) { return !(c1 == c2); }
static bool lt (const char_type& c1, const char_type& c2) { return (c1 < c2); }
static int compare (const char_type* s1, const char_type* s2, size_t n) {
size_t i;
for (i = 0; i < n; ++i)
if (ne (s1[i], s2[i]))
return lt (s1[i], s2[i]) ? -1 : 1;
return 0;
}
static size_t length (const char_type* s) {
size_t l = 0;
while (ne (*s++, eos ()))
++l;
return l;
}
static char_type* copy (char_type* s1, const char_type* s2, size_t n) {
for (; n--; )
assign (s1[n], s2[n]);
return s1;
}
static char_type* move (char_type* s1, const char_type* s2, size_t n) {
char_type a[n];
size_t i;
for (i = 0; i < n; ++i)
assign (a[i], s2[i]);
for (i = 0; i < n; ++i)
assign (s1[i], a[i]);
return s1;
}
};
class streambuf;class ios;class istream; class ostream;
typedef ios& (*__manip)(ios&);
typedef istream& (*__imanip)(istream&);
typedef ostream& (*__omanip)(ostream&);
extern ostream& flush(ostream& outs);
struct _ios_fields { // The data members of an ios.
void *test;
};
class ios : public _ios_fields {
public:
ios& test(void) { return *this; }
};
class ostream : virtual public ios {
public:
ostream() { }
ostream& put(char c) { return *this; }
ostream& flush();
ostream& operator<<(char c);
ostream& operator<<(const char *s);
ostream& operator<<(int n);
ostream& operator<<(unsigned int n);
ostream& operator<<(unsigned long n);
ostream& operator<<(long n);
ostream& operator<<(ostream &(*)(ostream &));
};
class basic_string {
public:
void rep();
};
}