version 1.6, 2000/11/10 08:28:53 |
version 1.12, 2001/09/03 07:01:08 |
|
|
* OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY |
* OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* $OpenXM: OpenXM_contrib2/asir2000/io/cpexpr.c,v 1.5 2000/11/08 08:02:51 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/io/cpexpr.c,v 1.11 2001/04/20 02:34:23 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "parse.h" |
#include "parse.h" |
#include "al.h" |
#include "al.h" |
#include "base.h" |
#include "base.h" |
|
|
extern int hex_output,fortran_output; |
extern int hex_output,fortran_output,double_output,real_digit; |
|
|
#define PRINTHAT (fortran_output?PUTS("**"):PUTS("^")) |
#define PRINTHAT (fortran_output?PUTS("**"):PUTS("^")) |
|
|
Line 77 extern int hex_output,fortran_output; |
|
Line 77 extern int hex_output,fortran_output; |
|
#define PRINTGF2MAT length_gf2mat |
#define PRINTGF2MAT length_gf2mat |
#define PRINTGFMMAT length_gfmmat |
#define PRINTGFMMAT length_gfmmat |
#define PRINTBYTEARRAY length_bytearray |
#define PRINTBYTEARRAY length_bytearray |
|
#define PRINTQUOTE length_QUOTE |
#define PRINTERR length_err |
#define PRINTERR length_err |
#define PRINTLF length_lf |
#define PRINTLF length_lf |
#define PRINTLOP length_lop |
#define PRINTLOP length_lop |
Line 84 extern int hex_output,fortran_output; |
|
Line 85 extern int hex_output,fortran_output; |
|
#define PRINTEOP length_eop |
#define PRINTEOP length_eop |
#define PRINTQOP length_qop |
#define PRINTQOP length_qop |
#define PRINTUP length_up |
#define PRINTUP length_up |
|
#define PRINTUM length_um |
|
#define PRINTSF length_sf |
|
|
void PRINTEXPR(); |
void PRINTEXPR(); |
void PRINTNUM(); |
void PRINTNUM(); |
|
|
void PRINTGF2MAT(); |
void PRINTGF2MAT(); |
void PRINTGFMMAT(); |
void PRINTGFMMAT(); |
void PRINTBYTEARRAY(); |
void PRINTBYTEARRAY(); |
|
void PRINTQUOTE(); |
void PRINTERR(); |
void PRINTERR(); |
void PRINTCPLX(); |
void PRINTCPLX(); |
void PRINTLM(); |
void PRINTLM(); |
|
|
{ |
{ |
char *str; |
char *str; |
char *GENtostr(); |
char *GENtostr(); |
|
char *GENtostr0(); |
|
void myoutbrute(); |
|
|
str = GENtostr(a->body); |
if ( double_output ) { |
|
str = GENtostr0(a->body,myoutbrute); |
|
} else { |
|
str = GENtostr(a->body); |
|
} |
total_length += strlen(str); |
total_length += strlen(str); |
free(str); |
free(str); |
} |
} |
|
|
PRINTGFMMAT(vl,(GFMMAT)p); break; |
PRINTGFMMAT(vl,(GFMMAT)p); break; |
case O_BYTEARRAY: |
case O_BYTEARRAY: |
PRINTBYTEARRAY(vl,(BYTEARRAY)p); break; |
PRINTBYTEARRAY(vl,(BYTEARRAY)p); break; |
|
case O_QUOTE: |
|
PRINTQUOTE(vl,(QUOTE)p); break; |
default: |
default: |
break; |
break; |
} |
} |
|
|
} |
} |
break; |
break; |
case N_R: |
case N_R: |
total_length += 20; /* XXX */ |
if ( double_output ) |
|
total_length += 400+real_digit; /* XXX */ |
|
else |
|
total_length += 20+real_digit; /* XXX */ |
break; |
break; |
case N_A: |
case N_A: |
PUTS("("); PRINTR(ALG,(R)BDY((Alg)q)); PUTS(")"); |
PUTS("("); PRINTR(ALG,(R)BDY((Alg)q)); PUTS(")"); |
|
|
case N_GFPN: |
case N_GFPN: |
PRINTUP((UP)(((GFPN)q)->body)); |
PRINTUP((UP)(((GFPN)q)->body)); |
break; |
break; |
|
case N_GFS: |
|
total_length += 13; /* XXX */ |
|
break; |
|
case N_GFSN: |
|
PRINTUM(BDY((GFSN)q)); |
|
break; |
default: |
default: |
break; |
break; |
} |
} |
Line 540 BYTEARRAY array; |
|
Line 561 BYTEARRAY array; |
|
total_length += 1+3*array->len; |
total_length += 1+3*array->len; |
} |
} |
|
|
|
void PRINTQUOTE(vl,quote) |
|
VL vl; |
|
QUOTE quote; |
|
{ |
|
/* <...quoted...> */ |
|
total_length += 20; |
|
} |
|
|
void PRINTERR(vl,e) |
void PRINTERR(vl,e) |
VL vl; |
VL vl; |
ERR e; |
ERR e; |
|
|
} |
} |
PUTS(")"); |
PUTS(")"); |
} |
} |
|
} |
|
|
|
PRINTUM(n) |
|
UM n; |
|
{ |
|
int i,d; |
|
|
|
if ( !n ) |
|
PUTS("0"); |
|
else if ( !n->d ) |
|
PRINTSF(n->c[0]); |
|
else { |
|
d = n->d; |
|
PUTS("("); |
|
if ( !d ) { |
|
PRINTSF(n->c[d]); |
|
} else if ( d == 1 ) { |
|
PRINTSF(n->c[d]); |
|
PUTS("*@s"); |
|
} else { |
|
PRINTSF(n->c[d]); |
|
PUTS("*@s"); PRINTHAT; total_length += 13; |
|
} |
|
for ( i = d-1; i >= 0; i-- ) { |
|
if ( n->c[i] ) { |
|
PUTS("+("); PRINTSF(n->c[i]); PUTS(")"); |
|
if ( i >= 2 ) { |
|
PUTS("*@s"); PRINTHAT; total_length += 13; |
|
} else if ( i == 1 ) |
|
PUTS("*@s"); |
|
} |
|
} |
|
PUTS(")"); |
|
} |
|
} |
|
|
|
PRINTSF(i) |
|
unsigned int i; |
|
{ |
|
if ( !i ) { |
|
PUTS("0"); |
|
} else |
|
total_length += 15; |
} |
} |