summary refs log tree commit diff
path: root/lisc/lisc.h
diff options
context:
space:
mode:
Diffstat (limited to 'lisc/lisc.h')
-rw-r--r--lisc/lisc.h24
1 files changed, 13 insertions, 11 deletions
diff --git a/lisc/lisc.h b/lisc/lisc.h
index 0ed9411..fde55c4 100644
--- a/lisc/lisc.h
+++ b/lisc/lisc.h
@@ -1,10 +1,10 @@
 #include <assert.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
 typedef unsigned int uint;
-typedef unsigned short ushort;
 typedef unsigned char uchar;
 typedef unsigned long long ullong;
 
@@ -39,27 +39,29 @@ struct Bits {
 #define BCLR(b, n) ((b).t[n/NBit] &= ~((ullong)1<<(n%NBit)))
 
 struct Ref {
-	ushort type:1;
-	ushort val:15;
+	uint16_t type:1;
+	uint16_t val:15;
 };
 
-#define R (Ref){0, 0} // Invalid reference
-
-static inline int
-req(Ref a, Ref b)
-{
-	return a.type == b.type && a.val == b.val;
-}
-
 enum {
 	RSym = 0,
 	RConst = 1,
 	NRef = (1<<15) - 1
 };
 
+#define R        (Ref){0, 0}
 #define SYM(x)   (Ref){RSym, x}
 #define CONST(x) (Ref){RConst, x}
 
+static inline int req(Ref a, Ref b)
+{
+	return a.type == b.type && a.val == b.val;
+}
+static inline int rtype(Ref r)
+{
+	return req(r, R) ? -1 : r.type;
+}
+
 enum {
 	OXXX = 0,
 	OAdd,