2022-07-15 14:33:44 +02:00
|
|
|
/**
|
|
|
|
* Implementation of invariant support routines.
|
|
|
|
*
|
|
|
|
* Copyright: Copyright Digital Mars 2007 - 2010.
|
2023-06-18 01:43:18 +01:00
|
|
|
* License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
|
2022-07-15 14:33:44 +02:00
|
|
|
* Authors: Walter Bright
|
2023-06-18 01:43:18 +01:00
|
|
|
* Source: $(DRUNTIMESRC rt/_invariant.d)
|
2022-07-15 14:33:44 +02:00
|
|
|
*/
|
|
|
|
|
|
|
|
/* Copyright Digital Mars 2007 - 2010.
|
|
|
|
* Distributed under the Boost Software License, Version 1.0.
|
|
|
|
* (See accompanying file LICENSE or copy at
|
|
|
|
* http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
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 = typeid(o);
|
|
|
|
do
|
|
|
|
{
|
|
|
|
if (c.classInvariant)
|
|
|
|
{
|
|
|
|
(*c.classInvariant)(o);
|
|
|
|
}
|
|
|
|
c = c.base;
|
|
|
|
} while (c);
|
|
|
|
}
|