CountedObjectRegistry.h
Go to the documentation of this file.
1 #ifndef _utl_CountedObjectRegistry_h_
2 #define _utl_CountedObjectRegistry_h_
3 
4 #include <string>
5 #include <map>
6 #include <iostream>
7 #include <typeinfo>
8 
9 
10 namespace utl {
11 
27 
28  public:
29  typedef long int Counter;
30 
32 
33  template<class T>
34  static
35  void
37  {
38  RegisterObjectCounters(typeid(typename T::CountedType),
39  T::GetObjectsCreated,
40  T::GetObjectsDestroyed,
41  T::GetObjectsExisting,
42  T::GetObjectsCopied,
43  T::GetObjectsAssigned);
44  }
45 
46  static void PrintStatistics(std::ostream& theStream,
47  const std::string& filter = "");
48 
49  private:
51 
52  typedef Counter (*intFP)();
53 
54  class Counters {
55 
56  public:
57  Counters(const intFP countCreated, const intFP countDestroyed,
58  const intFP countExisting, const intFP countCopied,
59  const intFP countAssigned);
60 
61  Counter GetCreated() const;
62  Counter GetDestroyed() const;
63  Counter GetExisting() const;
64  Counter GetCopied() const;
65  Counter GetAssigned() const;
66 
67  private:
73 
74  };
75 
76  static void RegisterObjectCounters(const std::type_info& theType,
77  const intFP countCreated,
78  const intFP countDestroyed,
79  const intFP countExisting,
80  const intFP countCopied,
81  const intFP countAssigned);
82 
83  static std::map<std::string, Counters> fgRegistry;
84 
85  };
86 
87 }
88 
89 
90 #endif
static std::map< std::string, Counters > fgRegistry
static void RegisterObjectCounters(const std::type_info &theType, const intFP countCreated, const intFP countDestroyed, const intFP countExisting, const intFP countCopied, const intFP countAssigned)
Registry for counted objects.
static void PrintStatistics(std::ostream &theStream, const std::string &filter="")
Counters(const intFP countCreated, const intFP countDestroyed, const intFP countExisting, const intFP countCopied, const intFP countAssigned)

, generated on Tue Sep 26 2023.