=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/gc/include/new_gc_alloc.h,v retrieving revision 1.2 retrieving revision 1.6 diff -u -p -r1.2 -r1.6 --- OpenXM_contrib2/asir2000/gc/include/new_gc_alloc.h 2000/04/10 08:31:35 1.2 +++ OpenXM_contrib2/asir2000/gc/include/new_gc_alloc.h 2003/06/24 05:11:41 1.6 @@ -20,9 +20,9 @@ // It also doesn't yet understand the new header file names or // namespaces. // -// This assumes the collector has been compiled with -DATOMIC_UNCOLLECTABLE -// and -DALL_INTERIOR_POINTERS. We also recommend -// -DREDIRECT_MALLOC=GC_uncollectable_malloc. +// This assumes the collector has been compiled with -DATOMIC_UNCOLLECTABLE. +// The user should also consider -DREDIRECT_MALLOC=GC_uncollectable_malloc, +// to ensure that object allocated through malloc are traced. // // Some of this could be faster in the explicit deallocation case. // In particular, we spend too much time clearing objects on the @@ -43,12 +43,36 @@ // problems. The argument for changing it is that the usual default // allocator is usually a very bad choice for a garbage collected environment.) // +// This code assumes that the collector itself has been compiled with a +// compiler that defines __STDC__ . +// #ifndef GC_ALLOC_H #include "gc.h" -#include +#if (__GNUC__ < 3) +# include // A more portable way to get stl_alloc.h . +#else +# include +# ifndef __STL_BEGIN_NAMESPACE +# define __STL_BEGIN_NAMESPACE namespace std { +# define __STL_END_NAMESPACE }; +# endif +#ifndef __STL_USE_STD_ALLOCATORS +#define __STL_USE_STD_ALLOCATORS +#endif +#endif + +/* A hack to deal with gcc 3.1. If you are using gcc3.1 and later, */ +/* you should probably really use gc_allocator.h instead. */ +#if defined (__GNUC__) && \ + (__GNUC > 3 || (__GNUC__ == 3 && (__GNUC_MINOR__ >= 1))) +# define simple_alloc __simple_alloc +#endif + + + #define GC_ALLOC_H #include @@ -337,6 +361,8 @@ class simple_alloc { \ (public) { alloc::ptr_free_deallocate(p, sizeof (T)); } \ }; +__STL_BEGIN_NAMESPACE + __GC_SPECIALIZE(char, gc_alloc) __GC_SPECIALIZE(int, gc_alloc) __GC_SPECIALIZE(unsigned, gc_alloc) @@ -360,6 +386,8 @@ __GC_SPECIALIZE(int, single_client_traceable_alloc) __GC_SPECIALIZE(unsigned, single_client_traceable_alloc) __GC_SPECIALIZE(float, single_client_traceable_alloc) __GC_SPECIALIZE(double, single_client_traceable_alloc) + +__STL_END_NAMESPACE #ifdef __STL_USE_STD_ALLOCATORS