1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-07-01 15:20:34 +02:00
guile/module
Andy Wingo 6c7dd9ebd3 Generics with setters have <applicable-struct-with-setter> layout
* libguile/goops.c (scm_sys_set_object_setter_x): Remove.  Instead, we
  use slot-set! of 'setter.
  (scm_i_define_class_for_vtable): Move lower in the file, and fold in
  scm_make_extended_class_from_symbol and make_class_from_symbol.
  Properly handle applicable structs with setters.
  (scm_class_applicable_struct_with_setter_class): New private capture.
  (scm_sys_bless_applicable_struct_vtables_x): Rename to take two
  arguments, and bless the second argument as an applicable struct with
  setter vtable.
  (scm_sys_goops_early_init): Capture setter classes.

* libguile/deprecated.c (SPEC_OF, CPL_OF): Access slots by name, not by
  index.
  (applicablep, more_specificp): Adapt to use CPL_OF.
  (scm_find_method): Access "methods" slot by name.

* libguile/procs.c (scm_setter): Remove special case for generics; if
  it's a setter, it will be a normal applicable struct.
* module/oop/goops.scm (<applicable-struct-with-setter-class>)
  (<applicable-struct-with-setter>): New classes.
  (<generic-with-setter>): Now an instance of the setter metaclass and a
  child of the setter class, so that the "setter" slot ends up in the
  right place.
  (<accessor>, <extended-generic-with-setter>, <extended-accessor>): Be
  instances of the setter metaclass.
  (<method>, <accessor-method>): Move definitions farther down.
  (make): Use slot-set! when initializing setters here.
  (initialize): Likewise for <applicable-struct-with-setter>.  Remove
  specialization for <generic-with-setter>.
2015-01-23 16:16:00 +01:00
..
ice-9 Merge commit 'ed72201a79' 2015-01-22 14:53:06 +01:00
language Keywords have a tc7 2015-01-22 13:03:11 +01:00
oop Generics with setters have <applicable-struct-with-setter> layout 2015-01-23 16:16:00 +01:00
rnrs Merge branch 'stable-2.0' 2014-04-25 02:06:01 -04:00
scripts Merge branch 'stable-2.0' 2014-09-30 03:50:47 -04:00
srfi Merge commit '8cf2a7ba74' 2015-01-22 13:24:30 +01:00
sxml Remove duplicate definitions of call/ec' and let/ec'. 2013-04-06 15:40:19 +02:00
system Fix the assembler for unexpected source properties 2015-01-23 16:11:10 +01:00
texinfo Improve correctness and consistency of 'eval-when' usage. 2014-01-23 10:41:22 -05:00
web web: Location header is URI-reference; better URI-reference support 2014-11-01 15:36:56 +01:00
Makefile.am Fold GOOPS compile and dispatch modules into main GOOPS module 2015-01-23 16:16:00 +01:00
rnrs.scm Add missing R6RS `open-file-input/output-port' procedure 2012-11-12 20:47:57 +01:00
statprof.scm Merge commit 'cdcba5b2f6' 2015-01-22 14:37:18 +01:00
texinfo.scm texinfo: fix @url{@@} parsing 2014-11-09 15:56:33 +00:00