=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/io/bsave.c,v retrieving revision 1.3 retrieving revision 1.9 diff -u -p -r1.3 -r1.9 --- OpenXM_contrib2/asir2000/io/bsave.c 2000/08/22 05:04:17 1.3 +++ OpenXM_contrib2/asir2000/io/bsave.c 2001/09/03 07:01:08 1.9 @@ -44,15 +44,13 @@ * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. - * $OpenXM: OpenXM_contrib2/asir2000/io/bsave.c,v 1.2 2000/08/21 08:31:38 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/io/bsave.c,v 1.8 2001/03/16 01:56:18 noro Exp $ */ /* saveXXX must not use GC_malloc(), GC_malloc_atomic(). */ #include "ca.h" #include "parse.h" -#if INET #include "com.h" -#endif #if PARI #include "genpari.h" @@ -71,6 +69,7 @@ void saver(FILE *,R); void savep(FILE *,P); void savegf2n(FILE *,GF2N); void savegfpn(FILE *,GFPN); +void savegfs(FILE *,GFS); void savelm(FILE *,LM); void savemi(FILE *,MQ); void savecplx(FILE *,C); @@ -80,15 +79,18 @@ void saveq(FILE *,Q); void savenum(FILE *,Num); void savepfins(FILE *,V); void savegfmmat(FILE *,GFMMAT); +void savebytearray(FILE *,BYTEARRAY); +void savegfsn(FILE *,GFSN); -#define O_GF2MAT 12 -#define O_MATHCAP 13 -#define O_F 14 -#define O_GFMMAT 15 - void (*savef[])() = { 0, savenum, savep, saver, savelist, savevect, - savemat, savestring, 0, savedp, saveui, saveerror,0,0,0,savegfmmat }; -void (*nsavef[])() = { saveq, savereal, 0, savebf, savecplx ,savemi, savelm, savegf2n, savegfpn}; + savemat, savestring, 0, savedp, saveui, saveerror,0,0,0,savegfmmat, savebytearray }; +#if defined(INTERVAL) +void saveitv(); +void saveitvd(); +void (*nsavef[])() = { saveq, savereal, 0, savebf, saveitv, saveitvd, 0, saveitv, savecplx ,savemi, savelm, savegf2n, savegfpn, savegfs, savegfsn}; +#else +void (*nsavef[])() = { saveq, savereal, 0, savebf, savecplx ,savemi, savelm, savegf2n, savegfpn, savegfs, savegfsn}; +#endif static short zeroval = 0; @@ -174,6 +176,24 @@ BF p; #endif } +#if defined(INTERVAL) +void saveitv(s,p) +FILE *s; +Itv p; +{ + saveobj(s,(Obj)INF(p)); + saveobj(s,(Obj)SUP(p)); +} + +void saveitvd(s,p) +FILE *s; +ItvD p; +{ + write_double(s,&INF(p)); + write_double(s,&SUP(p)); +} +#endif + void savecplx(s,p) FILE *s; C p; @@ -218,6 +238,22 @@ GFPN p; saveobj(s,(Obj)p->body->c[i]); } +void savegfs(s,p) +FILE *s; +GFS p; +{ write_int(s,&CONT(p)); } + +void savegfsn(s,p) +FILE *s; +GFSN p; +{ + int d; + + d = DEG(BDY(p)); + write_int(s,&d); + write_intarray(s,COEF(BDY(p)),d+1); +} + void savep(s,p) FILE *s; P p; @@ -373,4 +409,12 @@ GFMMAT p; write_short(s,&OID(p)); write_int(s,&p->row); write_int(s,&p->col); for ( i = 0, row = p->row, col = p->col; i < row; i++ ) write_intarray(s,p->body[i],col); +} + +void savebytearray(s,p) +FILE *s; +BYTEARRAY p; +{ + write_short(s,&OID(p)); write_int(s,&p->len); + write_string(s,p->body,p->len); }