blob: f149c9d555bdf30b441608efd05980572a7d2ffc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#if ! defined _Const_String_h
#define _Const_String_h 1
#include <string>
namespace omega {
// should be inside Const_String, but I can't get it to
// compile the hashTable when it is: hashTable can't be
// global, but if it and its size are static to Const_String,
// the compiler still doesn't seem to like the definition,
// or the declaration either for that matter.
class ConstStringRep {
public:
const char *name;
int count;
ConstStringRep *nextInBucket;
ConstStringRep(const char *t);
};
class Const_String {
private:
ConstStringRep *rep;
void buildRep(const char *t);
public:
Const_String();
Const_String(const char* t);
Const_String(const std::string &s);
Const_String(const Const_String & t) {rep = t.rep;}
operator int() const;
int null() const;
operator const char*() const;
operator std::string() const;
int operator++(int);
int operator++();
int operator--(int);
int operator--();
friend int operator==(const Const_String &x, const Const_String &y);
friend int operator!=(const Const_String &x, const Const_String &y);
friend int operator<(const Const_String &x, const Const_String &y);
friend int operator >(const Const_String &x, const Const_String &y);
};
#if defined SCREWED_UP_CASTING_RULES
static int operator==(const Const_String &x, const char *y)
{ return x == (Const_String) y; }
static int operator!=(const Const_String &x, const char *y)
{ return x != (Const_String) y; }
#endif
} // namespace
#endif
|