#ifndef __MODEL_H__
#define __MODEL_H__
-#include <vector>
+#include "stl_wrappers.h"
#include <cstddef>
#include <ucontext.h>
#include <inttypes.h>
struct model_snapshot_members;
/** @brief Shorthand for a list of release sequence heads */
-typedef std::vector< const ModelAction *, ModelAlloc<const ModelAction *> > rel_heads_list_t;
+typedef model_vector< const ModelAction * > rel_heads_list_t;
-typedef std::list< ModelAction *, SnapshotAlloc<ModelAction *> > action_list_t;
+typedef snap_list< ModelAction * > action_list_t;
/**
* Model checker parameter structure. Holds run-time configuration options for
* to a trace of all actions performed on the object. */
HashTable<const void *, action_list_t *, uintptr_t, 4> * const condvar_waiters_map;
- HashTable<void *, std::vector<action_list_t> *, uintptr_t, 4 > * const obj_thrd_map;
- std::vector< Promise *, SnapshotAlloc<Promise *> > * const promises;
- std::vector< struct PendingFutureValue, SnapshotAlloc<struct PendingFutureValue> > * const futurevalues;
+ HashTable<void *, snap_vector<action_list_t> *, uintptr_t, 4 > * const obj_thrd_map;
+ snap_vector< Promise * > * const promises;
+ snap_vector< struct PendingFutureValue > * const futurevalues;
/**
* List of pending release sequences. Release sequences might be
* are established. Each entry in the list may only be partially
* filled, depending on its pending status.
*/
- std::vector< struct release_seq *, SnapshotAlloc<struct release_seq *> > * const pending_rel_seqs;
+ snap_vector< struct release_seq * > * const pending_rel_seqs;
- std::vector< ModelAction *, SnapshotAlloc<ModelAction *> > * const thrd_last_action;
- std::vector< ModelAction *, SnapshotAlloc<ModelAction *> > * const thrd_last_fence_release;
+ snap_vector< ModelAction * > * const thrd_last_action;
+ snap_vector< ModelAction * > * const thrd_last_fence_release;
NodeStack * const node_stack;
/** Private data members that should be snapshotted. They are grouped