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) |
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) |
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; |