0
|
1 module dmd.Id;
|
|
2
|
|
3 import dmd.Identifier;
|
|
4 import dmd.Lexer;
|
|
5
|
|
6 struct Id
|
|
7 {
|
|
8 static Identifier IUnknown;
|
|
9 static Identifier Object_;
|
|
10 static Identifier object;
|
|
11 static Identifier max;
|
|
12 static Identifier min;
|
|
13 static Identifier This;
|
|
14 static Identifier ctor;
|
|
15 static Identifier dtor;
|
|
16 static Identifier cpctor;
|
|
17 static Identifier _postblit;
|
|
18 static Identifier classInvariant;
|
|
19 static Identifier unitTest;
|
|
20 static Identifier init_;
|
|
21 static Identifier size;
|
|
22 static Identifier __sizeof;
|
|
23 static Identifier alignof_;
|
|
24 static Identifier mangleof_;
|
|
25 static Identifier stringof_;
|
|
26 static Identifier tupleof_;
|
|
27 static Identifier length;
|
|
28 static Identifier remove;
|
|
29 static Identifier ptr;
|
|
30 static Identifier funcptr;
|
|
31 static Identifier dollar;
|
|
32 static Identifier offset;
|
|
33 static Identifier offsetof;
|
|
34 static Identifier ModuleInfo;
|
|
35 static Identifier ClassInfo;
|
|
36 static Identifier classinfo_;
|
|
37 static Identifier typeinfo_;
|
|
38 static Identifier outer;
|
|
39 static Identifier Exception;
|
|
40 static Identifier Throwable;
|
|
41 static Identifier withSym;
|
|
42 static Identifier result;
|
|
43 static Identifier returnLabel;
|
|
44 static Identifier delegate_;
|
|
45 static Identifier line;
|
|
46 static Identifier empty;
|
|
47 static Identifier p;
|
|
48 static Identifier coverage;
|
|
49 static Identifier __vptr;
|
|
50 static Identifier __monitor;
|
|
51 static Identifier system;
|
|
52 static Identifier TypeInfo;
|
|
53 static Identifier TypeInfo_Class;
|
|
54 static Identifier TypeInfo_Interface;
|
|
55 static Identifier TypeInfo_Struct;
|
|
56 static Identifier TypeInfo_Enum;
|
|
57 static Identifier TypeInfo_Typedef;
|
|
58 static Identifier TypeInfo_Pointer;
|
|
59 static Identifier TypeInfo_Array;
|
|
60 static Identifier TypeInfo_StaticArray;
|
|
61 static Identifier TypeInfo_AssociativeArray;
|
|
62 static Identifier TypeInfo_Function;
|
|
63 static Identifier TypeInfo_Delegate;
|
|
64 static Identifier TypeInfo_Tuple;
|
|
65 static Identifier TypeInfo_Const;
|
|
66 static Identifier TypeInfo_Invariant;
|
|
67 static Identifier TypeInfo_Shared;
|
|
68 static Identifier elements;
|
|
69 static Identifier _arguments_typeinfo;
|
|
70 static Identifier _arguments;
|
|
71 static Identifier _argptr;
|
|
72 static Identifier _match;
|
|
73 static Identifier destroy;
|
|
74 static Identifier postblit;
|
|
75 static Identifier LINE;
|
|
76 static Identifier FILE;
|
|
77 static Identifier DATE;
|
|
78 static Identifier TIME;
|
|
79 static Identifier TIMESTAMP;
|
|
80 static Identifier VENDOR;
|
|
81 static Identifier VERSIONX;
|
|
82 static Identifier EOFX;
|
|
83 static Identifier nan;
|
|
84 static Identifier infinity;
|
|
85 static Identifier dig;
|
|
86 static Identifier epsilon;
|
|
87 static Identifier mant_dig;
|
|
88 static Identifier max_10_exp;
|
|
89 static Identifier max_exp;
|
|
90 static Identifier min_10_exp;
|
|
91 static Identifier min_exp;
|
|
92 static Identifier re;
|
|
93 static Identifier im;
|
|
94 static Identifier C;
|
|
95 static Identifier D;
|
|
96 static Identifier Windows;
|
|
97 static Identifier Pascal;
|
|
98 static Identifier System;
|
|
99 static Identifier exit;
|
|
100 static Identifier success;
|
|
101 static Identifier failure;
|
|
102 static Identifier keys;
|
|
103 static Identifier values;
|
|
104 static Identifier rehash;
|
|
105 static Identifier sort;
|
|
106 static Identifier reverse;
|
|
107 static Identifier dup;
|
|
108 static Identifier idup;
|
|
109 static Identifier property;
|
|
110 static Identifier ___out;
|
|
111 static Identifier ___in;
|
|
112 static Identifier __int;
|
|
113 static Identifier __dollar;
|
|
114 static Identifier __LOCAL_SIZE;
|
|
115 static Identifier uadd;
|
|
116 static Identifier neg;
|
|
117 static Identifier com;
|
|
118 static Identifier add;
|
|
119 static Identifier add_r;
|
|
120 static Identifier sub;
|
|
121 static Identifier sub_r;
|
|
122 static Identifier mul;
|
|
123 static Identifier mul_r;
|
|
124 static Identifier div;
|
|
125 static Identifier div_r;
|
|
126 static Identifier mod;
|
|
127 static Identifier mod_r;
|
|
128 static Identifier eq;
|
|
129 static Identifier cmp;
|
|
130 static Identifier iand;
|
|
131 static Identifier iand_r;
|
|
132 static Identifier ior;
|
|
133 static Identifier ior_r;
|
|
134 static Identifier ixor;
|
|
135 static Identifier ixor_r;
|
|
136 static Identifier shl;
|
|
137 static Identifier shl_r;
|
|
138 static Identifier shr;
|
|
139 static Identifier shr_r;
|
|
140 static Identifier ushr;
|
|
141 static Identifier ushr_r;
|
|
142 static Identifier cat;
|
|
143 static Identifier cat_r;
|
|
144 static Identifier assign;
|
|
145 static Identifier addass;
|
|
146 static Identifier subass;
|
|
147 static Identifier mulass;
|
|
148 static Identifier divass;
|
|
149 static Identifier modass;
|
|
150 static Identifier andass;
|
|
151 static Identifier orass;
|
|
152 static Identifier xorass;
|
|
153 static Identifier shlass;
|
|
154 static Identifier shrass;
|
|
155 static Identifier ushrass;
|
|
156 static Identifier catass;
|
|
157 static Identifier postinc;
|
|
158 static Identifier postdec;
|
|
159 static Identifier index;
|
|
160 static Identifier indexass;
|
|
161 static Identifier slice;
|
|
162 static Identifier sliceass;
|
|
163 static Identifier call;
|
|
164 static Identifier cast_;
|
|
165 static Identifier match;
|
|
166 static Identifier next;
|
|
167 static Identifier opIn;
|
|
168 static Identifier opIn_r;
|
|
169 static Identifier opStar;
|
|
170 static Identifier opDot;
|
|
171 static Identifier opImplicitCast;
|
|
172 static Identifier classNew;
|
|
173 static Identifier classDelete;
|
|
174 static Identifier apply;
|
|
175 static Identifier applyReverse;
|
|
176 static Identifier Fempty;
|
|
177 static Identifier Fhead;
|
|
178 static Identifier Ftoe;
|
|
179 static Identifier Fnext;
|
|
180 static Identifier Fretreat;
|
|
181 static Identifier adDup;
|
|
182 static Identifier adReverse;
|
|
183 static Identifier aaLen;
|
|
184 static Identifier aaKeys;
|
|
185 static Identifier aaValues;
|
|
186 static Identifier aaRehash;
|
|
187 static Identifier monitorenter;
|
|
188 static Identifier monitorexit;
|
|
189 static Identifier criticalenter;
|
|
190 static Identifier criticalexit;
|
|
191 static Identifier GNU_asm;
|
|
192 static Identifier lib;
|
|
193 static Identifier msg;
|
|
194 static Identifier startaddress;
|
|
195 static Identifier tohash;
|
|
196 static Identifier tostring;
|
|
197 static Identifier getmembers;
|
|
198 static Identifier alloca;
|
|
199 static Identifier main;
|
|
200 static Identifier WinMain;
|
|
201 static Identifier DllMain;
|
|
202 static Identifier tls_get_addr;
|
|
203 static Identifier std;
|
|
204 static Identifier math;
|
|
205 static Identifier sin;
|
|
206 static Identifier cos;
|
|
207 static Identifier tan;
|
|
208 static Identifier _sqrt;
|
|
209 static Identifier fabs;
|
|
210 static Identifier isAbstractClass;
|
|
211 static Identifier isArithmetic;
|
|
212 static Identifier isAssociativeArray;
|
|
213 static Identifier isFinalClass;
|
|
214 static Identifier isFloating;
|
|
215 static Identifier isIntegral;
|
|
216 static Identifier isScalar;
|
|
217 static Identifier isStaticArray;
|
|
218 static Identifier isUnsigned;
|
|
219 static Identifier isVirtualFunction;
|
|
220 static Identifier isAbstractFunction;
|
|
221 static Identifier isFinalFunction;
|
|
222 static Identifier hasMember;
|
|
223 static Identifier getMember;
|
|
224 static Identifier getVirtualFunctions;
|
|
225 static Identifier classInstanceSize;
|
|
226 static Identifier allMembers;
|
|
227 static Identifier derivedMembers;
|
|
228 static Identifier isSame;
|
|
229 static Identifier compiles;
|
|
230
|
|
231 static void initialize()
|
|
232 {
|
|
233 IUnknown = Lexer.idPool("IUnknown");
|
|
234 Object_ = Lexer.idPool("Object");
|
|
235 object = Lexer.idPool("object");
|
|
236 max = Lexer.idPool("max");
|
|
237 min = Lexer.idPool("min");
|
|
238 This = Lexer.idPool("this");
|
|
239 ctor = Lexer.idPool("__ctor");
|
|
240 dtor = Lexer.idPool("__dtor");
|
|
241 cpctor = Lexer.idPool("__cpctor");
|
|
242 _postblit = Lexer.idPool("__postblit");
|
|
243 classInvariant = Lexer.idPool("__invariant");
|
|
244 unitTest = Lexer.idPool("__unitTest");
|
|
245 init_ = Lexer.idPool("init");
|
|
246 size = Lexer.idPool("size");
|
|
247 __sizeof = Lexer.idPool("sizeof");
|
|
248 alignof_ = Lexer.idPool("alignof");
|
|
249 mangleof_ = Lexer.idPool("mangleof");
|
|
250 stringof_ = Lexer.idPool("stringof");
|
|
251 tupleof_ = Lexer.idPool("tupleof");
|
|
252 length = Lexer.idPool("length");
|
|
253 remove = Lexer.idPool("remove");
|
|
254 ptr = Lexer.idPool("ptr");
|
|
255 funcptr = Lexer.idPool("funcptr");
|
|
256 dollar = Lexer.idPool("__dollar");
|
|
257 offset = Lexer.idPool("offset");
|
|
258 offsetof = Lexer.idPool("offsetof");
|
|
259 ModuleInfo = Lexer.idPool("ModuleInfo");
|
|
260 ClassInfo = Lexer.idPool("ClassInfo");
|
|
261 classinfo_ = Lexer.idPool("classinfo");
|
|
262 typeinfo_ = Lexer.idPool("typeinfo");
|
|
263 outer = Lexer.idPool("outer");
|
|
264 Exception = Lexer.idPool("Exception");
|
|
265 Throwable = Lexer.idPool("Throwable");
|
|
266 withSym = Lexer.idPool("__withSym");
|
|
267 result = Lexer.idPool("__result");
|
|
268 returnLabel = Lexer.idPool("__returnLabel");
|
|
269 delegate_ = Lexer.idPool("delegate");
|
|
270 line = Lexer.idPool("line");
|
|
271 empty = Lexer.idPool("");
|
|
272 p = Lexer.idPool("p");
|
|
273 coverage = Lexer.idPool("__coverage");
|
|
274 __vptr = Lexer.idPool("__vptr");
|
|
275 __monitor = Lexer.idPool("__monitor");
|
|
276 system = Lexer.idPool("system");
|
|
277 TypeInfo = Lexer.idPool("TypeInfo");
|
|
278 TypeInfo_Class = Lexer.idPool("TypeInfo_Class");
|
|
279 TypeInfo_Interface = Lexer.idPool("TypeInfo_Interface");
|
|
280 TypeInfo_Struct = Lexer.idPool("TypeInfo_Struct");
|
|
281 TypeInfo_Enum = Lexer.idPool("TypeInfo_Enum");
|
|
282 TypeInfo_Typedef = Lexer.idPool("TypeInfo_Typedef");
|
|
283 TypeInfo_Pointer = Lexer.idPool("TypeInfo_Pointer");
|
|
284 TypeInfo_Array = Lexer.idPool("TypeInfo_Array");
|
|
285 TypeInfo_StaticArray = Lexer.idPool("TypeInfo_StaticArray");
|
|
286 TypeInfo_AssociativeArray = Lexer.idPool("TypeInfo_AssociativeArray");
|
|
287 TypeInfo_Function = Lexer.idPool("TypeInfo_Function");
|
|
288 TypeInfo_Delegate = Lexer.idPool("TypeInfo_Delegate");
|
|
289 TypeInfo_Tuple = Lexer.idPool("TypeInfo_Tuple");
|
|
290 TypeInfo_Const = Lexer.idPool("TypeInfo_Const");
|
|
291 TypeInfo_Invariant = Lexer.idPool("TypeInfo_Invariant");
|
|
292 TypeInfo_Shared = Lexer.idPool("TypeInfo_Shared");
|
|
293 elements = Lexer.idPool("elements");
|
|
294 _arguments_typeinfo = Lexer.idPool("_arguments_typeinfo");
|
|
295 _arguments = Lexer.idPool("_arguments");
|
|
296 _argptr = Lexer.idPool("_argptr");
|
|
297 _match = Lexer.idPool("_match");
|
|
298 destroy = Lexer.idPool("destroy");
|
|
299 postblit = Lexer.idPool("postblit");
|
|
300 LINE = Lexer.idPool("__LINE__");
|
|
301 FILE = Lexer.idPool("__FILE__");
|
|
302 DATE = Lexer.idPool("__DATE__");
|
|
303 TIME = Lexer.idPool("__TIME__");
|
|
304 TIMESTAMP = Lexer.idPool("__TIMESTAMP__");
|
|
305 VENDOR = Lexer.idPool("__VENDOR__");
|
|
306 VERSIONX = Lexer.idPool("__VERSION__");
|
|
307 EOFX = Lexer.idPool("__EOF__");
|
|
308 nan = Lexer.idPool("nan");
|
|
309 infinity = Lexer.idPool("infinity");
|
|
310 dig = Lexer.idPool("dig");
|
|
311 epsilon = Lexer.idPool("epsilon");
|
|
312 mant_dig = Lexer.idPool("mant_dig");
|
|
313 max_10_exp = Lexer.idPool("max_10_exp");
|
|
314 max_exp = Lexer.idPool("max_exp");
|
|
315 min_10_exp = Lexer.idPool("min_10_exp");
|
|
316 min_exp = Lexer.idPool("min_exp");
|
|
317 re = Lexer.idPool("re");
|
|
318 im = Lexer.idPool("im");
|
|
319 C = Lexer.idPool("C");
|
|
320 D = Lexer.idPool("D");
|
|
321 Windows = Lexer.idPool("Windows");
|
|
322 Pascal = Lexer.idPool("Pascal");
|
|
323 System = Lexer.idPool("System");
|
|
324 exit = Lexer.idPool("exit");
|
|
325 success = Lexer.idPool("success");
|
|
326 failure = Lexer.idPool("failure");
|
|
327 keys = Lexer.idPool("keys");
|
|
328 values = Lexer.idPool("values");
|
|
329 rehash = Lexer.idPool("rehash");
|
|
330 sort = Lexer.idPool("sort");
|
|
331 reverse = Lexer.idPool("reverse");
|
|
332 dup = Lexer.idPool("dup");
|
|
333 idup = Lexer.idPool("idup");
|
|
334 property = Lexer.idPool("property");
|
|
335 ___out = Lexer.idPool("out");
|
|
336 ___in = Lexer.idPool("in");
|
|
337 __int = Lexer.idPool("int");
|
|
338 __dollar = Lexer.idPool("$");
|
|
339 __LOCAL_SIZE = Lexer.idPool("__LOCAL_SIZE");
|
|
340 uadd = Lexer.idPool("opPos");
|
|
341 neg = Lexer.idPool("opNeg");
|
|
342 com = Lexer.idPool("opCom");
|
|
343 add = Lexer.idPool("opAdd");
|
|
344 add_r = Lexer.idPool("opAdd_r");
|
|
345 sub = Lexer.idPool("opSub");
|
|
346 sub_r = Lexer.idPool("opSub_r");
|
|
347 mul = Lexer.idPool("opMul");
|
|
348 mul_r = Lexer.idPool("opMul_r");
|
|
349 div = Lexer.idPool("opDiv");
|
|
350 div_r = Lexer.idPool("opDiv_r");
|
|
351 mod = Lexer.idPool("opMod");
|
|
352 mod_r = Lexer.idPool("opMod_r");
|
|
353 eq = Lexer.idPool("opEquals");
|
|
354 cmp = Lexer.idPool("opCmp");
|
|
355 iand = Lexer.idPool("opAnd");
|
|
356 iand_r = Lexer.idPool("opAnd_r");
|
|
357 ior = Lexer.idPool("opOr");
|
|
358 ior_r = Lexer.idPool("opOr_r");
|
|
359 ixor = Lexer.idPool("opXor");
|
|
360 ixor_r = Lexer.idPool("opXor_r");
|
|
361 shl = Lexer.idPool("opShl");
|
|
362 shl_r = Lexer.idPool("opShl_r");
|
|
363 shr = Lexer.idPool("opShr");
|
|
364 shr_r = Lexer.idPool("opShr_r");
|
|
365 ushr = Lexer.idPool("opUShr");
|
|
366 ushr_r = Lexer.idPool("opUShr_r");
|
|
367 cat = Lexer.idPool("opCat");
|
|
368 cat_r = Lexer.idPool("opCat_r");
|
|
369 assign = Lexer.idPool("opAssign");
|
|
370 addass = Lexer.idPool("opAddAssign");
|
|
371 subass = Lexer.idPool("opSubAssign");
|
|
372 mulass = Lexer.idPool("opMulAssign");
|
|
373 divass = Lexer.idPool("opDivAssign");
|
|
374 modass = Lexer.idPool("opModAssign");
|
|
375 andass = Lexer.idPool("opAndAssign");
|
|
376 orass = Lexer.idPool("opOrAssign");
|
|
377 xorass = Lexer.idPool("opXorAssign");
|
|
378 shlass = Lexer.idPool("opShlAssign");
|
|
379 shrass = Lexer.idPool("opShrAssign");
|
|
380 ushrass = Lexer.idPool("opUShrAssign");
|
|
381 catass = Lexer.idPool("opCatAssign");
|
|
382 postinc = Lexer.idPool("opPostInc");
|
|
383 postdec = Lexer.idPool("opPostDec");
|
|
384 index = Lexer.idPool("opIndex");
|
|
385 indexass = Lexer.idPool("opIndexAssign");
|
|
386 slice = Lexer.idPool("opSlice");
|
|
387 sliceass = Lexer.idPool("opSliceAssign");
|
|
388 call = Lexer.idPool("opCall");
|
|
389 cast_ = Lexer.idPool("opCast");
|
|
390 match = Lexer.idPool("opMatch");
|
|
391 next = Lexer.idPool("opNext");
|
|
392 opIn = Lexer.idPool("opIn");
|
|
393 opIn_r = Lexer.idPool("opIn_r");
|
|
394 opStar = Lexer.idPool("opStar");
|
|
395 opDot = Lexer.idPool("opDot");
|
|
396 opImplicitCast = Lexer.idPool("opImplicitCast");
|
|
397 classNew = Lexer.idPool("new");
|
|
398 classDelete = Lexer.idPool("delete");
|
|
399 apply = Lexer.idPool("opApply");
|
|
400 applyReverse = Lexer.idPool("opApplyReverse");
|
|
401 Fempty = Lexer.idPool("empty");
|
|
402 Fhead = Lexer.idPool("front");
|
|
403 Ftoe = Lexer.idPool("back");
|
|
404 Fnext = Lexer.idPool("popFront");
|
|
405 Fretreat = Lexer.idPool("popBack");
|
|
406 adDup = Lexer.idPool("_adDupT");
|
|
407 adReverse = Lexer.idPool("_adReverse");
|
|
408 aaLen = Lexer.idPool("_aaLen");
|
|
409 aaKeys = Lexer.idPool("_aaKeys");
|
|
410 aaValues = Lexer.idPool("_aaValues");
|
|
411 aaRehash = Lexer.idPool("_aaRehash");
|
|
412 monitorenter = Lexer.idPool("_d_monitorenter");
|
|
413 monitorexit = Lexer.idPool("_d_monitorexit");
|
|
414 criticalenter = Lexer.idPool("_d_criticalenter");
|
|
415 criticalexit = Lexer.idPool("_d_criticalexit");
|
|
416 GNU_asm = Lexer.idPool("GNU_asm");
|
|
417 lib = Lexer.idPool("lib");
|
|
418 msg = Lexer.idPool("msg");
|
|
419 startaddress = Lexer.idPool("startaddress");
|
|
420 tohash = Lexer.idPool("toHash");
|
|
421 tostring = Lexer.idPool("toString");
|
|
422 getmembers = Lexer.idPool("getMembers");
|
|
423 alloca = Lexer.idPool("alloca");
|
|
424 main = Lexer.idPool("main");
|
|
425 WinMain = Lexer.idPool("WinMain");
|
|
426 DllMain = Lexer.idPool("DllMain");
|
|
427 tls_get_addr = Lexer.idPool("___tls_get_addr");
|
|
428 std = Lexer.idPool("std");
|
|
429 math = Lexer.idPool("math");
|
|
430 sin = Lexer.idPool("sin");
|
|
431 cos = Lexer.idPool("cos");
|
|
432 tan = Lexer.idPool("tan");
|
|
433 _sqrt = Lexer.idPool("sqrt");
|
|
434 fabs = Lexer.idPool("fabs");
|
|
435 isAbstractClass = Lexer.idPool("isAbstractClass");
|
|
436 isArithmetic = Lexer.idPool("isArithmetic");
|
|
437 isAssociativeArray = Lexer.idPool("isAssociativeArray");
|
|
438 isFinalClass = Lexer.idPool("isFinalClass");
|
|
439 isFloating = Lexer.idPool("isFloating");
|
|
440 isIntegral = Lexer.idPool("isIntegral");
|
|
441 isScalar = Lexer.idPool("isScalar");
|
|
442 isStaticArray = Lexer.idPool("isStaticArray");
|
|
443 isUnsigned = Lexer.idPool("isUnsigned");
|
|
444 isVirtualFunction = Lexer.idPool("isVirtualFunction");
|
|
445 isAbstractFunction = Lexer.idPool("isAbstractFunction");
|
|
446 isFinalFunction = Lexer.idPool("isFinalFunction");
|
|
447 hasMember = Lexer.idPool("hasMember");
|
|
448 getMember = Lexer.idPool("getMember");
|
|
449 getVirtualFunctions = Lexer.idPool("getVirtualFunctions");
|
|
450 classInstanceSize = Lexer.idPool("classInstanceSize");
|
|
451 allMembers = Lexer.idPool("allMembers");
|
|
452 derivedMembers = Lexer.idPool("derivedMembers");
|
|
453 isSame = Lexer.idPool("isSame");
|
|
454 compiles = Lexer.idPool("compiles");
|
|
455 }
|
|
456 } |