19#ifdef _RBTOBJECTCOUNTER
31 friend std::ostream &operator<<(std::ostream &s,
32 const ObjectCounter &counter);
39typedef std::map<String, ObjectCounter> ObjectCounterMap;
40typedef ObjectCounterMap::iterator ObjectCounterMapIter;
43extern ObjectCounterMap theObjectCounterMap;
47#define _RBTOBJECTCOUNTER_CONSTR_(class) theObjectCounterMap[(class)].nConstr++
48#define _RBTOBJECTCOUNTER_COPYCONSTR_(class) \
49 theObjectCounterMap[(class)].nCopyConstr++
50#define _RBTOBJECTCOUNTER_DESTR_(class) theObjectCounterMap[(class)].nDestr++
52#define _RBTOBJECTCOUNTER_DUMP_(stream) \
53 (stream) << std::endl << "RBT OBJECT COUNTERS:" << std::endl << std::endl; \
54 for (ObjectCounterMapIter dumpIter = theObjectCounterMap.begin(); \
55 dumpIter != theObjectCounterMap.end(); dumpIter++) { \
56 (stream) << (*dumpIter).first << ": " << (*dumpIter).second << std::endl; \
61#define _RBTOBJECTCOUNTER_CONSTR_(class)
62#define _RBTOBJECTCOUNTER_COPYCONSTR_(class)
63#define _RBTOBJECTCOUNTER_DESTR_(class)
64#define _RBTOBJECTCOUNTER_DUMP_(stream)