unrelacy: include <mutex> and <condition_variable>
[model-checker-benchmarks.git] / include / unrelacy.h
index f4d75e8..c16a373 100644 (file)
@@ -1,9 +1,21 @@
+#ifndef __UNRELACY_H__
+#define __UNRELACY_H__
+
 #include <stdatomic.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <mutex>
+#include <condition_variable>
+
+#include <model-assert.h>
 
 #define $
 
-/* Should re-define to something meaningful */
-#define ASSERT(expr)
+#define ASSERT(expr) MODEL_ASSERT(expr)
+#define RL_ASSERT(expr) MODEL_ASSERT(expr)
+
+#define RL_NEW new
+#define RL_DELETE(expr) delete expr
 
 #define mo_seqcst memory_order_relaxed
 #define mo_release memory_order_release
 
 namespace rl {
 
+       template <typename T>
+       struct var {
+               var() { value = 0; }
+               var(T v) { value = v; }
+               var(var const& r) { value = r.value; }
+               ~var() { }
+
+               void operator = (T v) { value = v; }
+               T operator () () { return value; }
+               void operator += (T v) { value += v; }
+               bool operator == (const struct var<T> v) const { return value == v.value; }
+
+               T value;
+       };
+
        class backoff_t
        {
         public:
@@ -27,3 +54,5 @@ namespace rl {
        typedef backoff_t exp_backoff;
 
 }
+
+#endif /* __UNRELACY_H__ */