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