action: add {get,set}_value(), assign default value
[cdsspec-compiler.git] / action.h
index f554e36cbb0495ce0658595970086891968b48b9..e342e63271d223417e55393d4d8bc941b1d2a0ba 100644 (file)
--- a/action.h
+++ b/action.h
@@ -31,18 +31,20 @@ class ClockVector;
  */
 class ModelAction {
 public:
-       ModelAction(action_type_t type, memory_order order, void *loc, int value);
+       ModelAction(action_type_t type, memory_order order, void *loc, int value = VALUE_NONE);
        ~ModelAction();
-       void print(void);
+       void print(void) const;
 
        thread_id_t get_tid() const { return tid; }
        action_type get_type() const { return type; }
        memory_order get_mo() const { return order; }
        void * get_location() const { return location; }
        int get_seq_number() const { return seq_number; }
+       int get_value() const { return value; }
 
        Node * get_node() const { return node; }
        void set_node(Node *n) { node = n; }
+       void set_value(int val) { value = val; }
 
        bool is_read() const;
        bool is_write() const;
@@ -58,6 +60,8 @@ public:
        ClockVector * get_cv() const { return cv; }
        void read_from(ModelAction *act);
 
+       bool happens_before(ModelAction *act);
+
        inline bool operator <(const ModelAction& act) const {
                return get_seq_number() < act.get_seq_number();
        }