Mercurial > projects > ddmd
annotate dmd/Identifier.d @ 168:ceed63f310fb
stringtable, stringbuffer and freelist moved to Global
author | korDen |
---|---|
date | Thu, 30 Sep 2010 12:57:13 +0400 |
parents | e28b18c23469 |
children | af724d3510d7 |
rev | line source |
---|---|
0 | 1 module dmd.Identifier; |
2 | |
114 | 3 import dmd.common; |
0 | 4 import dmd.TOK; |
5 import dmd.DYNCAST; | |
6 import dmd.Lexer; | |
168
ceed63f310fb
stringtable, stringbuffer and freelist moved to Global
korDen
parents:
114
diff
changeset
|
7 import dmd.Global; |
0 | 8 import dmd.OutBuffer; |
9 | |
10 class Identifier | |
11 { | |
12 TOK value; | |
13 string string_; | |
14 | |
15 this(string string_, TOK value) | |
16 { | |
17 this.string_ = string_; | |
18 this.value = value; | |
19 } | |
20 | |
45 | 21 bool equals(Object o) |
0 | 22 { |
168
ceed63f310fb
stringtable, stringbuffer and freelist moved to Global
korDen
parents:
114
diff
changeset
|
23 if (this is o) { |
ceed63f310fb
stringtable, stringbuffer and freelist moved to Global
korDen
parents:
114
diff
changeset
|
24 return true; |
ceed63f310fb
stringtable, stringbuffer and freelist moved to Global
korDen
parents:
114
diff
changeset
|
25 } |
ceed63f310fb
stringtable, stringbuffer and freelist moved to Global
korDen
parents:
114
diff
changeset
|
26 |
ceed63f310fb
stringtable, stringbuffer and freelist moved to Global
korDen
parents:
114
diff
changeset
|
27 if (auto i = cast(Identifier)o) { |
ceed63f310fb
stringtable, stringbuffer and freelist moved to Global
korDen
parents:
114
diff
changeset
|
28 return string_ == i.string_; |
ceed63f310fb
stringtable, stringbuffer and freelist moved to Global
korDen
parents:
114
diff
changeset
|
29 } |
ceed63f310fb
stringtable, stringbuffer and freelist moved to Global
korDen
parents:
114
diff
changeset
|
30 |
ceed63f310fb
stringtable, stringbuffer and freelist moved to Global
korDen
parents:
114
diff
changeset
|
31 return false; |
0 | 32 } |
33 | |
34 hash_t hashCode() | |
35 { | |
36 assert(false); | |
37 } | |
38 | |
72 | 39 override int opCmp(Object o) |
0 | 40 { |
41 assert(false); | |
42 } | |
43 | |
44 void print() | |
45 { | |
46 assert(false); | |
47 } | |
48 | |
49 string toChars() | |
50 { | |
51 return string_; | |
52 } | |
53 | |
54 version (_DH) { | |
55 char* toHChars() | |
56 { | |
57 assert(false); | |
58 } | |
59 } | |
60 string toHChars2() | |
61 { | |
62 assert(false); | |
63 } | |
64 | |
65 DYNCAST dyncast() | |
66 { | |
67 return DYNCAST.DYNCAST_IDENTIFIER; | |
68 } | |
69 | |
70 // BUG: these are redundant with Lexer::uniqueId() | |
71 static Identifier generateId(string prefix) | |
72 { | |
168
ceed63f310fb
stringtable, stringbuffer and freelist moved to Global
korDen
parents:
114
diff
changeset
|
73 return generateId(prefix, ++global.i); |
0 | 74 } |
75 | |
76 static Identifier generateId(string prefix, size_t i) | |
77 { | |
78 scope OutBuffer buf = new OutBuffer(); | |
79 | |
80 buf.writestring(prefix); | |
81 buf.printf("%d", i); ///<! | |
82 | |
83 string id = buf.extractString(); | |
84 return Lexer.idPool(id); | |
85 } | |
72 | 86 } |