Esempio n. 1
0
/* xlsetvalue - set the value of a symbol */
void xlsetvalue(LVAL sym, LVAL val)
{
    register LVAL fp,ep;

    /* look for the symbol in the environment list */
    for (fp = xlenv; fp; fp = cdr(fp))

        /* check for an instance variable */
        if ((ep = car(fp)) && objectp(car(ep))) {
            if (xlobsetvalue(ep,sym,val))
                return;
        }

        /* check an environment stack frame */
        else {
            for (; ep; ep = cdr(ep))
                if (sym == car(car(ep))) {
                    rplacd(car(ep),val);
                    return;
                }
        }

    /* store the global value */
    setvalue(sym,val);
}
Esempio n. 2
0
void xlsetvalue(NODE *sym, NODE *val)
{
register NODE *fp,*ep;
if (((self)->n_info.n_xsym.xsy_value) && xlobsetvalue(sym,val))
return;
for (fp = xlenv; fp; fp = ((fp)->n_info.n_xlist.xl_cdr))
for (ep = ((fp)->n_info.n_xlist.xl_car); ep; ep = ((ep)->n_info.n_xlist.xl_cdr))
if (sym == ((((ep)->n_info.n_xlist.xl_car))->n_info.n_xlist.xl_car)) {
((((ep)->n_info.n_xlist.xl_car))->n_info.n_xlist.xl_cdr = (val));
return;
}
((sym)->n_info.n_xsym.xsy_value = (val));
}
Esempio n. 3
0
File: xlsym.c Progetto: 8l/csolve
/* xlsetvalue - set the value of a symbol */
void xlsetvalue(NODE *sym,NODE *val)
{
    NODE *fp,*ep;

    /* check for this being an instance variable */
    if (getvalue(self) && xlobsetvalue(sym,val))
	return;

    /* look for the symbol in the environment list */
    for (fp = xlenv; fp; fp = cdr(fp))
	for (ep = car(fp); ep; ep = cdr(ep))
	    if (sym == car(car(ep))) {
		rplacd(car(ep),val);
		return;
	    }

    /* store the global value */
    setvalue(sym,val);
}