mirror of
https://github.com/dlang/phobos.git
synced 2025-05-10 14:08:32 +03:00
94 lines
1.3 KiB
C
94 lines
1.3 KiB
C
|
|
/*
|
|
* Placed into the Public Domain
|
|
* written by Walter Bright, Digital Mars
|
|
* www.digitalmars.com
|
|
*/
|
|
|
|
#include <stddef.h>
|
|
|
|
#if __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct ClassInfo;
|
|
struct Vtbl;
|
|
|
|
typedef struct Vtbl
|
|
{
|
|
size_t len;
|
|
void **vptr;
|
|
} Vtbl;
|
|
|
|
typedef struct Interface
|
|
{
|
|
struct ClassInfo *classinfo;
|
|
struct Vtbl vtbl;
|
|
int offset;
|
|
} Interface;
|
|
|
|
typedef struct Object
|
|
{
|
|
void **vptr;
|
|
void *monitor;
|
|
} Object;
|
|
|
|
typedef struct ClassInfo
|
|
{
|
|
Object object;
|
|
|
|
size_t initlen;
|
|
void *init;
|
|
|
|
size_t namelen;
|
|
char *name;
|
|
|
|
Vtbl vtbl;
|
|
|
|
size_t interfacelen;
|
|
Interface *interfaces;
|
|
|
|
struct ClassInfo *baseClass;
|
|
|
|
void *destructor;
|
|
void *invariant;
|
|
|
|
int flags;
|
|
} ClassInfo;
|
|
|
|
typedef struct Exception
|
|
{
|
|
Object object;
|
|
|
|
size_t msglen;
|
|
char *msg;
|
|
} Exception;
|
|
|
|
typedef struct Array
|
|
{
|
|
size_t length;
|
|
void *ptr;
|
|
} Array;
|
|
|
|
struct Delegate
|
|
{
|
|
void *thisptr;
|
|
void (*funcptr)();
|
|
};
|
|
|
|
void _d_monitorenter(Object *h);
|
|
void _d_monitorexit(Object *h);
|
|
void _d_monitorrelease(Object *h);
|
|
|
|
int _d_isbaseof(ClassInfo *b, ClassInfo *c);
|
|
Object *_d_dynamic_cast(Object *o, ClassInfo *ci);
|
|
|
|
Object * _d_newclass(ClassInfo *ci);
|
|
void _d_delclass(Object **p);
|
|
|
|
void _d_OutOfMemory();
|
|
|
|
#if __cplusplus
|
|
}
|
|
#endif
|
|
|