Mercurial > projects > ldc
annotate lphobos/object.d @ 340:351c0077d0b3 trunk
[svn r361] Removed some dead code.
author | lindquist |
---|---|
date | Sun, 13 Jul 2008 02:04:25 +0200 |
parents | fd7ad91fd713 |
children | 373489eeaf90 |
rev | line source |
---|---|
1 | 1 |
2 // Implementation is in internal\object.d | |
3 | |
4 module object; | |
5 | |
6 //alias bit bool; | |
7 alias bool bit; | |
8 | |
9 alias typeof(int.sizeof) size_t; | |
10 alias typeof(cast(void*)0 - cast(void*)0) ptrdiff_t; | |
11 alias size_t hash_t; | |
12 | |
31
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
13 alias char[] string; |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
14 alias wchar[] wstring; |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
15 alias dchar[] dstring; |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
16 |
1 | 17 extern (C) |
18 { int printf(char *, ...); | |
31
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
19 void trace_term(); |
1 | 20 } |
21 | |
22 class Object | |
23 { | |
24 void print(); | |
25 char[] toString(); | |
26 hash_t toHash(); | |
27 int opCmp(Object o); | |
28 int opEquals(Object o); | |
29 | |
30 final void notifyRegister(void delegate(Object) dg); | |
31 final void notifyUnRegister(void delegate(Object) dg); | |
31
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
32 |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
33 static Object factory(char[] classname); |
1 | 34 } |
35 | |
36 struct Interface | |
37 { | |
38 ClassInfo classinfo; | |
39 void *[] vtbl; | |
31
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
40 int offset; // offset to Interface 'this' from Object 'this' |
1 | 41 } |
42 | |
43 class ClassInfo : Object | |
44 { | |
45 byte[] init; // class static initializer | |
46 char[] name; // class name | |
47 void *[] vtbl; // virtual function pointer table | |
48 Interface[] interfaces; | |
49 ClassInfo base; | |
50 void *destructor; | |
51 void (*classInvariant)(Object); | |
52 uint flags; | |
53 // 1: // IUnknown | |
54 // 2: // has no possible pointers into GC memory | |
55 // 4: // has offTi[] member | |
31
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
56 // 8: // has constructors |
1 | 57 void *deallocator; |
58 OffsetTypeInfo[] offTi; | |
31
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
59 void* defaultConstructor; // default Constructor |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
60 |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
61 static ClassInfo find(char[] classname); |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
62 Object create(); |
1 | 63 } |
64 | |
65 struct OffsetTypeInfo | |
66 { | |
67 size_t offset; | |
68 TypeInfo ti; | |
69 } | |
70 | |
71 class TypeInfo | |
72 { | |
73 hash_t getHash(void *p); | |
74 int equals(void *p1, void *p2); | |
75 int compare(void *p1, void *p2); | |
76 size_t tsize(); | |
77 void swap(void *p1, void *p2); | |
78 TypeInfo next(); | |
79 void[] init(); | |
80 uint flags(); | |
81 // 1: // has possible pointers into GC memory | |
82 OffsetTypeInfo[] offTi(); | |
83 } | |
84 | |
85 class TypeInfo_Typedef : TypeInfo | |
86 { | |
87 TypeInfo base; | |
88 char[] name; | |
89 void[] m_init; | |
90 } | |
91 | |
92 class TypeInfo_Enum : TypeInfo_Typedef | |
93 { | |
94 } | |
95 | |
96 class TypeInfo_Pointer : TypeInfo | |
97 { | |
98 TypeInfo m_next; | |
99 } | |
100 | |
101 class TypeInfo_Array : TypeInfo | |
102 { | |
103 TypeInfo value; | |
104 } | |
105 | |
106 class TypeInfo_StaticArray : TypeInfo | |
107 { | |
108 TypeInfo value; | |
109 size_t len; | |
110 } | |
111 | |
112 class TypeInfo_AssociativeArray : TypeInfo | |
113 { | |
114 TypeInfo value; | |
115 TypeInfo key; | |
116 } | |
117 | |
118 class TypeInfo_Function : TypeInfo | |
119 { | |
120 TypeInfo next; | |
121 } | |
122 | |
123 class TypeInfo_Delegate : TypeInfo | |
124 { | |
125 TypeInfo next; | |
126 } | |
127 | |
128 class TypeInfo_Class : TypeInfo | |
129 { | |
130 ClassInfo info; | |
131 } | |
132 | |
133 class TypeInfo_Interface : TypeInfo | |
134 { | |
135 ClassInfo info; | |
136 } | |
137 | |
138 class TypeInfo_Struct : TypeInfo | |
139 { | |
140 char[] name; | |
141 void[] m_init; | |
142 | |
143 uint function(void*) xtoHash; | |
144 int function(void*,void*) xopEquals; | |
145 int function(void*,void*) xopCmp; | |
146 char[] function(void*) xtoString; | |
147 | |
148 uint m_flags; | |
149 } | |
150 | |
151 class TypeInfo_Tuple : TypeInfo | |
152 { | |
153 TypeInfo[] elements; | |
154 } | |
155 | |
31
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
156 class TypeInfo_Const : TypeInfo |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
157 { |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
158 TypeInfo next; |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
159 } |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
160 |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
161 class TypeInfo_Invariant : TypeInfo_Const |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
162 { |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
163 } |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
164 |
116
fd7ad91fd713
[svn r120] ModuleInfo implementation is now almost complete.
lindquist
parents:
31
diff
changeset
|
165 class ModuleInfo |
fd7ad91fd713
[svn r120] ModuleInfo implementation is now almost complete.
lindquist
parents:
31
diff
changeset
|
166 { |
fd7ad91fd713
[svn r120] ModuleInfo implementation is now almost complete.
lindquist
parents:
31
diff
changeset
|
167 char[] name; |
fd7ad91fd713
[svn r120] ModuleInfo implementation is now almost complete.
lindquist
parents:
31
diff
changeset
|
168 ModuleInfo[] importedModules; |
fd7ad91fd713
[svn r120] ModuleInfo implementation is now almost complete.
lindquist
parents:
31
diff
changeset
|
169 ClassInfo[] localClasses; |
fd7ad91fd713
[svn r120] ModuleInfo implementation is now almost complete.
lindquist
parents:
31
diff
changeset
|
170 |
fd7ad91fd713
[svn r120] ModuleInfo implementation is now almost complete.
lindquist
parents:
31
diff
changeset
|
171 uint flags; // initialization state |
fd7ad91fd713
[svn r120] ModuleInfo implementation is now almost complete.
lindquist
parents:
31
diff
changeset
|
172 |
fd7ad91fd713
[svn r120] ModuleInfo implementation is now almost complete.
lindquist
parents:
31
diff
changeset
|
173 void function() ctor; |
fd7ad91fd713
[svn r120] ModuleInfo implementation is now almost complete.
lindquist
parents:
31
diff
changeset
|
174 void function() dtor; |
fd7ad91fd713
[svn r120] ModuleInfo implementation is now almost complete.
lindquist
parents:
31
diff
changeset
|
175 void function() unitTest; |
fd7ad91fd713
[svn r120] ModuleInfo implementation is now almost complete.
lindquist
parents:
31
diff
changeset
|
176 |
fd7ad91fd713
[svn r120] ModuleInfo implementation is now almost complete.
lindquist
parents:
31
diff
changeset
|
177 // Return collection of all modules in the program. |
fd7ad91fd713
[svn r120] ModuleInfo implementation is now almost complete.
lindquist
parents:
31
diff
changeset
|
178 static ModuleInfo[] modules(); |
fd7ad91fd713
[svn r120] ModuleInfo implementation is now almost complete.
lindquist
parents:
31
diff
changeset
|
179 } |
fd7ad91fd713
[svn r120] ModuleInfo implementation is now almost complete.
lindquist
parents:
31
diff
changeset
|
180 |
1 | 181 // Recoverable errors |
182 | |
183 class Exception : Object | |
184 { | |
31
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
185 string msg; |
1 | 186 |
31
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
187 this(string msg); |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
188 override void print(); |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
189 override string toString(); |
1 | 190 } |
191 | |
192 // Non-recoverable errors | |
193 | |
194 class Error : Exception | |
195 { | |
196 Error next; | |
197 | |
31
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
198 this(string msg); |
2841234d2aea
[svn r35] * Attributes on struct fields/methods now work
lindquist
parents:
1
diff
changeset
|
199 this(string msg, Error next); |
1 | 200 } |
201 |