=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/io/pexpr.c,v retrieving revision 1.28 retrieving revision 1.32 diff -u -p -r1.28 -r1.32 --- OpenXM_contrib2/asir2000/io/pexpr.c 2004/02/04 07:42:07 1.28 +++ OpenXM_contrib2/asir2000/io/pexpr.c 2004/03/03 09:25:30 1.32 @@ -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/pexpr.c,v 1.27 2003/12/25 02:40:24 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/io/pexpr.c,v 1.31 2004/02/27 09:13:04 noro Exp $ */ #include "ca.h" #include "al.h" @@ -73,6 +73,7 @@ int double_output; int real_digit; int real_binary; int print_quote; +extern int asir_texmacs; #define TAIL #define PUTS(s) fputs(s,OUT) @@ -108,6 +109,8 @@ int print_quote; #define PRINTUM printum #define PRINTSF printsf #define PRINTSYMBOL printsymbol +#define PRINTRANGE printrange +#define PRINTTB printtb #endif #ifdef SPRINT @@ -156,6 +159,8 @@ extern int print_quote; #define PRINTUM sprintum #define PRINTSF sprintsf #define PRINTSYMBOL sprintsymbol +#define PRINTRANGE sprintrange +#define PRINTTB sprinttb #endif void PRINTEXPR(); @@ -188,6 +193,8 @@ void PRINTLOP(); void PRINTQOP(); void PRINTSF(); void PRINTSYMBOL(); +void PRINTRANGE(); +void PRINTTB(); #ifdef FPRINT void output_init() { @@ -234,7 +241,11 @@ char *s; void myoutbrute(g) GEN g; { +# if PARI_VERSION_CODE > 131588 + brute(g, 'f',-1); +# else bruteall(g,'f',-1,1); +# endif } void sprintbf(a) @@ -254,55 +265,64 @@ BF a; #endif #endif +#define DATA_BEGIN 2 +#define DATA_END 5 + +extern FUNC user_print_function; + void PRINTEXPR(vl,p) VL vl; Obj p; { + if ( asir_texmacs && !user_print_function ) printf("\2verbatim:"); if ( !p ) { PRINTR(vl,(R)p); - return; - } - - switch ( OID(p) ) { - case O_N: - PRINTNUM((Num)p); break; - case O_P: - PRINTP(vl,(P)p); break; - case O_R: - PRINTR(vl,(R)p); break; - case O_LIST: - PRINTLIST(vl,(LIST)p); break; - case O_VECT: - PRINTVECT(vl,(VECT)p); break; - case O_MAT: - PRINTMAT(vl,(MAT)p); break; - case O_STR: - PRINTSTR((STRING)p); break; - case O_COMP: - PRINTCOMP(vl,(COMP)p); break; - case O_DP: - PRINTDP(vl,(DP)p); break; - case O_USINT: - PRINTUI(vl,(USINT)p); break; - case O_GF2MAT: - PRINTGF2MAT(vl,(GF2MAT)p); break; - case O_ERR: + } else + switch ( OID(p) ) { + case O_N: + PRINTNUM((Num)p); break; + case O_P: + PRINTP(vl,(P)p); break; + case O_R: + PRINTR(vl,(R)p); break; + case O_LIST: + PRINTLIST(vl,(LIST)p); break; + case O_VECT: + PRINTVECT(vl,(VECT)p); break; + case O_MAT: + PRINTMAT(vl,(MAT)p); break; + case O_STR: + PRINTSTR((STRING)p); break; + case O_COMP: + PRINTCOMP(vl,(COMP)p); break; + case O_DP: + PRINTDP(vl,(DP)p); break; + case O_USINT: + PRINTUI(vl,(USINT)p); break; + case O_GF2MAT: + PRINTGF2MAT(vl,(GF2MAT)p); break; + case O_ERR: PRINTERR(vl,(ERR)p); break; - case O_MATHCAP: - PRINTLIST(vl,((MATHCAP)p)->body); break; - case O_F: - PRINTLF(vl,(F)p); break; - case O_GFMMAT: - PRINTGFMMAT(vl,(GFMMAT)p); break; - case O_BYTEARRAY: - PRINTBYTEARRAY(vl,(BYTEARRAY)p); break; - case O_QUOTE: - PRINTQUOTE(vl,(QUOTE)p); break; - case O_SYMBOL: - PRINTSYMBOL((Symbol)p); break; - default: - break; - } + case O_MATHCAP: + PRINTLIST(vl,((MATHCAP)p)->body); break; + case O_F: + PRINTLF(vl,(F)p); break; + case O_GFMMAT: + PRINTGFMMAT(vl,(GFMMAT)p); break; + case O_BYTEARRAY: + PRINTBYTEARRAY(vl,(BYTEARRAY)p); break; + case O_QUOTE: + PRINTQUOTE(vl,(QUOTE)p); break; + case O_SYMBOL: + PRINTSYMBOL((SYMBOL)p); break; + case O_RANGE: + PRINTRANGE(vl,(RANGE)p); break; + case O_TB: + PRINTTB(vl,(TB)p); break; + default: + break; + } + if ( asir_texmacs && !user_print_function ) { putchar('\5'); fflush(stdout); } } void PRINTN(n) @@ -1177,7 +1197,25 @@ unsigned int i; } } -void PRINTSYMBOL(Symbol p) +void PRINTSYMBOL(SYMBOL sym) { - PUTS(p->name); + PUTS(sym->name); +} + +void PRINTRANGE(VL vl,RANGE p) +{ + PUTS("range("); + PRINTEXPR(vl,p->start); + PUTS(","); + PRINTEXPR(vl,p->end); + PUTS(")"); +} + +void PRINTTB(VL vl,TB p) +{ + int i; + + for ( i = 0; i < p->next; i++ ) { + PUTS(p->body[i]); + } }