2007-06-02 23:36:55 +00:00
|
|
|
#ifndef HEAP_H
|
|
|
|
#define HEAP_H
|
|
|
|
|
2007-06-08 14:23:04 +00:00
|
|
|
#include "system.h"
|
|
|
|
|
2007-06-02 23:36:55 +00:00
|
|
|
class Heap {
|
|
|
|
public:
|
|
|
|
enum CollectionType {
|
|
|
|
MinorCollection,
|
|
|
|
MajorCollection
|
|
|
|
};
|
|
|
|
|
|
|
|
class Visitor {
|
2007-06-03 01:58:47 +00:00
|
|
|
public:
|
2007-06-02 23:36:55 +00:00
|
|
|
virtual ~Visitor() { }
|
|
|
|
virtual void visit(void**) = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
class Iterator {
|
2007-06-03 01:58:47 +00:00
|
|
|
public:
|
2007-06-02 23:36:55 +00:00
|
|
|
virtual ~Iterator() { }
|
|
|
|
virtual void iterate(Visitor*) = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
virtual ~Heap() { }
|
|
|
|
virtual void collect(CollectionType type, Iterator* it) = 0;
|
2007-06-08 14:23:04 +00:00
|
|
|
virtual void check(void** p, System::Monitor* lock) = 0;
|
2007-06-02 23:36:55 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif//HEAP_H
|