=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/arith.c,v retrieving revision 1.4 retrieving revision 1.7 diff -u -p -r1.4 -r1.7 --- OpenXM_contrib2/asir2000/parse/arith.c 2000/11/08 08:02:52 1.4 +++ OpenXM_contrib2/asir2000/parse/arith.c 2001/10/09 01:36:23 1.7 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/parse/arith.c,v 1.3 2000/08/22 05:04:25 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/parse/arith.c,v 1.6 2001/08/20 09:03:27 noro Exp $ */ #include "ca.h" #include "parse.h" @@ -83,6 +83,7 @@ struct oAFUNC afunc[] = { /* O_F=14 */ {notdef,notdef,notdef,notdef,notdef,notdef,(int(*)())notdef}, /* O_GFMMAT=15 */ {notdef,notdef,notdef,notdef,notdef,notdef,(int(*)())notdef}, /* O_BYTEARRAY=16 */ {notdef,notdef,notdef,notdef,notdef,notdef,compbytearray}, +/* O_QUOTE=17 */ {addquote,subquote,mulquote,divquote,pwrquote,chsgnquote,(int(*)())notdef}, }; void arf_init() { @@ -191,6 +192,8 @@ Obj a,e,*r; if ( !a ) *r = 0; + else if ( OID(a) == O_QUOTE ) + (*(afunc[O_QUOTE].pwr))(vl,a,e,r); else if ( !e ) *r = (pointer)ONE; else if ( (OID(e) <= O_N) && INT(e) ) { @@ -235,7 +238,7 @@ int complist(vl,a,b) VL vl; LIST a,b; { - int i,t; + int t; NODE an,bn; if ( !a ) @@ -245,10 +248,11 @@ LIST a,b; return -1; else if ( !b ) return 1; - for ( i = 0, an = BDY(a); an; i++, an = NEXT(an) ); - for ( an = BDY(b); an; i--, an = NEXT(an) ); - if ( i ) - return i > 0 ? 1 : -1; + for ( an = BDY(a), bn = BDY(b); an && bn; an = NEXT(an), bn = NEXT(bn) ); + if ( an && !bn ) + return 1; + else if ( !an && bn ) + return -1; for ( an = BDY(a), bn = BDY(b); an; an = NEXT(an), bn = NEXT(bn) ) if ( t = arf_comp(vl,BDY(an),BDY(bn)) ) return t;