mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-12 10:53:14 +01:00
longer equivalent to regular functions with `this` as their first argument. (They weren't anyway, but it happened to work as long as there was no `sret` parameter)
29 lines
527 B
D
29 lines
527 B
D
|
|
/*
|
|
* Placed into the Public Domain
|
|
* written by Walter Bright
|
|
* www.digitalmars.com
|
|
*/
|
|
|
|
extern(C) void _d_invariant(Object o)
|
|
{ ClassInfo c;
|
|
|
|
//printf("__d_invariant(%p)\n", o);
|
|
|
|
// BUG: needs to be filename/line of caller, not library routine
|
|
assert(o !is null); // just do null check, not invariant check
|
|
|
|
c = o.classinfo;
|
|
do
|
|
{
|
|
if (c.classInvariant)
|
|
{
|
|
void delegate() inv;
|
|
inv.ptr = cast(void*) o;
|
|
inv.funcptr = c.classInvariant;
|
|
inv();
|
|
}
|
|
c = c.base;
|
|
} while (c);
|
|
}
|