remove support for "entities" -- a form of applicable struct
authorAndy Wingo <wingo@pobox.com>
Sun, 1 Nov 2009 18:46:27 +0000 (19:46 +0100)
committerAndy Wingo <wingo@pobox.com>
Sun, 15 Nov 2009 19:28:11 +0000 (20:28 +0100)
commit11561496bad94481cc2b3d8acba1a154e3c052fc
tree53e274a64e90105150c75d41b5c2358dcc545ba5
parent521ac49bdea053227c973a92e37fcc0879fa20d0
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.
libguile/debug.c
libguile/eval.c
libguile/eval.i.c
libguile/goops.c
libguile/goops.h
libguile/objects.c
libguile/objects.h
libguile/procprop.c
libguile/procs.c
libguile/struct.c
libguile/struct.h