Mercurial > projects > ddmd
annotate dmd/Identifier.d @ 68:ee3a9f34dc48
final bits of codegen implementation to compile Phobos
author | korDen |
---|---|
date | Tue, 24 Aug 2010 16:44:34 +0400 |
parents | ccbc1e0bb3f0 |
children | 2e2a5c3f943a |
rev | line source |
---|---|
0 | 1 module dmd.Identifier; |
2 | |
3 import dmd.TOK; | |
4 import dmd.DYNCAST; | |
5 import dmd.Lexer; | |
6 import dmd.OutBuffer; | |
7 | |
8 import std.stdio : writef; | |
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 { |
23 return this is o || string_ == (cast(Identifier)o).toChars(); /// hack | |
24 } | |
25 | |
26 hash_t hashCode() | |
27 { | |
28 assert(false); | |
29 } | |
30 | |
68
ee3a9f34dc48
final bits of codegen implementation to compile Phobos
korDen
parents:
45
diff
changeset
|
31 int opCmp(Object o) |
0 | 32 { |
33 assert(false); | |
34 } | |
35 | |
36 void print() | |
37 { | |
38 assert(false); | |
39 } | |
40 | |
41 string toChars() | |
42 { | |
43 return string_; | |
44 } | |
45 | |
46 version (_DH) { | |
47 char* toHChars() | |
48 { | |
49 assert(false); | |
50 } | |
51 } | |
52 string toHChars2() | |
53 { | |
54 assert(false); | |
55 } | |
56 | |
57 DYNCAST dyncast() | |
58 { | |
59 return DYNCAST.DYNCAST_IDENTIFIER; | |
60 } | |
61 | |
62 // BUG: these are redundant with Lexer::uniqueId() | |
63 static Identifier generateId(string prefix) | |
64 { | |
65 static size_t i; | |
66 return generateId(prefix, ++i); | |
67 } | |
68 | |
69 static Identifier generateId(string prefix, size_t i) | |
70 { | |
71 scope OutBuffer buf = new OutBuffer(); | |
72 | |
73 buf.writestring(prefix); | |
74 buf.printf("%d", i); ///<! | |
75 | |
76 string id = buf.extractString(); | |
77 return Lexer.idPool(id); | |
78 } | |
79 } |