=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/io/cpexpr.c,v retrieving revision 1.22 retrieving revision 1.25 diff -u -p -r1.22 -r1.25 --- OpenXM_contrib2/asir2000/io/cpexpr.c 2004/05/14 06:02:54 1.22 +++ OpenXM_contrib2/asir2000/io/cpexpr.c 2005/11/16 23:42:54 1.25 @@ -44,7 +44,7 @@ * 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/cpexpr.c,v 1.21 2004/03/17 03:22:47 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/io/cpexpr.c,v 1.24 2004/12/10 07:36:35 noro Exp $ */ #include "ca.h" #include "parse.h" @@ -85,10 +85,12 @@ static int total_length; #define PRINTGFMMAT length_gfmmat #define PRINTBYTEARRAY length_bytearray #define PRINTQUOTE length_QUOTE +#define PRINTQUOTEARG length_QUOTEARG #define PRINTSYMBOL length_SYMBOL #define PRINTRANGE length_RANGE #define PRINTTB length_TB #define PRINTDPV length_DPV +#define PRINTNBP length_nbp #define PRINTERR length_err #define PRINTLF length_lf #define PRINTLOP length_lop @@ -134,6 +136,10 @@ void PRINTBF(BF a) void PRINTNUM(Num q) { + DAlg d; + DP nm; + Q dn; + if ( !q ) { PUTS("0"); return; @@ -182,6 +188,19 @@ void PRINTNUM(Num q) case N_GFSN: PRINTUM(BDY((GFSN)q)); break; + case N_DA: + d = (DAlg)q; + nm = d->nm; + dn = d->dn; + if ( SGN((Q)dn) == -1 ) PUTS("-"); + PUTS("("); + PRINTDP(CO,((DAlg)q)->nm); + PUTS(")"); + if ( !UNIN(NM(dn)) ) { + PUTS("/"); + PRINTN(NM(dn)); + } + break; default: break; } @@ -331,6 +350,13 @@ void PRINTQUOTE(VL vl,QUOTE quote) } } +void PRINTQUOTEARG(VL vl,QUOTEARG quote) +{ + /* XXX */ + /* <...quoted...> */ + total_length += 20; +} + void PRINTSYMBOL(SYMBOL sym) { total_length += strlen(sym->name); @@ -452,6 +478,28 @@ void PRINTUM(UM n) } } PUTS(")"); + } +} + +void PRINTNBP(VL vl,NBP p) +{ + NODE t; + NBM m; + int d,i; + unsigned int *b; + if ( !p ) PUTS("0"); + else { + for ( t = BDY(p); t; t = NEXT(t) ) { + m = (NBM)BDY(t); + PRINTEXPR(vl,(Obj)m->c); + d = m->d; + b = m->b; + for ( i = 0; i < d; i++ ) { + if ( NBM_GET(b,i) ) PUTS("x"); + else PUTS("y"); + } + if ( NEXT(t) ) PUTS("+"); + } } }