unrelacy: define the relacy ASSERT macros, fixup rl::var
authorBrian Norris <banorris@uci.edu>
Sat, 3 Nov 2012 01:19:34 +0000 (18:19 -0700)
committerBrian Norris <banorris@uci.edu>
Sat, 3 Nov 2012 01:19:34 +0000 (18:19 -0700)
include/unrelacy.h

index 3f2e5ebdf429b918b0624a81be88c4100ac47de7..d65ffc3d1b2f7168313aac05563cf19be8a5aae1 100644 (file)
@@ -2,12 +2,18 @@
 #define __UNRELACY_H__
 
 #include <stdatomic.h>
 #define __UNRELACY_H__
 
 #include <stdatomic.h>
+#include <stdlib.h>
+#include <stdio.h>
 
 #define $
 
 
 #define $
 
-/* Should re-define to something meaningful */
-#define ASSERT(expr)
-#define RL_ASSERT(expr)
+#define _TEST_ASSERT(expr) \
+       if (!(expr)) { \
+               printf("Error: assertion failed at %s:%d\n", __FILE__, __LINE__); \
+               exit(EXIT_FAILURE); \
+       }
+#define ASSERT(expr) _TEST_ASSERT(expr)
+#define RL_ASSERT(expr) _TEST_ASSERT(expr)
 
 #define RL_NEW new
 #define RL_DELETE(expr) delete expr
 
 #define RL_NEW new
 #define RL_DELETE(expr) delete expr
@@ -24,12 +30,13 @@ namespace rl {
        struct var {
                var() { value = 0; }
                var(T v) { value = v; }
        struct var {
                var() { value = 0; }
                var(T v) { value = v; }
-               var(var const& r) { value = r; }
+               var(var const& r) { value = r.value; }
                ~var() { }
 
                void operator = (T v) { value = v; }
                T operator () () { return value; }
                void operator += (T v) { value += v; }
                ~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;
        };
 
                T value;
        };