version 1.24, 2003/05/25 16:35:40 |
version 1.26, 2003/08/21 12:44:06 |
|
|
/* -*- mode: C; coding: euc-japan -*- */ |
/* -*- mode: C; coding: euc-japan -*- */ |
/* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.23 2003/03/30 08:05:22 ohara Exp $ */ |
/* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.25 2003/06/02 10:25:56 ohara Exp $ */ |
|
|
/* |
/* |
This module includes functions for sending/receiveng CMO's. |
This module includes functions for sending/receiveng CMO's. |
Line 33 static cmo_zero* receive_cmo_zero(OXFILE *oxfp |
|
Line 33 static cmo_zero* receive_cmo_zero(OXFILE *oxfp |
|
static cmo_dms_generic* receive_cmo_dms_generic(OXFILE *oxfp); |
static cmo_dms_generic* receive_cmo_dms_generic(OXFILE *oxfp); |
static cmo_ring_by_name* receive_cmo_ring_by_name(OXFILE *oxfp); |
static cmo_ring_by_name* receive_cmo_ring_by_name(OXFILE *oxfp); |
static cmo_distributed_polynomial* receive_cmo_distributed_polynomial(OXFILE *oxfp); |
static cmo_distributed_polynomial* receive_cmo_distributed_polynomial(OXFILE *oxfp); |
|
static cmo_recursive_polynomial* receive_cmo_recursive_polynomial(OXFILE *oxfp); |
|
static cmo_polynomial_in_one_variable* receive_cmo_polynomial_in_one_variable(OXFILE *oxfp); |
static cmo_error2* receive_cmo_error2(OXFILE *oxfp); |
static cmo_error2* receive_cmo_error2(OXFILE *oxfp); |
|
|
static int send_cmo_null(OXFILE *oxfp, cmo_null* c); |
static int send_cmo_null(OXFILE *oxfp, cmo_null* c); |
Line 43 static int send_cmo_list(OXFILE *oxfp, cmo_li |
|
Line 45 static int send_cmo_list(OXFILE *oxfp, cmo_li |
|
static int send_cmo_monomial32(OXFILE *oxfp, cmo_monomial32* c); |
static int send_cmo_monomial32(OXFILE *oxfp, cmo_monomial32* c); |
static int send_cmo_error2(OXFILE *oxfp, cmo_error2* c); |
static int send_cmo_error2(OXFILE *oxfp, cmo_error2* c); |
static int send_cmo_distributed_polynomial(OXFILE *oxfp, cmo_distributed_polynomial* c); |
static int send_cmo_distributed_polynomial(OXFILE *oxfp, cmo_distributed_polynomial* c); |
|
static int send_cmo_polynomial_in_one_variable(OXFILE *oxfp, cmo_polynomial_in_one_variable* c); |
|
static int send_cmo_recursive_polynomial(OXFILE *oxfp, cmo_recursive_polynomial* c); |
|
|
static cmo_zz* receive_cmo_zz(OXFILE *oxfp); |
static cmo_zz* receive_cmo_zz(OXFILE *oxfp); |
static void receive_mpz(OXFILE *oxfp, mpz_ptr mpz); |
static void receive_mpz(OXFILE *oxfp, mpz_ptr mpz); |
Line 142 static cmo_int32* receive_cmo_int32(OXFILE *oxfp) |
|
Line 146 static cmo_int32* receive_cmo_int32(OXFILE *oxfp) |
|
static cmo_string* receive_cmo_string(OXFILE *oxfp) |
static cmo_string* receive_cmo_string(OXFILE *oxfp) |
{ |
{ |
int len = receive_int32(oxfp); |
int len = receive_int32(oxfp); |
char* s = malloc(len+1); |
char* s = MALLOC(len+1); |
memset(s, '\0', len+1); |
memset(s, '\0', len+1); |
if (len > 0) { |
if (len > 0) { |
oxf_read(s, 1, len, oxfp); |
oxf_read(s, 1, len, oxfp); |
Line 207 static cmo_ring_by_name* receive_cmo_ring_by_name(OXFI |
|
Line 211 static cmo_ring_by_name* receive_cmo_ring_by_name(OXFI |
|
return new_cmo_ring_by_name(ob); |
return new_cmo_ring_by_name(ob); |
} |
} |
|
|
|
static cmo_recursive_polynomial* receive_cmo_recursive_polynomial(OXFILE *oxfp) |
|
{ |
|
cmo* ringdef = receive_cmo(oxfp); |
|
cmo* coef = receive_cmo(oxfp); |
|
return new_cmo_recursive_polynomial(ringdef, coef); |
|
} |
|
|
static cmo_distributed_polynomial* receive_cmo_distributed_polynomial(OXFILE *oxfp) |
static cmo_distributed_polynomial* receive_cmo_distributed_polynomial(OXFILE *oxfp) |
{ |
{ |
cmo* ob; |
cmo* ob; |
Line 222 static cmo_distributed_polynomial* receive_cmo_distrib |
|
Line 233 static cmo_distributed_polynomial* receive_cmo_distrib |
|
return c; |
return c; |
} |
} |
|
|
|
static cmo_polynomial_in_one_variable* receive_cmo_polynomial_in_one_variable(OXFILE *oxfp) |
|
{ |
|
cmo* coef; |
|
cmo_polynomial_in_one_variable* c; |
|
int len = receive_int32(oxfp); |
|
int var = receive_int32(oxfp); |
|
int exp; |
|
c = new_cmo_polynomial_in_one_variable(var); |
|
while (len>0) { |
|
exp = receive_int32(oxfp); |
|
coef = receive_cmo(oxfp); |
|
list_append_monomial(c, coef, exp); |
|
len--; |
|
} |
|
return c; |
|
} |
|
|
static cmo_error2* receive_cmo_error2(OXFILE *oxfp) |
static cmo_error2* receive_cmo_error2(OXFILE *oxfp) |
{ |
{ |
cmo* ob = receive_cmo(oxfp); |
cmo* ob = receive_cmo(oxfp); |
Line 272 cmo *receive_cmo_tag(OXFILE *oxfp, int tag) |
|
Line 300 cmo *receive_cmo_tag(OXFILE *oxfp, int tag) |
|
case CMO_DISTRIBUTED_POLYNOMIAL: |
case CMO_DISTRIBUTED_POLYNOMIAL: |
m = (cmo *)receive_cmo_distributed_polynomial(oxfp); |
m = (cmo *)receive_cmo_distributed_polynomial(oxfp); |
break; |
break; |
|
case CMO_RECURSIVE_POLYNOMIAL: |
|
m = (cmo *)receive_cmo_recursive_polynomial(oxfp); |
|
break; |
|
case CMO_POLYNOMIAL_IN_ONE_VARIABLE: |
|
m = (cmo *)receive_cmo_polynomial_in_one_variable(oxfp); |
case CMO_ERROR2: |
case CMO_ERROR2: |
m = (cmo *)receive_cmo_error2(oxfp); |
m = (cmo *)receive_cmo_error2(oxfp); |
break; |
break; |
Line 467 static int send_cmo_distributed_polynomial(OXFILE *oxf |
|
Line 500 static int send_cmo_distributed_polynomial(OXFILE *oxf |
|
return 0; |
return 0; |
} |
} |
|
|
|
static int send_cmo_polynomial_in_one_variable(OXFILE *oxfp, cmo_polynomial_in_one_variable* c) |
|
{ |
|
cell* el = list_first(c); |
|
int len = list_length(c); |
|
send_int32(oxfp, len); |
|
send_int32(oxfp, c->var); |
|
|
|
while(!list_endof(c, el)) { |
|
send_cmo(oxfp, el->exp); |
|
send_cmo(oxfp, el->cmo); |
|
el = list_next(el); |
|
} |
|
return 0; |
|
} |
|
|
static int send_cmo_monomial32(OXFILE *oxfp, cmo_monomial32* c) |
static int send_cmo_monomial32(OXFILE *oxfp, cmo_monomial32* c) |
{ |
{ |
int i; |
int i; |
Line 485 static int send_cmo_zz(OXFILE *oxfp, cmo_zz* c) |
|
Line 533 static int send_cmo_zz(OXFILE *oxfp, cmo_zz* c) |
|
return 0; |
return 0; |
} |
} |
|
|
|
static int send_cmo_recursive_polynomial(OXFILE *oxfp, cmo_recursive_polynomial* c) |
|
{ |
|
send_cmo(oxfp, c->ringdef); |
|
send_cmo(oxfp, c->coef); |
|
return 0; |
|
} |
|
|
static int send_cmo_error2(OXFILE *oxfp, cmo_error2* c) |
static int send_cmo_error2(OXFILE *oxfp, cmo_error2* c) |
{ |
{ |
send_cmo(oxfp, c->ob); |
send_cmo(oxfp, c->ob); |
Line 529 void send_cmo(OXFILE *oxfp, cmo* c) |
|
Line 584 void send_cmo(OXFILE *oxfp, cmo* c) |
|
case CMO_DISTRIBUTED_POLYNOMIAL: |
case CMO_DISTRIBUTED_POLYNOMIAL: |
send_cmo_distributed_polynomial(oxfp, (cmo_distributed_polynomial *)c); |
send_cmo_distributed_polynomial(oxfp, (cmo_distributed_polynomial *)c); |
break; |
break; |
|
case CMO_RECURSIVE_POLYNOMIAL: |
|
send_cmo_recursive_polynomial(oxfp, (cmo_recursive_polynomial *)c); |
|
break; |
|
case CMO_POLYNOMIAL_IN_ONE_VARIABLE: |
|
send_cmo_polynomial_in_one_variable(oxfp, (cmo_polynomial_in_one_variable *)c); |
|
break; |
default: |
default: |
call_hook_after_send_cmo(oxfp, c); |
call_hook_after_send_cmo(oxfp, c); |
} |
} |
Line 547 static int send_mpz(OXFILE *oxfp, mpz_ptr mpz) |
|
Line 608 static int send_mpz(OXFILE *oxfp, mpz_ptr mpz) |
|
|
|
ox_data* new_ox_data(cmo* c) |
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->tag = OX_DATA; |
m->cmo = c; |
m->cmo = c; |
return m; |
return m; |
Line 555 ox_data* new_ox_data(cmo* c) |
|
Line 616 ox_data* new_ox_data(cmo* c) |
|
|
|
ox_command* new_ox_command(int sm_code) |
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->tag = OX_COMMAND; |
m->command = sm_code; |
m->command = sm_code; |
return m; |
return m; |
Line 563 ox_command* new_ox_command(int sm_code) |
|
Line 624 ox_command* new_ox_command(int sm_code) |
|
|
|
ox_sync_ball* new_ox_sync_ball() |
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; |
m->tag = OX_SYNC_BALL; |
return m; |
return m; |
} |
} |