removed static member quote
[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 char *, unsigned n); // just copy the first n chars
26      string (const string &);
27      string (int);      // convert int to its string representation
28      string (unsigned); // convert unsigned to its string representation
29      string (float);    // convert float to its string representation
30      string (double);   // convert double to its string representation
31     ~string ();
32
33     string& operator= (const char *);
34     string& operator= (const string &);
35     string& operator+= (const string &);
36     string  operator+ (const string &) const;
37
38     bool operator== (const string &) const;
39     bool operator== (const char *ptr) const {
40        // This routine exists as an optimization; doesn't need to create a temporary
41        // instance of "string" for "ptr"; hence, doesn't call string::string(char *)
42        // which calls new[].
43        return STREQ(ptr, str_);
44     }
45     bool operator!= (const string &) const;
46     bool operator<  (const string &s) const {return STRLT(str_, s.str_);}
47     bool operator<= (const string &) const;
48     bool operator>  (const string &s) const {return STRGT(str_, s.str_);}
49     bool operator>= (const string &) const;
50
51     bool prefix_of (const char *, unsigned) const;
52     bool prefix_of (const char *s)          const {return prefix_of(s, STRLEN(s));};
53     bool prefix_of (const string &)         const;
54
55     bool prefixed_by (const char *, unsigned) const;
56     bool prefixed_by (const char *s)          const {return prefixed_by(s, STRLEN(s));};
57     bool prefixed_by (const string &)         const;
58
59     const char*   string_of () const {return str_;}
60     unsigned         length () const {return len_;}
61
62     friend ostream& operator<< (ostream &os, const string &s);
63
64     static unsigned       hash (const string &s) {return s.key_;}
65
66 private:
67     static unsigned      hashs (const char *);
68
69     static unsigned     STRLEN (const char *);
70     static char*        STRDUP (const char *);
71
72     static bool          STREQ (const char *, const char *);
73     static bool         STREQN (const char *, const char *, unsigned);
74     static bool          STRNE (const char *, const char *);
75     static bool          STRLT (const char *, const char *);
76     static bool          STRLE (const char *, const char *);
77     static bool          STRGT (const char *, const char *);
78     static bool          STRGE (const char *, const char *);
79
80     char*    str_;
81     unsigned len_;
82     unsigned key_;
83 };
84
85 #endif /* !defined(_String_h_) */