00001 #ifndef SRC_INC_DETAIL_GC___HPP
00002 #define SRC_INC_DETAIL_GC___HPP
00003
00004 #include <intrusive_list.hpp>
00005
00006 namespace GCpp
00007 {
00008
00011 class GCPP_PUBLIC_SYMBOL GCPointerManager
00012 {
00013 public:
00014 typedef IntrusiveList<GCBasePointer>::iterator iterator;
00015
00016 private:
00017 static IntrusiveList<GCBasePointer> f_pointers;
00018 static size_t f_size;
00019
00020 public:
00023 static iterator begin ();
00024
00027 static iterator end ();
00028
00031 static void register_pointer (GCBasePointer* p_item);
00032
00035 static void forget_pointer (GCBasePointer* p_item);
00036
00039 static bool is_pointer (void* p_item);
00040
00043 static size_t size ();
00044 };
00045
00046 }
00047
00048 #endif