ref: e404c758ba24065c606359e8fc061ca144f2bf20
parent: 0e4a6559ca7f8e5c4c20f18bd39ce822abd67ca7
author: spew <spew@cbza.org>
date: Mon Apr 7 20:55:14 EDT 2025
add basic arithmetic on ptr
--- a/src/sl_arith_any.h
+++ b/src/sl_arith_any.h
@@ -7,6 +7,7 @@
mpint *Maccum = nil, *m = nil;
s64int Saccum = ACCUM_DEFAULT, x;
u64int u64;
+ uintptr uptr;
double Faccum = ACCUM_DEFAULT;
bool inexact = false;
sl_v arg;
@@ -51,6 +52,15 @@
}
x = u64;
break;
+ case T_PTR:
+ uptr = *(uintptr*)a;
+ if(uptr > INT64_MAX){
+ u64 = uptr;
+ x = ACCUM_DEFAULT;
+ goto overflow;
+ }
+ x = uptr;
+ break;
case T_BIGNUM:
x = ACCUM_DEFAULT;
u64 = ACCUM_DEFAULT;
@@ -110,6 +120,10 @@
case T_S64: x = *(s64int*)a; break;
case T_U64:
uvtomp(*(u64int*)a, m);
+ MP_OP(Maccum, m, Maccum);
+ continue;
+ case T_PTR:
+ uvtomp(*(uintptr*)a, m);
MP_OP(Maccum, m, Maccum);
continue;
case T_BIGNUM: