version 1.4, 2002/07/24 08:00:18 |
version 1.5, 2003/06/24 05:11:40 |
Line 134 by UseGC. GC is an alias for UseGC, unless GC_NAME_CO |
|
Line 134 by UseGC. GC is an alias for UseGC, unless GC_NAME_CO |
|
#include "gc.h" |
#include "gc.h" |
|
|
#ifndef THINK_CPLUS |
#ifndef THINK_CPLUS |
#define _cdecl |
# define GC_cdecl |
|
#else |
|
# define GC_cdecl _cdecl |
#endif |
#endif |
|
|
#if ! defined( GC_NO_OPERATOR_NEW_ARRAY ) \ |
#if ! defined( GC_NO_OPERATOR_NEW_ARRAY ) \ |
Line 163 class gc {public: |
|
Line 165 class gc {public: |
|
/* Must be redefined here, since the other overloadings */ |
/* Must be redefined here, since the other overloadings */ |
/* hide the global definition. */ |
/* hide the global definition. */ |
inline void operator delete( void* obj ); |
inline void operator delete( void* obj ); |
inline void operator delete( void*, void* ); |
# ifndef __BORLANDC__ /* Confuses the Borland compiler. */ |
|
inline void operator delete( void*, void* ); |
|
# endif |
|
|
#ifdef GC_OPERATOR_NEW_ARRAY |
#ifdef GC_OPERATOR_NEW_ARRAY |
inline void* operator new[]( size_t size ); |
inline void* operator new[]( size_t size ); |
inline void* operator new[]( size_t size, GCPlacement gcp ); |
inline void* operator new[]( size_t size, GCPlacement gcp ); |
inline void* operator new[]( size_t size, void *p ); |
inline void* operator new[]( size_t size, void *p ); |
inline void operator delete[]( void* obj ); |
inline void operator delete[]( void* obj ); |
inline void gc::operator delete[]( void*, void* ); |
# ifndef __BORLANDC__ |
|
inline void gc::operator delete[]( void*, void* ); |
|
# endif |
#endif /* GC_OPERATOR_NEW_ARRAY */ |
#endif /* GC_OPERATOR_NEW_ARRAY */ |
}; |
}; |
/* |
/* |
Line 182 class gc_cleanup: virtual public gc {public: |
|
Line 188 class gc_cleanup: virtual public gc {public: |
|
inline gc_cleanup(); |
inline gc_cleanup(); |
inline virtual ~gc_cleanup(); |
inline virtual ~gc_cleanup(); |
private: |
private: |
inline static void _cdecl cleanup( void* obj, void* clientData );}; |
inline static void GC_cdecl cleanup( void* obj, void* clientData );}; |
/* |
/* |
Instances of classes derived from "gc_cleanup" will be allocated |
Instances of classes derived from "gc_cleanup" will be allocated |
in the collected heap by default. When the collector discovers an |
in the collected heap by default. When the collector discovers an |
Line 276 inline void* gc::operator new( size_t size, void *p ) |
|
Line 282 inline void* gc::operator new( size_t size, void *p ) |
|
inline void gc::operator delete( void* obj ) { |
inline void gc::operator delete( void* obj ) { |
GC_FREE( obj );} |
GC_FREE( obj );} |
|
|
inline void gc::operator delete( void*, void* ) {} |
#ifndef __BORLANDC__ |
|
inline void gc::operator delete( void*, void* ) {} |
|
#endif |
|
|
#ifdef GC_OPERATOR_NEW_ARRAY |
#ifdef GC_OPERATOR_NEW_ARRAY |
|
|
Line 292 inline void* gc::operator new[]( size_t size, void *p |
|
Line 300 inline void* gc::operator new[]( size_t size, void *p |
|
inline void gc::operator delete[]( void* obj ) { |
inline void gc::operator delete[]( void* obj ) { |
gc::operator delete( obj );} |
gc::operator delete( obj );} |
|
|
inline void gc::operator delete[]( void*, void* ) {} |
#ifndef __BORLANDC__ |
|
inline void gc::operator delete[]( void*, void* ) {} |
|
#endif |
|
|
#endif /* GC_OPERATOR_NEW_ARRAY */ |
#endif /* GC_OPERATOR_NEW_ARRAY */ |
|
|
|
|
inline gc_cleanup::~gc_cleanup() { |
inline gc_cleanup::~gc_cleanup() { |
GC_REGISTER_FINALIZER_IGNORE_SELF( GC_base(this), 0, 0, 0, 0 );} |
GC_register_finalizer_ignore_self( GC_base(this), 0, 0, 0, 0 );} |
|
|
inline void gc_cleanup::cleanup( void* obj, void* displ ) { |
inline void gc_cleanup::cleanup( void* obj, void* displ ) { |
((gc_cleanup*) ((char*) obj + (ptrdiff_t) displ))->~gc_cleanup();} |
((gc_cleanup*) ((char*) obj + (ptrdiff_t) displ))->~gc_cleanup();} |