/* -*-c-*-
*
- * $Id: mpint.c,v 1.1 1999/11/25 11:38:31 mdw Exp $
+ * $Id: mpint.c,v 1.3 2000/10/08 12:11:22 mdw Exp $
*
* Conversion between MPs and standard C integers
*
/*----- Revision history --------------------------------------------------*
*
* $Log: mpint.c,v $
+ * Revision 1.3 2000/10/08 12:11:22 mdw
+ * Use @MP_EQ@ instead of @MP_CMP@.
+ *
+ * Revision 1.2 1999/12/10 23:22:53 mdw
+ * Support for uint32.
+ *
* Revision 1.1 1999/11/25 11:38:31 mdw
* Support for conversions between MPs and C integers.
*
FROM(ushort, unsigned short)
FROM(int, int)
FROM(uint, unsigned)
+FROM(uint32, uint32)
FROM(long, long)
FROM(ulong, unsigned long)
TO(ushort, unsigned short, USHRT_MAX)
TO(int, int, INT_MAX)
TO(uint, unsigned, UINT_MAX)
+TO(uint32, uint32, 0xffffffff)
TO(long, long, LONG_MAX)
TO(ulong, unsigned long, ULONG_MAX)
static int fromuint(dstr *v)
{
- unsigned i = *(unsigned *)v[0].buf;
+ unsigned long i = *(unsigned long *)v[0].buf;
mp *m = *(mp **)v[1].buf;
mp *d = mp_fromuint(MP_NEW, i);
int ok = 1;
- if (MP_CMP(d, !=, m)) {
+ if (!MP_EQ(d, m)) {
fputs("\n*** fromint failed.\n", stderr);
- fprintf(stderr, "i = %u", i);
+ fprintf(stderr, "i = %lu", i);
fputs("\nexpect = ", stderr); mp_writefile(m, stderr, 10);
fputs("\nresult = ", stderr); mp_writefile(d, stderr, 10);
fputc('\n', stderr);
mp_drop(m);
mp_drop(d);
+ assert(mparena_count(MPARENA_GLOBAL) == 0);
return (ok);
}
static int fromint(dstr *v)
{
- int i = *(int *)v[0].buf;
+ long i = *(long *)v[0].buf;
mp *m = *(mp **)v[1].buf;
mp *d = mp_fromint(MP_NEW, i);
int ok = 1;
- if (MP_CMP(d, !=, m)) {
+ if (!MP_EQ(d, m)) {
fputs("\n*** fromint failed.\n", stderr);
- fprintf(stderr, "i = %i", i);
+ fprintf(stderr, "i = %li", i);
fputs("\nexpect = ", stderr); mp_writefile(m, stderr, 10);
fputs("\nresult = ", stderr); mp_writefile(d, stderr, 10);
fputc('\n', stderr);
mp_drop(m);
mp_drop(d);
+ assert(mparena_count(MPARENA_GLOBAL) == 0);
return (ok);
}
static int touint(dstr *v)
{
mp *m = *(mp **)v[0].buf;
- unsigned i = *(unsigned *)v[1].buf;
+ unsigned long i = *(unsigned long *)v[1].buf;
unsigned j = mp_touint(m);
int ok = 1;
if (i != j) {
fputs("\n*** touint failed.\n", stderr);
fputs("m = ", stderr); mp_writefile(m, stderr, 10);
- fprintf(stderr, "\nexpect = %u; result = %u\n", i, j);
+ fprintf(stderr, "\nexpect = %lu; result = %u\n", i, j);
ok = 0;
}
mp_drop(m);
+ assert(mparena_count(MPARENA_GLOBAL) == 0);
return (ok);
}
static int toint(dstr *v)
{
mp *m = *(mp **)v[0].buf;
- int i = *(int *)v[1].buf;
+ long i = *(long *)v[1].buf;
int j = mp_toint(m);
int ok = 1;
if (i != j) {
fputs("\n*** toint failed.\n", stderr);
fputs("m = ", stderr); mp_writefile(m, stderr, 10);
- fprintf(stderr, "\nexpect = %i; result = %i\n", i, j);
+ fprintf(stderr, "\nexpect = %li; result = %i\n", i, j);
ok = 0;
}
mp_drop(m);
+ assert(mparena_count(MPARENA_GLOBAL) == 0);
return (ok);
}
static test_chunk tests[] = {
- { "fromuint", fromuint, { &type_int, &type_mp, 0 } },
- { "fromint", fromint, { &type_int, &type_mp, 0 } },
- { "touint", touint, { &type_mp, &type_int, 0 } },
- { "toint", toint, { &type_mp, &type_int, 0 } },
+ { "fromuint", fromuint, { &type_ulong, &type_mp, 0 } },
+ { "fromint", fromint, { &type_long, &type_mp, 0 } },
+ { "touint", touint, { &type_mp, &type_ulong, 0 } },
+ { "toint", toint, { &type_mp, &type_long, 0 } },
{ 0, 0, { 0 } }
};