--- deliantra/server/include/util.h 2006/09/12 21:10:32 1.12 +++ deliantra/server/include/util.h 2006/11/17 19:40:54 1.16 @@ -11,6 +11,9 @@ #include +// use a gcc extension for auto declarations until ISO C++ sanctifies them +#define AUTODECL(var,expr) typeof(expr) var = (expr) + // makes dynamically allocated objects zero-initialised struct zero_initialised { @@ -85,7 +88,7 @@ void deallocate (pointer p, size_type n) { - dealloc (static_cast(p), n); + dealloc (static_cast(p), n * sizeof (Tp)); } size_type max_size ()const throw () @@ -106,11 +109,17 @@ struct refcounted { - mutable int refcnt; refcounted () : refcnt (0) { } +// virtual ~refcounted (); void refcnt_inc () { ++refcnt; } - void refcnt_dec () { --refcnt; - if (refcnt < 0)abort();}//D + void refcnt_dec () { --refcnt; } + bool dead () { return refcnt == 0; } + mutable int refcnt; +#if 0 +private: + static refcounted *rc_first; + refcounted *rc_next; +#endif }; template