]> git.llucax.com Git - software/druntime.git/blob - import/object.di
Finished flattening D1/D2 differences. Except for one or two lines, all differences...
[software/druntime.git] / import / object.di
1 module object;\r
2 \r
3 alias typeof(int.sizeof)                    size_t;\r
4 alias typeof(cast(void*)0 - cast(void*)0)   ptrdiff_t;\r
5 \r
6 alias size_t hash_t;\r
7 alias int equals_t;\r
8 \r
9 alias char[]  string;\r
10 alias wchar[] wstring;\r
11 alias dchar[] dstring;\r
12 \r
13 class Object\r
14 {\r
15     string   toString();\r
16     hash_t   toHash();\r
17     int      opCmp(Object o);\r
18     equals_t opEquals(Object o);\r
19 \r
20     interface Monitor\r
21     {\r
22         void lock();\r
23         void unlock();\r
24     }\r
25 }\r
26 \r
27 struct Interface\r
28 {\r
29     ClassInfo   classinfo;\r
30     void*[]     vtbl;\r
31     ptrdiff_t   offset;   // offset to Interface 'this' from Object 'this'\r
32 }\r
33 \r
34 class ClassInfo : Object\r
35 {\r
36     byte[]      init;   // class static initializer\r
37     string      name;   // class name\r
38     void*[]     vtbl;   // virtual function pointer table\r
39     Interface[] interfaces;\r
40     ClassInfo   base;\r
41     void*       destructor;\r
42     void(*classInvariant)(Object);\r
43     uint        flags;\r
44     //  1:      // is IUnknown or is derived from IUnknown\r
45     //  2:      // has no possible pointers into GC memory\r
46     //  4:      // has offTi[] member\r
47     //  8:      // has constructors\r
48     void*       deallocator;\r
49     OffsetTypeInfo[] offTi;\r
50     void*       defaultConstructor;\r
51 \r
52     static ClassInfo find(in char[] classname);\r
53     Object create();\r
54 }\r
55 \r
56 struct OffsetTypeInfo\r
57 {\r
58     size_t   offset;\r
59     TypeInfo ti;\r
60 }\r
61 \r
62 class TypeInfo\r
63 {\r
64     hash_t   getHash(in void* p);\r
65     equals_t equals(in void* p1, in void* p2);\r
66     int      compare(in void* p1, in void* p2);\r
67     size_t   tsize();\r
68     void     swap(void* p1, void* p2);\r
69     TypeInfo next();\r
70     void[]   init();\r
71     uint     flags();\r
72     // 1:    // has possible pointers into GC memory\r
73     OffsetTypeInfo[] offTi();\r
74 }\r
75 \r
76 class TypeInfo_Typedef : TypeInfo\r
77 {\r
78     TypeInfo base;\r
79     string   name;\r
80     void[]   m_init;\r
81 }\r
82 \r
83 class TypeInfo_Enum : TypeInfo_Typedef\r
84 {\r
85 }\r
86 \r
87 class TypeInfo_Pointer : TypeInfo\r
88 {\r
89     TypeInfo m_next;\r
90 }\r
91 \r
92 class TypeInfo_Array : TypeInfo\r
93 {\r
94     TypeInfo value;\r
95 }\r
96 \r
97 class TypeInfo_StaticArray : TypeInfo\r
98 {\r
99     TypeInfo value;\r
100     size_t   len;\r
101 }\r
102 \r
103 class TypeInfo_AssociativeArray : TypeInfo\r
104 {\r
105     TypeInfo value;\r
106     TypeInfo key;\r
107 }\r
108 \r
109 class TypeInfo_Function : TypeInfo\r
110 {\r
111     TypeInfo next;\r
112 }\r
113 \r
114 class TypeInfo_Delegate : TypeInfo\r
115 {\r
116     TypeInfo next;\r
117 }\r
118 \r
119 class TypeInfo_Class : TypeInfo\r
120 {\r
121     ClassInfo info;\r
122 }\r
123 \r
124 class TypeInfo_Interface : TypeInfo\r
125 {\r
126     ClassInfo info;\r
127 }\r
128 \r
129 class TypeInfo_Struct : TypeInfo\r
130 {\r
131     string name;\r
132     void[] m_init;\r
133 \r
134     uint function(in void*)               xtoHash;\r
135     equals_t function(in void*, in void*) xopEquals;\r
136     int function(in void*, in void*)      xopCmp;\r
137     string function(in void*)             xtoString;\r
138 \r
139     uint m_flags;\r
140 \r
141 }\r
142 \r
143 class TypeInfo_Tuple : TypeInfo\r
144 {\r
145     TypeInfo[]  elements;\r
146 }\r
147 \r
148 class ModuleInfo\r
149 {\r
150     string          name;\r
151     ModuleInfo[]    importedModules;\r
152     ClassInfo[]     localClasses;\r
153     uint            flags;\r
154 \r
155     void function() ctor;\r
156     void function() dtor;\r
157     void function() unitTest;\r
158 \r
159     static int opApply( int delegate( inout ModuleInfo ) );\r
160 }\r
161 \r
162 class Exception : Object\r
163 {\r
164     interface TraceInfo\r
165     {\r
166         int opApply( int delegate( inout char[] ) );\r
167         string toString();\r
168     }\r
169 \r
170     string      msg;\r
171     string      file;\r
172     size_t      line;\r
173     TraceInfo   info;\r
174     Exception   next;\r
175 \r
176     this(string msg, Exception next = null);\r
177     this(string msg, string file, size_t line, Exception next = null);\r
178     override string toString();\r
179 }\r