]> git.llucax.com Git - software/druntime.git/blobdiff - import/object.di
Applied all D2 changes to trunk. It should now be a fully functional D2 runtime.
[software/druntime.git] / import / object.di
index 740046893b3388af1400362ef35f0d7ec11b11b2..1ad5c94582765d51131438908a895f99eb36ac56 100644 (file)
@@ -6,9 +6,9 @@ alias typeof(cast(void*)0 - cast(void*)0)   ptrdiff_t;
 alias size_t hash_t;\r
 alias int equals_t;\r
 \r
-alias char[]  string;\r
-alias wchar[] wstring;\r
-alias dchar[] dstring;\r
+alias invariant(char)[]  string;\r
+alias invariant(wchar)[] wstring;\r
+alias invariant(dchar)[] dstring;\r
 \r
 class Object\r
 {\r
@@ -45,12 +45,15 @@ class ClassInfo : Object
     //  2:      // has no possible pointers into GC memory\r
     //  4:      // has offTi[] member\r
     //  8:      // has constructors\r
+    // 16:      // has xgetMembers member\r
     void*       deallocator;\r
     OffsetTypeInfo[] offTi;\r
     void*       defaultConstructor;\r
+    const(MemberInfo[]) function(string) xgetMembers;\r
 \r
     static ClassInfo find(in char[] classname);\r
     Object create();\r
+    const(MemberInfo[]) getMembers(in char[] classname);\r
 }\r
 \r
 struct OffsetTypeInfo\r
@@ -71,6 +74,8 @@ class TypeInfo
     uint     flags();\r
     // 1:    // has possible pointers into GC memory\r
     OffsetTypeInfo[] offTi();\r
+    void destroy(void* p);\r
+    void postblit(void* p);\r
 }\r
 \r
 class TypeInfo_Typedef : TypeInfo\r
@@ -82,6 +87,7 @@ class TypeInfo_Typedef : TypeInfo
 \r
 class TypeInfo_Enum : TypeInfo_Typedef\r
 {\r
+\r
 }\r
 \r
 class TypeInfo_Pointer : TypeInfo\r
@@ -138,6 +144,9 @@ class TypeInfo_Struct : TypeInfo
 \r
     uint m_flags;\r
 \r
+    const(MemberInfo[]) function(in char[]) xgetMembers;\r
+    void function(void*)                    xdtor;\r
+    void function(void*)                    xpostblit;\r
 }\r
 \r
 class TypeInfo_Tuple : TypeInfo\r
@@ -145,6 +154,47 @@ class TypeInfo_Tuple : TypeInfo
     TypeInfo[]  elements;\r
 }\r
 \r
+class TypeInfo_Const : TypeInfo\r
+{\r
+    TypeInfo next;\r
+}\r
+\r
+class TypeInfo_Invariant : TypeInfo_Const\r
+{\r
+\r
+}\r
+\r
+abstract class MemberInfo\r
+{\r
+    string name();\r
+}\r
+\r
+class MemberInfo_field : MemberInfo\r
+{\r
+    this(string name, TypeInfo ti, size_t offset);\r
+\r
+    override string name();\r
+    TypeInfo typeInfo();\r
+    size_t offset();\r
+}\r
+\r
+class MemberInfo_function : MemberInfo\r
+{\r
+    enum\r
+    {\r
+        Virtual = 1,\r
+        Member  = 2,\r
+        Static  = 4,\r
+    }\r
+\r
+    this(string name, TypeInfo ti, void* fp, uint flags);\r
+\r
+    override string name();\r
+    TypeInfo typeInfo();\r
+    void* fp();\r
+    uint flags();\r
+}\r
+\r
 class ModuleInfo\r
 {\r
     string          name;\r
@@ -163,7 +213,7 @@ class Exception : Object
 {\r
     interface TraceInfo\r
     {\r
-        int opApply( int delegate( inout char[] ) );\r
+        int opApply( int delegate(inout char[]) );\r
         string toString();\r
     }\r
 \r