Index: TODO =================================================================== diff -u -r80f8424525f6c3d14ab4755be446758559f810a3 -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- TODO (.../TODO) (revision 80f8424525f6c3d14ab4755be446758559f810a3) +++ TODO (.../TODO) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -2431,24 +2431,18 @@ - added "... info method exists ...." - updated migration guide -TODO: +- changed named of method handling commands in nsf: + ::nsf::methodproperty => ::nsf::method::property + ::nsf::method => ::nsf::method::create + ::nsf::methoddelete => ::nsf::method::delete + ::nsf::alias => ::nsf::method::alias + ::nsf::forward => ::nsf::method::forward + ::nsf::setter => ::nsf::method::setter + (updated regression test, docs, ...) -- explizites [::nsf::method delete] (sinngemäss), als ergänzung zum "{} {}"-idiom - we could extend "::nsf::method obj methodname ...." towards a - "::nsf::method create|destroy obj methodname ....", but this would - be an asymmetry for nsf::alice, nsf::forward, etc. - An option would be an ::nsf::methodelete in accoradance with methodproperty +TODO: - nsfCmd methodproperty NsfMethodPropertyCmd { - {-argName "object" -required 1 -type object} - {-argName "-per-object"} - {-argName "methodName" -required 1 -type tclobj} - -- implemented above suggestion; two more issues: - * document "nsf::methoddelete" (or find a better name for it) - * extend regression test - - fix misleading error message: nx::Class create C { :public method foo {x} {return $x} Index: doc/next-migration.html =================================================================== diff -u -r80f8424525f6c3d14ab4755be446758559f810a3 -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- doc/next-migration.html (.../next-migration.html) (revision 80f8424525f6c3d14ab4755be446758559f810a3) +++ doc/next-migration.html (.../next-migration.html) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -1252,7 +1252,7 @@ parameters are defined (see Section 3.4).

In NX forwarders are called forward. NX does not provide an own method to define variable accessors, but uses the Next Scripting -Framework primitive nsf::setter for it.

+Framework primitive nsf::method::setter for it.

# Define setter and getter methods Classcreate C -::nsf::setter C p1 -::nsf::setter C -per-object p2 +::nsf::method::setter C p1 +::nsf::method::setter C -per-object p2 Objectcreate o -::nsf::setter o p3 +::nsf::method::setter o p3
@@ -5666,7 +5666,7 @@

3.9. Assertions

In contrary to XOTcl, NX provides no pre-registered methods for assertion handling. All assertion handling can e performed via the -Next Scripting primitive nsf::assertion.

+Next Scripting primitive nsf::method::assertion.

-
::nsf::assertion /obj/ check /checkptions/
+
::nsf::method::assertion /obj/ check /checkptions/
+
::nsf::method::assertion /obj/ check
+
::nsf::method::assertion /obj/ object-invar /conditions/
+
::nsf::method::assertion /obj/ object-invar
+
::nsf::method::assertion /cls/ class-invar /conditions/
+
::nsf::method::assertion /cls/ class-invar
+
::nsf::method::assertion /cls/ object-invar /conditions/
+
::nsf::method::assertion /cls/ object-invar
@@ -5731,7 +5731,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
::nsf::assertion /obj/ check
@@ -5757,7 +5757,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
::nsf::assertion /obj/ object-invar /conditions/
@@ -5783,7 +5783,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
::nsf::assertion /obj/ object-invar
@@ -5809,7 +5809,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
::nsf::assertion /cls/ class-invar /conditions/
@@ -5835,7 +5835,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
::nsf::assertion /cls/ class-invar
@@ -5861,7 +5861,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
::nsf::assertion /cls/ object-invar /conditions/
@@ -5887,7 +5887,7 @@ .nx-placeholder {color: #AF663F; font-weight: normal; font-style: italic;} .nx-variable {color: #AF663F; font-weight: normal; font-style: normal;} -
::nsf::assertion /cls/ object-invar
@@ -5963,9 +5963,9 @@
-

4.3. Calling objects via method interface

-

Since the Next Scripting Framework supports the so-called ensemble -objects, which ease the definition of sub-methods substantially, +

4.3. Calling Objects via Method Interface

+

Since the Next Scripting Framework supports the so-called ensemble +objects, which ease the definition of sub-methods substantially, objects registered as methods have different semantics. In XOTcl 1, it was possible to call e.g. a method foo of the slot object Foo::slot::ints via the following two interfaces the same way:

@@ -5996,7 +5996,7 @@ working on the slots objects has to be adapted.

-

4.5. Obsolete commands

+

4.5. Obsolete Commands

Parameter-classes were rarely used and have been replaced by the more general object parameterization. Therefore, cl info parameterclass has been removed.

@@ -6031,7 +6031,7 @@ Index: doc/next-migration.txt =================================================================== diff -u -r80f8424525f6c3d14ab4755be446758559f810a3 -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- doc/next-migration.txt (.../next-migration.txt) (revision 80f8424525f6c3d14ab4755be446758559f810a3) +++ doc/next-migration.txt (.../next-migration.txt) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -430,7 +430,7 @@ In NX forwarders are called +forward+. NX does not provide an own method to define variable accessors, but uses the Next Scripting -Framework primitive +nsf::setter+ for it. +Framework primitive +nsf::method::setter+ for it. [options="header",cols="asciidoc,asciidoc",frame="none",valign="middle"] |====================== @@ -475,11 +475,11 @@ # Define setter and getter methods Class create C -::nsf::setter C p1 -::nsf::setter C -per-object p2 +::nsf::method::setter C p1 +::nsf::method::setter C -per-object p2 Object create o -::nsf::setter o p3 +::nsf::method::setter o p3 ---------------- |====================== @@ -2337,7 +2337,7 @@ In contrary to XOTcl, NX provides no pre-registered methods for assertion handling. All assertion handling can e performed via the -Next Scripting primitive +nsf::assertion+. +Next Scripting primitive +nsf::method::assertion+. [options="header",cols="asciidoc,asciidoc",frame="none",valign="middle"] |====================== @@ -2349,63 +2349,63 @@ ---------------- |[source,tcl] ---------------- -::nsf::assertion /obj/ check /checkptions/ +::nsf::method::assertion /obj/ check /checkptions/ ---------------- |[source,tcl] ---------------- /obj/ info check ---------------- |[source,tcl] ---------------- -::nsf::assertion /obj/ check +::nsf::method::assertion /obj/ check ---------------- |[source,tcl] ---------------- /obj/ invar /conditions/ ---------------- |[source,tcl] ---------------- -::nsf::assertion /obj/ object-invar /conditions/ +::nsf::method::assertion /obj/ object-invar /conditions/ ---------------- |[source,tcl] ---------------- /obj/ info invar ---------------- |[source,tcl] ---------------- -::nsf::assertion /obj/ object-invar +::nsf::method::assertion /obj/ object-invar ---------------- |[source,tcl] ---------------- /cls/ instinvar /conditions/ ---------------- |[source,tcl] ---------------- -::nsf::assertion /cls/ class-invar /conditions/ +::nsf::method::assertion /cls/ class-invar /conditions/ ---------------- |[source,tcl] ---------------- /cls/ info instinvar ---------------- |[source,tcl] ---------------- -::nsf::assertion /cls/ class-invar +::nsf::method::assertion /cls/ class-invar ---------------- |[source,tcl] ---------------- /cls/ invar /conditions/ ---------------- |[source,tcl] ---------------- -::nsf::assertion /cls/ object-invar /conditions/ +::nsf::method::assertion /cls/ object-invar /conditions/ ---------------- |[source,tcl] ---------------- /cls/ info invar ---------------- |[source,tcl] ---------------- -::nsf::assertion /cls/ object-invar +::nsf::method::assertion /cls/ object-invar ---------------- |====================== @@ -2462,10 +2462,10 @@ ---------------- -=== Calling objects via method interface +=== Calling Objects via Method Interface -Since the Next Scripting Framework supports the so-called ensemble -objects, which ease the definition of sub-methods substantially, +Since the Next Scripting Framework supports the so-called _ensemble +objects_, which ease the definition of sub-methods substantially, objects registered as methods have different semantics. In XOTcl 1, it was possible to call e.g. a method foo of the slot object `Foo::slot::ints` via the following two interfaces the same way: @@ -2489,7 +2489,7 @@ default-setter `initcmd` was changed to `defaultcmd`. Code directly working on the slots objects has to be adapted. -=== Obsolete commands +=== Obsolete Commands Parameter-classes were rarely used and have been replaced by the more general object parameterization. Therefore, `cl info parameterclass` has Index: generic/gentclAPI.decls =================================================================== diff -u -rb252a0a0d40f1125c6ad5fa4269bfb500bfd034f -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- generic/gentclAPI.decls (.../gentclAPI.decls) (revision b252a0a0d40f1125c6ad5fa4269bfb500bfd034f) +++ generic/gentclAPI.decls (.../gentclAPI.decls) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -22,18 +22,6 @@ nsfCmd __profile_clear NsfProfileClearDataStub {} nsfCmd __profile_get NsfProfileGetDataStub {} -nsfCmd alias NsfAliasCmd { - {-argName "object" -required 1 -type object} - {-argName "-per-object" -required 0} - {-argName "methodName" -required 1} - {-argName "-frame" -required 0 -nrargs 1 -type "method|object|default" -default "default"} - {-argName "cmdName" -required 1 -type tclobj} -} -nsfCmd assertion NsfAssertionCmd { - {-argName "object" -required 1 -type object} - {-argName "assertionsubcmd" -required 1 -nrargs 1 -type "check|object-invar|class-invar"} - {-argName "arg" -required 0 -type tclobj} -} nsfCmd configure NsfConfigureCmd { {-argName "configureoption" -required 1 -type "debug|dtrace|filter|profile|softrecreate|objectsystems|keepinitcmd|checkresults|checkarguments"} {-argName "value" -required 0 -type tclobj} @@ -59,19 +47,6 @@ nsfCmd finalize NsfFinalizeObjCmd { } -nsfCmd forward NsfForwardCmd { - {-argName "object" -required 1 -type object} - {-argName "-per-object"} - {-argName "method" -required 1 -type tclobj} - {-argName "-default" -nrargs 1 -type tclobj} - {-argName "-earlybinding"} - {-argName "-methodprefix" -nrargs 1 -type tclobj} - {-argName "-objframe"} - {-argName "-onerror" -nrargs 1 -type tclobj} - {-argName "-verbose"} - {-argName "target" -type tclobj} - {-argName "args" -type args} -} nsfCmd importvar NsfImportvarCmd { {-argName "object" -required 1 -type object} {-argName "args" -type args} @@ -91,8 +66,21 @@ nsfCmd isobject NsfIsObjectCmd { {-argName "value" -required 1 -type tclobj} } -nsfCmd method NsfMethodCmd { + +nsfCmd "method::alias" NsfAliasCmd { {-argName "object" -required 1 -type object} + {-argName "-per-object" -required 0} + {-argName "methodName" -required 1} + {-argName "-frame" -required 0 -nrargs 1 -type "method|object|default" -default "default"} + {-argName "cmdName" -required 1 -type tclobj} +} +nsfCmd "method::assertion" NsfAssertionCmd { + {-argName "object" -required 1 -type object} + {-argName "assertionsubcmd" -required 1 -nrargs 1 -type "check|object-invar|class-invar"} + {-argName "arg" -required 0 -type tclobj} +} +nsfCmd "method::create" NsfMethodCmd { + {-argName "object" -required 1 -type object} {-argName "-inner-namespace"} {-argName "-per-object"} {-argName "methodName" -required 1 -type tclobj} @@ -101,6 +89,31 @@ {-argName "-precondition" -nrargs 1 -type tclobj} {-argName "-postcondition" -nrargs 1 -type tclobj} } +nsfCmd "method::forward" NsfForwardCmd { + {-argName "object" -required 1 -type object} + {-argName "-per-object"} + {-argName "method" -required 1 -type tclobj} + {-argName "-default" -nrargs 1 -type tclobj} + {-argName "-earlybinding"} + {-argName "-methodprefix" -nrargs 1 -type tclobj} + {-argName "-objframe"} + {-argName "-onerror" -nrargs 1 -type tclobj} + {-argName "-verbose"} + {-argName "target" -type tclobj} + {-argName "args" -type args} +} +nsfCmd "method::property" NsfMethodPropertyCmd { + {-argName "object" -required 1 -type object} + {-argName "-per-object"} + {-argName "methodName" -required 1 -type tclobj} + {-argName "methodproperty" -required 1 -type "class-only|call-protected|redefine-protected|returns|slotcontainer|slotobj"} + {-argName "value" -type tclobj} +} +nsfCmd "method::setter" NsfSetterCmd { + {-argName "object" -required 1 -type object} + {-argName "-per-object"} + {-argName "parameter" -required 1 -type tclobj} +} nsfCmd proc NsfProcCmd { {-argName "-ad" -required 0} @@ -109,13 +122,7 @@ {-argName "body" -required 1 -type tclobj} } -nsfCmd methodproperty NsfMethodPropertyCmd { - {-argName "object" -required 1 -type object} - {-argName "-per-object"} - {-argName "methodName" -required 1 -type tclobj} - {-argName "methodproperty" -required 1 -type "class-only|call-protected|redefine-protected|returns|slotcontainer|slotobj"} - {-argName "value" -type tclobj} -} + nsfCmd my NsfMyCmd { {-argName "-local"} {-argName "methodName" -required 1 -type tclobj} @@ -145,11 +152,6 @@ } nsfCmd self NsfSelfCmd { } -nsfCmd setter NsfSetterCmd { - {-argName "object" -required 1 -type object} - {-argName "-per-object"} - {-argName "parameter" -required 1 -type tclobj} -} nsfCmd setvar NsfSetVarCmd { {-argName "object" -required 1 -type object} {-argName "varName" -required 1 -type tclobj} Index: generic/nsf.c =================================================================== diff -u -rb252a0a0d40f1125c6ad5fa4269bfb500bfd034f -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- generic/nsf.c (.../nsf.c) (revision b252a0a0d40f1125c6ad5fa4269bfb500bfd034f) +++ generic/nsf.c (.../nsf.c) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -15658,7 +15658,7 @@ #endif DSTRING_INIT(dsPtr); - Tcl_DStringAppendElement(dsPtr, "::nsf::method"); + Tcl_DStringAppendElement(dsPtr, "::nsf::method::create"); Tcl_DStringAppendElement(dsPtr, NSCutNsfClasses(toNsPtr->fullName)); Tcl_DStringAppendElement(dsPtr, name); Tcl_DStringAppendElement(dsPtr, ObjStr(arglistObj)); @@ -15691,7 +15691,7 @@ } DSTRING_INIT(dsPtr); - Tcl_DStringAppendElement(dsPtr, "::nsf::method"); + Tcl_DStringAppendElement(dsPtr, "::nsf::method::create"); Tcl_DStringAppendElement(dsPtr, toNsPtr->fullName); Tcl_DStringAppendElement(dsPtr, "-per-object"); Tcl_DStringAppendElement(dsPtr, name); Index: generic/nsf.tcl =================================================================== diff -u -rb252a0a0d40f1125c6ad5fa4269bfb500bfd034f -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- generic/nsf.tcl (.../nsf.tcl) (revision b252a0a0d40f1125c6ad5fa4269bfb500bfd034f) +++ generic/nsf.tcl (.../nsf.tcl) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -8,8 +8,10 @@ namespace export next current self # Symbols reused in XOTcl - - namespace export alias configure finalize interp is my relation + namespace eval ::nsf::method::create { + namespace export alias + } + namespace export configure finalize interp is my relation # # support for method provide and method require @@ -40,10 +42,10 @@ # # proc for deleting methods # - nsf::proc ::nsf::methoddelete {object:object -per-object:switch methodName} { + nsf::proc ::nsf::method::delete {object:object -per-object:switch methodName} { set scope [expr {${per-object} ? "object" : "class"}] if {[$object ::nsf::methods::${scope}::info::method exists $methodName]} { - ::nsf::method $object {*}[expr {${per-object} ? "-per-object" : ""}] $methodName "" "" + ::nsf::method::create $object {*}[expr {${per-object} ? "-per-object" : ""}] $methodName "" "" } else { error "Object $object: method $methodName is not defined" } @@ -66,7 +68,7 @@ # # ::nsf::mixin # - # Provide a similar interface as for ::nsf::method, ::nsf::alias, + # Provide a similar interface as for ::nsf::method::create, ::nsf::method::alias, # etc.. Semantically, ::nsf::mxiin behaves like a "mixin add", but # can be used as well for deleting the mixin list (empty last # argument). @@ -86,8 +88,8 @@ # # provide some popular methods for "method require" # - ::nsf::provide_method autoname {::nsf::alias autoname ::nsf::methods::object::autoname} - ::nsf::provide_method exists {::nsf::alias exists ::nsf::methods::object::exists} + ::nsf::provide_method autoname {::nsf::method::alias autoname ::nsf::methods::object::autoname} + ::nsf::provide_method exists {::nsf::method::alias exists ::nsf::methods::object::exists} # # exit handlers Index: generic/predefined.h =================================================================== diff -u -rb252a0a0d40f1125c6ad5fa4269bfb500bfd034f -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- generic/predefined.h (.../predefined.h) (revision b252a0a0d40f1125c6ad5fa4269bfb500bfd034f) +++ generic/predefined.h (.../predefined.h) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -1,7 +1,9 @@ static char cmd[] = "namespace eval ::nsf {\n" "namespace export next current self\n" -"namespace export alias configure finalize interp is my relation\n" +"namespace eval ::nsf::method::create {\n" +"namespace export alias}\n" +"namespace export configure finalize interp is my relation\n" "proc ::nsf::provide_method {require_name definition {script \"\"}} {\n" "set ::nsf::methodIndex($require_name) [list definition $definition script $script]}\n" "proc ::nsf::require_method {object name {per_object 0}} {\n" @@ -15,10 +17,10 @@ "eval [linsert $cmd 1 $object]} else {\n" "eval [linsert $(definition) 1 $object]}} else {\n" "error \"cannot require method $name for $object, method unknown\"}}\n" -"nsf::proc ::nsf::methoddelete {object:object -per-object:switch methodName} {\n" +"nsf::proc ::nsf::method::delete {object:object -per-object:switch methodName} {\n" "set scope [expr {${per-object} ? \"object\" : \"class\"}]\n" "if {[$object ::nsf::methods::${scope}::info::method exists $methodName]} {\n" -"::nsf::method $object {*}[expr {${per-object} ? \"-per-object\" : \"\"}] $methodName \"\" \"\"} else {\n" +"::nsf::method::create $object {*}[expr {${per-object} ? \"-per-object\" : \"\"}] $methodName \"\" \"\"} else {\n" "error \"Object $object: method $methodName is not defined\"}}\n" "::proc strip_proc_name {name} {\n" "if {[string match ::nsf::procs::* $name]} {\n" @@ -31,8 +33,8 @@ "set oldSetting [::nsf::relation $object $rel]\n" "uplevel [list ::nsf::relation $object $rel [linsert $oldSetting 0 $classes]]} else {\n" "uplevel [list ::nsf::relation $object $rel \"\"]}}\n" -"::nsf::provide_method autoname {::nsf::alias autoname ::nsf::methods::object::autoname}\n" -"::nsf::provide_method exists {::nsf::alias exists ::nsf::methods::object::exists}\n" +"::nsf::provide_method autoname {::nsf::method::alias autoname ::nsf::methods::object::autoname}\n" +"::nsf::provide_method exists {::nsf::method::alias exists ::nsf::methods::object::exists}\n" "proc ::nsf::exithandler {args} {\n" "lassign $args op value\n" "switch $op {\n" Index: generic/tclAPI.h =================================================================== diff -u -rb252a0a0d40f1125c6ad5fa4269bfb500bfd034f -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- generic/tclAPI.h (.../tclAPI.h) (revision b252a0a0d40f1125c6ad5fa4269bfb500bfd034f) +++ generic/tclAPI.h (.../tclAPI.h) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -2173,14 +2173,14 @@ {"-closure", 0, 0, ConvertToString, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"pattern", 0, 0, ConvertToTclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL}} }, -{"::nsf::alias", NsfAliasCmdStub, 5, { +{"::nsf::method::alias", NsfAliasCmdStub, 5, { {"object", NSF_ARG_REQUIRED, 0, ConvertToObject, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"-per-object", 0, 0, ConvertToString, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"methodName", NSF_ARG_REQUIRED, 0, ConvertToString, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"-frame", 0|NSF_ARG_IS_ENUMERATION, 1, ConvertToFrame, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"cmdName", NSF_ARG_REQUIRED, 0, ConvertToTclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL}} }, -{"::nsf::assertion", NsfAssertionCmdStub, 3, { +{"::nsf::method::assertion", NsfAssertionCmdStub, 3, { {"object", NSF_ARG_REQUIRED, 0, ConvertToObject, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"assertionsubcmd", NSF_ARG_REQUIRED|NSF_ARG_IS_ENUMERATION, 1, ConvertToAssertionsubcmd, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"arg", 0, 0, ConvertToTclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL}} @@ -2216,7 +2216,7 @@ {"::nsf::finalize", NsfFinalizeObjCmdStub, 0, { {NULL, 0, 0, NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL}} }, -{"::nsf::forward", NsfForwardCmdStub, 11, { +{"::nsf::method::forward", NsfForwardCmdStub, 11, { {"object", NSF_ARG_REQUIRED, 0, ConvertToObject, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"-per-object", 0, 0, ConvertToString, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"method", NSF_ARG_REQUIRED, 0, ConvertToTclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, @@ -2248,7 +2248,7 @@ {"::nsf::isobject", NsfIsObjectCmdStub, 1, { {"value", NSF_ARG_REQUIRED, 0, ConvertToTclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL}} }, -{"::nsf::method", NsfMethodCmdStub, 8, { +{"::nsf::method::create", NsfMethodCmdStub, 8, { {"object", NSF_ARG_REQUIRED, 0, ConvertToObject, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"-inner-namespace", 0, 0, ConvertToString, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"-per-object", 0, 0, ConvertToString, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, @@ -2258,7 +2258,7 @@ {"-precondition", 0, 1, ConvertToTclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"-postcondition", 0, 1, ConvertToTclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL}} }, -{"::nsf::methodproperty", NsfMethodPropertyCmdStub, 5, { +{"::nsf::method::property", NsfMethodPropertyCmdStub, 5, { {"object", NSF_ARG_REQUIRED, 0, ConvertToObject, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"-per-object", 0, 0, ConvertToString, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"methodName", NSF_ARG_REQUIRED, 0, ConvertToTclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, @@ -2309,7 +2309,7 @@ {"varName", NSF_ARG_REQUIRED, 0, ConvertToTclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"value", 0, 0, ConvertToTclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL}} }, -{"::nsf::setter", NsfSetterCmdStub, 3, { +{"::nsf::method::setter", NsfSetterCmdStub, 3, { {"object", NSF_ARG_REQUIRED, 0, ConvertToObject, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"-per-object", 0, 0, ConvertToString, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"parameter", NSF_ARG_REQUIRED, 0, ConvertToTclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL}} Index: library/lib/doc-tools.tcl =================================================================== diff -u -rd9b47262886ea198bd62861a30a212ab0e31b3bb -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- library/lib/doc-tools.tcl (.../doc-tools.tcl) (revision d9b47262886ea198bd62861a30a212ab0e31b3bb) +++ library/lib/doc-tools.tcl (.../doc-tools.tcl) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -1199,8 +1199,8 @@ if {[:pinfo exists bundle handle]} { set handle [:pinfo get bundle handle] - :pinfo set bundle redefine-protected [$box eval [list ::nsf::methodproperty $obj $handle redefine-protected]] - :pinfo set bundle call-protected [$box eval [list ::nsf::methodproperty $obj $handle call-protected]] + :pinfo set bundle redefine-protected [$box eval [list ::nsf::method::property $obj $handle redefine-protected]] + :pinfo set bundle call-protected [$box eval [list ::nsf::method::property $obj $handle call-protected]] } set params [list] @@ -2607,7 +2607,7 @@ array set sysmeths [concat {*}$m] set ::nx::doc::rootns [namespace qualifier $rootmclass] $rootmclass $sysmeths(-class.create) ${::nx::doc::rootns}::__Tracer - ::nsf::method ${::nx::doc::rootns}::__Tracer \ + ::nsf::method::create ${::nx::doc::rootns}::__Tracer \ $sysmeths(-class.create) {name args} { set obj [::nsf::next]; set bundle [dict create] @@ -2634,7 +2634,7 @@ if {[info commands "::nx::Object"] ne ""} { $rootmclass $sysmeths(-class.create) ${::nx::doc::rootns}::__ObjTracer - ::nsf::method ${::nx::doc::rootns}::__ObjTracer \ + ::nsf::method::create ${::nx::doc::rootns}::__ObjTracer \ __resolve_method_path { -per-object:switch -verbose:switch @@ -2724,8 +2724,8 @@ } - rename ::nsf::method ::nsf::_%&method - ::interp invokehidden "" proc ::nsf::method { + rename ::nsf::method::create ::nsf::_%&method + ::interp invokehidden "" proc ::nsf::method::create { object args } { @@ -2739,7 +2739,7 @@ } dict set bundle parametersyntax [::nsf::dispatch ${::nx::doc::rootns}::__Tracer ::nsf::methods::object::info::method parametersyntax $handle] dict set bundle type [::nsf::dispatch ${::nx::doc::rootns}::__Tracer ::nsf::methods::object::info::method type $handle] - dict set bundle returns [::nsf::methodproperty ${::nx::doc::rootns}::__Tracer $handle returns] + dict set bundle returns [::nsf::method::property ${::nx::doc::rootns}::__Tracer $handle returns] ::nx::doc::__at_register_command $handle \ ->cmdtype @method \ ->source [file normalize [info script]] \ @@ -2748,15 +2748,15 @@ return $handle } - rename ::nsf::alias ::nsf::_%&alias - ::interp invokehidden "" proc ::nsf::alias { + rename ::nsf::method::alias ::nsf::_%&alias + ::interp invokehidden "" proc ::nsf::method::alias { args } { set handle [uplevel [list ::nsf::_%&alias {*}$args]] if {$handle ne ""} { dict set bundle handle $handle dict set bundle handleinfo [::nx::doc::handleinfo $handle] - dict set bundle returns [::nsf::methodproperty ${::nx::doc::rootns}::__Tracer $handle returns] + dict set bundle returns [::nsf::method::property ${::nx::doc::rootns}::__Tracer $handle returns] dict set bundle type [::nsf::dispatch ${::nx::doc::rootns}::__Tracer ::nsf::methods::object::info::method type $handle] if {![catch {set pa [::nsf::dispatch ${::nx::doc::rootns}::__Tracer ::nsf::methods::object::info::method parameter $handle]} _]} { foreach pspec $pa { @@ -2804,8 +2804,8 @@ # } - rename ::nsf::forward ::nsf::_%&forward - ::interp invokehidden "" proc ::nsf::forward { + rename ::nsf::method::forward ::nsf::_%&forward + ::interp invokehidden "" proc ::nsf::method::forward { args } { set handle [uplevel [list ::nsf::_%&forward {*}$args]] @@ -2824,8 +2824,8 @@ } } - rename ::nsf::setter ::nsf::_%&setter - ::interp invokehidden "" proc ::nsf::setter { + rename ::nsf::method::setter ::nsf::_%&setter + ::interp invokehidden "" proc ::nsf::method::setter { args } { set handle [uplevel [list ::nsf::_%&setter {*}$args]] Index: library/nx/nx.tcl =================================================================== diff -u -r7f1ad54528440269c6a26b63c1cb0f0d35001e9c -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- library/nx/nx.tcl (.../nx.tcl) (revision 7f1ad54528440269c6a26b63c1cb0f0d35001e9c) +++ library/nx/nx.tcl (.../nx.tcl) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -41,11 +41,11 @@ if {$cmdName in [list "autoname" "cleanup" "exists" \ "filterguard" "instvar" "mixinguard" \ "noinit" "requirenamespace"]} continue - ::nsf::alias Object $cmdName $cmd + ::nsf::method::alias Object $cmdName $cmd } # provide ::eval as method for ::nx::Object - ::nsf::alias Object eval -frame method ::eval + ::nsf::method::alias Object eval -frame method ::eval # # class methods @@ -56,36 +56,36 @@ set cmdName [namespace tail $cmd] if {$cmdName in [list "filterguard" "mixinguard"]} continue # set tgt [Class ::nsf::methods::class::info::methods -methodtype alias -callprotection all $cmdName] - #if {$tgt ne "" && [::nsf::methodproperty Class $cmdName redefine-protected]} { - # ::nsf::methodproperty Class $cmdName redefine-protected false + #if {$tgt ne "" && [::nsf::method::property Class $cmdName redefine-protected]} { + # ::nsf::method::property Class $cmdName redefine-protected false #} - ::nsf::alias Class $cmdName $cmd + ::nsf::method::alias Class $cmdName $cmd unset cmdName } # set a few aliases as protected # "__next", if defined, should be added as well foreach cmd [list residualargs uplevel upvar] { - ::nsf::methodproperty Object $cmd call-protected 1 + ::nsf::method::property Object $cmd call-protected 1 } foreach cmd [list recreate] { - ::nsf::methodproperty Class $cmd call-protected 1 + ::nsf::method::property Class $cmd call-protected 1 } unset cmd # protect some methods against redefinition - ::nsf::methodproperty Object destroy redefine-protected true - ::nsf::methodproperty Class alloc redefine-protected true - ::nsf::methodproperty Class dealloc redefine-protected true - ::nsf::methodproperty Class create redefine-protected true + ::nsf::method::property Object destroy redefine-protected true + ::nsf::method::property Class alloc redefine-protected true + ::nsf::method::property Class dealloc redefine-protected true + ::nsf::method::property Class create redefine-protected true # # The method __resolve_method_path resolves a space separated path # of a method name and creates from the path the necessary ensemble # objects when needed. # - ::nsf::method Object __resolve_method_path { + ::nsf::method::create Object __resolve_method_path { -per-object:switch -verbose:switch path @@ -106,7 +106,7 @@ if {$verbose} {puts stderr "... create object $o"} # We are on a class, and have to create an alias to be # accessible for objects - ::nsf::alias $object $w $o + ::nsf::method::alias $object $w $o if {$verbose} {puts stderr "... create alias $object $w $o"} } else { set o [EnsembleObject create ${object}::$w] @@ -136,47 +136,47 @@ return [list object $object methodName $methodName] } - ::nsf::methodproperty Object __resolve_method_path call-protected true + ::nsf::method::property Object __resolve_method_path call-protected true - ::nsf::method Object __default_method_call_protection args {return false} - ::nsf::method Object __default_attribute_call_protection args {return false} + ::nsf::method::create Object __default_method_call_protection args {return false} + ::nsf::method::create Object __default_attribute_call_protection args {return false} - ::nsf::methodproperty Object __default_method_call_protection call-protected true - ::nsf::methodproperty Object __default_attribute_call_protection call-protected true + ::nsf::method::property Object __default_method_call_protection call-protected true + ::nsf::method::property Object __default_attribute_call_protection call-protected true # define method "method" for Class and Object - ::nsf::method Class method { + ::nsf::method::create Class method { name arguments:parameter,0..* -returns body -precondition -postcondition } { set conditions [list] if {[info exists precondition]} {lappend conditions -precondition $precondition} if {[info exists postcondition]} {lappend conditions -postcondition $postcondition} array set "" [:__resolve_method_path $name] #puts "class method $(object).$(methodName) [list $arguments] {...}" - set r [::nsf::method $(object) $(methodName) $arguments $body {*}$conditions] + set r [::nsf::method::create $(object) $(methodName) $arguments $body {*}$conditions] if {$r ne ""} { # the method was not deleted - ::nsf::methodproperty $(object) $r call-protected [::nsf::dispatch $(object) __default_method_call_protection] - if {[info exists returns]} {::nsf::methodproperty $(object) $r returns $returns} + ::nsf::method::property $(object) $r call-protected [::nsf::dispatch $(object) __default_method_call_protection] + if {[info exists returns]} {::nsf::method::property $(object) $r returns $returns} } return $r } - ::nsf::method Object method { + ::nsf::method::create Object method { name arguments:parameter,0..* -returns body -precondition -postcondition } { set conditions [list] if {[info exists precondition]} {lappend conditions -precondition $precondition} if {[info exists postcondition]} {lappend conditions -postcondition $postcondition} array set "" [:__resolve_method_path -per-object $name] # puts "object method $(object).$(methodName) [list $arguments] {...}" - set r [::nsf::method $(object) -per-object $(methodName) $arguments $body {*}$conditions] + set r [::nsf::method::create $(object) -per-object $(methodName) $arguments $body {*}$conditions] if {$r ne ""} { # the method was not deleted - ::nsf::methodproperty $(object) $r call-protected [::nsf::dispatch $(object) __default_method_call_protection] - if {[info exists returns]} {::nsf::methodproperty $(object) $r returns $returns} + ::nsf::method::property $(object) $r call-protected [::nsf::dispatch $(object) __default_method_call_protection] + if {[info exists returns]} {::nsf::method::property $(object) $r returns $returns} } return $r } @@ -224,7 +224,7 @@ Consider '[::nsf::self] create $m $args' instead of '[::nsf::self] $m $args'" } # protected is not yet defined - ::nsf::methodproperty [::nsf::self] unknown call-protected true + ::nsf::method::property [::nsf::self] unknown call-protected true } @@ -235,7 +235,7 @@ set p [lsearch -regexp $args {^(method|alias|attribute|forward)$}] if {$p == -1} {error "$args is not a method defining method"} set r [::nsf::dispatch [::nsf::current object] {*}$args] - if {$r ne ""} {::nsf::methodproperty [::nsf::self] $r call-protected false} + if {$r ne ""} {::nsf::method::property [::nsf::self] $r call-protected false} return $r } @@ -244,7 +244,7 @@ set p [lsearch -regexp $args {^(method|alias|attribute|forward)$}] if {$p == -1} {error "$args is not a method defining command"} set r [{*}:$args] - if {$r ne ""} {::nsf::methodproperty [::nsf::self] $r call-protected true} + if {$r ne ""} {::nsf::method::property [::nsf::self] $r call-protected true} return $r } } @@ -276,8 +276,8 @@ # # We could do this simply as # - # ::nsf::forward Object forward ::nsf::forward %self -per-object - # ::nsf::forward Class forward ::nsf::forward %self + # ::nsf::method::forward Object forward ::nsf::method::forward %self -per-object + # ::nsf::method::forward Class forward ::nsf::method::forward %self # # but then, we would loose the option to use compound names # @@ -295,10 +295,10 @@ # ... and remove it if found if {$p > -1} {set arguments [lreplace $arguments $p $p+1]} } - set r [::nsf::forward $(object) -per-object $(methodName) {*}$arguments] - ::nsf::methodproperty $(object) -per-object $r call-protected \ + set r [::nsf::method::forward $(object) -per-object $(methodName) {*}$arguments] + ::nsf::method::property $(object) -per-object $r call-protected \ [::nsf::dispatch $(object) __default_method_call_protection] - if {[info exists returns]} {::nsf::methodproperty $(object) $r returns $returns} + if {[info exists returns]} {::nsf::method::property $(object) $r returns $returns} return $r } Class public method forward { @@ -314,10 +314,10 @@ # ... and remove it if found if {$p > -1} {set arguments [lreplace $arguments $p $p+1]} } - set r [::nsf::forward $(object) $(methodName) {*}$arguments] - ::nsf::methodproperty $(object) $r call-protected \ + set r [::nsf::method::forward $(object) $(methodName) {*}$arguments] + ::nsf::method::property $(object) $r call-protected \ [::nsf::dispatch $(object) __default_method_call_protection] - if {[info exists returns]} {::nsf::methodproperty $(object) $r returns $returns} + if {[info exists returns]} {::nsf::method::property $(object) $r returns $returns} return $r } @@ -339,21 +339,21 @@ Object public method alias {methodName -returns {-frame default} cmd} { array set "" [:__resolve_method_path -per-object $methodName] #puts "object alias $(object).$(methodName) $cmd" - set r [::nsf::alias $(object) -per-object $(methodName) \ + set r [::nsf::method::alias $(object) -per-object $(methodName) \ -frame $frame $cmd] - ::nsf::methodproperty $(object) -per-object $r call-protected \ + ::nsf::method::property $(object) -per-object $r call-protected \ [::nsf::dispatch $(object) __default_method_call_protection] - if {[info exists returns]} {::nsf::methodproperty $(object) $r returns $returns} + if {[info exists returns]} {::nsf::method::property $(object) $r returns $returns} return $r } Class public method alias {methodName -returns {-frame default} cmd} { array set "" [:__resolve_method_path $methodName] #puts "class alias $(object).$(methodName) $cmd" - set r [::nsf::alias $(object) $(methodName) -frame $frame $cmd] - ::nsf::methodproperty $(object) $r call-protected \ + set r [::nsf::method::alias $(object) $(methodName) -frame $frame $cmd] + ::nsf::method::property $(object) $r call-protected \ [::nsf::dispatch $(object) __default_method_call_protection] - if {[info exists returns]} {::nsf::methodproperty $(object) $r returns $returns} + if {[info exists returns]} {::nsf::method::property $(object) $r returns $returns} return $r } @@ -385,7 +385,7 @@ if {[::nsf::isobject $object] && [namespace tail $object] eq "slot"} { set parent [$object ::nsf::methods::object::info::parent] return [expr {[::nsf::isobject $parent] - && [::nsf::methodproperty $parent -per-object slot slotcontainer]}] + && [::nsf::method::property $parent -per-object slot slotcontainer]}] } return 0 } @@ -395,9 +395,9 @@ set slotContainer ${baseObject}::slot if {![::nsf::isobject $slotContainer]} { ::nx::Object alloc $slotContainer - ::nsf::methodproperty ${baseObject} -per-object slot call-protected true - ::nsf::methodproperty ${baseObject} -per-object slot redefine-protected true - ::nsf::methodproperty ${baseObject} -per-object slot slotcontainer true + ::nsf::method::property ${baseObject} -per-object slot call-protected true + ::nsf::method::property ${baseObject} -per-object slot redefine-protected true + ::nsf::method::property ${baseObject} -per-object slot slotcontainer true $slotContainer ::nsf::methods::object::requirenamespace } if {$name eq ""} { @@ -710,7 +710,7 @@ ::nsf::setvar $slotObj default $default unset default } - ::nsf::setter $class $att + ::nsf::method::setter $class $att } # @@ -866,7 +866,7 @@ if {![info exists :forwardername]} { set :forwardername ${:methodname} } - ::nsf::forward ${:domain} \ + ::nsf::method::forward ${:domain} \ {*}[expr {${:per-object} ? "-per-object" : ""}] \ ${:name} \ ${:manager} \ @@ -960,7 +960,7 @@ # # create methods for slot operations assign/get/add/delete # - ::nsf::alias RelationSlot assign ::nsf::relation + ::nsf::method::alias RelationSlot assign ::nsf::relation RelationSlot protected method delete_value {obj prop old value} { # @@ -1027,7 +1027,7 @@ proc register_system_slots {os} { # method "class" is a plain forwarder to relation (no slot) - ::nsf::forward ${os}::Object class ::nsf::relation %self class + ::nsf::method::forward ${os}::Object class ::nsf::relation %self class # all other relation cmds are defined as slots @@ -1089,7 +1089,7 @@ $obj info mixin guard $filter } } - #::nsf::alias ::nx::Class::slot::object-filter guard ${os}::Object::slot::filter::guard + #::nsf::method::alias ::nx::Class::slot::object-filter guard ${os}::Object::slot::filter::guard } register_system_slots ::nx @@ -1202,8 +1202,8 @@ set options [:getParameterOptions -withMultiplicity true] set setterParam ${:name} if {[llength $options]>0} {append setterParam :[join $options ,]} - #puts stderr [list ::nsf::setter ${:domain} {*}[expr {${:per-object} ? "-per-object" : ""}] $setterParam] - ::nsf::setter ${:domain} {*}[expr {${:per-object} ? "-per-object" : ""}] $setterParam + #puts stderr [list ::nsf::method::setter ${:domain} {*}[expr {${:per-object} ? "-per-object" : ""}] $setterParam] + ::nsf::method::setter ${:domain} {*}[expr {${:per-object} ? "-per-object" : ""}] $setterParam } ::nx::Attribute protected method makeIncrementalOperations {} { @@ -1262,8 +1262,8 @@ # # implementation of forwarder operations: assign get add delete # - ::nsf::alias Attribute get ::nsf::setvar - ::nsf::alias Attribute assign ::nsf::setvar + ::nsf::method::alias Attribute get ::nsf::setvar + ::nsf::method::alias Attribute assign ::nsf::setvar Attribute public method add {obj prop value {pos 0}} { if {![:isMultivalued]} { @@ -1312,7 +1312,7 @@ -class $class -initblock $initblock {*}$spec] if {$r ne ""} { set o [::nsf::self] - ::nsf::methodproperty $o $r call-protected \ + ::nsf::method::property $o $r call-protected \ [::nsf::dispatch $o __default_attribute_call_protection] return $r } @@ -1323,7 +1323,7 @@ -class $class -per-object -initblock $initblock {*}$spec] if {$r ne ""} { set o [::nsf::self] - ::nsf::methodproperty $o -per-object $r call-protected \ + ::nsf::method::property $o -per-object $r call-protected \ [::nsf::dispatch $o __default_attribute_call_protection] } return $r @@ -1487,7 +1487,7 @@ # class object set obj $cl $cl superclass [$origin info superclass] - ::nsf::assertion $cl class-invar [::nsf::assertion $origin class-invar] + ::nsf::method::assertion $cl class-invar [::nsf::method::assertion $origin class-invar] ::nsf::relation $cl class-filter [::nsf::relation $origin class-filter] ::nsf::relation $cl class-mixin [::nsf::relation $origin class-mixin] :copyNSVarsAndCmds ::nsf::classes$origin ::nsf::classes$dest @@ -1496,8 +1496,8 @@ set obj [[$origin info class] create $dest -noinit] } # copy object -> may be a class obj - ::nsf::assertion $obj check [::nsf::assertion $origin check] - ::nsf::assertion $obj object-invar [::nsf::assertion $origin object-invar] + ::nsf::method::assertion $obj check [::nsf::method::assertion $origin check] + ::nsf::method::assertion $obj object-invar [::nsf::method::assertion $origin object-invar] ::nsf::relation $obj object-filter [::nsf::relation $origin object-filter] ::nsf::relation $obj object-mixin [::nsf::relation $origin object-mixin] # reused in XOTcl, no "require" there, so use nsf primitiva @@ -1509,12 +1509,12 @@ } :copyNSVarsAndCmds $origin $dest foreach i [$origin ::nsf::methods::object::info::forward] { - ::nsf::forward $dest -per-object $i {*}[$origin ::nsf::methods::object::info::forward -definition $i] + ::nsf::method::forward $dest -per-object $i {*}[$origin ::nsf::methods::object::info::forward -definition $i] } if {[::nsf::is class $origin]} { foreach i [$origin ::nsf::methods::class::info::forward] { - ::nsf::forward $dest $i {*}[$origin ::nsf::methods::class::info::forward -definition $i] + ::nsf::method::forward $dest $i {*}[$origin ::nsf::methods::class::info::forward -definition $i] } } set traces [list] @@ -1593,7 +1593,7 @@ ####################################################### foreach m [Class info methods] { - ::nsf::methodproperty Class $m class-only true + ::nsf::method::property Class $m class-only true } unset m @@ -1613,8 +1613,8 @@ # :method defaultMethodCallProtection {value:boolean,optional} { if {[info exists value]} { - ::nsf::method Object __default_method_call_protection args [list return $value] - ::nsf::methodproperty Object __default_method_call_protection call-protected true + ::nsf::method::create Object __default_method_call_protection args [list return $value] + ::nsf::method::property Object __default_method_call_protection call-protected true } return [::nsf::dispatch [::nx::self] __default_method_call_protection] } @@ -1626,8 +1626,8 @@ # :method defaultAttributeCallProtection {value:boolean,optional} { if {[info exists value]} { - ::nsf::method Object __default_attribute_call_protection args [list return $value] - ::nsf::methodproperty Object __default_attribute_call_protection call-protected true + ::nsf::method::create Object __default_attribute_call_protection args [list return $value] + ::nsf::method::property Object __default_attribute_call_protection call-protected true } return [::nsf::dispatch [::nx::self] __default_attribute_call_protection] } Index: library/serialize/serializer.tcl =================================================================== diff -u -r781d71fe6d58ac20dcf0ed4161422dc8a71e89ff -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- library/serialize/serializer.tcl (.../serializer.tcl) (revision 781d71fe6d58ac20dcf0ed4161422dc8a71e89ff) +++ library/serialize/serializer.tcl (.../serializer.tcl) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -499,8 +499,8 @@ append cmd \ [:frameWorkCmd ::nsf::relation $o object-mixin] \ [:frameWorkCmd ::nsf::relation $o class-mixin] \ - [:frameWorkCmd ::nsf::assertion $o object-invar] \ - [:frameWorkCmd ::nsf::assertion $o class-invar] + [:frameWorkCmd ::nsf::method::assertion $o object-invar] \ + [:frameWorkCmd ::nsf::method::assertion $o class-invar] } #puts stderr "*** array unset [nsf::current object] alias_dependency // size [array size :alias_dependency]" array unset :alias_dependency @@ -509,9 +509,9 @@ :public method registerTrace {on} { if {$on} { - ::nsf::alias ${:rootClass} __trace__ -frame object ::trace + ::nsf::method::alias ${:rootClass} __trace__ -frame object ::trace } else { - ::nsf::method ${:rootClass} __trace__ {} {} + ::nsf::method::create ${:rootClass} __trace__ {} {} } } @@ -756,8 +756,8 @@ } else { set def [$o {*}$modifier info method definition $m] set handle [$o {*}$modifier info method handle $m] - set returns [::nsf::methodproperty $o $handle returns] - if {$returns ne ""} {append def \n [list ::nsf::methodproperty $o $handle returns $returns]} + set returns [::nsf::method::property $o $handle returns] + if {$returns ne ""} {append def \n [list ::nsf::method::property $o $handle returns $returns]} } return $def } @@ -788,7 +788,7 @@ append cmd \ [:frameWorkCmd ::nsf::relation $o object-mixin] \ - [:frameWorkCmd ::nsf::assertion $o object-invar] + [:frameWorkCmd ::nsf::method::assertion $o object-invar] if {[$o info has type ::nx::Slot]} { # Slots needs to be initialized to ensure @@ -813,7 +813,7 @@ append cmd \ [:frameWorkCmd ::nsf::relation $o superclass -unless ${:rootClass}] \ [:frameWorkCmd ::nsf::relation $o class-mixin] \ - [:frameWorkCmd ::nsf::assertion $o class-invar] + [:frameWorkCmd ::nsf::method::assertion $o class-invar] $s addPostCmd [:frameWorkCmd ::nsf::relation $o class-filter] return $cmd\n @@ -848,7 +848,7 @@ } :public method serialize-all-end {s} { - return "[next]\n::nsf::alias ::xotcl::Object trace -frame object ::trace\n" + return "[next]\n::nsf::method::alias ::xotcl::Object trace -frame object ::trace\n" } @@ -925,7 +925,7 @@ append cmd \ [list $o eval [join [:collectVars $o] "\n "]] \n \ [:frameWorkCmd ::nsf::relation $o object-mixin] \ - [:frameWorkCmd ::nsf::assertion $o object-invar] + [:frameWorkCmd ::nsf::method::assertion $o object-invar] $s addPostCmd [:frameWorkCmd ::nsf::relation $o object-filter] return $cmd @@ -949,12 +949,12 @@ # provide limited support for exporting aliases for XOTcl objects foreach i [$o ::nsf::methods::class::info::methods -methodtype alias -callprotection all] { set nxDef [$o ::nsf::methods::class::info::method definition $i] - append cmd [list ::nsf::alias $o {*}[lrange $nxDef 3 end]]\n + append cmd [list ::nsf::method::alias $o {*}[lrange $nxDef 3 end]]\n } append cmd \ [:frameWorkCmd ::nsf::relation $o superclass -unless ${:rootClass}] \ [:frameWorkCmd ::nsf::relation $o class-mixin] \ - [:frameWorkCmd ::nsf::assertion $o class-invar] + [:frameWorkCmd ::nsf::method::assertion $o class-invar] $s addPostCmd [:frameWorkCmd ::nsf::relation $o class-filter] return $cmd Index: library/tcl-cool/tcl-cool.tcl =================================================================== diff -u -re2f11549ef70518cca8c9c49b1d78f4383b00a87 -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- library/tcl-cool/tcl-cool.tcl (.../tcl-cool.tcl) (revision e2f11549ef70518cca8c9c49b1d78f4383b00a87) +++ library/tcl-cool/tcl-cool.tcl (.../tcl-cool.tcl) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -43,7 +43,7 @@ # An unattached method can be attached to an object or class by the # ::nsf::alias # -# ::nsf::alias class|obj ?-per-object? methodName cmdName +# ::nsf::method::alias class|obj ?-per-object? methodName cmdName # # The command registers a command ("cmdName") under a certain name # ("methodName") to an object or class (1st argument) to make the @@ -80,17 +80,17 @@ # # These methods are defined by the means of ::nsf::forward - ::nsf::forward class method ::nsf::method %self - ::nsf::forward class forward ::nsf::forward %self + ::nsf::method::forward class method ::nsf::method::create %self + ::nsf::method::forward class forward ::nsf::method::forward %self # We could have defined the methods "method" and "forward" as well # by the means of ::nsf::method, such as # - # ::nsf::method class method {methodName arguments body} { - # return [::nsf::method [self] $methodName $arguments $body] + # ::nsf::method::create class method {methodName arguments body} { + # return [::nsf::method::create [self] $methodName $arguments $body] # } - # ::nsf::method class forward {methodName args} { - # return [::nsf::forward [self] $methodName {*}$args] + # ::nsf::method::create class forward {methodName args} { + # return [::nsf::method::forward [self] $methodName {*}$args] # } # # Sometimes using method is better to be selective on the arguments @@ -104,9 +104,9 @@ # - "forward" is a method for delegating calls to different objects # - "methods" is an introspection method for showing the methods of an object # - ::nsf::alias object variable ::nsf::methods::object::instvar - ::nsf::forward object forward ::nsf::forward %self -per-object - ::nsf::alias object methods ::nsf::methods::object::info::lookupmethods + ::nsf::method::alias object variable ::nsf::methods::object::instvar + ::nsf::method::forward object forward ::nsf::method::forward %self -per-object + ::nsf::method::alias object methods ::nsf::methods::object::info::lookupmethods # # The method "create" defines, what happens, when a class or object Index: library/xotcl/library/xotcl2.tcl =================================================================== diff -u -rbd1cce484140aaf66113cf647f060ae48d32b24f -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- library/xotcl/library/xotcl2.tcl (.../xotcl2.tcl) (revision bd1cce484140aaf66113cf647f060ae48d32b24f) +++ library/xotcl/library/xotcl2.tcl (.../xotcl2.tcl) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -42,12 +42,13 @@ # namespace eval ::nx {} namespace eval ::nsf {} + namespace eval ::nsf::method::create {} # # get frequenly used primitiva into the ::xotcl namespace # namespace import ::nsf::configure ::nsf::my ::nsf::finalize ::nsf::interp - namespace import ::nsf::alias ::nsf::is ::nsf::relation + namespace import ::nsf::method::alias ::nsf::is ::nsf::relation interp alias {} ::xotcl::next {} ::nsf::xotclnext # @@ -90,7 +91,7 @@ foreach cmd [info command ::nsf::methods::object::*] { set cmdName [namespace tail $cmd] if {$cmdName in [list "setter" "requirenamespace"]} continue - ::nsf::alias Object $cmdName $cmd + ::nsf::method::alias Object $cmdName $cmd } # @@ -214,7 +215,7 @@ # provide some Tcl-commands as methods for ::xotcl::Object foreach cmd {array append eval incr lappend set subst unset trace} { - ::nsf::alias Object $cmd -frame object ::$cmd + ::nsf::method::alias Object $cmd -frame object ::$cmd } # @method ::xotcl::Object#vwait @@ -225,7 +226,7 @@ # # @param varName The name of the signalling object variable. - ::nsf::method Object vwait {varName} { + ::nsf::method::create Object vwait {varName} { if {[regexp {:[^:]*} $varName]} { error "invalid varName '$varName'; only plain or fully qualified variable names allowed" } @@ -240,48 +241,48 @@ foreach cmd [info command ::nsf::methods::class::*] { set cmdName [namespace tail $cmd] if {$cmdName in [list "setter"]} continue - ::nsf::alias Class $cmdName $cmd + ::nsf::method::alias Class $cmdName $cmd } # protect some methods against redefinition - ::nsf::methodproperty Object destroy redefine-protected true - ::nsf::methodproperty Class alloc redefine-protected true - ::nsf::methodproperty Class dealloc redefine-protected true - ::nsf::methodproperty Class create redefine-protected true + ::nsf::method::property Object destroy redefine-protected true + ::nsf::method::property Class alloc redefine-protected true + ::nsf::method::property Class dealloc redefine-protected true + ::nsf::method::property Class create redefine-protected true # # define parametercmd and instparametercmd in terms of ::nsf::setter # define filterguard and instfilterguard in terms of filterguard # define mixinguard and instmixinguard in terms of mixinguard # - ::nsf::forward Object parametercmd ::nsf::setter %self -per-object - ::nsf::forward Class instparametercmd ::nsf::setter %self + ::nsf::method::forward Object parametercmd ::nsf::method::setter %self -per-object + ::nsf::method::forward Class instparametercmd ::nsf::method::setter %self - ::nsf::alias Object filterguard ::nsf::methods::object::filterguard - ::nsf::alias Class instfilterguard ::nsf::methods::class::filterguard + ::nsf::method::alias Object filterguard ::nsf::methods::object::filterguard + ::nsf::method::alias Class instfilterguard ::nsf::methods::class::filterguard - ::nsf::alias Object mixinguard ::nsf::methods::object::mixinguard - ::nsf::alias Class instmixinguard ::nsf::methods::class::mixinguard + ::nsf::method::alias Object mixinguard ::nsf::methods::object::mixinguard + ::nsf::method::alias Class instmixinguard ::nsf::methods::class::mixinguard - ::nsf::alias Object requireNamespace ::nsf::methods::object::requirenamespace + ::nsf::method::alias Object requireNamespace ::nsf::methods::object::requirenamespace # define instproc and proc - ::nsf::method Class instproc { + ::nsf::method::create Class instproc { name arguments:parameter,0..* body precondition:optional postcondition:optional } { set conditions [list] if {[info exists precondition]} {lappend conditions -precondition $precondition} if {[info exists postcondition]} {lappend conditions -postcondition $postcondition} - ::nsf::method [self] $name $arguments $body {*}$conditions + ::nsf::method::create [self] $name $arguments $body {*}$conditions } - ::nsf::method Object proc { + ::nsf::method::create Object proc { name arguments body precondition:optional postcondition:optional } { set conditions [list] if {[info exists precondition]} {lappend conditions -precondition $precondition} if {[info exists postcondition]} {lappend conditions -postcondition $postcondition} - ::nsf::method [self] -per-object $name $arguments $body {*}$conditions + ::nsf::method::create [self] -per-object $name $arguments $body {*}$conditions } # define a minimal implementation of "method" @@ -300,8 +301,8 @@ # # We could nearly define forward via forwarder # - # ::nsf::forward Object forward ::nsf::forward %self -per-object - # ::nsf::forward Class instforward ::nsf::forward %self + # ::nsf::method::forward Object forward ::nsf::method::forward %self -per-object + # ::nsf::method::forward Class instforward ::nsf::method::forward %self # # but since we changed the name of -objscope in nsf to -objframe, we # have to provide the definition the hard way via methods. @@ -320,7 +321,7 @@ if {$verbose} {lappend arglist -verbose} if {[info exists target]} {lappend arglist $target} if {[llength $args] > 0} {lappend arglist {*}$args} - set r [::nsf::forward [self] -per-object $method {*}$arglist] + set r [::nsf::method::forward [self] -per-object $method {*}$arglist] return $r } @@ -338,7 +339,7 @@ if {$verbose} {lappend arglist -verbose} if {[info exists target]} {lappend arglist $target} if {[llength $args] > 0} {lappend arglist {*}$args} - set r [::nsf::forward [self] $method {*}$arglist] + set r [::nsf::method::forward [self] $method {*}$arglist] return $r } @@ -378,7 +379,7 @@ # # Use parameter definition from next # (same with classInfo parameter, see below) - ::nsf::alias ::xotcl::Class parameter ::nsf::classes::nx::Class::attributes + ::nsf::method::alias ::xotcl::Class parameter ::nsf::classes::nx::Class::attributes # We provide a default value for superclass (when no superclass is # specified explicitely) and metaclass, in case they should differ @@ -398,9 +399,9 @@ ${os}::Object alloc ${os}::Class::slot ${os}::Object alloc ${os}::Object::slot ::nx::RelationSlot create ${os}::Class::slot::superclass - ::nsf::alias ${os}::Class::slot::superclass assign ::nsf::relation + ::nsf::method::alias ${os}::Class::slot::superclass assign ::nsf::relation ::nx::RelationSlot create ${os}::Object::slot::class - ::nsf::alias ${os}::Object::slot::class assign ::nsf::relation + ::nsf::method::alias ${os}::Object::slot::class assign ::nsf::relation ::nx::RelationSlot create ${os}::Object::slot::mixin \ -forwardername object-mixin ::nx::RelationSlot create ${os}::Object::slot::filter \ @@ -436,8 +437,8 @@ # error $msg "" #} - ::nsf::alias Object info ::xotcl::objectInfo - ::nsf::alias Class info ::xotcl::classInfo + ::nsf::method::alias Object info ::xotcl::objectInfo + ::nsf::method::alias Class info ::xotcl::classInfo # # Backward compatibility info subcommands; @@ -543,12 +544,12 @@ } # define temporary method "alias" - Object instproc alias {name cmd} {::nsf::alias [self] $name $cmd} + Object instproc alias {name cmd} {::nsf::method::alias [self] $name $cmd} objectInfo eval { :proc args {method} {::xotcl::info_args object [self] $method} :proc body {methodName} {my ::nsf::methods::object::info::method body $methodName} - :proc check {} {::xotcl::checkoption_internal_to_xotcl1 [::nsf::assertion [self] check]} + :proc check {} {::xotcl::checkoption_internal_to_xotcl1 [::nsf::method::assertion [self] check]} :alias class ::nsf::methods::object::info::class :alias children ::nsf::methods::object::info::children :proc commands {{pattern ""}} { @@ -590,7 +591,7 @@ } } :alias hasnamespace ::nsf::methods::object::info::hasnamespace - :proc invar {} {::nsf::assertion [self] object-invar} + :proc invar {} {::nsf::method::assertion [self] object-invar} :proc methods { -nocmds:switch -noprocs:switch -nomixins:switch -incontext:switch pattern:optional @@ -624,7 +625,7 @@ # copy all methods from Object.info to Class.info # foreach m [objectInfo ::nsf::methods::object::info::methods] { - ::nsf::alias classInfo $m [objectInfo ::nsf::methods::object::info::method handle $m] + ::nsf::method::alias classInfo $m [objectInfo ::nsf::methods::object::info::method handle $m] } classInfo eval { @@ -657,7 +658,7 @@ return [my ::nsf::methods::class::info::forward {*}[self args]] } } - :proc instinvar {} {::nsf::assertion [self] class-invar} + :proc instinvar {} {::nsf::method::assertion [self] class-invar} :alias instmixin ::nsf::methods::class::info::mixinclasses :alias instmixinguard ::nsf::methods::class::info::mixinguard :proc instmixinof {-closure {pattern ""}} { @@ -719,7 +720,7 @@ # definition of "contains", based on nx - ::nsf::alias Object contains ::nsf::classes::nx::Object::contains + ::nsf::method::alias Object contains ::nsf::classes::nx::Object::contains ::xotcl::Class instforward slots %self contains \ -object {%::nsf::dispatch [::xotcl::self] -frame method ::subst [::xotcl::self]::slot} @@ -786,10 +787,10 @@ Object instproc check {checkoptions} { - ::nsf::assertion [self] check [::xotcl::checkoption_xotcl1_to_internal $checkoptions] + ::nsf::method::assertion [self] check [::xotcl::checkoption_xotcl1_to_internal $checkoptions] } - Object instforward invar ::nsf::assertion %self object-invar - Class instforward instinvar ::nsf::assertion %self class-invar + Object instforward invar ::nsf::method::assertion %self object-invar + Class instforward instinvar ::nsf::method::assertion %self class-invar Object instproc abstract {methtype methname arglist} { if {$methtype ne "proc" && $methtype ne "instproc" && $methtype ne "method"} { @@ -830,11 +831,11 @@ Object proc getExitHandler {} {::nsf::exithandler get} # resue some definitions from next scripting - ::nsf::alias ::xotcl::Object copy ::nsf::classes::nx::Object::copy - ::nsf::alias ::xotcl::Object move ::nsf::classes::nx::Object::move - ::nsf::alias ::xotcl::Object defaultmethod ::nsf::classes::nx::Object::defaultmethod + ::nsf::method::alias ::xotcl::Object copy ::nsf::classes::nx::Object::copy + ::nsf::method::alias ::xotcl::Object move ::nsf::classes::nx::Object::move + ::nsf::method::alias ::xotcl::Object defaultmethod ::nsf::classes::nx::Object::defaultmethod - ::nsf::alias ::xotcl::Class -per-object __unknown ::nx::Class::__unknown + ::nsf::method::alias ::xotcl::Class -per-object __unknown ::nx::Class::__unknown proc myproc {args} {linsert $args 0 [::xotcl::self]} proc myvar {var} {:requireNamespace; return [::xotcl::self]::$var} Index: library/xotcl/tests/slottest.xotcl =================================================================== diff -u -r4271f1017962a2fc3613d6be3f31f01ef2f63d82 -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- library/xotcl/tests/slottest.xotcl (.../slottest.xotcl) (revision 4271f1017962a2fc3613d6be3f31f01ef2f63d82) +++ library/xotcl/tests/slottest.xotcl (.../slottest.xotcl) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -180,18 +180,18 @@ Object o1 o1 set i 0 -::nsf::alias o1 Incr -frame object ::incr +::nsf::method::alias o1 Incr -frame object ::incr ? {o1 incr i} 1 "method incr" ? {o1 Incr i} 1002 "aliased tcl incr" ? {o1 incr i} 2003 "method incr" ? {o1 Incr i} 3004 "aliased tcl incr" -::nsf::alias ::xotcl::Object Set -frame object ::set +::nsf::method::alias ::xotcl::Object Set -frame object ::set ? {o1 set i 1} 1 "method set" ? {o1 set i} 1 "method set" ? {o1 Set i 1} 1 "aliased tcl set" ? {o1 Set i} 1 "aliased tcl set" -::nsf::alias o1 Set -frame object ::set +::nsf::method::alias o1 Set -frame object ::set ? {o1 Set i 1} 1 "aliased object tcl set" ? {o1 Set i} 1 "aliased object tcl set" @@ -606,7 +606,7 @@ ? {o1 myfdset y} "get instvar value via forward -earlybinding" ? {o1 myfdset y 123} "set instvar value via forward -earlybinding" -::nsf::alias o1 myset -frame object ::set +::nsf::method::alias o1 myset -frame object ::set o1 myset x 101 ? {o1 myset x} 101 Index: tests/alias.test =================================================================== diff -u -r230a73476eda997dc54df3072f29e752f2ffa38e -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- tests/alias.test (.../alias.test) (revision 230a73476eda997dc54df3072f29e752f2ffa38e) +++ tests/alias.test (.../alias.test) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -42,7 +42,7 @@ } Class create Foo - ? {::nsf::alias ::Foo foo ::nsf::classes::Base::foo} "::nsf::classes::Foo::foo" + ? {::nsf::method::alias ::Foo foo ::nsf::classes::Base::foo} "::nsf::classes::Foo::foo" ? {Foo info method definition foo} "::Foo public alias foo ::nsf::classes::Base::foo" @@ -65,7 +65,7 @@ Base public method foo {{-x 1}} {return $x} - ::nsf::alias ::Foo foo ::nsf::classes::Base::foo + ::nsf::method::alias ::Foo foo ::nsf::classes::Base::foo ? {Base info methods -methodtype scripted} {foo} "defined again" ? {Foo info methods -methodtype alias} {foo} "aliased again" @@ -86,7 +86,7 @@ T public method foo args { return [current class]->[current method] } - ::nsf::alias T FOO ::nsf::classes::T::foo + ::nsf::method::alias T FOO ::nsf::classes::T::foo ? {t foo} ::T->foo ? {t FOO} ::T->foo @@ -99,8 +99,8 @@ # puts stderr "double indirection" T public method foo args { return [current class]->[current method] } - ::nsf::alias T FOO ::nsf::classes::T::foo - ::nsf::alias S BAR ::nsf::classes::T::FOO + ::nsf::method::alias T FOO ::nsf::classes::T::foo + ::nsf::method::alias S BAR ::nsf::classes::T::FOO ? {T info methods -methodtype alias} "FOO" ? {T info method definition FOO} "::T public alias FOO ::nsf::classes::T::foo" @@ -121,8 +121,8 @@ ? {S info methods} {BAR} T public method foo args { return [current class]->[current method] } - ::nsf::alias T FOO ::nsf::classes::T::foo - ::nsf::alias S BAR ::nsf::classes::T::FOO + ::nsf::method::alias T FOO ::nsf::classes::T::foo + ::nsf::method::alias S BAR ::nsf::classes::T::FOO ? {lsort [T info methods]} {FOO foo} ? {S info methods} {BAR} @@ -136,9 +136,9 @@ T public method foo args { return [current class]->[current method] } T public class-object method bar args { return [current class]->[current method] } - ::nsf::alias T -per-object FOO ::nsf::classes::T::foo - ::nsf::alias T -per-object BAR ::T::FOO - ::nsf::alias T -per-object ZAP ::T::BAR + ::nsf::method::alias T -per-object FOO ::nsf::classes::T::foo + ::nsf::method::alias T -per-object BAR ::T::FOO + ::nsf::method::alias T -per-object ZAP ::T::BAR #WITH_IMPORT_REFS #? {T info methods} {foo} ? {T info methods} {foo FOO} @@ -190,8 +190,8 @@ # per-object methods as per-object aliases # T public class-object method m1 args { return [current class]->[current method] } - ::nsf::alias T -per-object M1 ::T::m1 - ::nsf::alias T -per-object M11 ::T::M1 + ::nsf::method::alias T -per-object M1 ::T::m1 + ::nsf::method::alias T -per-object M11 ::T::M1 ? {lsort [T class-object info methods]} {M1 M11 bar m1} ? {T m1} ->m1 ? {T M1} ->m1 @@ -210,12 +210,12 @@ # proc foo args { return [current class]->[current method] } - ::nsf::alias T FOO1 ::foo - ::nsf::alias T -per-object FOO2 ::foo + ::nsf::method::alias T FOO1 ::foo + ::nsf::method::alias T -per-object FOO2 ::foo # # ! per-object alias referenced as per-class alias ! # - ::nsf::alias T BAR ::T::FOO2 + ::nsf::method::alias T BAR ::T::FOO2 #WITH_IMPORT_REFS #? {lsort [T class-object info methods]} {FOO2 bar} ? {lsort [T class-object info methods]} {FOO2 M11 bar} @@ -249,9 +249,9 @@ proc bar2 args { upvar 2 _ __; return $__} } - ::nsf::alias T FOO ::ns1::foo - ::nsf::alias T BAR ::ns1::bar - ::nsf::alias T BAR2 ::ns1::bar2 + ::nsf::method::alias T FOO ::ns1::foo + ::nsf::method::alias T BAR ::ns1::bar + ::nsf::method::alias T BAR2 ::ns1::bar2 ? {lsort [T info methods]} {BAR BAR2 FOO} set ::_ GOTYA ? {t FOO} ::T->foo @@ -269,12 +269,12 @@ U create u ? {namespace exists ::U} 0 U public class-object method zap args { return [current class]->[current method] } - ::nsf::alias ::U -per-object ZAP ::U::zap + ::nsf::method::alias ::U -per-object ZAP ::U::zap U require namespace ? {namespace exists ::U} 1 U public class-object method bar args { return [current class]->[current method] } - ::nsf::alias U -per-object BAR ::U::bar + ::nsf::method::alias U -per-object BAR ::U::bar ? {lsort [U class-object info methods]} {BAR ZAP bar zap} ? {U BAR} ->bar ? {U ZAP} ->zap @@ -306,8 +306,8 @@ proc ::foo args { return [:bar ${:z}]-[set :z]-[:bar [set :z]] } - ::nsf::alias V FOO1 ::foo - ::nsf::alias V -per-object FOO2 ::foo + ::nsf::method::alias V FOO1 ::foo + ::nsf::method::alias V -per-object FOO2 ::foo ? {lsort [V class-object info methods]} {FOO2 bar} ? {lsort [V info methods]} {FOO1 bar} @@ -323,15 +323,15 @@ } # -# Tests for the ::nsf::alias store, used for introspection for +# Tests for the ::nsf::method::alias store, used for introspection for # aliases. The alias store (an associative variable) is mostly # necessary for for the direct aliases (e.g. aliases to C implemented # tcl commands), for which we have no stubs at the place where the # alias was registered. # # -# structure of the ::nsf::alias store: +# structure of the ::nsf::method::alias store: # ,, -> # @@ -344,16 +344,16 @@ ? {array exists ::nsf::alias} 1 proc ::foo args {;} -::nsf::alias ::o FOO ::foo -::nsf::alias ::C FOO ::foo +::nsf::method::alias ::o FOO ::foo +::nsf::method::alias ::C FOO ::foo ? {info exists ::nsf::alias(::o,FOO,1)} 1 ? {info exists ::nsf::alias(::C,FOO,0)} 1 ? {array get ::nsf::alias ::o,FOO,1} "::o,FOO,1 ::foo" ? {array get ::nsf::alias ::C,FOO,0} "::C,FOO,0 ::foo" ? {o info method definition FOO} "::o public alias FOO ::foo" ? {C info method definition FOO} "::C public alias FOO ::foo" -::nsf::alias o FOO ::o::bar +::nsf::method::alias o FOO ::o::bar ? {info exists ::nsf::alias(::o,FOO,1)} 1 ? {array get ::nsf::alias ::o,FOO,1} "::o,FOO,1 ::o::bar" ? {o info method definition FOO} "::o public alias FOO ::o::bar" @@ -370,8 +370,8 @@ ? {array get ::nsf::alias ::C,FOO,0} "" ? {C info method definition FOO} "" -::nsf::alias ::o BAR ::foo -::nsf::alias ::C BAR ::foo +::nsf::method::alias ::o BAR ::foo +::nsf::method::alias ::C BAR ::foo # AliasDelete in AddObjectMethod ? {info exists ::nsf::alias(::o,BAR,1)} 1 @@ -384,15 +384,15 @@ ? {info exists ::nsf::alias(::C,BAR,0)} 0 # AliasDelete in aliasCmdDeleteProc -::nsf::alias o FOO ::foo +::nsf::method::alias o FOO ::foo ? {info exists ::nsf::alias(::o,FOO,1)} 1 rename ::foo "" #WITH_IMPORT_REFS #? {info exists ::nsf::alias(::o,FOO,1)} 0 ? {info exists ::nsf::alias(::o,FOO,1)} 1 -::nsf::alias o FOO ::o::bar -::nsf::alias o BAR ::o::FOO +::nsf::method::alias o FOO ::o::bar +::nsf::method::alias o BAR ::o::FOO ? {info exists ::nsf::alias(::o,FOO,1)} 1 ? {info exists ::nsf::alias(::o,BAR,1)} 1 o public method bar {} {} @@ -408,7 +408,7 @@ # proc ::foo args {;} -::nsf::alias C FOO ::foo +::nsf::method::alias C FOO ::foo ? {info exists ::nsf::alias(::C,FOO,0)} 1 unset ::nsf::alias(::C,FOO,0) ? {info exists ::nsf::alias(::C,FOO,0)} 0 @@ -425,15 +425,15 @@ # test renaming of Tcl proc (actually sensed by the alias, though not # reflected by the alias definition store) # a) is this acceptable? -# b) sync ::nsf::alias upon "info method definition" calls? is this feasible, +# b) sync ::nsf::method::alias upon "info method definition" calls? is this feasible, # e.g. through rename traces? # C create c proc ::foo args { return [current]->[current method]} ? {info exists ::nsf::alias(::C,FOO,0)} 0 -::nsf::alias C FOO ::foo -::nsf::alias C FOO2 ::foo +::nsf::method::alias C FOO ::foo +::nsf::method::alias C FOO2 ::foo ? {info exists ::nsf::alias(::C,FOO,0)} 1 ? {lsort [C info methods -methodtype alias]} {FOO FOO2} # Rename target, such that alias points to an invalid item @@ -643,14 +643,14 @@ # without nsf context. If the byte code is not invalidated, the # compiled var resolver would not kick in, we would not be able to # set an instance variable. - ::nsf::alias ::C foo ::foo + ::nsf::method::alias ::C foo ::foo ? {c1 foo 2} 2 ? {c1 vars} {a 2} # # Register an unused tcl proc. Byte compilation happens within nsf # context, compiled var resolver works as expected. - ::nsf::alias ::C bar ::bar + ::nsf::method::alias ::C bar ::bar ? {c1 bar 2} 2 ? {c1 vars} {a 2 b 2} Index: tests/destroy.test =================================================================== diff -u -rcc751d3067631542fabfb7205286e1a8757c60ca -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- tests/destroy.test (.../destroy.test) (revision cc751d3067631542fabfb7205286e1a8757c60ca) +++ tests/destroy.test (.../destroy.test) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -5,7 +5,7 @@ Test parameter count 10 -::nsf::alias ::nx::Object set -frame object ::set +::nsf::method::alias ::nx::Object set -frame object ::set Class create O -superclass Object { :method init {} { @@ -437,7 +437,7 @@ Test case deleting-aliased-object { Object create o Object create o2 - ::nsf::alias o a o2 + ::nsf::method::alias o a o2 ? {o a} ::o2 "call object via alias" ? {o info method type a} alias ## the ensemble-object needs per-object methods @@ -457,7 +457,7 @@ Test case deleting-object-with-alias-to-object Object create o Object create o3 -::nsf::alias o x o3 +::nsf::method::alias o x o3 o destroy ? {::nsf::isobject o} 0 "parent object gone" ? {::nsf::isobject o3} 1 "aliased object still here" @@ -468,7 +468,7 @@ Test case create-alias-delete-via-aggregation Object create o Object create o3 -::nsf::alias o x o3 +::nsf::method::alias o x o3 o::x destroy ? {::nsf::isobject o3} 0 "aliased object destroyed" o destroy Index: tests/doc.test =================================================================== diff -u -rd9b47262886ea198bd62861a30a212ab0e31b3bb -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- tests/doc.test (.../doc.test) (revision d9b47262886ea198bd62861a30a212ab0e31b3bb) +++ tests/doc.test (.../doc.test) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -1097,7 +1097,7 @@ ::nsf::importvar ::nsf::isobject ::nsf::method - ::nsf::methodproperty + ::nsf::method::property ::nsf::provide_method ::nsf::qualify ::nsf::require_method Index: tests/info-method.test =================================================================== diff -u -rbd1cce484140aaf66113cf647f060ae48d32b24f -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- tests/info-method.test (.../info-method.test) (revision bd1cce484140aaf66113cf647f060ae48d32b24f) +++ tests/info-method.test (.../info-method.test) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -100,8 +100,8 @@ ? {lsort [MC info methods -methodtype scripted -callprotection all]} "bar1 bar2 foo" - ::nsf::methodproperty ::MC foo call-protected true - ::nsf::methodproperty ::MC bar2 call-protected false + ::nsf::method::property ::MC foo call-protected true + ::nsf::method::property ::MC bar2 call-protected false ? {lsort [MC info methods -methodtype scripted -callprotection public]} "bar2" ? {lsort [MC info methods -methodtype scripted -callprotection protected]} "bar1 foo" Index: tests/method-modifiers.test =================================================================== diff -u -rb252a0a0d40f1125c6ad5fa4269bfb500bfd034f -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- tests/method-modifiers.test (.../method-modifiers.test) (revision b252a0a0d40f1125c6ad5fa4269bfb500bfd034f) +++ tests/method-modifiers.test (.../method-modifiers.test) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -373,11 +373,11 @@ :create c1 } - ? {::nsf::methoddelete C x} "Object C: method x is not defined" - ? {::nsf::methoddelete C -per-object x} "Object C: method x is not defined" - ? {::nsf::methoddelete C foo} "" - ? {::nsf::methoddelete C foo} "Object C: method foo is not defined" - ? {::nsf::methoddelete C bar} "Object C: method bar is not defined" - ? {::nsf::methoddelete C -per-object bar} "" - ? {::nsf::methoddelete C -per-object bar} "Object C: method bar is not defined" + ? {::nsf::method::delete C x} "Object C: method x is not defined" + ? {::nsf::method::delete C -per-object x} "Object C: method x is not defined" + ? {::nsf::method::delete C foo} "" + ? {::nsf::method::delete C foo} "Object C: method foo is not defined" + ? {::nsf::method::delete C bar} "Object C: method bar is not defined" + ? {::nsf::method::delete C -per-object bar} "" + ? {::nsf::method::delete C -per-object bar} "Object C: method bar is not defined" } \ No newline at end of file Index: tests/method-require.test =================================================================== diff -u -r511fca2017ee0cabbfef93bfb482cd165def8190 -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- tests/method-require.test (.../method-require.test) (revision 511fca2017ee0cabbfef93bfb482cd165def8190) +++ tests/method-require.test (.../method-require.test) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -13,12 +13,12 @@ # producing these.... # - nsf::provide_method append {::nsf::alias append -frame object ::append} - nsf::provide_method lappend {::nsf::alias lappend -frame object ::lappend} - nsf::provide_method set {::nsf::alias set -frame object ::set} - nsf::provide_method tcl::set {::nsf::alias set -frame object ::set} - nsf::provide_method exists {::nsf::alias exists ::nsf::methods::object::exists} - nsf::provide_method foo {::nsf::method foo {x y} {return x=$x,y=$y}} + nsf::provide_method append {::nsf::method::alias append -frame object ::append} + nsf::provide_method lappend {::nsf::method::alias lappend -frame object ::lappend} + nsf::provide_method set {::nsf::method::alias set -frame object ::set} + nsf::provide_method tcl::set {::nsf::method::alias set -frame object ::set} + nsf::provide_method exists {::nsf::method::alias exists ::nsf::methods::object::exists} + nsf::provide_method foo {::nsf::method::create foo {x y} {return x=$x,y=$y}} nsf::provide_method x {::nsf::mixin ::MIX} { # here could be as well a package require, etc. ::nx::Class create ::MIX {:public method x {} {return x}} Index: tests/object-system.test =================================================================== diff -u -r97391416a403b0ecf51a315cba4730e3d6f70f39 -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- tests/object-system.test (.../object-system.test) (revision 97391416a403b0ecf51a315cba4730e3d6f70f39) +++ tests/object-system.test (.../object-system.test) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -183,8 +183,8 @@ ? {::nsf::relation ::class superclass} ::object # define non-standard methos to create/destroy objects and classes -::nsf::alias ::class + ::nsf::methods::class::create -::nsf::alias ::object - ::nsf::methods::object::destroy +::nsf::method::alias ::class + ::nsf::methods::class::create +::nsf::method::alias ::object - ::nsf::methods::object::destroy # create a class named C ::class + C Index: tests/parameters.test =================================================================== diff -u -rb6041f25a964a06f528ccd27ad62fa95f95a931f -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- tests/parameters.test (.../parameters.test) (revision b6041f25a964a06f528ccd27ad62fa95f95a931f) +++ tests/parameters.test (.../parameters.test) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -558,7 +558,7 @@ "name arguments:parameter,0..* -returns body -precondition -postcondition" \ "query instparams for scripted method 'method'" - ? {Object info method parameter ::nsf::forward} \ + ? {Object info method parameter ::nsf::method::forward} \ "object -per-object:switch method -default -earlybinding:switch -methodprefix -objframe:switch -onerror -verbose:switch target:optional args" \ "query parameter for C-defined cmd 'nsf::forward'" @@ -1063,18 +1063,18 @@ Object create o Class create C - ? {::nsf::setter ::o :a} {invalid setter name ":a" (must not start with a dash or colon)} - ? {::nsf::setter o a} "::o::a" - ? {::nsf::setter C c} "::nsf::classes::C::c" + ? {::nsf::method::setter ::o :a} {invalid setter name ":a" (must not start with a dash or colon)} + ? {::nsf::method::setter o a} "::o::a" + ? {::nsf::method::setter C c} "::nsf::classes::C::c" ? {o info method definition a} "::o public setter a" ? {o info method parameter a} "a" ? {o info method args a} "a" ? {C info method definition c} "::C public setter c" ? {o a 1} "1" - ? {::nsf::setter o a:integer} "::o::a" - ? {::nsf::setter o ints:integer,1..*} "::o::ints" - ? {::nsf::setter o o:object} "::o::o" + ? {::nsf::method::setter o a:integer} "::o::a" + ? {::nsf::method::setter o ints:integer,1..*} "::o::ints" + ? {::nsf::method::setter o o:object} "::o::o" ? {o info method handle ints} "::o::ints" ? {o info method definition ints} "::o public setter ints:integer,1..*" @@ -1092,8 +1092,8 @@ ? {o ints {10 100 1000}} {10 100 1000} ? {o ints hugo} {invalid value in "hugo": expected integer but got "hugo" for parameter "ints"} ? {o o o} o - ? {::nsf::setter o {d default}} {parameter "d" is not allowed to have default "default"} - ? {::nsf::setter o -x} {invalid setter name "-x" (must not start with a dash or colon)} + ? {::nsf::method::setter o {d default}} {parameter "d" is not allowed to have default "default"} + ? {::nsf::method::setter o -x} {invalid setter name "-x" (must not start with a dash or colon)} } @@ -1385,7 +1385,7 @@ # variable :( Class create Omon - ::nsf::setter Omon a1 + ::nsf::method::setter Omon a1 namespace eval omon {} Omon create omon Index: tests/protected.test =================================================================== diff -u -rb8b81d5258a35f294599bb755a0cc15cf363972b -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- tests/protected.test (.../protected.test) (revision b8b81d5258a35f294599bb755a0cc15cf363972b) +++ tests/protected.test (.../protected.test) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -25,7 +25,7 @@ ? {c1 bar-SET} {1} ? {c1 bar-foo} {foo} -::nsf::methodproperty C SET call-protected true +::nsf::method::property C SET call-protected true ? {catch {c1 SET x 1} errorMsg; set errorMsg} {::c1: unable to dispatch method 'SET'} ? {::nsf::dispatch c1 SET x 2} {2} "dispatch of protected methods works" ? {c1 foo} {foo} @@ -35,7 +35,7 @@ ? {catch {c2 bar-SET} errorMsg; set errorMsg} {::c1: unable to dispatch method 'SET'} ? {c2 bar-foo} {foo} -::nsf::methodproperty C foo call-protected true +::nsf::method::property C foo call-protected true ? {catch {c1 SET x 1} errorMsg; set errorMsg} {::c1: unable to dispatch method 'SET'} ? {::nsf::dispatch c1 SET x 2} {2} "dispatch of protected methods works" ? {c1 bar} {bar} "other method work" @@ -46,12 +46,12 @@ ? {catch {c2 bar-foo} errorMsg; set errorMsg} {::c1: unable to dispatch method 'foo'} # unset protected -? {::nsf::methodproperty C SET call-protected} 1 - ::nsf::methodproperty C SET call-protected false -? {::nsf::methodproperty C SET call-protected} 0 -? {::nsf::methodproperty C foo call-protected} 1 - ::nsf::methodproperty C foo call-protected false -? {::nsf::methodproperty C foo call-protected} 0 +? {::nsf::method::property C SET call-protected} 1 + ::nsf::method::property C SET call-protected false +? {::nsf::method::property C SET call-protected} 0 +? {::nsf::method::property C foo call-protected} 1 + ::nsf::method::property C foo call-protected false +? {::nsf::method::property C foo call-protected} 0 ? {c1 SET x 3} 3 ? {::nsf::dispatch c1 SET x 2} {2} @@ -64,7 +64,7 @@ # define a protected method C protected method foo {} {return [current method]} -? {::nsf::methodproperty C SET call-protected} 0 +? {::nsf::method::property C SET call-protected} 0 ? {c1 SET x 3} 3 ? {::nsf::dispatch c1 SET x 4} {4} ? {catch {c1 foo} errorMsg; set errorMsg} {::c1: unable to dispatch method 'foo'} @@ -74,17 +74,17 @@ ? {c2 bar-SET} 1 ? {catch {c2 bar-foo} errorMsg; set errorMsg} {::c1: unable to dispatch method 'foo'} -? {::nsf::methodproperty C SET redefine-protected true} 1 +? {::nsf::method::property C SET redefine-protected true} 1 ? {catch {C method SET {a b c} {...}} errorMsg; set errorMsg} \ {Method 'SET' of ::C cannot be overwritten. Derive e.g. a sub-class!} -? {::nsf::methodproperty C foo redefine-protected true} 1 +? {::nsf::method::property C foo redefine-protected true} 1 ? {catch {C method foo {a b c} {...}} errorMsg; set errorMsg} \ {Method 'foo' of ::C cannot be overwritten. Derive e.g. a sub-class!} # check a predefined protection ? {catch {::nx::Class method dealloc {a b c} {...}} errorMsg; set errorMsg} \ {Method 'dealloc' of ::nx::Class cannot be overwritten. Derive e.g. a sub-class!} # try to redefined via alias -? {catch {::nsf::alias Class dealloc ::set} errorMsg; set errorMsg} \ +? {catch {::nsf::method::alias Class dealloc ::set} errorMsg; set errorMsg} \ {Method 'dealloc' of ::nx::Class cannot be overwritten. Derive e.g. a sub-class!} # try to redefine via forward ? {catch {C forward SET ::set} errorMsg; set errorMsg} \ @@ -96,7 +96,7 @@ # overwrite-protect object specific method Object create o o method foo {} {return 13} -::nsf::methodproperty o foo redefine-protected true +::nsf::method::property o foo redefine-protected true ? {catch {o method foo {} {return 14}} errorMsg; set errorMsg} \ {Method 'foo' of ::o cannot be overwritten. Derive e.g. a sub-class!} Index: tests/returns.test =================================================================== diff -u -rf0295d889aaf71709c63243685897dc3f11048f1 -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- tests/returns.test (.../returns.test) (revision f0295d889aaf71709c63243685897dc3f11048f1) +++ tests/returns.test (.../returns.test) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -25,11 +25,11 @@ :create c1 } - ::nsf::methodproperty C bar-ok1 returns integer - ::nsf::methodproperty C bar-ok2 returns integer - ::nsf::methodproperty C bar-nok returns integer - ::nsf::methodproperty C incr returns integer - ::nsf::methodproperty C lappend returns integer + ::nsf::method::property C bar-ok1 returns integer + ::nsf::method::property C bar-ok2 returns integer + ::nsf::method::property C bar-nok returns integer + ::nsf::method::property C incr returns integer + ::nsf::method::property C lappend returns integer ? {c1 bar-ok1 1 2} 1 ? {c1 bar-ok2 1 2} 1 @@ -41,13 +41,13 @@ ? {c1 lappend l e1} {expected integer but got "e1" as return value} # query the returns value - ? {::nsf::methodproperty C lappend returns} integer + ? {::nsf::method::property C lappend returns} integer # reset it to emtpy - ? {::nsf::methodproperty C lappend returns ""} "" - ? {::nsf::methodproperty C bar-ok1 returns ""} "" - ? {::nsf::methodproperty C bar-ok2 returns ""} "" - ? {::nsf::methodproperty C bar-nok returns ""} "" + ? {::nsf::method::property C lappend returns ""} "" + ? {::nsf::method::property C bar-ok1 returns ""} "" + ? {::nsf::method::property C bar-ok2 returns ""} "" + ? {::nsf::method::property C bar-nok returns ""} "" # no checking ? {c1 bar-ok1 1 2} 1 @@ -56,8 +56,8 @@ ? {c1 lappend l e2} "e1 e2" # query returns "", if there is no returns checking - ? {::nsf::methodproperty C lappend returns} "" - ? {::nsf::methodproperty ::nx::Object method returns} "" + ? {::nsf::method::property C lappend returns} "" + ? {::nsf::method::property ::nx::Object method returns} "" } @@ -81,11 +81,11 @@ :create c1 } - ::nsf::methodproperty C bar-ok1 returns range,arg=1-3 - ::nsf::methodproperty C bar-ok2 returns range,arg=1-3 - ::nsf::methodproperty C bar-nok returns range,arg=1-3 - ::nsf::methodproperty C incr returns range,arg=1-30 - ::nsf::methodproperty C lappend returns range,arg=1-30 + ::nsf::method::property C bar-ok1 returns range,arg=1-3 + ::nsf::method::property C bar-ok2 returns range,arg=1-3 + ::nsf::method::property C bar-nok returns range,arg=1-3 + ::nsf::method::property C incr returns range,arg=1-30 + ::nsf::method::property C lappend returns range,arg=1-30 ? {c1 bar-ok1 1 2} 1 ? {c1 bar-ok2 1 2} 1 @@ -117,10 +117,10 @@ :create c1 } - ::nsf::methodproperty C bar-ok1 returns sex - ::nsf::methodproperty C bar-ok2 returns sex - ::nsf::methodproperty C bar-nok returns sex - ::nsf::methodproperty C set returns sex + ::nsf::method::property C bar-ok1 returns sex + ::nsf::method::property C bar-ok2 returns sex + ::nsf::method::property C bar-nok returns sex + ::nsf::method::property C set returns sex ? {c1 bar-ok1 1 2} male ? {c1 bar-ok2 female 2} female @@ -132,10 +132,10 @@ ? {c1 set x hugo} {expected sex but got hugo} - ::nsf::methodproperty C bar-ok1 returns sex,convert - ::nsf::methodproperty C bar-ok2 returns sex,convert - ::nsf::methodproperty C bar-nok returns sex,convert - ::nsf::methodproperty C set returns sex,convert + ::nsf::method::property C bar-ok1 returns sex,convert + ::nsf::method::property C bar-ok2 returns sex,convert + ::nsf::method::property C bar-nok returns sex,convert + ::nsf::method::property C set returns sex,convert ? {c1 bar-ok1 1 2} m ? {c1 bar-ok2 female 2} f @@ -167,11 +167,11 @@ :create c1 } - ::nsf::methodproperty C bar-ok1 returns integer - ::nsf::methodproperty C bar-ok2 returns integer - ::nsf::methodproperty C bar-nok returns integer - ::nsf::methodproperty C incr returns integer - ::nsf::methodproperty C lappend returns integer + ::nsf::method::property C bar-ok1 returns integer + ::nsf::method::property C bar-ok2 returns integer + ::nsf::method::property C bar-nok returns integer + ::nsf::method::property C incr returns integer + ::nsf::method::property C lappend returns integer ? {c1 bar-ok1 1 2} 1 ? {c1 bar-ok2 1 2} 1 @@ -183,18 +183,18 @@ ? {c1 lappend l e1} e1 # query the returns value - ? {::nsf::methodproperty C lappend returns} integer + ? {::nsf::method::property C lappend returns} integer # reset it to emtpy - ? {::nsf::methodproperty C lappend returns ""} "" + ? {::nsf::method::property C lappend returns ""} "" c1 eval {set :l e1} # no checking on lappend ? {c1 lappend l e2} "e1 e2" # query returns "", if there is no returns checking - ? {::nsf::methodproperty C lappend returns} "" - ? {::nsf::methodproperty ::nx::Object method returns} "" + ? {::nsf::method::property C lappend returns} "" + ? {::nsf::method::property ::nx::Object method returns} "" } Test parameter count 10 @@ -217,11 +217,11 @@ :create c1 } - ::nsf::methodproperty C bar-ok1 returns range,arg=1-3 - ::nsf::methodproperty C bar-ok2 returns range,arg=1-3 - ::nsf::methodproperty C bar-nok returns range,arg=1-3 - ::nsf::methodproperty C incr returns range,arg=1-30 - ::nsf::methodproperty C lappend returns range,arg=1-30 + ::nsf::method::property C bar-ok1 returns range,arg=1-3 + ::nsf::method::property C bar-ok2 returns range,arg=1-3 + ::nsf::method::property C bar-nok returns range,arg=1-3 + ::nsf::method::property C incr returns range,arg=1-30 + ::nsf::method::property C lappend returns range,arg=1-30 ? {c1 bar-ok1 1 2} 1 ? {c1 bar-ok2 1 2} 1 @@ -256,10 +256,10 @@ # # turn off checker # - ::nsf::methodproperty C bar-ok1 returns sex - ::nsf::methodproperty C bar-ok2 returns sex - ::nsf::methodproperty C bar-nok returns sex - ::nsf::methodproperty C set returns sex + ::nsf::method::property C bar-ok1 returns sex + ::nsf::method::property C bar-ok2 returns sex + ::nsf::method::property C bar-nok returns sex + ::nsf::method::property C set returns sex ? {c1 bar-ok1 1 2} male ? {c1 bar-ok2 female 2} female @@ -274,10 +274,10 @@ # # don't turn off converter # - ::nsf::methodproperty C bar-ok1 returns sex,convert - ::nsf::methodproperty C bar-ok2 returns sex,convert - ::nsf::methodproperty C bar-nok returns sex,convert - ::nsf::methodproperty C set returns sex,convert + ::nsf::method::property C bar-ok1 returns sex,convert + ::nsf::method::property C bar-ok2 returns sex,convert + ::nsf::method::property C bar-nok returns sex,convert + ::nsf::method::property C set returns sex,convert ? {c1 bar-ok1 1 2} m ? {c1 bar-ok2 female 2} f @@ -317,7 +317,7 @@ ? {c1 bar-ok2 1 2} 1 ? {c1 ++ 1000} 1001 ? {c1 | a} {expected integer but got "a" as return value} - ? {::nsf::methodproperty ::C ::nsf::classes::C::bar-nok returns} integer + ? {::nsf::method::property ::C ::nsf::classes::C::bar-nok returns} integer ? {c1 bar-nok 1 2} {expected integer but got "a" as return value} ? {C instances} ::c1 @@ -328,15 +328,15 @@ ? {c1 lappend l e1} {expected integer but got "e1" as return value} # query the returns value - ? {::nsf::methodproperty C lappend returns} integer + ? {::nsf::method::property C lappend returns} integer # reset it to emtpy - ? {::nsf::methodproperty C lappend returns ""} "" - ? {::nsf::methodproperty C bar-ok1 returns ""} "" - ? {::nsf::methodproperty C bar-ok2 returns ""} "" - ? {::nsf::methodproperty C bar-nok returns ""} "" - ? {::nsf::methodproperty C ++ returns ""} "" - ? {::nsf::methodproperty C | returns ""} "" + ? {::nsf::method::property C lappend returns ""} "" + ? {::nsf::method::property C bar-ok1 returns ""} "" + ? {::nsf::method::property C bar-ok2 returns ""} "" + ? {::nsf::method::property C bar-nok returns ""} "" + ? {::nsf::method::property C ++ returns ""} "" + ? {::nsf::method::property C | returns ""} "" # no checking ? {c1 bar-ok1 1 2} 1 @@ -347,8 +347,8 @@ ? {c1 | a} "a" # query returns "", if there is no returns checking - ? {::nsf::methodproperty C lappend returns} "" - ? {::nsf::methodproperty ::nx::Object method returns} "" + ? {::nsf::method::property C lappend returns} "" + ? {::nsf::method::property ::nx::Object method returns} "" } @@ -357,18 +357,18 @@ # 1: Create an empty or checker-free parameter spec :method foo {} {;} ? [:info method parameter foo] "" - # 2: A call to ::nsf::methodproperty which might require NsfParamDefs - ? [list ::nsf::methodproperty [::nx::current] foo returns] "" + # 2: A call to ::nsf::method::property which might require NsfParamDefs + ? [list ::nsf::method::property [::nx::current] foo returns] "" # 3: Check, if "info method parameter" still works ? [:info method parameter foo] "" - ? [list ::nsf::methodproperty [::nx::current] foo returns] "" + ? [list ::nsf::method::property [::nx::current] foo returns] "" # 4: Set methodproperty to some value and check again - ::nsf::methodproperty [::nx::current] foo returns int - ? [list ::nsf::methodproperty [::nx::current] foo returns] "int" + ::nsf::method::property [::nx::current] foo returns int + ? [list ::nsf::method::property [::nx::current] foo returns] "int" ? [:info method parameter foo] "" # 5: Reset methodproperty and query again - ::nsf::methodproperty [::nx::current] foo returns "" - ? [list ::nsf::methodproperty [::nx::current] foo returns] "" + ::nsf::method::property [::nx::current] foo returns "" + ? [list ::nsf::method::property [::nx::current] foo returns] "" ? [:info method parameter foo] "" } } \ No newline at end of file Index: tests/varresolution.test =================================================================== diff -u -r28fd214e129bc6c2384a2ef587a2be8b480c7248 -re3a84e351aaf79c02a63cc0741dde7b9bd550849 --- tests/varresolution.test (.../varresolution.test) (revision 28fd214e129bc6c2384a2ef587a2be8b480c7248) +++ tests/varresolution.test (.../varresolution.test) (revision e3a84e351aaf79c02a63cc0741dde7b9bd550849) @@ -8,12 +8,12 @@ Test parameter count 1 -::nsf::alias ::nx::Object objeval -frame object ::eval -::nsf::alias ::nx::Object array -frame object ::array -::nsf::alias ::nx::Object lappend -frame object ::lappend -::nsf::alias ::nx::Object incr -frame object ::incr -::nsf::alias ::nx::Object set -frame object ::set -::nsf::alias ::nx::Object unset -frame object ::unset +::nsf::method::alias ::nx::Object objeval -frame object ::eval +::nsf::method::alias ::nx::Object array -frame object ::array +::nsf::method::alias ::nx::Object lappend -frame object ::lappend +::nsf::method::alias ::nx::Object incr -frame object ::incr +::nsf::method::alias ::nx::Object set -frame object ::set +::nsf::method::alias ::nx::Object unset -frame object ::unset ########################################### # Basic tests for var resolution under @@ -403,8 +403,8 @@ array set ::tmpArray {key value} Class create ::C -::nsf::alias ::C Set -frame object ::set -::nsf::alias ::C Unset -frame object ::unset +::nsf::method::alias ::C Set -frame object ::set +::nsf::method::alias ::C Unset -frame object ::unset ::C create ::c namespace eval ::c {} @@ -428,9 +428,9 @@ # required namespace and without ################################################## Test case eval-variants -::nsf::alias ::nx::Object objeval -frame object ::eval -::nsf::alias ::nx::Object softeval -frame method ::eval -::nsf::alias ::nx::Object softeval2 ::eval +::nsf::method::alias ::nx::Object objeval -frame object ::eval +::nsf::method::alias ::nx::Object softeval -frame method ::eval +::nsf::method::alias ::nx::Object softeval2 ::eval set G 1 @@ -592,9 +592,9 @@ # Test with proc scopes ################################################## Test case proc-scopes -::nsf::alias ::nx::Object objscoped-eval -frame object ::eval -::nsf::alias ::nx::Object nonleaf-eval -frame method ::eval -::nsf::alias ::nx::Object plain-eval ::eval +::nsf::method::alias ::nx::Object objscoped-eval -frame object ::eval +::nsf::method::alias ::nx::Object nonleaf-eval -frame method ::eval +::nsf::method::alias ::nx::Object plain-eval ::eval proc foo-via-initcmd {} { foreach v {x xxx} {unset -nocomplain ::$v}