Index: doc/index.html
===================================================================
diff -u -rfb73930aa9ecf6ce966e512e6f899acb5784ea8c -r782b1f820f03b0f09c3e333a5e03f9ad2808fcac
--- doc/index.html (.../index.html) (revision fb73930aa9ecf6ce966e512e6f899acb5784ea8c)
+++ doc/index.html (.../index.html) (revision 782b1f820f03b0f09c3e333a5e03f9ad2808fcac)
@@ -23,7 +23,7 @@
- - Directory './library/lib':
Script.xotcl, doc-tools.xotcl, htmllib.xotcl, make.xotcl, makeDoc.xotcl, metadataAnalyzer.xotcl, mixinStrategy.xotcl, package.xotcl, staticMetadata.xotcl, test.xotcl, trace.xotcl, upvarcompat.xotcl, xodoc.xotcl, xotcl1.xotcl - Directory './library/store':
JufGdbmStorage.xotcl, MemStorage.xotcl, MultiStorage.xotcl, Persistence.xotcl, Storage.xotcl, TclGdbmStorage.xotcl, TextFileStorage.xotcl, persistenceExample.xotcl - Directory './library/serialize':
Serializer.xotcl - Directory './tests':
12.xotcl, aliastest.xotcl, destroytest.xotcl, doc.xotcl, forwardtest.xotcl, info-method.xotcl, interceptor-slot.xotcl, method-modifiers.xotcl, mix.xotcl, mixinoftest.xotcl, o2.xotcl, object-system.xotcl, parameters.xotcl, protected.xotcl, slottest.xotcl, speedtest.xotcl, stack.xotcl, testo.xotcl, testx.xotcl, var.xotcl, varresolutiontest.xotcl - Directory './apps/scripts':
adapter.xotcl, adapterExample.xotcl, composite.xotcl, compositeExample.xotcl, observer.xotcl, parameter.xotcl, pinger.xotcl, simpleFilters.xotcl, soccerClub.xotcl, soccerClub2.xotcl - Directory './apps/comm':
ftp.xotcl, link-checker.xotcl, secure-webclient.xotcl, secure-webserver.xotcl, webclient.xotcl, webserver.xotcl - Directory './apps/actiweb/univ':
UNIVERSAL.xotcl - Directory './apps/utils':
xo-daemon, xo-whichPkg
+ - Directory './library/lib':
Script.xotcl, doc-tools.xotcl, htmllib.xotcl, make.xotcl, makeDoc.xotcl, metadataAnalyzer.xotcl, mixinStrategy.xotcl, package.xotcl, staticMetadata.xotcl, test.xotcl, trace.xotcl, upvarcompat.xotcl, xodoc.xotcl, xotcl1.xotcl - Directory './library/store':
JufGdbmStorage.xotcl, MemStorage.xotcl, MultiStorage.xotcl, Persistence.xotcl, Storage.xotcl, TclGdbmStorage.xotcl, TextFileStorage.xotcl, persistenceExample.xotcl - Directory './library/serialize':
Serializer.xotcl - Directory './tests':
12.xotcl, aliastest.xotcl, destroytest.xotcl, doc.xotcl, forwardtest.xotcl, info-method.xotcl, interceptor-slot.xotcl, method-modifiers.xotcl, mix.xotcl, mixinoftest.xotcl, o2.xotcl, object-system.xotcl, parameters.xotcl, protected.xotcl, slottest.xotcl, speedtest.xotcl, stack.xotcl, testo.xotcl, testx.xotcl, var.xotcl, varresolutiontest.xotcl, varresolutiontest1.xotcl - Directory './apps/scripts':
adapter.xotcl, adapterExample.xotcl, composite.xotcl, compositeExample.xotcl, observer.xotcl, parameter.xotcl, pinger.xotcl, simpleFilters.xotcl, soccerClub.xotcl, soccerClub2.xotcl - Directory './apps/comm':
ftp.xotcl, link-checker.xotcl, secure-webclient.xotcl, secure-webserver.xotcl, webclient.xotcl, webserver.xotcl - Directory './apps/actiweb/univ':
UNIVERSAL.xotcl - Directory './apps/utils':
xo-daemon, xo-whichPkg
Index: doc/langRef2.xotcl
===================================================================
diff -u -rdb31aba05701517b161d7633e64d5af925358ee0 -r782b1f820f03b0f09c3e333a5e03f9ad2808fcac
--- doc/langRef2.xotcl (.../langRef2.xotcl) (revision db31aba05701517b161d7633e64d5af925358ee0)
+++ doc/langRef2.xotcl (.../langRef2.xotcl) (revision 782b1f820f03b0f09c3e333a5e03f9ad2808fcac)
@@ -1,4 +1,4 @@
-package req xotcl::doc-tools
+source [file dirname [info script]]/xodoc-tools.xotcl
namespace eval ::xodoc-tools {
@@ -101,7 +101,7 @@
}
#
- # alias
+ # i think, we do not have to distinguish between alias registered on Object and Class
#
@ xotclMethod alias -partof ::xotcl2::Object \
@@ -117,10 +117,6 @@
:returns "Fully qualified method name"
}
- #
- # setter
- #
-
@ xotclMethod setter -partof ::xotcl2::Object \
-arguments {methodName} {
Register a method as a setter for same-named instance variables
@@ -134,5 +130,16 @@
}
-::xodoc-tools::make all
-::xodoc-tools::make doc
+namespace eval ::xodoc-tools {
+ puts "
Primitive XOTcl framework commands
\n"
+ foreach cmd [sorted [xotclCmd info instances] name] {
+ $cmd renderCmd
+ }
+ puts "
\n\n"
+
+ puts "XOTcl Classes
\n"
+ foreach cmd [sorted [xotclClass info instances] name] {
+ $cmd renderClass
+ }
+ puts "
\n\n"
+}
Index: generic/xotcl.c
===================================================================
diff -u -r3a8922005bda5bd8555a66706019bec9d9cfb239 -r782b1f820f03b0f09c3e333a5e03f9ad2808fcac
--- generic/xotcl.c (.../xotcl.c) (revision 3a8922005bda5bd8555a66706019bec9d9cfb239)
+++ generic/xotcl.c (.../xotcl.c) (revision 782b1f820f03b0f09c3e333a5e03f9ad2808fcac)
@@ -8465,12 +8465,13 @@
static int
-GetInstVarIntoCurrentScope(Tcl_Interp *interp, XOTclObject *object,
+GetInstVarIntoCurrentScope(Tcl_Interp *interp, const char *cmdName, XOTclObject *object,
Tcl_Obj *varName, Tcl_Obj *newName) {
Var *varPtr = NULL, *otherPtr = NULL, *arrayPtr;
int new = 0, flgs = TCL_LEAVE_ERR_MSG;
Tcl_CallFrame *varFramePtr;
Tcl_CallFrame frame, *framePtr = &frame;
+ char *varNameString;
XOTcl_PushFrameObj(interp, object, framePtr);
if (object->nsPtr) {
@@ -8482,8 +8483,8 @@
XOTcl_PopFrameObj(interp, framePtr);
if (otherPtr == NULL) {
- return XOTclVarErrMsg(interp, "can't make instvar ", ObjStr(varName),
- ": can't find variable on ", objectName(object),
+ return XOTclVarErrMsg(interp, "can't import variable ", ObjStr(varName),
+ " into method scope: can't find variable on ", objectName(object),
(char *) NULL);
}
@@ -8505,21 +8506,22 @@
newName = varName;
}
-#if 0
- if (strstr(newName, "::")) {
- return XOTclVarErrMsg(interp, "variable name \"", newName,
- "\" illegal: must not contain namespace separator",
+ varNameString = ObjStr(newName);
+
+ if (strstr(varNameString, "::") || *varNameString == ':') {
+ return XOTclVarErrMsg(interp, "variable name \"", varNameString,
+ "\" must not contain namespace separator or colon prefix",
(char *) NULL);
}
-#endif
+
varFramePtr = (Tcl_CallFrame *)Tcl_Interp_varFramePtr(interp);
/*
* If we are executing inside a Tcl procedure, create a local
* variable linked to the new namespace variable "varName".
*/
if (varFramePtr && (Tcl_CallFrame_isProcCallFrame(varFramePtr) & FRAME_IS_PROC)) {
- varPtr = (Var *)CompiledLocalsLookup((CallFrame *)varFramePtr, ObjStr(newName));
+ varPtr = (Var *)CompiledLocalsLookup((CallFrame *)varFramePtr, varNameString);
if (varPtr == NULL) {
/* look in frame's local var hashtable */
@@ -8566,10 +8568,10 @@
}
} else if (!TclIsVarUndefined(varPtr)) {
- return XOTclVarErrMsg(interp, "variable '", ObjStr(newName),
+ return XOTclVarErrMsg(interp, "variable '", varNameString,
"' exists already", (char *) NULL);
} else if (TclIsVarTraced(varPtr)) {
- return XOTclVarErrMsg(interp, "variable '", ObjStr(newName),
+ return XOTclVarErrMsg(interp, "variable '", varNameString,
"' has traces: can't use for instvar", (char *) NULL);
}
}
@@ -8585,6 +8587,10 @@
varPtr->flags,
TclIsVarLink(varPtr), TclIsVarTraced(varPtr), TclIsVarUndefined(varPtr));
*/
+ } else {
+ return XOTclVarErrMsg(interp, cmdName,
+ " cannot import variable '", varNameString,
+ "' into method scope; not called from a method frame", (char *) NULL);
}
return TCL_OK;
}
@@ -11065,10 +11071,10 @@
}
*/
static int
-XOTclImportvarCmd(Tcl_Interp *interp, XOTclObject *object, int objc, Tcl_Obj *CONST objv[]) {
+XOTclImportvar(Tcl_Interp *interp, XOTclObject *object, const char *cmdName, int objc, Tcl_Obj *CONST objv[]) {
int i, result = TCL_OK;
- for (i=0; i