//Simple class which keeps track of members #ifndef UTILITY_OBJECT_TRACKED_HPP_LJE20040112 #define UTILITY_OBJECT_TRACKED_HPP_LJE20040112 //#define UTILITY_OBJECT_TRACKED_SET_OF_OBJECTS_TRACE_MODE //#define UTILITY_OBJECT_TRACKED_TRACE_MODE #include #include "boost/utility/obj_id.hpp" #if defined(UTILITY_OBJECT_TRACKED_SET_OF_OBJECTS_TRACE_MODE)\ || defined(UTILITY_OBJECT_TRACKED_TRACE_MODE) #include "boost/io/filters/mout.hpp" #endif namespace utility { class object_tracked : public obj_id { private: struct set_of_objects_tracked : public std::set { typedef std::set super_type ; ~set_of_objects_tracked(void) { #ifdef UTILITY_OBJECT_TRACKED_SET_OF_OBJECTS_TRACE_MODE mout()<<"set_of_objects_tracked-\n"; #endif } set_of_objects_tracked(void) { #ifdef UTILITY_OBJECT_TRACKED_SET_OF_OBJECTS_TRACE_MODE mout()<<"set_of_objects_tracked+\n"; #endif } void reset(void) { super_type::clear(); obj_id::the_last_id() = 0; } bool contains(object_tracked const*& a_obj)const { return find(a_obj) != end(); } }; static set_of_objects_tracked our_members ; public: static void reset(void) { our_members.reset(); } static unsigned members_size(void) { return our_members.size(); } object_tracked(void) { our_members.insert(this); #ifdef UTILITY_OBJECT_TRACKED_TRACE_MODE mout()<<"object_tracked+:id="<