]> git.llucax.com Git - software/druntime.git/blobdiff - import/object.di
Merged in changes from Phobos SVN.
[software/druntime.git] / import / object.di
index 740046893b3388af1400362ef35f0d7ec11b11b2..1745bbb66b78a27e4d2697c33ca1336a33aa90a1 100644 (file)
-module object;\r
-\r
-alias typeof(int.sizeof)                    size_t;\r
-alias typeof(cast(void*)0 - cast(void*)0)   ptrdiff_t;\r
-\r
-alias size_t hash_t;\r
-alias int equals_t;\r
-\r
-alias char[]  string;\r
-alias wchar[] wstring;\r
-alias dchar[] dstring;\r
-\r
-class Object\r
-{\r
-    string   toString();\r
-    hash_t   toHash();\r
-    int      opCmp(Object o);\r
-    equals_t opEquals(Object o);\r
-\r
-    interface Monitor\r
-    {\r
-        void lock();\r
-        void unlock();\r
-    }\r
-}\r
-\r
-struct Interface\r
-{\r
-    ClassInfo   classinfo;\r
-    void*[]     vtbl;\r
-    ptrdiff_t   offset;   // offset to Interface 'this' from Object 'this'\r
-}\r
-\r
-class ClassInfo : Object\r
-{\r
-    byte[]      init;   // class static initializer\r
-    string      name;   // class name\r
-    void*[]     vtbl;   // virtual function pointer table\r
-    Interface[] interfaces;\r
-    ClassInfo   base;\r
-    void*       destructor;\r
-    void(*classInvariant)(Object);\r
-    uint        flags;\r
-    //  1:      // is IUnknown or is derived from IUnknown\r
-    //  2:      // has no possible pointers into GC memory\r
-    //  4:      // has offTi[] member\r
-    //  8:      // has constructors\r
-    void*       deallocator;\r
-    OffsetTypeInfo[] offTi;\r
-    void*       defaultConstructor;\r
-\r
-    static ClassInfo find(in char[] classname);\r
-    Object create();\r
-}\r
-\r
-struct OffsetTypeInfo\r
-{\r
-    size_t   offset;\r
-    TypeInfo ti;\r
-}\r
-\r
-class TypeInfo\r
-{\r
-    hash_t   getHash(in void* p);\r
-    equals_t equals(in void* p1, in void* p2);\r
-    int      compare(in void* p1, in void* p2);\r
-    size_t   tsize();\r
-    void     swap(void* p1, void* p2);\r
-    TypeInfo next();\r
-    void[]   init();\r
-    uint     flags();\r
-    // 1:    // has possible pointers into GC memory\r
-    OffsetTypeInfo[] offTi();\r
-}\r
-\r
-class TypeInfo_Typedef : TypeInfo\r
-{\r
-    TypeInfo base;\r
-    string   name;\r
-    void[]   m_init;\r
-}\r
-\r
-class TypeInfo_Enum : TypeInfo_Typedef\r
-{\r
-}\r
-\r
-class TypeInfo_Pointer : TypeInfo\r
-{\r
-    TypeInfo m_next;\r
-}\r
-\r
-class TypeInfo_Array : TypeInfo\r
-{\r
-    TypeInfo value;\r
-}\r
-\r
-class TypeInfo_StaticArray : TypeInfo\r
-{\r
-    TypeInfo value;\r
-    size_t   len;\r
-}\r
-\r
-class TypeInfo_AssociativeArray : TypeInfo\r
-{\r
-    TypeInfo value;\r
-    TypeInfo key;\r
-}\r
-\r
-class TypeInfo_Function : TypeInfo\r
-{\r
-    TypeInfo next;\r
-}\r
-\r
-class TypeInfo_Delegate : TypeInfo\r
-{\r
-    TypeInfo next;\r
-}\r
-\r
-class TypeInfo_Class : TypeInfo\r
-{\r
-    ClassInfo info;\r
-}\r
-\r
-class TypeInfo_Interface : TypeInfo\r
-{\r
-    ClassInfo info;\r
-}\r
-\r
-class TypeInfo_Struct : TypeInfo\r
-{\r
-    string name;\r
-    void[] m_init;\r
-\r
-    uint function(in void*)               xtoHash;\r
-    equals_t function(in void*, in void*) xopEquals;\r
-    int function(in void*, in void*)      xopCmp;\r
-    string function(in void*)             xtoString;\r
-\r
-    uint m_flags;\r
-\r
-}\r
-\r
-class TypeInfo_Tuple : TypeInfo\r
-{\r
-    TypeInfo[]  elements;\r
-}\r
-\r
-class ModuleInfo\r
-{\r
-    string          name;\r
-    ModuleInfo[]    importedModules;\r
-    ClassInfo[]     localClasses;\r
-    uint            flags;\r
-\r
-    void function() ctor;\r
-    void function() dtor;\r
-    void function() unitTest;\r
-\r
-    static int opApply( int delegate( inout ModuleInfo ) );\r
-}\r
-\r
-class Exception : Object\r
-{\r
-    interface TraceInfo\r
-    {\r
-        int opApply( int delegate( inout char[] ) );\r
-        string toString();\r
-    }\r
-\r
-    string      msg;\r
-    string      file;\r
-    size_t      line;\r
-    TraceInfo   info;\r
-    Exception   next;\r
-\r
-    this(string msg, Exception next = null);\r
-    this(string msg, string file, size_t line, Exception next = null);\r
-    override string toString();\r
-}\r
+module object;
+
+alias typeof(int.sizeof)                    size_t;
+alias typeof(cast(void*)0 - cast(void*)0)   ptrdiff_t;
+
+alias size_t hash_t;
+alias bool equals_t;
+
+alias invariant(char)[]  string;
+alias invariant(wchar)[] wstring;
+alias invariant(dchar)[] dstring;
+
+class Object
+{
+    string   toString();
+    hash_t   toHash();
+    int      opCmp(Object o);
+    equals_t opEquals(Object o);
+
+    interface Monitor
+    {
+        void lock();
+        void unlock();
+    }
+}
+
+struct Interface
+{
+    ClassInfo   classinfo;
+    void*[]     vtbl;
+    ptrdiff_t   offset;   // offset to Interface 'this' from Object 'this'
+}
+
+class ClassInfo : Object
+{
+    byte[]      init;   // class static initializer
+    string      name;   // class name
+    void*[]     vtbl;   // virtual function pointer table
+    Interface[] interfaces;
+    ClassInfo   base;
+    void*       destructor;
+    void(*classInvariant)(Object);
+    uint        flags;
+    //  1:      // is IUnknown or is derived from IUnknown
+    //  2:      // has no possible pointers into GC memory
+    //  4:      // has offTi[] member
+    //  8:      // has constructors
+    // 16:      // has xgetMembers member
+    void*       deallocator;
+    OffsetTypeInfo[] offTi;
+    void*       defaultConstructor;
+    const(MemberInfo[]) function(string) xgetMembers;
+
+    static ClassInfo find(in char[] classname);
+    Object create();
+    const(MemberInfo[]) getMembers(in char[] classname);
+}
+
+struct OffsetTypeInfo
+{
+    size_t   offset;
+    TypeInfo ti;
+}
+
+class TypeInfo
+{
+    hash_t   getHash(in void* p);
+    equals_t equals(in void* p1, in void* p2);
+    int      compare(in void* p1, in void* p2);
+    size_t   tsize();
+    void     swap(void* p1, void* p2);
+    TypeInfo next();
+    void[]   init();
+    uint     flags();
+    // 1:    // has possible pointers into GC memory
+    OffsetTypeInfo[] offTi();
+    void destroy(void* p);
+    void postblit(void* p);
+}
+
+class TypeInfo_Typedef : TypeInfo
+{
+    TypeInfo base;
+    string   name;
+    void[]   m_init;
+}
+
+class TypeInfo_Enum : TypeInfo_Typedef
+{
+
+}
+
+class TypeInfo_Pointer : TypeInfo
+{
+    TypeInfo m_next;
+}
+
+class TypeInfo_Array : TypeInfo
+{
+    TypeInfo value;
+}
+
+class TypeInfo_StaticArray : TypeInfo
+{
+    TypeInfo value;
+    size_t   len;
+}
+
+class TypeInfo_AssociativeArray : TypeInfo
+{
+    TypeInfo value;
+    TypeInfo key;
+}
+
+class TypeInfo_Function : TypeInfo
+{
+    TypeInfo next;
+}
+
+class TypeInfo_Delegate : TypeInfo
+{
+    TypeInfo next;
+}
+
+class TypeInfo_Class : TypeInfo
+{
+    ClassInfo info;
+}
+
+class TypeInfo_Interface : TypeInfo
+{
+    ClassInfo info;
+}
+
+class TypeInfo_Struct : TypeInfo
+{
+    string name;
+    void[] m_init;
+
+    uint function(in void*)               xtoHash;
+    equals_t function(in void*, in void*) xopEquals;
+    int function(in void*, in void*)      xopCmp;
+    string function(in void*)             xtoString;
+
+    uint m_flags;
+
+    const(MemberInfo[]) function(in char[]) xgetMembers;
+    void function(void*)                    xdtor;
+    void function(void*)                    xpostblit;
+}
+
+class TypeInfo_Tuple : TypeInfo
+{
+    TypeInfo[]  elements;
+}
+
+class TypeInfo_Const : TypeInfo
+{
+    TypeInfo next;
+}
+
+class TypeInfo_Invariant : TypeInfo_Const
+{
+
+}
+
+abstract class MemberInfo
+{
+    string name();
+}
+
+class MemberInfo_field : MemberInfo
+{
+    this(string name, TypeInfo ti, size_t offset);
+
+    override string name();
+    TypeInfo typeInfo();
+    size_t offset();
+}
+
+class MemberInfo_function : MemberInfo
+{
+    enum
+    {
+        Virtual = 1,
+        Member  = 2,
+        Static  = 4,
+    }
+
+    this(string name, TypeInfo ti, void* fp, uint flags);
+
+    override string name();
+    TypeInfo typeInfo();
+    void* fp();
+    uint flags();
+}
+
+class ModuleInfo
+{
+    string          name;
+    ModuleInfo[]    importedModules;
+    ClassInfo[]     localClasses;
+    uint            flags;
+
+    void function() ctor;
+    void function() dtor;
+    void function() unitTest;
+
+    static int opApply( int delegate( inout ModuleInfo ) );
+}
+
+class Exception : Object
+{
+    interface TraceInfo
+    {
+        int opApply( int delegate(inout char[]) );
+        string toString();
+    }
+
+    string      msg;
+    string      file;
+    size_t      line;
+    TraceInfo   info;
+    Exception   next;
+
+    this(string msg, Exception next = null);
+    this(string msg, string file, size_t line, Exception next = null);
+    override string toString();
+}