Mercurial > projects > dil
annotate trunk/src/dil/Enums.d @ 775:e76c9fdb83a3
DDocEmitter emits declaration attributes now.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Mon, 18 Feb 2008 22:59:56 +0100 |
parents | b60450804b6e |
children | 3b34f6a95a27 |
rev | line source |
---|---|
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
1 /++ |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
2 Author: Aziz Köksal |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
3 License: GPL3 |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
4 +/ |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
5 module dil.Enums; |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
6 |
775
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
7 import common; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
8 |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
9 enum StorageClass |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
10 { |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
11 None = 0, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
12 Abstract = 1, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
13 Auto = 1<<2, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
14 Const = 1<<3, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
15 Deprecated = 1<<4, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
16 Extern = 1<<5, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
17 Final = 1<<6, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
18 Invariant = 1<<7, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
19 Override = 1<<8, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
20 Scope = 1<<9, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
21 Static = 1<<10, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
22 Synchronized = 1<<11, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
23 In = 1<<12, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
24 Out = 1<<13, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
25 Ref = 1<<14, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
26 Lazy = 1<<15, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
27 Variadic = 1<<16, |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
28 } |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
29 |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
30 enum Protection |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
31 { |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
32 None, |
775
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
33 Private/+ = 1+/, |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
34 Protected/+ = 1<<1+/, |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
35 Package/+ = 1<<2+/, |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
36 Public/+ = 1<<3+/, |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
37 Export/+ = 1<<4+/ |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
38 } |
495
b60450804b6e
Attributes are evaluated during the parsing phase now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
39 |
b60450804b6e
Attributes are evaluated during the parsing phase now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
40 enum LinkageType |
b60450804b6e
Attributes are evaluated during the parsing phase now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
41 { |
b60450804b6e
Attributes are evaluated during the parsing phase now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
42 None, |
b60450804b6e
Attributes are evaluated during the parsing phase now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
43 C, |
b60450804b6e
Attributes are evaluated during the parsing phase now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
44 Cpp, |
b60450804b6e
Attributes are evaluated during the parsing phase now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
45 D, |
b60450804b6e
Attributes are evaluated during the parsing phase now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
46 Windows, |
b60450804b6e
Attributes are evaluated during the parsing phase now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
47 Pascal, |
b60450804b6e
Attributes are evaluated during the parsing phase now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
48 System |
b60450804b6e
Attributes are evaluated during the parsing phase now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
489
diff
changeset
|
49 } |
775
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
50 |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
51 string toString(Protection prot) |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
52 { |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
53 switch (prot) |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
54 { alias Protection P; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
55 case P.None: return ""; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
56 case P.Private: return "private"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
57 case P.Protected: return "protected"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
58 case P.Package: return "package"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
59 case P.Public: return "public"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
60 case P.Export: return "export"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
61 default: |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
62 assert(0); |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
63 } |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
64 } |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
65 |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
66 /// Returns the string of a storage class. Only one bit may be set. |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
67 string toString(StorageClass stc) |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
68 { |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
69 switch (stc) |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
70 { alias StorageClass SC; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
71 case SC.Abstract: return "abstract"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
72 case SC.Auto: return "auto"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
73 case SC.Const: return "const"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
74 case SC.Deprecated: return "deprecated"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
75 case SC.Extern: return "extern"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
76 case SC.Final: return "final"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
77 case SC.Invariant: return "invariant"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
78 case SC.Override: return "override"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
79 case SC.Scope: return "scope"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
80 case SC.Static: return "static"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
81 case SC.Synchronized: return "synchronized"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
82 case SC.In: return "in"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
83 case SC.Out: return "out"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
84 case SC.Ref: return "ref"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
85 case SC.Lazy: return "lazy"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
86 case SC.Variadic: return "variadic"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
87 default: |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
88 assert(0); |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
89 } |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
90 } |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
91 |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
92 /// Returns the string . Any number of bits may be set. |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
93 string[] toStrings(StorageClass stc) |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
94 { |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
95 string[] result; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
96 for (auto i = StorageClass.max; i; i >>= 1) |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
97 if (stc & i) |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
98 result ~= toString(i); |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
99 return result; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
100 } |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
101 |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
102 string toString(LinkageType ltype) |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
103 { |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
104 switch (ltype) |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
105 { alias LinkageType LT; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
106 case LT.None: return ""; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
107 case LT.C: return "C"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
108 case LT.Cpp: return "Cpp"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
109 case LT.D: return "D"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
110 case LT.Windows: return "Windows"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
111 case LT.Pascal: return "Pascal"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
112 case LT.System: return "System"; |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
113 default: |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
114 assert(0); |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
115 } |
e76c9fdb83a3
DDocEmitter emits declaration attributes now.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
116 } |