-
Notifications
You must be signed in to change notification settings - Fork 0
/
Allocator.h
68 lines (51 loc) · 1.95 KB
/
Allocator.h
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#pragma once
#ifndef __Allocator_h__
#define __Allocator_h__ 2.1
//#ident "@(#)Allocator.h 2.1 AKK 20090222"
#include "Area.h" // voor: class Area
/** @file Allocator.h
* @brief The Allocator interface.
* @author [email protected]
* @version 2.1 2009/02/22
*/
/** @class Allocator
* Beschrijft de interface van een geheugenbeheer class/module.
*/
class Allocator
{
protected:
bool cflag; ///< "check" mode on/off;
///< When check mode is enabled various extra sanitychecks are
///< expected to be activated (which may cost some performance).
const char *type; ///< De naam van het algoritme b.v. "FirstFit", "Buddy", etc
int size; ///< Hoeveel geheugen we beheren.
///< Uitgedrukt in een willekeurige eenheid
/// The constructor of derived classes should use this constructor
/// to set common data.
/// @param cflag initiele toestand van de checkmode vlag
/// @param type naam van het algorithme
Allocator(bool cflag, const char *type);
public:
virtual ~Allocator() {} // ivm inheritance
/// Vraag de naam van het algorithme op.
const char *getType() const { return type; }
/// Hoeveel geheugen beheren we.
int getSize() const { return size; }
/// Verander de check-mode.
void setCheck(bool c) { cflag = c; }
/// Stel de omvang van het te beheren gebied in.
// Afgeleide classes MOGEN setSize zelf herdefinieren
// zolang ze deze methode maar aanroepen via
// Allocator::setSize(...);
virtual void setSize(int size);
// Afgeleide classes MOETEN de volgende methodes zelf definieren.
virtual Area *alloc(int wanted) = 0; ///< Application vraagt om geheugen
virtual void free(Area *) = 0; ///< Application geeft een Area weer terug aan geheugenbeheer
virtual void report() = 0; ///< Report performance statistics
// ... en hier komen straks misschien nog andere functies ...
// ... om b.v. de overhead te bepalen ...
// ... of de fragmentatie graad ...
//
};
#endif /*Allocator_h*/
// vim:sw=4:ai:aw:ts=4: