cyclegraph: propagate RMW atomicity edges down the chain
[c11tester.git] / stl-model.h
1 #ifndef __STL_MODEL_H__
2 #define __STL_MODEL_H__
3
4 #include <vector>
5 #include <list>
6 #include "mymemory.h"
7
8 template<typename _Tp>
9 class ModelList : public std::list<_Tp, ModelAlloc<_Tp> >
10 {
11  public:
12         typedef std::list< _Tp, ModelAlloc<_Tp> > list;
13
14         ModelList() :
15                 list()
16         { }
17
18         ModelList(size_t n, const _Tp& val = _Tp()) :
19                 list(n, val)
20         { }
21
22         MEMALLOC
23 };
24
25 template<typename _Tp>
26 class SnapList : public std::list<_Tp, SnapshotAlloc<_Tp> >
27 {
28  public:
29         typedef std::list<_Tp, SnapshotAlloc<_Tp> > list;
30
31         SnapList() :
32                 list()
33         { }
34
35         SnapList(size_t n, const _Tp& val = _Tp()) :
36                 list(n, val)
37         { }
38
39         SNAPSHOTALLOC
40 };
41
42 template<typename _Tp>
43 class ModelVector : public std::vector<_Tp, ModelAlloc<_Tp> >
44 {
45  public:
46         typedef std::vector< _Tp, ModelAlloc<_Tp> > vector;
47
48         ModelVector() :
49                 vector()
50         { }
51
52         ModelVector(size_t n, const _Tp& val = _Tp()) :
53                 vector(n, val)
54         { }
55
56         MEMALLOC
57 };
58
59 template<typename _Tp>
60 class SnapVector : public std::vector<_Tp, SnapshotAlloc<_Tp> >
61 {
62  public:
63         typedef std::vector< _Tp, SnapshotAlloc<_Tp> > vector;
64
65         SnapVector() :
66                 vector()
67         { }
68
69         SnapVector(size_t n, const _Tp& val = _Tp()) :
70                 vector(n, val)
71         { }
72
73         SNAPSHOTALLOC
74 };
75
76 #endif /* __STL_MODEL_H__ */