=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2018/builtin/strobj.c,v retrieving revision 1.1 retrieving revision 1.4 diff -u -p -r1.1 -r1.4 --- OpenXM_contrib2/asir2018/builtin/strobj.c 2018/09/19 05:45:06 1.1 +++ OpenXM_contrib2/asir2018/builtin/strobj.c 2021/03/25 05:06:06 1.4 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM$ + * $OpenXM: OpenXM_contrib2/asir2018/builtin/strobj.c,v 1.3 2020/10/06 06:31:19 noro Exp $ */ #include "ca.h" #include "parse.h" @@ -427,7 +427,7 @@ int register_symbol_table(Obj arg) int register_dp_vars_origin(Obj arg) { if ( INT(arg) ) { - dp_vars_origin = QTOS((Q)arg); + dp_vars_origin = ZTOS((Q)arg); return 1; } else return 0; } @@ -435,7 +435,7 @@ int register_dp_vars_origin(Obj arg) int register_dp_dvars_origin(Obj arg) { if ( INT(arg) ) { - dp_dvars_origin = QTOS((Q)arg); + dp_dvars_origin = ZTOS((Q)arg); return 1; } else return 0; } @@ -443,7 +443,7 @@ int register_dp_dvars_origin(Obj arg) int register_dp_vars_hweyl(Obj arg) { if ( INT(arg) ) { - dp_vars_hweyl = QTOS((Q)arg); + dp_vars_hweyl = ZTOS((Q)arg); return 1; } else return 0; } @@ -451,7 +451,7 @@ int register_dp_vars_hweyl(Obj arg) int register_show_lt(Obj arg) { if ( INT(arg) ) { - show_lt = QTOS((Q)arg); + show_lt = ZTOS((Q)arg); return 1; } else return 0; } @@ -459,7 +459,7 @@ int register_show_lt(Obj arg) int register_conv_rule(Obj arg) { if ( INT(arg) ) { - conv_flag = QTOS((Q)arg); + conv_flag = ZTOS((Q)arg); convfunc = 0; return 1; } else return 0; @@ -615,7 +615,7 @@ void Pqt_to_bin(NODE arg,QUOTE *rp) FNODE f; int direction; - direction = QTOS((Q)ARG1(arg)); + direction = ZTOS((Q)ARG1(arg)); f = fnode_to_bin(BDY((QUOTE)ARG0(arg)),direction); MKQUOTE(*rp,f); @@ -629,7 +629,7 @@ void Pqt_is_var(NODE arg,Z *rp) q = (QUOTE)ARG0(arg); asir_assert(q,O_QUOTE,"qt_is_var"); ret = fnode_is_var(BDY(q)); - STOQ(ret,*rp); + STOZ(ret,*rp); } void Pqt_is_coef(NODE arg,Z *rp) @@ -640,7 +640,7 @@ void Pqt_is_coef(NODE arg,Z *rp) q = (QUOTE)ARG0(arg); asir_assert(q,O_QUOTE,"qt_is_coef"); ret = fnode_is_coef(BDY(q)); - STOQ(ret,*rp); + STOZ(ret,*rp); } void Pqt_is_number(NODE arg,Z *rp) @@ -651,7 +651,7 @@ void Pqt_is_number(NODE arg,Z *rp) q = (QUOTE)ARG0(arg); asir_assert(q,O_QUOTE,"qt_is_number"); ret = fnode_is_number(BDY(q)); - STOQ(ret,*rp); + STOZ(ret,*rp); } void Pqt_is_rational(NODE arg,Z *rp) @@ -662,7 +662,7 @@ void Pqt_is_rational(NODE arg,Z *rp) q = (QUOTE)ARG0(arg); asir_assert(q,O_QUOTE,"qt_is_rational"); ret = fnode_is_rational(BDY(q)); - STOQ(ret,*rp); + STOZ(ret,*rp); } void Pqt_is_integer(NODE arg,Z *rp) @@ -673,7 +673,7 @@ void Pqt_is_integer(NODE arg,Z *rp) q = (QUOTE)ARG0(arg); asir_assert(q,O_QUOTE,"qt_is_integer"); ret = fnode_is_integer(BDY(q)); - STOQ(ret,*rp); + STOZ(ret,*rp); } void Pqt_is_function(NODE arg,Z *rp) @@ -687,7 +687,7 @@ void Pqt_is_function(NODE arg,Z *rp) ret = 1; else ret = 0; - STOQ(ret,*rp); + STOZ(ret,*rp); } void Pqt_is_dependent(NODE arg,Z *rp) @@ -706,7 +706,7 @@ void Pqt_is_dependent(NODE arg,Z *rp) *rp = 0; var = VR(x); ret = fnode_is_dependent(BDY(q),var); - STOQ(ret,*rp); + STOZ(ret,*rp); } @@ -774,7 +774,7 @@ void Pnqt_match_rewrite(NODE arg,Obj *rp) if ( OID(cond) == O_QUOTE ) c = BDY((QUOTE)cond); else c = mkfnode(1,I_FORMULA,ONE); - m = QTOS(mode); + m = ZTOS(mode); r = nfnode_match_rewrite(f,p,c,a,m); if ( r ) { MKQUOTE(q,r); @@ -880,7 +880,7 @@ void fnode_do_assign(NODE arg) } /* -/* consistency check and merge + * consistency check and merge */ int merge_matching_node(NODE n,NODE a,NODE *rp) @@ -953,7 +953,7 @@ int qt_match_cons(NODE f,NODE pat,Obj rpat,NODE *rp) { } /* matching of the rest */ MKLIST(list,tf); - STOQ(I_LIST,id); a = mknode(2,id,list); + STOZ(I_LIST,id); a = mknode(2,id,list); MKLIST(alist,a); arg = mknode(1,alist); Pfunargs_to_quote(arg,&q); @@ -971,7 +971,7 @@ void get_quote_id_arg(QUOTE f,int *id,NODE *r) NODE arg,fab; arg = mknode(1,f); Pquote_to_funargs(arg,&fa); fab = BDY((LIST)fa); - *id = QTOS((Q)BDY(fab)); *r = NEXT(fab); + *id = ZTOS((Q)BDY(fab)); *r = NEXT(fab); } /* *rp : [[quote(A),quote(1)],...] */ @@ -1080,6 +1080,8 @@ int qt_match(Obj f, Obj pat, NODE *rp) return qt_match_node(farg,parg,rp); } } + /* XXX */ + return 0; } void Pquotetotex(NODE arg,STRING *rp) @@ -1170,7 +1172,7 @@ Z *rp; for ( r = i = 0; i < tb->next; i++ ) r += strlen(tb->body[i]); } - STOQ(r,*rp); + STOZ(r,*rp); } void Pstr_chr(arg,rp) @@ -1189,7 +1191,7 @@ Z *rp; asir_assert(start,O_N,"str_chr"); asir_assert(terminator,O_STR,"str_chr"); p = BDY(str); - spos = QTOS(start); + spos = ZTOS(start); chr = BDY(terminator)[0]; if ( spos > (int)strlen(p) ) r = -1; @@ -1200,7 +1202,7 @@ Z *rp; else r = -1; } - STOQ(r,*rp); + STOZ(r,*rp); } void Psub_str(arg,rp) @@ -1219,8 +1221,8 @@ STRING *rp; asir_assert(head,O_N,"sub_str"); asir_assert(tail,O_N,"sub_str"); p = BDY(str); - spos = QTOS(head); - epos = QTOS(tail); + spos = ZTOS(head); + epos = ZTOS(tail); len = strlen(p); if ( (spos >= len) || (epos < spos) ) { *rp = 0; return; @@ -1239,7 +1241,7 @@ NODE arg; LIST *rp; { STRING str; - unsigned char *p; + char *p; int len,i; NODE n,n1; Z q; @@ -1249,7 +1251,7 @@ LIST *rp; p = BDY(str); len = strlen(p); for ( i = len-1, n = 0; i >= 0; i-- ) { - UTOQ((unsigned int)p[i],q); + UTOZ((unsigned int)p[i],q); MKNODE(n1,q,n); n = n1; } @@ -1274,7 +1276,7 @@ STRING *rp; for ( i = 0; i < len; i++, n = NEXT(n) ) { q = (Z)BDY(n); asir_assert(q,O_N,"asciitostr"); - j = QTOS(q); + j = ZTOS(q); if ( j >= 256 || j <= 0 ) error("asciitostr : argument out of range"); p[i] = j; @@ -1677,6 +1679,8 @@ void fnodetotex_tb(FNODE f,TB tb) fnodetotex_tb((FNODE)FA1(f),tb); write_tb(")",tb); return; + default: + return; } break; @@ -1829,6 +1833,7 @@ void fnodetotex_tb(FNODE f,TB tb) default: error("fnodetotex_tb : not implemented yet"); + return; } } @@ -1962,7 +1967,7 @@ void Psprintf(NODE arg,STRING *rp) if (argc < n) { error("sprintf: invalid argument"); } - r = (char *)MALLOC_ATOMIC(len); + r = (char *)MALLOC_ATOMIC(len+1); for(node = NEXT(arg), t = r; *s; s++) { if (*s=='%' && *(s+1)=='a') { strcpy(t,objtostr(BDY(node))); @@ -2098,7 +2103,7 @@ void Pget_quote_id(NODE arg,Z *rp) if ( !q || OID(q) != O_QUOTE ) error("get_quote_id : invalid argument"); f = BDY(q); - STOQ((long)f->id,*rp); + STOZ((long)f->id,*rp); } void Pquote_to_funargs(NODE arg,LIST *rp) @@ -2126,7 +2131,7 @@ void Pquote_to_funargs(NODE arg,LIST *rp) if ( !spec ) error("quote_to_funargs : not supported yet"); t0 = 0; - STOQ((int)f->id,id); + STOZ((int)f->id,id); NEXTNODE(t0,t); BDY(t) = (pointer)id; for ( i = 0; spec->type[i] != A_end; i++ ) { @@ -2137,7 +2142,7 @@ void Pquote_to_funargs(NODE arg,LIST *rp) BDY(t) = (pointer)r; break; case A_int: - STOQ((long)f->arg[i],a); + STOZ((long)f->arg[i],a); BDY(t) = (pointer)a; break; case A_str: @@ -2186,7 +2191,7 @@ void Pfunargs_to_quote(NODE arg,QUOTE *rp) if ( !l || OID(l) != O_LIST || !(t=BDY(l)) ) error("funargs_to_quote : invalid argument"); t = BDY(l); - id = (fid)QTOS((Q)BDY(t)); t = NEXT(t); + id = (fid)ZTOS((Q)BDY(t)); t = NEXT(t); get_fid_spec(id,&spec); if ( !spec ) error("funargs_to_quote : not supported yet"); @@ -2206,7 +2211,7 @@ void Pfunargs_to_quote(NODE arg,QUOTE *rp) case A_int: if ( !INT(a) ) error("funargs_to_quote : invalid argument"); - f->arg[i] = (pointer)QTOS((Q)a); + f->arg[i] = (pointer)ZTOS((Q)a); break; case A_str: if ( !a || OID(a) != O_STR ) @@ -2319,7 +2324,7 @@ void Pqt_set_weight(NODE arg,LIST *rp) for ( i = 0; i < l; i++, n = NEXT(n) ) { pair = BDY((LIST)BDY(n)); tab[i].v = VR((P)ARG0(pair)); - tab[i].w = QTOS((Q)ARG1(pair)); + tab[i].w = ZTOS((Q)ARG1(pair)); } tab[i].v = 0; qt_current_weight_obj = (LIST)ARG0(arg); @@ -2364,7 +2369,7 @@ void Pqt_normalize(NODE arg,QUOTE *rp) if ( !ac ) error("qt_normalize : invalid argument"); q = (QUOTE)ARG0(arg); if ( ac == 2 ) - expand = QTOS((Q)ARG1(arg)); + expand = ZTOS((Q)ARG1(arg)); if ( !q || OID(q) != O_QUOTE ) *rp = q; else { @@ -2541,10 +2546,10 @@ void Pnbm_deg(NODE arg, Z *rp) p = (NBP)ARG0(arg); if ( !p ) - STOQ(-1,*rp); + STOZ(-1,*rp); else { m = (NBM)BDY(BDY(p)); - STOQ(m->d,*rp); + STOZ(m->d,*rp); } } @@ -2557,7 +2562,7 @@ void Pnbm_index(NODE arg, Z *rp) p = (NBP)ARG0(arg); if ( !p ) - STOQ(0,*rp); + STOZ(0,*rp); else { m = (NBM)BDY(BDY(p)); d = m->d; @@ -2566,7 +2571,7 @@ void Pnbm_index(NODE arg, Z *rp) b = m->b; for ( r = 0, i = d-2; i > 0; i-- ) if ( !NBM_GET(b,i) ) r |= (1<<(d-2-i)); - STOQ(r,*rp); + STOZ(r,*rp); } } @@ -2583,7 +2588,7 @@ void Pnbm_hp_rest(NODE arg, LIST *rp) MKLIST(*rp,0); else { m = (NBM)BDY(BDY(p)); - b = m->b; d = m->d; + b = (int *)m->b; d = m->d; if ( !d ) MKLIST(*rp,0); else { @@ -2591,14 +2596,14 @@ void Pnbm_hp_rest(NODE arg, LIST *rp) for ( i = 1; i < d; i++ ) if ( NBM_GET(b,i) != v ) break; NEWNBM(m1); NEWNBMBDY(m1,i); - b1 = m1->b; m1->d = i; m1->c = (P)ONE; + b1 = (int *)m1->b; m1->d = i; m1->c = (P)ONE; if ( v ) for ( j = 0; j < i; j++ ) NBM_SET(b1,j); else for ( j = 0; j < i; j++ ) NBM_CLR(b1,j); MKNODE(n,m1,0); MKNBP(h,n); d1 = d-i; NEWNBM(m1); NEWNBMBDY(m1,d1); - b1 = m1->b; m1->d = d1; m1->c = (P)ONE; + b1 = (int *)m1->b; m1->d = d1; m1->c = (P)ONE; for ( j = 0, k = i; j < d1; j++, k++ ) if ( NBM_GET(b,k) ) NBM_SET(b1,j); else NBM_CLR(b1,j); @@ -2717,6 +2722,8 @@ NBP fnode_to_nbp(FNODE f) pwrnbp(CO,u,r,&u1); return u1; } + /* XXX */ + return 0; } void Pnqt_weight(NODE arg,Z *rp) @@ -2728,7 +2735,7 @@ void Pnqt_weight(NODE arg,Z *rp) q = (QUOTE)ARG0(arg); f = (FNODE)BDY(q); f = fnode_normalize(f,0); w = nfnode_weight(qt_weight_tab,f); - STOQ(w,*rp); + STOZ(w,*rp); } void Pnqt_comp(NODE arg,Z *rp) @@ -2742,7 +2749,7 @@ void Pnqt_comp(NODE arg,Z *rp) f1 = fnode_normalize(f1,0); f2 = fnode_normalize(f2,0); r = nfnode_comp(f1,f2); - STOQ(r,*rp); + STOZ(r,*rp); } int fnode_is_var(FNODE f) @@ -2957,7 +2964,7 @@ FNODE fnode_normalize(FNODE f,int expand) Z q; if ( f->normalized && (f->expanded == expand) ) return f; - STOQ(-1,q); + STOZ(-1,q); mone = mkfnode(1,I_FORMULA,q); switch ( f->id ) { case I_PAREN: @@ -3217,12 +3224,12 @@ FNODE nfnode_pwr(FNODE f1,FNODE f2,int expand) fnode_coef_body(f1,&c1,&b1); nf2 = (Num)eval(f2); arf_pwr(CO,c1,(Obj)nf2,&c); - ee = QTOS((Q)nf2); + ee = ZTOS((Q)nf2); cc = mkfnode(1,I_FORMULA,c); if ( fnode_is_nonnegative_integer(f2) ) b = fnode_expand_pwr(b1,ee,expand); else { - STOQ(-1,q); + STOZ(-1,q); mone = mkfnode(1,I_FORMULA,q); b1 = to_narymul(b1); for ( t0 = 0, n = (NODE)FA1(b1); n; n = NEXT(n) ) { @@ -3240,7 +3247,7 @@ FNODE nfnode_pwr(FNODE f1,FNODE f2,int expand) && fnode_is_nonnegative_integer(f2) ) { q = (Z)eval(f2); if ( !smallz(q) ) error("nfnode_pwr : exponent too large"); - return fnode_expand_pwr(f1,QTOS(q),expand); + return fnode_expand_pwr(f1,ZTOS(q),expand); } else return mkfnode(3,I_BOP,pwrfs,f1,f2); } @@ -3267,7 +3274,7 @@ FNODE fnode_expand_pwr(FNODE f,int n,int expand) f1 = nfnode_mul(f1,f,expand); return f1; case 0: default: - STOQ(n,q); + STOZ(n,q); fn = mkfnode(1,I_FORMULA,q); return mkfnode(3,I_BOP,pwrfs,f,fn); } @@ -3341,6 +3348,8 @@ FNODE nfnode_mul_coef(Obj c,FNODE f,int expand) return fnode_node_to_nary(mulfs,mknode(2,cc,b1)); } } + /* XXX */ + return 0; } void fnode_coef_body(FNODE f,Obj *cp,FNODE *bp) @@ -3408,12 +3417,13 @@ int nfnode_weight(struct wtab *tab,FNODE f) /* XXX w(2^x)=0 ? */ if ( fnode_is_rational(FA2(f)) ) { a2 = (Q)eval(FA2(f)); - w = QTOS(a2); + w = ZTOS(a2); } else w = nfnode_weight(tab,FA2(f)); return nfnode_weight(tab,FA1(f))*w; default: error("nfnode_weight : not_implemented"); + return 0; } } @@ -3470,7 +3480,7 @@ int nfnode_comp_lex(FNODE f1,FNODE f2) if ( IS_BINARYPWR(f1) || IS_BINARYPWR(f2) ) { fnode_base_exp(f1,&b1,&e1); fnode_base_exp(f2,&b2,&e2); - if ( r = nfnode_comp_lex(b1,b2) ) { + if ( ( r = nfnode_comp_lex(b1,b2) ) != 0 ) { if ( r > 0 ) return nfnode_comp_lex(e1,mkfnode(1,I_FORMULA,NULLP)); else if ( r < 0 ) @@ -3506,7 +3516,7 @@ int nfnode_comp_lex(FNODE f1,FNODE f2) /* compare args */ n1 = FA0((FNODE)FA1(f1)); n2 = FA0((FNODE)FA1(f2)); while ( n1 && n2 ) - if ( r = nfnode_comp_lex(BDY(n1),BDY(n2)) ) return r; + if ( ( r = nfnode_comp_lex(BDY(n1),BDY(n2)) ) != 0 ) return r; else { n1 = NEXT(n1); n2 = NEXT(n2); } @@ -3544,7 +3554,7 @@ int nfnode_comp_lex(FNODE f1,FNODE f2) /* compare args */ n1 = FA0((FNODE)FA1(f1)); n2 = FA0((FNODE)FA1(f2)); while ( n1 && n2 ) - if ( r = nfnode_comp_lex(BDY(n1),BDY(n2)) ) return r; + if ( ( r = nfnode_comp_lex(BDY(n1),BDY(n2)) ) != 0 ) return r; else { n1 = NEXT(n1); n2 = NEXT(n2); } @@ -3554,11 +3564,14 @@ int nfnode_comp_lex(FNODE f1,FNODE f2) default: error("nfnode_comp_lex : undefined"); + return 0; } break; default: error("nfnode_comp_lex : undefined"); + return 0; } + return 0; } NODE append_node(NODE a1,NODE a2) @@ -3661,7 +3674,9 @@ int nfnode_match(FNODE f,FNODE pat,NODE *rp) default: error("nfnode_match : invalid pattern"); + return 0; } + return 0; } /* remove i-th element */ @@ -3684,7 +3699,8 @@ FNODE fnode_removeith_naryadd(FNODE p,int i) NEXT(r) = NEXT(t); return fnode_node_to_nary(addfs,r0); } - + /* XXX */ + return 0; } /* a0,...,a(i-1) */ @@ -3883,5 +3899,6 @@ NODE nfnode_pvars(FNODE pat,NODE found) default: error("nfnode_match : invalid pattern"); + return 0; } }