version 1.30, 2003/11/09 01:48:01 |
version 1.34, 2007/03/14 10:30:54 |
|
|
/* -*- mode: C; coding: euc-japan -*- */ |
/* -*- mode: C; coding: euc-japan -*- */ |
/* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.29 2003/09/18 20:30:00 ohara Exp $ */ |
/* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.33 2005/03/03 07:25:17 ohara Exp $ */ |
|
|
/* |
/* |
This module includes functions for sending/receiveng CMO's. |
This module includes functions for sending/receiveng CMO's. |
Line 35 static cmo_ring_by_name* receive_cmo_ring_by_name(OXFI |
|
Line 35 static cmo_ring_by_name* receive_cmo_ring_by_name(OXFI |
|
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_recursive_polynomial* receive_cmo_recursive_polynomial(OXFILE *oxfp); |
static cmo_polynomial_in_one_variable* receive_cmo_polynomial_in_one_variable(OXFILE *oxfp); |
static cmo_polynomial_in_one_variable* receive_cmo_polynomial_in_one_variable(OXFILE *oxfp); |
|
static cmo_double* receive_cmo_double(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_string(OXFILE *oxfp, cmo_ |
|
Line 44 static int send_cmo_string(OXFILE *oxfp, cmo_ |
|
static int send_cmo_mathcap(OXFILE *oxfp, cmo_mathcap* c); |
static int send_cmo_mathcap(OXFILE *oxfp, cmo_mathcap* c); |
static int send_cmo_list(OXFILE *oxfp, cmo_list* c); |
static int send_cmo_list(OXFILE *oxfp, cmo_list* c); |
static int send_cmo_monomial32(OXFILE *oxfp, cmo_monomial32* c); |
static int send_cmo_monomial32(OXFILE *oxfp, cmo_monomial32* c); |
|
static int send_cmo_double(OXFILE *oxfp, cmo_double* 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_polynomial_in_one_variable(OXFILE *oxfp, cmo_polynomial_in_one_variable* c); |
Line 116 int receive_int32(OXFILE *oxfp) |
|
Line 118 int receive_int32(OXFILE *oxfp) |
|
return oxfp->receive_int32(oxfp); |
return oxfp->receive_int32(oxfp); |
} |
} |
|
|
|
/* sending an object of int32 type. (not equal to cmo_int32 type) */ |
|
int send_double(OXFILE *oxfp, double d) |
|
{ |
|
return oxfp->send_double(oxfp, d); |
|
} |
|
|
|
/* receiving an object of int32 type. (not equal to cmo_int32 type) */ |
|
double receive_double(OXFILE *oxfp) |
|
{ |
|
return oxfp->receive_double(oxfp); |
|
} |
|
|
/* receiving an (OX_tag, serial number) */ |
/* receiving an (OX_tag, serial number) */ |
int receive_ox_tag(OXFILE *oxfp) |
int receive_ox_tag(OXFILE *oxfp) |
{ |
{ |
Line 194 static cmo_zz* receive_cmo_zz(OXFILE *oxfp) |
|
Line 208 static cmo_zz* receive_cmo_zz(OXFILE *oxfp) |
|
return c; |
return c; |
} |
} |
|
|
|
static cmo_qq* receive_cmo_qq(OXFILE *oxfp) |
|
{ |
|
mpz_t num, den; |
|
mpz_init(num); |
|
mpz_init(den); |
|
receive_mpz(oxfp, num); |
|
receive_mpz(oxfp, den); |
|
return new_cmo_qq_set_mpz(num, den); |
|
} |
|
|
static cmo_zero* receive_cmo_zero(OXFILE *oxfp) |
static cmo_zero* receive_cmo_zero(OXFILE *oxfp) |
{ |
{ |
return new_cmo_zero(); |
return new_cmo_zero(); |
Line 250 static cmo_polynomial_in_one_variable* receive_cmo_pol |
|
Line 274 static cmo_polynomial_in_one_variable* receive_cmo_pol |
|
return c; |
return c; |
} |
} |
|
|
|
static cmo_double* receive_cmo_double(OXFILE *oxfp) |
|
{ |
|
double d = receive_double(oxfp); |
|
return new_cmo_double(d); |
|
} |
|
|
static cmo_indeterminate* receive_cmo_indeterminate(OXFILE *oxfp) |
static cmo_indeterminate* receive_cmo_indeterminate(OXFILE *oxfp) |
{ |
{ |
cmo* ob = receive_cmo(oxfp); |
cmo* ob = receive_cmo(oxfp); |
Line 309 cmo *receive_cmo_tag(OXFILE *oxfp, int tag) |
|
Line 339 cmo *receive_cmo_tag(OXFILE *oxfp, int tag) |
|
case CMO_ZZ: |
case CMO_ZZ: |
m = (cmo *)receive_cmo_zz(oxfp); |
m = (cmo *)receive_cmo_zz(oxfp); |
break; |
break; |
|
case CMO_QQ: |
|
m = (cmo *)receive_cmo_qq(oxfp); |
|
break; |
case CMO_ZERO: |
case CMO_ZERO: |
m = (cmo *)receive_cmo_zero(oxfp); |
m = (cmo *)receive_cmo_zero(oxfp); |
break; |
break; |
Line 327 cmo *receive_cmo_tag(OXFILE *oxfp, int tag) |
|
Line 360 cmo *receive_cmo_tag(OXFILE *oxfp, int tag) |
|
case CMO_POLYNOMIAL_IN_ONE_VARIABLE: |
case CMO_POLYNOMIAL_IN_ONE_VARIABLE: |
m = (cmo *)receive_cmo_polynomial_in_one_variable(oxfp); |
m = (cmo *)receive_cmo_polynomial_in_one_variable(oxfp); |
break; |
break; |
|
case CMO_64BIT_MACHINE_DOUBLE: |
|
case CMO_IEEE_DOUBLE_FLOAT: |
|
m = (cmo *)receive_cmo_double(oxfp); |
|
break; |
case CMO_INDETERMINATE: |
case CMO_INDETERMINATE: |
m = (cmo *)receive_cmo_indeterminate(oxfp); |
m = (cmo *)receive_cmo_indeterminate(oxfp); |
break; |
break; |
Line 340 cmo *receive_cmo_tag(OXFILE *oxfp, int tag) |
|
Line 377 cmo *receive_cmo_tag(OXFILE *oxfp, int tag) |
|
m = (cmo *)receive_cmo_error2(oxfp); |
m = (cmo *)receive_cmo_error2(oxfp); |
break; |
break; |
case CMO_DATUM: |
case CMO_DATUM: |
case CMO_QQ: |
|
default: |
default: |
m = NULL; |
m = NULL; |
ox_printf("the CMO (%d) is not implemented.\n", tag); |
ox_printf("the CMO (%d) is not implemented.\n", tag); |
Line 447 int ox_flush(OXFILE *sv) |
|
Line 483 int ox_flush(OXFILE *sv) |
|
|
|
void ox_reset(OXFILE *sv) |
void ox_reset(OXFILE *sv) |
{ |
{ |
int tag; |
|
send_ox_command(oxf_control(sv), SM_control_reset_connection); |
send_ox_command(oxf_control(sv), SM_control_reset_connection); |
while((tag = receive_ox_tag(sv)) != OX_SYNC_BALL) { |
while(receive_ox_tag(sv) != OX_SYNC_BALL) { |
if (tag == OX_DATA) { |
receive_cmo(sv); /* skipping a message. */ |
receive_cmo(sv); /* skipping a message. */ |
|
} |
|
} |
} |
|
|
send_ox_tag(sv, OX_SYNC_BALL); |
send_ox_tag(sv, OX_SYNC_BALL); |
Line 549 static int send_cmo_polynomial_in_one_variable(OXFILE |
|
Line 582 static int send_cmo_polynomial_in_one_variable(OXFILE |
|
return 0; |
return 0; |
} |
} |
|
|
|
static int send_cmo_double(OXFILE *oxfp, cmo_double* c) |
|
{ |
|
return send_double(oxfp, c->d); |
|
} |
|
|
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 567 static int send_cmo_zz(OXFILE *oxfp, cmo_zz* c) |
|
Line 605 static int send_cmo_zz(OXFILE *oxfp, cmo_zz* c) |
|
return 0; |
return 0; |
} |
} |
|
|
|
static int send_cmo_qq(OXFILE *oxfp, cmo_qq* c) |
|
{ |
|
send_mpz(oxfp, mpq_numref(c->mpq)); |
|
send_mpz(oxfp, mpq_denref(c->mpq)); |
|
return 0; |
|
} |
|
|
static int send_cmo_recursive_polynomial(OXFILE *oxfp, cmo_recursive_polynomial* c) |
static int send_cmo_recursive_polynomial(OXFILE *oxfp, cmo_recursive_polynomial* c) |
{ |
{ |
send_cmo(oxfp, (cmo *)c->ringdef); |
send_cmo(oxfp, (cmo *)c->ringdef); |
Line 630 void send_cmo(OXFILE *oxfp, cmo* c) |
|
Line 675 void send_cmo(OXFILE *oxfp, cmo* c) |
|
case CMO_ZZ: |
case CMO_ZZ: |
send_cmo_zz(oxfp, (cmo_zz *)c); |
send_cmo_zz(oxfp, (cmo_zz *)c); |
break; |
break; |
|
case CMO_QQ: |
|
send_cmo_qq(oxfp, (cmo_qq *)c); |
|
break; |
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; |
Line 639 void send_cmo(OXFILE *oxfp, cmo* c) |
|
Line 687 void send_cmo(OXFILE *oxfp, cmo* c) |
|
case CMO_POLYNOMIAL_IN_ONE_VARIABLE: |
case CMO_POLYNOMIAL_IN_ONE_VARIABLE: |
send_cmo_polynomial_in_one_variable(oxfp, (cmo_polynomial_in_one_variable *)c); |
send_cmo_polynomial_in_one_variable(oxfp, (cmo_polynomial_in_one_variable *)c); |
break; |
break; |
|
case CMO_64BIT_MACHINE_DOUBLE: |
|
case CMO_IEEE_DOUBLE_FLOAT: |
|
send_cmo_double(oxfp, (cmo_double *)c); |
|
break; |
case CMO_TREE: |
case CMO_TREE: |
send_cmo_tree(oxfp, (cmo_tree *)c); |
send_cmo_tree(oxfp, (cmo_tree *)c); |
break; |
break; |