changes to fix at least a bug
[model-checker.git] / nodestack.h
index cb281cad65b1dbf7f60892f9c656ce0061afee84..648ef4dfc318afc38a4e98b1e31bf4a1bcc944eb 100644 (file)
@@ -53,7 +53,7 @@ struct fairness_info {
  */
 class Node {
 public:
-       Node(ModelAction *act = NULL, Node *par = NULL, int nthreads = 1, Node *prevfairness = NULL);
+       Node(ModelAction *act = NULL, Node *par = NULL, int nthreads = 2, Node *prevfairness = NULL);
        ~Node();
        /* return true = thread choice has already been explored */
        bool has_been_explored(thread_id_t tid);
@@ -66,6 +66,8 @@ public:
        thread_id_t get_next_backtrack();
        bool is_enabled(Thread *t);
        bool is_enabled(thread_id_t tid);
+       enabled_type_t enabled_status(thread_id_t tid);
+
        ModelAction * get_action() { return action; }
        bool has_priority(thread_id_t tid);
        int get_num_threads() {return num_threads;}
@@ -90,6 +92,12 @@ public:
        bool get_promise(unsigned int i);
        bool increment_promise();
        bool promise_empty();
+       enabled_type_t *get_enabled_array() {return enabled_array;}
+
+       void set_misc_max(int i);
+       int get_misc();
+       bool increment_misc();
+       bool misc_empty();
 
        void add_relseq_break(const ModelAction *write);
        const ModelAction * get_relseq_break();
@@ -124,6 +132,9 @@ private:
 
        std::vector< const ModelAction *, ModelAlloc<const ModelAction *> > relseq_break_writes;
        int relseq_break_index;
+
+       int misc_index;
+       int misc_max;
 };
 
 typedef std::vector< Node *, ModelAlloc< Node * > > node_list_t;