1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef memsizeinterfaceH
#define memsizeinterfaceH
class MemorySizeQueryInterface {
public:
virtual int getMemoryFootprint() const = 0;
virtual ~MemorySizeQueryInterface(){};
};
template<typename T>
int getMemoryFootprint( const T& t )
{
return t.getMemoryFootprint();
};
template<class T>
struct MemorySum : public unary_function<T, void>
{
MemorySum() : size(0) {}
void operator() (const T& x) { size += getMemoryFootprint(x); }
void operator() (const T* x) { size += getMemoryFootprint(*x); }
int size;
};
#endif
|