=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/io/pexpr_body.c,v retrieving revision 1.8 retrieving revision 1.11 diff -u -p -r1.8 -r1.11 --- OpenXM_contrib2/asir2000/io/pexpr_body.c 2005/01/17 07:43:24 1.8 +++ OpenXM_contrib2/asir2000/io/pexpr_body.c 2005/12/10 14:14:15 1.11 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM_contrib2/asir2000/io/pexpr_body.c,v 1.7 2004/12/18 16:50:10 saito Exp $ */ +/* $OpenXM: OpenXM_contrib2/asir2000/io/pexpr_body.c,v 1.10 2005/11/16 23:42:54 noro Exp $ */ #define PRINTHAT (fortran_output?PUTS("**"):PUTS("^")) @@ -21,6 +21,7 @@ void PRINTGFMMAT(); void PRINTBYTEARRAY(); void PRINTQUOTE(); void PRINTQUOTEARG(); +void PRINTNBP(); void PRINTERR(); void PRINTCPLX(); void PRINTLM(); @@ -89,6 +90,8 @@ Obj p; PRINTQUOTE(vl,(QUOTE)p); break; case O_QUOTEARG: PRINTQUOTEARG(vl,(QUOTEARG)p); break; + case O_NBP: + PRINTNBP(vl,(NBP)p); break; case O_SYMBOL: PRINTSYMBOL((SYMBOL)p); break; case O_RANGE: @@ -554,6 +557,14 @@ void PRINTFNODE(FNODE f,int paren) PUTS(((ARF)FA0(f))->name); PRINTFNODE((FNODE)FA2(f),1); break; + case I_NARYOP: + t = (NODE)FA1(f); + PRINTFNODE((FNODE)BDY(t),1); + for ( t = NEXT(t); t; t = NEXT(t) ) { + PUTS(((ARF)FA0(f))->name); + PRINTFNODE((FNODE)BDY(t),1); + } + break; case I_COP: switch( (cid)FA0(f) ) { case C_EQ: opname = ("=="); break; @@ -605,7 +616,7 @@ void PRINTFNODE(FNODE f,int paren) /* lists */ case I_LIST: PUTS("["); PRINTFNODENODE((NODE)FA0(f)); PUTS("]"); break; /* function */ - case I_FUNC: + case I_FUNC: case I_FUNC_QARG: if ( !strcmp(((FUNC)FA0(f))->name,"@pi") ) PUTS("@pi"); else if ( !strcmp(((FUNC)FA0(f))->name,"@e") ) PUTS("@e"); else { @@ -1064,6 +1075,28 @@ VL vl; QUOTEARG quote; { PUTS("<...quoted...>"); +} + +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("+"); + } + } } void PRINTTB(VL vl,TB p)