/* 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); }
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)); }
/* 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); }