From: Simon Forman Date: Fri, 23 Sep 2022 03:08:24 +0000 (-0700) Subject: Create an int and add ints. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=ae864909ee433df9f857c23efc6248ef41d5b23e;p=joypy%2FThun.git Create an int and add ints. --- diff --git a/implementations/C/joy b/implementations/C/joy index a32fd77..22c6cf3 100755 Binary files a/implementations/C/joy and b/implementations/C/joy differ diff --git a/implementations/C/joy.c b/implementations/C/joy.c index ba0cc30..8e75d87 100644 --- a/implementations/C/joy.c +++ b/implementations/C/joy.c @@ -40,6 +40,14 @@ void my_callback(GC_PTR void_obj, GC_PTR void_environment) { mpz_clear(*obj); } +sexpr new_int(void) { + sexpr tmp = {GC_MALLOC(sizeof(struct cons))}; + mpz_init(tmp.i); + GC_register_finalizer(tmp.i, my_callback, NULL, NULL, NULL); + return (tmp); +} + + int main(void) { mp_set_memory_functions( @@ -47,11 +55,15 @@ int main(void) &reallocate_function, &deallocate_function ); - mpz_t pie; - //mpz_init_set_str (pie, "3141592653589793238462643383279502884", 10); - mpz_init_set_str (pie, "25d0c79fe247f31777d922627a74624", 16); - gmp_printf ("%Zd = %Zx\n", pie, pie); - GC_register_finalizer(pie, my_callback, NULL, NULL, NULL); + mpz_t pi; + //mpz_init_set_str (pi, "3141592653589793238462643383279502884", 10); + mpz_init_set_str (pi, "25d0c79fe247f31777d922627a74624", 16); + gmp_printf ("%Zd = %Zx\n", pi, pi); + GC_register_finalizer(pi, my_callback, NULL, NULL, NULL); + + sexpr i = new_int(); + mpz_add(i.i, pi, pi); + gmp_printf ("%Zd\n", i.i); return 0; //return to_i(car(cons(from_i(0),from_i(1))));