Mercurial > projects > ldc
view tango/lib/compiler/llvmdc/mars.h @ 213:7816aafeea3c trunk
[svn r229] Updated the object.d implementation to the latest Tango.
Fixed a bunch of the built-in typeinfos for arrays, they did not inherit TypeInfo_Array.
Applied patch to tango/text/convert/Layout.d by fvbommel, closes #47 .
Cleaned up some type code.
Replaced uses of llvm::Type with LLType (a typedef), same for Value and Constant.
Fixed a few cases where typeinfo for user structs could be emitted multiple times, seems to still be some cases of this :/
author | lindquist |
---|---|
date | Fri, 30 May 2008 19:32:04 +0200 |
parents | 44a95ac7368a |
children |
line wrap: on
line source
/* * Placed into the Public Domain * written by Walter Bright, Digital Mars * www.digitalmars.com */ /* * Modified by Sean Kelly <sean@f4.ca> for use with Tango. */ #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; size_t filelen; char* file; size_t line; struct Exception *next; } Exception; typedef struct Array { size_t length; void *ptr; } Array; typedef struct Delegate { void *thisptr; void (*funcptr)(); } Delegate; void _d_monitorenter(Object *h); void _d_monitorexit(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