=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/io/bsave.c,v retrieving revision 1.4 retrieving revision 1.9 diff -u -p -r1.4 -r1.9 --- OpenXM_contrib2/asir2000/io/bsave.c 2000/11/08 08:02:51 1.4 +++ 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.3 2000/08/22 05:04:17 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); @@ -81,10 +80,17 @@ void savenum(FILE *,Num); void savepfins(FILE *,V); void savegfmmat(FILE *,GFMMAT); void savebytearray(FILE *,BYTEARRAY); +void savegfsn(FILE *,GFSN); void (*savef[])() = { 0, savenum, savep, saver, savelist, savevect, savemat, savestring, 0, savedp, saveui, saveerror,0,0,0,savegfmmat, savebytearray }; -void (*nsavef[])() = { saveq, savereal, 0, savebf, savecplx ,savemi, savelm, savegf2n, savegfpn}; +#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; @@ -170,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; @@ -212,6 +236,22 @@ GFPN p; write_int(s,&d); for ( i = 0; i <= d; i++ ) 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)