70f90eb8a93da61b647afb1b1323344c36c0c03b
[c11tester.git] / actionlist.h
1 #ifndef ACTIONLIST_H
2 #define ACTIONLIST_H
3
4 #include "classlist.h"
5 #include "stl-model.h"
6
7 #define ISACT 1
8 #define ALLBITS 4
9 #define ALLNODESIZE (1 << ALLBITS)
10 #define ALLMASK ((1 << ALLBITS)-1)
11 #define MODELCLOCKBITS 32
12
13 class allnode;
14 void decrementCount(allnode *);
15
16 class allnode {
17 public:
18         allnode();
19         ~allnode();
20         SNAPSHOTALLOC;
21
22 private:
23         allnode * parent;
24         allnode * children[ALLNODESIZE];
25         int count;
26         sllnode<ModelAction *> * findPrev(modelclock_t index);
27         friend class actionlist;
28         friend void decrementCount(allnode *);
29 };
30
31 class actionlist {
32 public:
33         actionlist();
34         ~actionlist();
35         void addAction(ModelAction * act);
36         void removeAction(ModelAction * act);
37         void clear();
38         bool isEmpty();
39         uint size() {return _size;}
40         sllnode<ModelAction *> * begin() {return head;}
41         sllnode<ModelAction *> * end() {return tail;}
42
43         SNAPSHOTALLOC;
44
45 private:
46         allnode root;
47         sllnode<ModelAction *> * head;
48         sllnode<ModelAction* > * tail;
49
50         uint _size;
51 };
52 #endif