removed string(FILE *) constructor and save(FILE *) member function.
[dyninst.git] / common / h / String.h
1 /************************************************************************
2  * String.h: a simple character string class.
3 ************************************************************************/
4
5 #if !defined(_String_h_)
6 #define _String_h_
7
8
9 /************************************************************************
10  * header files.
11 ************************************************************************/
12
13 #include <iostream.h>
14 #include "util/h/headers.h"
15
16 \f
17 /************************************************************************
18  * class string
19 ************************************************************************/
20
21 class string {
22 public:
23      string ();
24      string (const char *);
25      string (const string &);
26      string (int);      // convert int to its string representation
27      string (unsigned); // convert unsigned to its string representation
28      string (float);    // convert float to its string representation
29      string (double);   // convert double to its string representation
30     ~string ();
31
32     string& operator= (const char *);
33     string& operator= (const string &);
34     string& operator+= (const string &);
35     string  operator+ (const string &) const;
36
37     bool operator== (const string &) const;
38     bool operator!= (const string &) const;
39     bool operator<  (const string &s) const {return STRLT(str_, s.str_);}
40     bool operator<= (const string &) const;
41     bool operator>  (const string &s) const {return STRGT(str_, s.str_);}
42     bool operator>= (const string &) const;
43
44     bool prefix_of (const char *, unsigned) const;
45     bool prefix_of (const char *s)          const {return prefix_of(s, STRLEN(s));};
46     bool prefix_of (const string &)         const;
47
48     bool prefixed_by (const char *, unsigned) const;
49     bool prefixed_by (const char *s)          const {return prefixed_by(s, STRLEN(s));};
50     bool prefixed_by (const string &)         const;
51
52     const char*   string_of () const {return str_;}
53     unsigned         length () const {return len_;}
54
55     friend ostream& operator<< (ostream &os, const string &s);
56
57     static unsigned       hash (const string &s) {return s.key_;}
58
59     static string quote;
60
61 private:
62     static unsigned      hashs (const char *);
63
64     static unsigned     STRLEN (const char *);
65     static char*        STRDUP (const char *);
66
67     static bool          STREQ (const char *, const char *);
68     static bool         STREQN (const char *, const char *, unsigned);
69     static bool          STRNE (const char *, const char *);
70     static bool          STRLT (const char *, const char *);
71     static bool          STRLE (const char *, const char *);
72     static bool          STRGT (const char *, const char *);
73     static bool          STRGE (const char *, const char *);
74
75     char*    str_;
76     unsigned len_;
77     unsigned key_;
78 };
79
80 #endif /* !defined(_String_h_) */