Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

LeaClassMonitor.cxx

Go to the documentation of this file.
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 

Generated on Mon Feb 15 11:06:51 2010 for loon by  doxygen 1.3.9.1