forked from xomboverlord/xomb
/
moduleinfo.d
73 lines (56 loc) · 1.23 KB
/
moduleinfo.d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
module dyndrt.moduleinfo;
// Description: This class describes a D module.
class ModuleInfo : Object {
string name() {
return _name.dup;
}
int opApply(int delegate(ref ModuleInfo) loopBody) {
int ret = 0;
foreach(mod; _importedModules) {
ret = loopBody(mod);
if(ret) {
break;
}
}
return ret;
}
int opApply(int delegate(ref ClassInfo) loopBody) {
int ret = 0;
foreach(lclass; _localClasses) {
ret = loopBody(lclass);
if(ret) {
break;
}
}
return ret;
}
static ModuleInfo[] modules() {
return _modules.dup;
}
package:
string _name;
ModuleInfo[] _importedModules;
ClassInfo[] _localClasses;
// For Cycle Dependency
uint flags;
// Constructors, Deconstructors
void function() ctor;
void function() dtor;
void function() unitTest;
// Special functions
void* xgetMembers;
// Module Independent Constructor
void function() ictor;
package:
static ModuleInfo[] _modules;
static ModuleInfo[] _dtors;
}
package:
// This linked list is created by a compiler generated function inserted
// into the .ctor list by the compiler.
struct ModuleReference {
ModuleReference* next;
ModuleInfo mod;
}
// Start of the module linked list
extern (C) ModuleReference* _Dmodule_ref;