From fbdb724057c9545201d0a4cc2d8eb2edc4743392 Mon Sep 17 00:00:00 2001 From: dkf Date: Fri, 27 Oct 2006 12:53:43 +0000 Subject: Allow extensions that use the internal stubs to set a namespace path. --- ChangeLog | 3 +++ generic/tclInt.decls | 6 +++++- generic/tclNamesp.c | 13 +++++-------- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index bb8cfe3..f9b3dc6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2006-10-27 Donal K. Fellows + * generic/tclNamesp.c (TclSetNsPath): Expose SetNsPath through + internal stubs table with semi-external name. + * generic/tclInt.h (CallFrame): Add a field for handling context data for extensions (like object systems) that should be tied to a call frame (and not a command or interpreter). diff --git a/generic/tclInt.decls b/generic/tclInt.decls index 121402a..d2fbb20 100644 --- a/generic/tclInt.decls +++ b/generic/tclInt.decls @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tclInt.decls,v 1.101 2006/10/27 12:33:18 dkf Exp $ +# RCS: @(#) $Id: tclInt.decls,v 1.102 2006/10/27 12:53:43 dkf Exp $ library tcl @@ -894,6 +894,10 @@ declare 225 generic { declare 226 generic { int TclObjBeingDeleted(Tcl_Obj *objPtr) } +declare 227 generic { + void TclSetNsPath(Namespace *nsPtr, int pathLength, + Tcl_Namespace *pathAry[]) +} ############################################################################## diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index f0c5ff8..6e239db 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -22,7 +22,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.106 2006/10/26 17:22:17 msofer Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.107 2006/10/27 12:53:44 dkf Exp $ */ #include "tclInt.h" @@ -251,8 +251,6 @@ static void FreeEnsembleCmdRep(Tcl_Obj *objPtr); static void DupEnsembleCmdRep(Tcl_Obj *objPtr, Tcl_Obj *copyPtr); static void StringOfEnsembleCmdRep(Tcl_Obj *objPtr); static void UnlinkNsPath(Namespace *nsPtr); -static void SetNsPath(Namespace *nsPtr, int pathLength, - Tcl_Namespace *pathAry[]); /* * This structure defines a Tcl object type that contains a namespace @@ -4102,7 +4100,7 @@ NamespacePathCmd( * Now we have the list of valid namespaces, install it as the path. */ - SetNsPath(nsPtr, nsObjc, namespaceList); + TclSetNsPath(nsPtr, nsObjc, namespaceList); result = TCL_OK; badNamespace: @@ -4115,7 +4113,7 @@ NamespacePathCmd( /* *---------------------------------------------------------------------- * - * SetNsPath -- + * TclSetNsPath -- * * Sets the namespace command name resolution path to the given list of * namespaces. If the list is empty (of zero length) the path is set to @@ -4132,9 +4130,8 @@ NamespacePathCmd( *---------------------------------------------------------------------- */ -/* EXPOSE ME? */ -static void -SetNsPath( +void +TclSetNsPath( Namespace *nsPtr, /* Namespace whose path is to be set. */ int pathLength, /* Length of pathAry */ Tcl_Namespace *pathAry[]) /* Array of namespaces that are the path. */ -- cgit v0.12