=================================================================== RCS file: /home/cvs/OpenXM/src/ox_toolkit/ox.c,v retrieving revision 1.22 retrieving revision 1.25 diff -u -p -r1.22 -r1.25 --- OpenXM/src/ox_toolkit/ox.c 2003/03/23 20:17:35 1.22 +++ OpenXM/src/ox_toolkit/ox.c 2003/06/02 10:25:56 1.25 @@ -1,5 +1,5 @@ /* -*- mode: C; coding: euc-japan -*- */ -/* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.21 2003/02/04 20:43:55 ohara Exp $ */ +/* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.24 2003/05/25 16:35:40 ohara Exp $ */ /* This module includes functions for sending/receiveng CMO's. @@ -44,12 +44,10 @@ static int send_cmo_monomial32(OXFILE *oxfp, static int send_cmo_error2(OXFILE *oxfp, cmo_error2* c); static int send_cmo_distributed_polynomial(OXFILE *oxfp, cmo_distributed_polynomial* c); -#if defined(WITH_GMP) static cmo_zz* receive_cmo_zz(OXFILE *oxfp); static void receive_mpz(OXFILE *oxfp, mpz_ptr mpz); static int send_cmo_zz(OXFILE *oxfp, cmo_zz* c); static int send_mpz(OXFILE *oxfp, mpz_ptr mpz); -#endif /* WITH_GMP */ /* hook functions. (yet not implemented) */ static hook_t hook_before_send_cmo = NULL; @@ -144,7 +142,7 @@ static cmo_int32* receive_cmo_int32(OXFILE *oxfp) static cmo_string* receive_cmo_string(OXFILE *oxfp) { int len = receive_int32(oxfp); - char* s = malloc(len+1); + char* s = MALLOC(len+1); memset(s, '\0', len+1); if (len > 0) { oxf_read(s, 1, len, oxfp); @@ -185,14 +183,12 @@ static cmo_monomial32* receive_cmo_monomial32(OXFILE * return c; } -#if defined(WITH_GMP) static cmo_zz* receive_cmo_zz(OXFILE *oxfp) { cmo_zz* c = new_cmo_zz(); receive_mpz(oxfp, c->mpz); return c; } -#endif /* WITH_GMP */ static cmo_zero* receive_cmo_zero(OXFILE *oxfp) { @@ -235,8 +231,13 @@ static cmo_error2* receive_cmo_error2(OXFILE *oxfp) /* receive_cmo() is called after receive_ox_tag(). */ cmo* receive_cmo(OXFILE *oxfp) { - cmo* m; int tag = receive_int32(oxfp); + return receive_cmo_tag(oxfp, tag); +} + +cmo *receive_cmo_tag(OXFILE *oxfp, int tag) +{ + cmo* m; switch(tag) { case CMO_NULL: m = receive_cmo_null(oxfp); @@ -256,11 +257,9 @@ cmo* receive_cmo(OXFILE *oxfp) case CMO_MONOMIAL32: m = (cmo *)receive_cmo_monomial32(oxfp); break; -#if defined(WITH_GMP) case CMO_ZZ: m = (cmo *)receive_cmo_zz(oxfp); break; -#endif /* WITH_GMP */ case CMO_ZERO: m = (cmo *)receive_cmo_zero(oxfp); break; @@ -285,7 +284,6 @@ cmo* receive_cmo(OXFILE *oxfp) return m; } -#if defined(WITH_GMP) static void receive_mpz(OXFILE *oxfp, mpz_ptr mpz) { int i; @@ -297,7 +295,6 @@ static void receive_mpz(OXFILE *oxfp, mpz_ptr mpz) mpz->_mp_d[i] = receive_int32(oxfp); } } -#endif /* WITH_GMP */ void send_ox_command(OXFILE *oxfp, int sm_command) { @@ -482,13 +479,11 @@ static int send_cmo_monomial32(OXFILE *oxfp, cmo_monom return 0; } -#if defined(WITH_GMP) static int send_cmo_zz(OXFILE *oxfp, cmo_zz* c) { send_mpz(oxfp, c->mpz); return 0; } -#endif /* WITH_GMP */ static int send_cmo_error2(OXFILE *oxfp, cmo_error2* c) { @@ -528,11 +523,9 @@ void send_cmo(OXFILE *oxfp, cmo* c) case CMO_MONOMIAL32: send_cmo_monomial32(oxfp, (cmo_monomial32 *)c); break; -#if defined(WITH_GMP) case CMO_ZZ: send_cmo_zz(oxfp, (cmo_zz *)c); break; -#endif /* WITH_GMP */ case CMO_DISTRIBUTED_POLYNOMIAL: send_cmo_distributed_polynomial(oxfp, (cmo_distributed_polynomial *)c); break; @@ -541,7 +534,6 @@ void send_cmo(OXFILE *oxfp, cmo* c) } } -#if defined(WITH_GMP) static int send_mpz(OXFILE *oxfp, mpz_ptr mpz) { int i; @@ -552,11 +544,10 @@ static int send_mpz(OXFILE *oxfp, mpz_ptr mpz) } return 0; } -#endif /* WITH_GMP */ ox_data* new_ox_data(cmo* c) { - ox_data* m = malloc(sizeof(ox_data)); + ox_data* m = MALLOC(sizeof(ox_data)); m->tag = OX_DATA; m->cmo = c; return m; @@ -564,7 +555,7 @@ ox_data* new_ox_data(cmo* c) ox_command* new_ox_command(int sm_code) { - ox_command* m = malloc(sizeof(ox_command)); + ox_command* m = MALLOC(sizeof(ox_command)); m->tag = OX_COMMAND; m->command = sm_code; return m; @@ -572,7 +563,7 @@ ox_command* new_ox_command(int sm_code) ox_sync_ball* new_ox_sync_ball() { - ox_sync_ball *m = malloc(sizeof(ox_sync_ball)); + ox_sync_ball *m = MALLOC(sizeof(ox_sync_ball)); m->tag = OX_SYNC_BALL; return m; }