diff options
author | Andy Wingo <wingo@pobox.com> | 2009-11-01 19:46:27 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-11-15 20:28:11 +0100 |
commit | 11561496bad94481cc2b3d8acba1a154e3c052fc (patch) | |
tree | 53e274a64e90105150c75d41b5c2358dcc545ba5 /libguile/eval.c | |
parent | 521ac49bdea053227c973a92e37fcc0879fa20d0 (diff) | |
download | guile-11561496bad94481cc2b3d8acba1a154e3c052fc.tar.gz |
remove support for "entities" -- a form of applicable struct
Entities were meant to be a form of applicable struct. Unfortunately,
the implementation is intertwingled with generics. Removing them, for
now, will make it possible to cleanly re-add applicable struct support.
* libguile/struct.h (SCM_STRUCTF_ENTITY): Remove.
(SCM_STRUCTF_GOOPS_HACK): New flag; sigh.
* libguile/struct.c (scm_make_struct): We make "entity" structs if the
GOOPS_HACK flag is set. This will be fixed when we rework flags and
remove hidden words.
* libguile/goops.c (scm_class_of): Structs are not applicable, for now
at least.
(scm_sys_inherit_magic_x, scm_basic_basic_make_class)
(scm_sys_allocate_instance, scm_sys_set_object_setter_x):
(make_struct_class): Adapt for no more entities (and thus no entity
flag).
(create_standard_classes): For some reason, generic functions were
getting the LIGHT flag set, after the ENTITY flag was removed; so for
now explicitly clear that flag.
* libguile/goops.h (SCM_GENERIC_SETTER, SCM_SET_GENERIC_SETTER): New
macros.
* libguile/objects.h:
* libguile/objects.c: Remove code for entities.
* libguile/debug.c: (scm_procedure_source): Only work with generics.
* libguile/eval.c (scm_trampoline_0, scm_trampoline_1)
(scm_trampoline_2): Only handle generics.
* libguile/eval.i.c (CEVAL): #ifdef out the pieces about entities.
* libguile/procprop.c (scm_i_procedure_arity): Remove support for
entities.
* libguile/procs.c (scm_procedure_p, scm_procedure, scm_setter): Remove
entity support.
Diffstat (limited to 'libguile/eval.c')
-rw-r--r-- | libguile/eval.c | 6 |
1 files changed, 0 insertions, 6 deletions
diff --git a/libguile/eval.c b/libguile/eval.c index 317be4042..8039efdef 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -3270,8 +3270,6 @@ scm_trampoline_0 (SCM proc) case scm_tcs_struct: if (SCM_OBJ_CLASS_FLAGS (proc) & SCM_CLASSF_PURE_GENERIC) trampoline = scm_call_generic_0; - else if (SCM_I_ENTITYP (proc)) - trampoline = scm_call_0; else return NULL; break; @@ -3396,8 +3394,6 @@ scm_trampoline_1 (SCM proc) case scm_tcs_struct: if (SCM_OBJ_CLASS_FLAGS (proc) & SCM_CLASSF_PURE_GENERIC) trampoline = scm_call_generic_1; - else if (SCM_I_ENTITYP (proc)) - trampoline = scm_call_1; else return NULL; break; @@ -3493,8 +3489,6 @@ scm_trampoline_2 (SCM proc) case scm_tcs_struct: if (SCM_OBJ_CLASS_FLAGS (proc) & SCM_CLASSF_PURE_GENERIC) trampoline = scm_call_generic_2; - else if (SCM_I_ENTITYP (proc)) - trampoline = scm_call_2; else return NULL; break; |