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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }