-/* File z-util.h */
+/* File z-util.h */
+
+/*
+ * Copyright (c) 1997 Ben Harrison
+ *
+ * This software may be copied and distributed for educational, research,
+ * and not for profit purposes provided that this copyright and statement
+ * are included in all such copies.
+ */
#ifndef INCLUDED_Z_UTIL_H
#define INCLUDED_Z_UTIL_H
/**** Available variables ****/
-/* Temporary Vars */
-extern char char_tmp;
-extern byte byte_tmp;
-extern sint sint_tmp;
-extern uint uint_tmp;
-extern long long_tmp;
-extern huge huge_tmp;
-extern errr errr_tmp;
-
-/* Temporary Pointers */
-extern cptr cptr_tmp;
-extern vptr vptr_tmp;
-
-
-/* Constant pointers (NULL) */
-extern cptr cptr_null;
-extern vptr vptr_null;
-
-
-/* A bizarre vptr that always points at itself */
-extern vptr vptr_self;
-
-
/* A cptr to the name of the program */
extern cptr argv0;
/**** Available Functions ****/
-/* Function that does nothing */
-extern void func_nothing(void);
-
-/* Functions that return basic "errr" codes */
-extern errr func_success(void);
-extern errr func_problem(void);
-extern errr func_failure(void);
-
-/* Functions that return bools */
-extern bool func_true(void);
-extern bool func_false(void);
-
-
/* Test equality, prefix, suffix */
extern bool streq(cptr s, cptr t);
extern bool prefix(cptr s, cptr t);
extern void core(cptr str);
+/* 64-bit integer operations */
+#define s64b_LSHIFT(V1, V2, N) {V1 = (V1<<(N)) | (V2>>(32-(N))); V2 <<= (N);}
+#define s64b_RSHIFT(V1, V2, N) {V2 = (V1<<(32-(N))) | (V2>>(N)); V1 >>= (N);}
+extern void s64b_add(s32b *A1, u32b *A2, s32b B1, u32b B2);
+extern void s64b_sub(s32b *A1, u32b *A2, s32b B1, u32b B2);
+extern int s64b_cmp(s32b A1, u32b A2, s32b B1, u32b B2);
+extern void s64b_mul(s32b *A1, u32b *A2, s32b B1, u32b B2);
+extern void s64b_div(s32b *A1, u32b *A2, s32b B1, u32b B2);
+extern void s64b_mod(s32b *A1, u32b *A2, s32b B1, u32b B2);
+
#endif