/[gcl]/gcl/o/assignment.c
ViewVC logotype

Diff of /gcl/o/assignment.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.7 by camm, Sun Sep 14 02:43:07 2003 UTC revision 1.8 by camm, Tue Oct 7 21:06:33 2003 UTC
# Line 144  DEFUNO_NEW("FSET",object,fSfset,SI Line 144  DEFUNO_NEW("FSET",object,fSfset,SI
144    
145  {  {
146          /* 2 args */          /* 2 args */
147          if (type_of(sym) != t_symbol)          if (type_of(sym) != t_symbol) {
148                  not_a_symbol(sym);            if (setf_fn_form(sym)) {
149                putprop(MMcadr(sym),function,sSsetf_function);
150                return(function);
151              } else
152                not_a_symbol(sym);
153            }
154          if (sym->s.s_sfdef != NOT_SPECIAL) {          if (sym->s.s_sfdef != NOT_SPECIAL) {
155                  if (sym->s.s_mflag) {                  if (sym->s.s_mflag) {
156                          if (symbol_value(sSAinhibit_macro_specialA) != Cnil)                          if (symbol_value(sSAinhibit_macro_specialA) != Cnil)
# Line 300  setf(object place, object form) Line 305  setf(object place, object form)
305          extern void siLhash_set();          extern void siLhash_set();
306    
307          if (type_of(place) != t_cons) {          if (type_of(place) != t_cons) {
308                  setq(place, result=Ieval(form));            setq(place, result=Ieval(form));
309                  vs_top=vs_base+1;            vs_top=vs_base+1;
310                  return result;            return result;
311          }          }
312          fun = place->c.c_car;          fun = place->c.c_car;
313          if (type_of(fun) != t_symbol)          if (type_of(fun) != t_symbol)
# Line 340  setf(object place, object form) Line 345  setf(object place, object form)
345                  return result;                  return result;
346          }          }
347    
348            /* FIXME should this be removed as it appears to usurp setf-expanders? */
349            if ((x=getf(fun->s.s_plist,sSsetf_function,Cnil))!=Cnil) {
350              object y=args;
351              /* FIXME do a direct funcall here */
352              y=append(list(1,form),y);
353              y=MMcons(x,y);
354              y=MMcons(sLfuncall,y);
355              result=Ieval(y);
356              return result;
357            }
358    
359          x = getf(fun->s.s_plist, sSstructure_access, Cnil);          x = getf(fun->s.s_plist, sSstructure_access, Cnil);
360          if (x == Cnil || type_of(x) != t_cons)          if (x == Cnil || type_of(x) != t_cons)
361                  goto OTHERWISE;                  goto OTHERWISE;

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26