diff --git a/libguile/ChangeLog b/libguile/ChangeLog index bda9f2edd..d1e4f3ebd 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,10 @@ +2003-04-28 Dirk Herrmann + + * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the + instructions that bind the macros on the scheme level back to + goops.c in order to make sure again that the bindings go into the + (oop goops) module and are not visible from the outside. + 2003-04-27 Dirk Herrmann * eval.c: Non functional change: Separated R5RS and non-R5RS diff --git a/libguile/eval.c b/libguile/eval.c index 92eb2878a..8db89815e 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -1090,10 +1090,13 @@ scm_m_at_call_with_values (SCM xorig, SCM env SCM_UNUSED) } -SCM_SYNTAX (s_atdispatch, "@dispatch", scm_makmmacro, scm_m_atdispatch); - +static const char* s_atdispatch = "@dispatch"; SCM_SYMBOL (sym_atdispatch, s_atdispatch); +/* @slot-dispatch is bound privately in the (oop goops) module from goops.c. + * As soon as the module system allows us to more freely create bindings in + * arbitrary modules during the startup phase, the code from goops.c should be + * moved here. */ SCM scm_m_atdispatch (SCM xorig, SCM env) #define FUNC_NAME s_atdispatch @@ -1152,8 +1155,12 @@ scm_m_generalized_set_x (SCM xorig, SCM env SCM_UNUSED) } -SCM_SYNTAX (s_atslot_ref, "@slot-ref", scm_makmmacro, scm_m_atslot_ref); +static const char* s_atslot_ref = "@slot-ref"; +/* @slot-ref is bound privately in the (oop goops) module from goops.c. As + * soon as the module system allows us to more freely create bindings in + * arbitrary modules during the startup phase, the code from goops.c should be + * moved here. */ SCM scm_m_atslot_ref (SCM xorig, SCM env SCM_UNUSED) #define FUNC_NAME s_atslot_ref @@ -1166,8 +1173,12 @@ scm_m_atslot_ref (SCM xorig, SCM env SCM_UNUSED) #undef FUNC_NAME -SCM_SYNTAX (s_atslot_set_x, "@slot-set!", scm_makmmacro, scm_m_atslot_set_x); +static const char* s_atslot_set_x = "@slot-set!"; +/* @slot-set! is bound privately in the (oop goops) module from goops.c. As + * soon as the module system allows us to more freely create bindings in + * arbitrary modules during the startup phase, the code from goops.c should be + * moved here. */ SCM scm_m_atslot_set_x (SCM xorig, SCM env SCM_UNUSED) #define FUNC_NAME s_atslot_set_x diff --git a/libguile/goops.c b/libguile/goops.c index f271ef7ef..6c609615f 100644 --- a/libguile/goops.c +++ b/libguile/goops.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998,1999,2000,2001, 2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -1102,6 +1102,10 @@ SCM_DEFINE (scm_sys_fast_slot_set_x, "%fast-slot-set!", 3, 0, 0, #undef FUNC_NAME +SCM_SYNTAX (s_atslot_ref, "@slot-ref", scm_makmmacro, scm_m_atslot_ref); +SCM_SYNTAX (s_atslot_set_x, "@slot-set!", scm_makmmacro, scm_m_atslot_set_x); + + /** Utilities **/ /* In the future, this function will return the effective slot @@ -1614,6 +1618,10 @@ static SCM list_of_no_method; SCM_GLOBAL_SYMBOL (scm_sym_args, "args"); + +SCM_SYNTAX (s_atdispatch, "@dispatch", scm_makmmacro, scm_m_atdispatch); + + SCM scm_make_method_cache (SCM gf) {