mirror of
https://github.com/dlang/phobos.git
synced 2025-04-29 22:50:38 +03:00
108 lines
1.6 KiB
D
108 lines
1.6 KiB
D
|
|
extern (C) int printf(char *, ...);
|
|
extern (C) int wprintf(wchar *, ...);
|
|
|
|
alias bit bool;
|
|
|
|
class Object
|
|
{
|
|
void print()
|
|
{
|
|
printf("Object %p\n", this);
|
|
}
|
|
|
|
char[] toString()
|
|
{
|
|
return "Object";
|
|
}
|
|
|
|
uint toHash()
|
|
{
|
|
return (uint)(void *)this;
|
|
}
|
|
|
|
int opCmp(Object o)
|
|
{
|
|
return (int)(void *)this - (int)(void *)o;
|
|
}
|
|
|
|
int opEquals(Object o)
|
|
{
|
|
return this === o;
|
|
}
|
|
}
|
|
|
|
struct Interface
|
|
{
|
|
ClassInfo classinfo;
|
|
void *[] vtbl;
|
|
int offset; // offset to Interface 'this' from Object 'this'
|
|
}
|
|
|
|
class ClassInfo : Object
|
|
{
|
|
byte[] init; // class static initializer
|
|
char[] name; // class name
|
|
void *[] vtbl; // virtual function pointer table
|
|
Interface[] interfaces;
|
|
ClassInfo base;
|
|
void *destructor;
|
|
void (*_invariant)(Object);
|
|
uint flags;
|
|
// 1: // IUnknown
|
|
void *deallocator;
|
|
}
|
|
|
|
class TypeInfo
|
|
{
|
|
uint getHash(void *p) { return (uint)p; }
|
|
int equals(void *p1, void *p2) { return p1 == p2; }
|
|
int compare(void *p1, void *p2) { return 0; }
|
|
int tsize() { return 0; }
|
|
void swap(void *p1, void *p2)
|
|
{
|
|
int i;
|
|
int n = tsize();
|
|
for (i = 0; i < n; i++)
|
|
{ byte t;
|
|
|
|
t = ((byte *)p1)[i];
|
|
((byte *)p1)[i] = ((byte *)p2)[i];
|
|
((byte *)p2)[i] = t;
|
|
}
|
|
}
|
|
}
|
|
|
|
class Exception : Object
|
|
{
|
|
char[] msg;
|
|
|
|
this(char[] msg)
|
|
{
|
|
this.msg = msg;
|
|
}
|
|
|
|
void print()
|
|
{
|
|
printf("%.*s\n", msg);
|
|
}
|
|
|
|
char[] toString() { return msg; }
|
|
}
|
|
|
|
class Error : Exception
|
|
{
|
|
Error next;
|
|
|
|
this(char[] msg)
|
|
{
|
|
super(msg);
|
|
}
|
|
|
|
this(char[] msg, Error next)
|
|
{
|
|
super(msg);
|
|
this.next = next;
|
|
}
|
|
}
|
|
|