00001 /*-----------------------------------------------------------*- c++ -*-\ 00002 | | 00003 | __ __ ____ _____ ____ | 00004 | \ \ / /_ _/ ___|_ _|___ \ | 00005 | \ V / _` \___ \ | | __) | | 00006 | | | (_| |___) || | / __/ | 00007 | |_|\__,_|____/ |_| |_____| | 00008 | | 00009 | core system | 00010 | (C) SUSE LINUX AG | 00011 \----------------------------------------------------------------------/ 00012 00013 File: MemUsage.h 00014 Author: Martin Vidner <mvidner@suse.cz> 00015 00016 $Id: MemUsage.h 16486 2004-03-17 12:52:25Z mvidner $ 00017 00018 /-*/ 00019 00020 #ifndef MemUsage_h 00021 #define MemUsage_h 00022 00023 #include <set> 00024 00025 00029 #undef D_MEMUSAGE 00030 00037 class MemUsage 00038 { 00039 protected: 00040 typedef std::set <MemUsage *> data; 00041 static data* m_mu_instances; 00042 00043 MemUsage () { 00044 if ( ! m_mu_instances ) 00045 { 00046 m_mu_instances = new data; 00047 } 00048 m_mu_instances->insert (this); 00049 } 00050 00051 virtual ~MemUsage () { 00052 m_mu_instances->erase (this); 00053 } 00054 public: 00056 static void MuDump (); 00058 // ready to be printed in gdb 00059 static void MuDumpVal (const char *name); 00060 00061 virtual size_t mem_size () const { return sizeof (*this); } 00062 }; 00063 00064 // this makes it easier for gdb. 00065 void MuDump (); 00066 void MuDumpVal (const char *name); 00067 00068 #endif