File: memsize_interface.h

package info (click to toggle)
asc 2.6.1.0-9
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 81,740 kB
  • sloc: cpp: 158,704; sh: 11,544; ansic: 6,736; makefile: 604; perl: 138
file content (36 lines) | stat: -rw-r--r-- 1,198 bytes parent folder | download | duplicates (8)
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