00001 00002 // $Id: LeaClassMonitor.cxx,v 1.8 2005/02/01 18:55:04 tagg Exp $ 00003 // 00004 // LeaClassMonitor 00005 // 00006 // Package: Lea (Leak Checker). 00007 00008 // Begin_Html<img src="../../pedestrians.gif" align=center> 00009 // <a href="../source_warning.html">Warning for beginners</a>.<br> 00010 // Also see <a href="../../root_crib/index.html">The ROOT Crib</a> and 00011 // <a href="../index.html">The MINOS Class User Guide</a>End_Html 00012 // 00013 // N. West 06/00 00014 // 00015 // 00016 // Purpose: Monitors creation and destruction of objects of a single 00017 // class. 00018 // 00019 // 00021 00022 #include <string.h> 00023 00024 #include "LeakChecker/LeaClassMonitor.h" 00025 #include "MessageService/MsgService.h" 00026 00027 std::ostream& operator<<(std::ostream& os, 00028 LeaClassMonitor* m) {return m->Print(os);} 00029 00030 ClassImp(LeaClassMonitor) 00031 00032 // Definition of static data members 00033 // ********************************* 00034 00035 CVSID("$Id: LeaClassMonitor.cxx,v 1.8 2005/02/01 18:55:04 tagg Exp $"); 00036 00037 00038 00039 // Definition of member functions (alphabetical order) 00040 // *************************************************** 00041 00042 //..................................................................... 00043 00044 Bool_t LeaClassMonitor::Add(const void* addr){ 00045 00046 // Purpose: Record creation of object. 00047 00048 // Arguments: 00049 // addr in Address of object. 00050 00051 // Return: kTRUE always (reserved for future use). 00052 00053 // Contact: N. West 00054 00055 // Specification:- 00056 // ============= 00057 00058 // o Record creation of object. 00059 00060 // Program Notes:- 00061 // ============= 00062 00063 // None. 00064 00065 fNumCreated++; 00066 fNumActive++; 00067 // Invent use for addr. 00068 return addr != 0; 00069 00070 } 00071 //..................................................................... 00072 00073 LeaClassMonitor::LeaClassMonitor() : 00074 fClassName(""), 00075 fNumActive(0), 00076 fNumCreated(0) 00077 { 00078 00079 00080 // Purpose: Default constructor. 00081 00082 // Arguments: 00083 // None. 00084 00085 // Return: n/a 00086 00087 // Contact: N. West 00088 00089 // Specification:- 00090 // ============= 00091 00092 // o Create LeaClassMonitor. 00093 00094 // Program Notes:- 00095 // ============= 00096 00097 // None. 00098 00099 MSG("Lea", Msg::kDebug) << "Creating LeaClassMonitor at " 00100 << (void*) this << endl; 00101 00102 } 00103 //..................................................................... 00104 00105 LeaClassMonitor::~LeaClassMonitor() { 00106 00107 00108 // Purpose: Destructor. 00109 00110 // Arguments: 00111 // None. 00112 00113 // Return: n/a 00114 00115 // Contact: N. West 00116 00117 // Specification:- 00118 // ============= 00119 00120 // o Destroy LeaClassMonitor. 00121 00122 // Program Notes:- 00123 // ============= 00124 00125 // None. 00126 00127 } 00128 //..................................................................... 00129 00130 ostream& LeaClassMonitor::Print(ostream& os) { 00131 00132 00133 // Purpose: Display current status of Class Monitor on ostream. 00134 00135 // Arguments: 00136 // os in ostream to display on. 00137 00138 // Return: Update ostream. 00139 00140 // Contact: N. West 00141 00142 // Specification:- 00143 // ============= 00144 00145 // o Display current status of Class Monitor on ostream. 00146 00147 // Program Notes:- 00148 // ============= 00149 00150 // None. 00151 00152 os << GetName() 00153 << " Total created: " << fNumCreated 00154 << " number still active: " << fNumActive << endl; 00155 00156 return os; 00157 00158 } 00159 00160 //..................................................................... 00161 00162 Bool_t LeaClassMonitor::Remove(const void* addr){ 00163 00164 // Purpose: Record destruction of object. 00165 00166 // Arguments: 00167 // addr in Address of object. 00168 00169 // Return: kTRUE always (reserved for future use). 00170 00171 // Contact: N. West 00172 00173 // Specification:- 00174 // ============= 00175 00176 // o Record destruction of object. 00177 00178 // Program Notes:- 00179 // ============= 00180 00181 // None. 00182 00183 fNumActive--; 00184 return kTRUE; 00185 00186 // Invent use for addr. 00187 return addr != 0; 00188 00189 } 00190 00191 //..................................................................... 00192 00193 void LeaClassMonitor::Reset() { 00194 00195 00196 // Purpose: Clear object counts. 00197 00198 // Arguments: 00199 // None 00200 00201 // Return: None. 00202 00203 // Contact: N. West 00204 00205 // Specification:- 00206 // ============= 00207 00208 // o Clear object counts. 00209 00210 // Program Notes:- 00211 // ============= 00212 00213 // None. 00214 00215 fNumActive = fNumCreated = 0; 00216 00217 } 00218 00219 //..................................................................... 00220 00221 00222 /* Template for New Member Function 00223 00224 //..................................................................... 00225 00226 LeaClassMonitor:: { 00227 00228 00229 // Purpose: 00230 00231 // Arguments: 00232 // xxxxx in xxxxxxxxxxxxxxxxxx 00233 00234 // Return: 00235 00236 // Contact: N. West 00237 00238 // Specification:- 00239 // ============= 00240 00241 // o 00242 00243 // Program Notes:- 00244 // ============= 00245 00246 // None. 00247 00248 00249 } 00250 00251 */ 00252
1.3.9.1