Index: TODO =================================================================== diff -u -r6ad766595b0095a72fb7b3a1d6d34960a013b464 -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- TODO (.../TODO) (revision 6ad766595b0095a72fb7b3a1d6d34960a013b464) +++ TODO (.../TODO) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -5112,6 +5112,9 @@ - added nsf::var::get and "::nx::var get" to provide selector based interface for variable reading (used in slotmethod get of nx::VariableSlot) +- renamed nsf::relation to nsf::relation::set and added + nsf::relation::get in accordance with nsf::var::get + ======================================================================== TODO: - TODO: rename "slotassign" to "slotset"? Index: doc/example-scripts/ruby-mixins.tcl =================================================================== diff -u -r12319faaf20df7116346558bd948b0edda9124eb -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- doc/example-scripts/ruby-mixins.tcl (.../ruby-mixins.tcl) (revision 12319faaf20df7116346558bd948b0edda9124eb) +++ doc/example-scripts/ruby-mixins.tcl (.../ruby-mixins.tcl) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -32,7 +32,7 @@ nx::Class eval { :protected method module {name:class} { - nsf::relation [self] superclass [concat $name [:info superclass]] + nsf::relation::set [self] superclass [concat $name [:info superclass]] } } Index: doc/next-migration.txt =================================================================== diff -u -r49ec35d640333d44ac0d495e724cf626d9b4ae78 -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- doc/next-migration.txt (.../next-migration.txt) (revision 49ec35d640333d44ac0d495e724cf626d9b4ae78) +++ doc/next-migration.txt (.../next-migration.txt) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -2825,7 +2825,7 @@ ==== Changing classes and superclasses NX does not define the methods +class+ and +superclass+ (like XOTcl), but allows to -alter all object/class relations (including class/superclass/object-mixin/...) +nsf::relation+. The class and superclass +alter all object/class relations (including class/superclass/object-mixin/...) +nsf::relation::set+. The class and superclass can be certainly queried in all variants with +info class+ or +info superclass+. [source,tcl] ---------------- @@ -2835,7 +2835,7 @@ Foo create f1 # now alter the class of object f1 -nsf::relation f1 class ::nx::Object +nsf::relation::set f1 class ::nx::Object ---------------- ==== Overwriting procs/methods with objects and vice versa Index: generic/nsf.c =================================================================== diff -u -r6ad766595b0095a72fb7b3a1d6d34960a013b464 -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- generic/nsf.c (.../nsf.c) (revision 6ad766595b0095a72fb7b3a1d6d34960a013b464) +++ generic/nsf.c (.../nsf.c) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -25274,15 +25274,27 @@ } /* -cmd relation NsfRelationCmd { +cmd relation::get NsfRelationGetCmd { {-argName "object" -type object} {-argName "relationtype" -required 1 -type "object-mixin|class-mixin|object-filter|class-filter|class|superclass|rootclass"} +} +*/ +static int +NsfRelationGetCmd(Tcl_Interp *interp, NsfObject *object, int relationtype) { + + return NsfRelationSetCmd(interp, object, relationtype, NULL); +} + +/* +cmd relation::set NsfRelationSetCmd { + {-argName "object" -type object} + {-argName "relationtype" -required 1 -type "object-mixin|class-mixin|object-filter|class-filter|class|superclass|rootclass"} {-argName "value" -required 0 -type tclobj} } */ static int -NsfRelationCmd(Tcl_Interp *interp, NsfObject *object, - int relationtype, Tcl_Obj *valueObj) { +NsfRelationSetCmd(Tcl_Interp *interp, NsfObject *object, + int relationtype, Tcl_Obj *valueObj) { int oc; Tcl_Obj **ov; NsfObject *nObject = NULL; NsfClass *cl = NULL; @@ -25293,7 +25305,7 @@ assert(interp); assert(object); - /*fprintf(stderr, "NsfRelationCmd %s rel=%d val='%s'\n", + /*fprintf(stderr, "NsfRelationSetCmd %s rel=%d val='%s'\n", ObjectName(object), relationtype, valueObj ? ObjStr(valueObj) : "NULL");*/ if (relationtype == RelationtypeClass_mixinIdx || @@ -25563,7 +25575,7 @@ } } - NsfRelationCmd(interp, object, relationtype, NULL); + NsfRelationSetCmd(interp, object, relationtype, NULL); return TCL_OK; } @@ -26305,7 +26317,7 @@ assert(interp); assert(object); - return NsfRelationCmd(interp, object, RelationtypeClassIdx, classObj); + return NsfRelationSetCmd(interp, object, RelationtypeClassIdx, classObj); } /* @@ -27904,7 +27916,7 @@ assert(interp); assert(cl); - return NsfRelationCmd(interp, &cl->object, RelationtypeSuperclassIdx, superClassesObj); + return NsfRelationSetCmd(interp, &cl->object, RelationtypeSuperclassIdx, superClassesObj); } /*********************************************************************** Index: generic/nsf.tcl =================================================================== diff -u -rcaba76f5ac2943f5a3dfd33550cb578132f40c80 -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- generic/nsf.tcl (.../nsf.tcl) (revision caba76f5ac2943f5a3dfd33550cb578132f40c80) +++ generic/nsf.tcl (.../nsf.tcl) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -79,11 +79,11 @@ ::nsf::proc ::nsf::mixin {object -per-object:switch classes} { set rel [expr {${per-object} ? "object-mixin" : "class-mixin"}] if {[lindex $classes 0] ne ""} { - set oldSetting [::nsf::relation $object $rel] + set oldSetting [::nsf::relation::get $object $rel] # use uplevel to avoid namespace surprises - uplevel [list ::nsf::relation $object $rel [linsert $oldSetting 0 $classes]] + uplevel [list ::nsf::relation::set $object $rel [linsert $oldSetting 0 $classes]] } else { - uplevel [list ::nsf::relation $object $rel ""] + uplevel [list ::nsf::relation::set $object $rel ""] } } Index: generic/nsfAPI.decls =================================================================== diff -u -r6ad766595b0095a72fb7b3a1d6d34960a013b464 -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- generic/nsfAPI.decls (.../nsfAPI.decls) (revision 6ad766595b0095a72fb7b3a1d6d34960a013b464) +++ generic/nsfAPI.decls (.../nsfAPI.decls) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -221,12 +221,18 @@ {-argName "body" -required 1 -type tclobj} } {-nxdoc 1} -cmd relation NsfRelationCmd { +cmd relation::get NsfRelationGetCmd { {-argName "object" -required 1 -type object} {-argName "type" -required 1 -typeName "relationtype" -type "object-mixin|class-mixin|object-filter|class-filter|class|superclass|rootclass"} +} {-nxdoc 1} + +cmd relation::set NsfRelationSetCmd { + {-argName "object" -required 1 -type object} + {-argName "type" -required 1 -typeName "relationtype" -type "object-mixin|class-mixin|object-filter|class-filter|class|superclass|rootclass"} {-argName "value" -required 0 -type tclobj} } {-nxdoc 1} + cmd current NsfCurrentCmd { {-argName "option" -required 0 -typeName "currentoption" -type "proc|method|methodpath|object|class|activelevel|args|activemixin|calledproc|calledmethod|calledclass|callingproc|callingmethod|callingclass|callinglevel|callingobject|filterreg|isnextcall|nextmethod"} } {-nxdoc 1} Index: generic/nsfAPI.h =================================================================== diff -u -r6ad766595b0095a72fb7b3a1d6d34960a013b464 -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- generic/nsfAPI.h (.../nsfAPI.h) (revision 6ad766595b0095a72fb7b3a1d6d34960a013b464) +++ generic/nsfAPI.h (.../nsfAPI.h) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -281,7 +281,7 @@ /* just to define the symbol */ -static Nsf_methodDefinition method_definitions[107]; +static Nsf_methodDefinition method_definitions[108]; static CONST char *method_command_namespace_names[] = { "::nsf::methods::object::info", @@ -405,8 +405,10 @@ NSF_nonnull(2) NSF_nonnull(4); static int NsfProfileGetDataStubStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []) NSF_nonnull(2) NSF_nonnull(4); -static int NsfRelationCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []) +static int NsfRelationGetCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []) NSF_nonnull(2) NSF_nonnull(4); +static int NsfRelationSetCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []) + NSF_nonnull(2) NSF_nonnull(4); static int NsfSelfCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []) NSF_nonnull(2) NSF_nonnull(4); static int NsfShowStackCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []) @@ -618,8 +620,10 @@ NSF_nonnull(1); static int NsfProfileGetDataStub(Tcl_Interp *interp) NSF_nonnull(1); -static int NsfRelationCmd(Tcl_Interp *interp, NsfObject *object, int type, Tcl_Obj *value) +static int NsfRelationGetCmd(Tcl_Interp *interp, NsfObject *object, int type) NSF_nonnull(1) NSF_nonnull(2); +static int NsfRelationSetCmd(Tcl_Interp *interp, NsfObject *object, int type, Tcl_Obj *value) + NSF_nonnull(1) NSF_nonnull(2); static int NsfSelfCmd(Tcl_Interp *interp) NSF_nonnull(1); static int NsfShowStackCmd(Tcl_Interp *interp) @@ -774,7 +778,8 @@ NsfProcCmdIdx, NsfProfileClearDataStubIdx, NsfProfileGetDataStubIdx, - NsfRelationCmdIdx, + NsfRelationGetCmdIdx, + NsfRelationSetCmdIdx, NsfSelfCmdIdx, NsfShowStackCmdIdx, NsfUnsetUnknownArgsCmdIdx, @@ -2094,20 +2099,40 @@ } static int -NsfRelationCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { +NsfRelationGetCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { ParseContext pc; (void)clientData; if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], - method_definitions[NsfRelationCmdIdx].paramDefs, - method_definitions[NsfRelationCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, + method_definitions[NsfRelationGetCmdIdx].paramDefs, + method_definitions[NsfRelationGetCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfObject *object = (NsfObject *)pc.clientData[0]; int type = (int )PTR2INT(pc.clientData[1]); + + assert(pc.status == 0); + return NsfRelationGetCmd(interp, object, type); + + } else { + return TCL_ERROR; + } +} + +static int +NsfRelationSetCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + ParseContext pc; + (void)clientData; + + if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], + method_definitions[NsfRelationSetCmdIdx].paramDefs, + method_definitions[NsfRelationSetCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, + &pc) == TCL_OK)) { + NsfObject *object = (NsfObject *)pc.clientData[0]; + int type = (int )PTR2INT(pc.clientData[1]); Tcl_Obj *value = (Tcl_Obj *)pc.clientData[2]; assert(pc.status == 0); - return NsfRelationCmd(interp, object, type, value); + return NsfRelationSetCmd(interp, object, type, value); } else { return TCL_ERROR; @@ -3082,7 +3107,7 @@ } } -static Nsf_methodDefinition method_definitions[107] = { +static Nsf_methodDefinition method_definitions[108] = { {"::nsf::methods::class::alloc", NsfCAllocMethodStub, 1, { {"objectName", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}} }, @@ -3357,8 +3382,12 @@ {"::nsf::__profile_get", NsfProfileGetDataStubStub, 0, { {NULL, 0, 0, NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}} }, -{"::nsf::relation", NsfRelationCmdStub, 3, { +{"::nsf::relation::get", NsfRelationGetCmdStub, 2, { {"object", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Object, NULL,NULL,"object",NULL,NULL,NULL,NULL,NULL}, + {"type", NSF_ARG_REQUIRED|NSF_ARG_IS_ENUMERATION, 1, ConvertToRelationtype, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}} +}, +{"::nsf::relation::set", NsfRelationSetCmdStub, 3, { + {"object", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Object, NULL,NULL,"object",NULL,NULL,NULL,NULL,NULL}, {"type", NSF_ARG_REQUIRED|NSF_ARG_IS_ENUMERATION, 1, ConvertToRelationtype, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"value", 0, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}} }, Index: generic/nsfAPI.nxdocindex =================================================================== diff -u -r6ad766595b0095a72fb7b3a1d6d34960a013b464 -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- generic/nsfAPI.nxdocindex (.../nsfAPI.nxdocindex) (revision 6ad766595b0095a72fb7b3a1d6d34960a013b464) +++ generic/nsfAPI.nxdocindex (.../nsfAPI.nxdocindex) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -35,7 +35,8 @@ set ::nxdoc::include(::nsf::next) 1 set ::nxdoc::include(::nsf::nscopyvars) 0 set ::nxdoc::include(::nsf::proc) 1 -set ::nxdoc::include(::nsf::relation) 1 +set ::nxdoc::include(::nsf::relation::get) 1 +set ::nxdoc::include(::nsf::relation::set) 1 set ::nxdoc::include(::nsf::current) 1 set ::nxdoc::include(::nsf::self) 1 set ::nxdoc::include(::nsf::var::exists) 1 Index: generic/predefined.h =================================================================== diff -u -r74b7a4066526ff5f5a8080ed907f71c9ed5c7700 -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- generic/predefined.h (.../predefined.h) (revision 74b7a4066526ff5f5a8080ed907f71c9ed5c7700) +++ generic/predefined.h (.../predefined.h) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -26,9 +26,9 @@ "::nsf::proc ::nsf::mixin {object -per-object:switch classes} {\n" "set rel [expr {${per-object} ? \"object-mixin\" : \"class-mixin\"}]\n" "if {[lindex $classes 0] ne \"\"} {\n" -"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" +"set oldSetting [::nsf::relation::get $object $rel]\n" +"uplevel [list ::nsf::relation::set $object $rel [linsert $oldSetting 0 $classes]]} else {\n" +"uplevel [list ::nsf::relation::set $object $rel \"\"]}}\n" "::nsf::method::provide autoname {::nsf::method::alias autoname ::nsf::methods::object::autoname}\n" "::nsf::method::provide exists {::nsf::method::alias exists ::nsf::methods::object::exists}\n" "::nsf::method::provide volatile {::nsf::method::alias volatile ::nsf::methods::object::volatile}\n" Index: library/nx/nx.tcl =================================================================== diff -u -r6ad766595b0095a72fb7b3a1d6d34960a013b464 -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- library/nx/nx.tcl (.../nx.tcl) (revision 6ad766595b0095a72fb7b3a1d6d34960a013b464) +++ library/nx/nx.tcl (.../nx.tcl) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -972,7 +972,7 @@ # "objectparameter". # Class create ::nx::MetaSlot - ::nsf::relation MetaSlot superclass Class + ::nsf::relation::set MetaSlot superclass Class MetaSlot object method requireClass {required:class old:class,0..1} { # @@ -1104,10 +1104,10 @@ MetaSlot create ::nx::Slot MetaSlot create ::nx::ObjectParameterSlot - ::nsf::relation ObjectParameterSlot superclass Slot + ::nsf::relation::set ObjectParameterSlot superclass Slot MetaSlot create ::nx::MethodParameterSlot - ::nsf::relation MethodParameterSlot superclass Slot + ::nsf::relation::set MethodParameterSlot superclass Slot # Create a slot instance for dispatching method parameter specific # value checkers @@ -1176,7 +1176,7 @@ # defining slots for slots, called BootStrapVariableSlot. # MetaSlot create ::nx::BootStrapVariableSlot - ::nsf::relation BootStrapVariableSlot superclass ObjectParameterSlot + ::nsf::relation::set BootStrapVariableSlot superclass ObjectParameterSlot BootStrapVariableSlot public method getParameterSpec {} { # @@ -1501,7 +1501,7 @@ ###################################################################### MetaSlot create ::nx::RelationSlot - ::nsf::relation RelationSlot superclass ObjectParameterSlot + ::nsf::relation::set RelationSlot superclass ObjectParameterSlot createBootstrapVariableSlots ::nx::RelationSlot { {accessor public} @@ -1519,11 +1519,11 @@ # # create methods for slot operations assign/get/add/delete # - ::nsf::method::alias RelationSlot value=set ::nsf::relation - ::nsf::method::alias RelationSlot value=get ::nsf::relation + ::nsf::method::alias RelationSlot value=set ::nsf::relation::set + ::nsf::method::alias RelationSlot value=get ::nsf::relation::get RelationSlot public method value=unset {obj prop} { - ::nsf::relation $obj $prop {} + ::nsf::relation::set $obj $prop {} } RelationSlot protected method delete_value {obj prop old value} { @@ -1583,22 +1583,18 @@ } } - #RelationSlot public method value=get {obj prop} { - # ::nsf::relation $obj $prop - #} - RelationSlot public method value=add {obj prop value {pos 0}} { - set oldSetting [::nsf::relation $obj $prop] - #puts stderr [list ::nsf::relation $obj $prop [linsert $oldSetting $pos $value]] + set oldSetting [::nsf::relation::get $obj $prop] + #puts stderr [list ::nsf::relation::set $obj $prop [linsert $oldSetting $pos $value]] # # Use uplevel to avoid namespace surprises # - uplevel [list ::nsf::relation $obj $prop [linsert $oldSetting $pos $value]] + uplevel [list ::nsf::relation::set $obj $prop [linsert $oldSetting $pos $value]] } RelationSlot public method value=delete {-nocomplain:switch obj prop value} { - uplevel [list ::nsf::relation $obj $prop \ - [:delete_value $obj $prop [::nsf::relation $obj $prop] $value]] + uplevel [list ::nsf::relation::set $obj $prop \ + [:delete_value $obj $prop [::nsf::relation::get $obj $prop] $value]] } ###################################################################### @@ -2458,10 +2454,10 @@ # copy class information if {[::nsf::is class $origin]} { # obj is a class, copy class specific information - ::nsf::relation $obj superclass [$origin info superclass] + ::nsf::relation::set $obj superclass [$origin info superclass] ::nsf::method::assertion $obj class-invar [::nsf::method::assertion $origin class-invar] - ::nsf::relation $obj class-filter [::nsf::relation $origin class-filter] - ::nsf::relation $obj class-mixin [::nsf::relation $origin class-mixin] + ::nsf::relation::set $obj class-filter [::nsf::relation::get $origin class-filter] + ::nsf::relation::set $obj class-mixin [::nsf::relation::get $origin class-mixin] ::nsf::nscopyvars ::nsf::classes$origin ::nsf::classes$dest foreach m [$origin ::nsf::methods::class::info::methods -path -callprotection all] { @@ -2487,8 +2483,8 @@ ::nsf::object::property $obj hasperobjectslots [::nsf::object::property $origin hasperobjectslots] ::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] + ::nsf::relation::set $obj object-filter [::nsf::relation::get $origin object-filter] + ::nsf::relation::set $obj object-mixin [::nsf::relation::get $origin object-mixin] # reused in XOTcl, no "require namespace" there, so use nsf primitiva if {[::nsf::directdispatch $origin ::nsf::methods::object::info::hasnamespace]} { ::nsf::directdispatch $obj ::nsf::methods::object::requirenamespace @@ -2615,7 +2611,7 @@ set scl [$subclass info superclass] if {[set index [lsearch -exact $scl [::nsf::self]]] != -1} { set scl [lreplace $scl $index $index $newName] - ::nsf::relation $subclass superclass $scl + ::nsf::relation::set $subclass superclass $scl } } } Index: library/serialize/serializer.tcl =================================================================== diff -u -rdd169437c7a701da0063a40978614e6148d71221 -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- library/serialize/serializer.tcl (.../serializer.tcl) (revision dd169437c7a701da0063a40978614e6148d71221) +++ library/serialize/serializer.tcl (.../serializer.tcl) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -511,8 +511,8 @@ set cmd "" foreach o [list ${:rootClass} ${:rootMetaClass}] { append cmd \ - [:frameWorkCmd ::nsf::relation $o object-mixin] \ - [:frameWorkCmd ::nsf::relation $o class-mixin] \ + [:frameWorkCmd ::nsf::relation::get $o object-mixin] \ + [:frameWorkCmd ::nsf::relation::get $o class-mixin] \ [:frameWorkCmd ::nsf::method::assertion $o object-invar] \ [:frameWorkCmd ::nsf::method::assertion $o class-invar] } @@ -717,7 +717,7 @@ if {![:Object-needsNothing $x $s]} {return 0} set scs [$x info superclass] if {[$s needsOneOf $scs]} {return 0} - if {[$s needsOneOf [::nsf::relation $x class-mixin]]} {return 0} + if {[$s needsOneOf [::nsf::relation::get $x class-mixin]]} {return 0} foreach sc $scs {if {[$s needsOneOf [$sc ::nsf::methods::class::info::slotobjects]]} {return 0}} if {[$s needsOneOf [:alias-dependency $x class]]} {return 0} return 1 @@ -829,14 +829,14 @@ } append cmd \ - [:frameWorkCmd ::nsf::relation $o object-mixin] \ + [:frameWorkCmd ::nsf::relation::get $o object-mixin] \ [:frameWorkCmd ::nsf::method::assertion $o object-invar] \ [:frameWorkCmd ::nsf::object::property $o keepcallerself -unless 0] \ [:frameWorkCmd ::nsf::object::property $o perobjectdispatch -unless 0] eval $traces - $s addPostCmd [:frameWorkCmd ::nsf::relation $o object-filter] + $s addPostCmd [:frameWorkCmd ::nsf::relation::get $o object-filter] return $cmd } @@ -852,11 +852,11 @@ append cmd [:method-serialize $o $i ""] "\n" } append cmd \ - [:frameWorkCmd ::nsf::relation $o superclass -unless ${:rootClass}] \ - [:frameWorkCmd ::nsf::relation $o class-mixin] \ + [:frameWorkCmd ::nsf::relation::get $o superclass -unless ${:rootClass}] \ + [:frameWorkCmd ::nsf::relation::get $o class-mixin] \ [:frameWorkCmd ::nsf::method::assertion $o class-invar] - $s addPostCmd [:frameWorkCmd ::nsf::relation $o class-filter] + $s addPostCmd [:frameWorkCmd ::nsf::relation::get $o class-filter] return $cmd\n } @@ -964,10 +964,10 @@ append cmd [list ${:targetName} parametercmd $i] "\n" } append cmd \ - [:frameWorkCmd ::nsf::relation $o object-mixin] \ + [:frameWorkCmd ::nsf::relation::get $o object-mixin] \ [:frameWorkCmd ::nsf::method::assertion $o object-invar] - $s addPostCmd [:frameWorkCmd ::nsf::relation $o object-filter] + $s addPostCmd [:frameWorkCmd ::nsf::relation::get $o object-filter] eval $traces return $cmd @@ -994,11 +994,11 @@ append cmd [list ::nsf::method::alias ${:targetName} {*}[lrange $nxDef 3 end]]\n } append cmd \ - [:frameWorkCmd ::nsf::relation $o superclass -unless ${:rootClass}] \ - [:frameWorkCmd ::nsf::relation $o class-mixin] \ + [:frameWorkCmd ::nsf::relation::get $o superclass -unless ${:rootClass}] \ + [:frameWorkCmd ::nsf::relation::get $o class-mixin] \ [:frameWorkCmd ::nsf::method::assertion $o class-invar] - $s addPostCmd [:frameWorkCmd ::nsf::relation $o class-filter] + $s addPostCmd [:frameWorkCmd ::nsf::relation::get $o class-filter] return $cmd } Index: library/tcl-cool/tcl-cool.tcl =================================================================== diff -u -r1398015d9294ce3adec8b1d5dc6e98f7c717b243 -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- library/tcl-cool/tcl-cool.tcl (.../tcl-cool.tcl) (revision 1398015d9294ce3adec8b1d5dc6e98f7c717b243) +++ library/tcl-cool/tcl-cool.tcl (.../tcl-cool.tcl) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -28,7 +28,7 @@ # ::nsf::objectsystem::create # ::nsf::forward # ::nsf::method -# ::nsf::relation +# ::nsf::relation::set # # Three exported commands to be used by in the languages # ::nsf::my @@ -154,7 +154,7 @@ # superclasses class init { method superclass {sc} { - ::nsf::relation [self] superclass $sc + ::nsf::relation::set [self] superclass $sc } } @@ -166,8 +166,8 @@ # Provide users a convenient way to register/deregister per-object # filters and mixins - object forward filter ::nsf::relation %self object-filter - object forward mixin ::nsf::relation %self object-mixin + object forward filter ::nsf::relation::set %self object-filter + object forward mixin ::nsf::relation::set %self object-mixin # finally, export a few commands namespace export object class my self next Index: library/xotcl/library/xotcl2.tcl =================================================================== diff -u -r27030b244334e022169ea7143ce6d91257a8b653 -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- library/xotcl/library/xotcl2.tcl (.../xotcl2.tcl) (revision 27030b244334e022169ea7143ce6d91257a8b653) +++ library/xotcl/library/xotcl2.tcl (.../xotcl2.tcl) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -80,8 +80,9 @@ # get frequently used primitiva into the ::xotcl namespace # namespace import ::nsf::configure ::nsf::my ::nsf::finalize ::nsf::interp - namespace import ::nsf::method::alias ::nsf::is ::nsf::relation + namespace import ::nsf::method::alias ::nsf::is interp alias {} ::xotcl::next {} ::nsf::xotclnext + interp alias {} ::xotcl::relation {} ::nsf::relation::set proc ::xotcl::self {{arg ""}} { switch $arg { @@ -483,16 +484,16 @@ nx::MetaSlot create ::xotcl::RelationSlot -superclass ::nx::RelationSlot - ::nsf::method::alias ::xotcl::RelationSlot value=assign ::nsf::relation + ::nsf::method::alias ::xotcl::RelationSlot value=assign ::nsf::relation::set set cSlotContainer [::nx::slotObj ::xotcl::Class] set oSlotContainer [::nx::slotObj ::xotcl::Object] ::xotcl::RelationSlot create ${cSlotContainer}::superclass \ -defaultmethods {get set} - #::nsf::method::alias ${cSlotContainer}::superclass value=set ::nsf::relation + #::nsf::method::alias ${cSlotContainer}::superclass value=set ::nsf::relation::set ::xotcl::RelationSlot create ${oSlotContainer}::class -elementtype class -multiplicity 1..1 \ -defaultmethods {get set} - #::nsf::method::alias ${oSlotContainer}::class value=set ::nsf::relation + #::nsf::method::alias ${oSlotContainer}::class value=set ::nsf::relation::set ::xotcl::RelationSlot create ${oSlotContainer}::mixin -forwardername object-mixin \ -defaultmethods {get set} \ -elementtype mixinreg -multiplicity 0..n Index: tests/destroy.test =================================================================== diff -u -r12319faaf20df7116346558bd948b0edda9124eb -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- tests/destroy.test (.../destroy.test) (revision 12319faaf20df7116346558bd948b0edda9124eb) +++ tests/destroy.test (.../destroy.test) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -1001,7 +1001,7 @@ nx::test case cyclical-dependency { nx::Object create o1 ? {nx::Class create o1::C} ::o1::C - ? {nsf::relation o1 class o1::C} ::o1::C + ? {nsf::relation::set o1 class o1::C} ::o1::C o1 destroy } @@ -1011,15 +1011,15 @@ # nx::Object create o1 nx::Class create o1::C -nsf::relation o1 class o1::C +nsf::relation::set o1 class o1::C # # Create a cyclical superclass dependency and delete it manually # nx::test case cyclical-dependency { nx::Class create C nx::Class create C::* - ? {nsf::relation C superclass {C::* nx::Object}} "" + ? {nsf::relation::set C superclass {C::* nx::Object}} "" C destroy } @@ -1029,7 +1029,7 @@ # nx::Class create C nx::Class create C::* -nsf::relation C superclass {C::* nx::Object} +nsf::relation::set C superclass {C::* nx::Object} puts "==== EXIT [info script]" # Index: tests/interceptor-slot.test =================================================================== diff -u -r59f13181ba70df745dca1c5e96ed872703d8662d -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- tests/interceptor-slot.test (.../interceptor-slot.test) (revision 59f13181ba70df745dca1c5e96ed872703d8662d) +++ tests/interceptor-slot.test (.../interceptor-slot.test) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -53,9 +53,9 @@ nx::test case per-object-mixin { ? {c1 info precedence} "::C ::nx::Object" ? {c1 object mixin add M} ::M - ? {::nsf::relation c1 object-mixin} ::M + ? {::nsf::relation::get c1 object-mixin} ::M ? {catch {c1 object mixin UNKNOWN}} 1 - ? {::nsf::relation c1 object-mixin} "::M" + ? {::nsf::relation::get c1 object-mixin} "::M" # add again the same mixin ? {c1 object mixin add M} {::M} @@ -78,10 +78,10 @@ # "object-mixin" # nx::test case object-mixin-relation { - ? {::nsf::relation C object-mixin M} ::M + ? {::nsf::relation::set C object-mixin M} ::M ? {C info precedence} "::M ::nx::Class ::nx::Object" ? {C info object mixin classes} "::M" - ? {::nsf::relation C object-mixin ""} "" + ? {::nsf::relation::set C object-mixin ""} "" ? {C info precedence} "::nx::Class ::nx::Object" } @@ -119,9 +119,9 @@ ? {C object mixin add M} ::M ? {C info precedence} "::M ::nx::Class ::nx::Object" - ? {::nsf::relation C object-mixin} ::M + ? {::nsf::relation::get C object-mixin} ::M ? {catch {C object mixin add UNKNOWN}} 1 - ? {::nsf::relation C object-mixin} "::M" + ? {::nsf::relation::get C object-mixin} "::M" ? {C object mixin set ""} "" ? {C info precedence} "::nx::Class ::nx::Object" @@ -169,57 +169,57 @@ } } - ? {::nsf::relation cc object-filter} "" + ? {::nsf::relation::get cc object-filter} "" ? {cc info object filter methods} "" - ? {::nsf::relation cc object-filter filterA} filterA + ? {::nsf::relation::set cc object-filter filterA} filterA ? {cc info object filter methods} "filterA" ? {cc object filter set filterB} "filterB" - ? {::nsf::relation cc object-filter} "filterB" + ? {::nsf::relation::get cc object-filter} "filterB" ? {cc info object filter methods} "filterB" ? {cc object filter add filterD} "filterD filterB" - ? {::nsf::relation cc object-filter} "filterD filterB" + ? {::nsf::relation::get cc object-filter} "filterD filterB" ? {cc info object filter methods} "filterD filterB" ? {cc object filter delete filterB} "filterD" - ? {::nsf::relation cc object-filter} "filterD" + ? {::nsf::relation::get cc object-filter} "filterD" ? {cc info object filter methods} "filterD" - ? {catch {::nsf::relation cc object-filter UNKNOWN}} 1 - ? {::nsf::relation cc object-filter} "filterD" + ? {catch {::nsf::relation::set cc object-filter UNKNOWN}} 1 + ? {::nsf::relation::get cc object-filter} "filterD" ? {cc info object filter methods} "filterD" - ? {::nsf::relation CC object-filter} "" + ? {::nsf::relation::get CC object-filter} "" ? {CC info object filter methods} "" - ? {::nsf::relation CC object-filter filterC} "filterC" - ? {::nsf::relation CC object-filter} "filterC" + ? {::nsf::relation::set CC object-filter filterC} "filterC" + ? {::nsf::relation::get CC object-filter} "filterC" ? {CC info object filter methods} "filterC" ? {CC object filter unset} "" - ? {::nsf::relation CC object-filter} "" + ? {::nsf::relation::get CC object-filter} "" ? {CC info object filter methods} "" - ? {::nsf::relation CC class-filter} "" + ? {::nsf::relation::get CC class-filter} "" ? {CC info filter methods} "" - ? {::nsf::relation CC class-filter filterA} "filterA" - ? {::nsf::relation CC class-filter} "filterA" + ? {::nsf::relation::set CC class-filter filterA} "filterA" + ? {::nsf::relation::get CC class-filter} "filterA" ? {CC info filter methods} "filterA" ? {CC filter add filterB} "filterB filterA" - ? {::nsf::relation CC class-filter} "filterB filterA" + ? {::nsf::relation::get CC class-filter} "filterB filterA" ? {CC info filter methods} "filterB filterA" ? {CC filter delete filterA} "filterB" - ? {::nsf::relation CC class-filter} "filterB" + ? {::nsf::relation::get CC class-filter} "filterB" ? {CC info filter methods} "filterB" - ? {catch {::nsf::relation CC class-filter UNKNOWN}} 1 - ? {::nsf::relation CC class-filter} "filterB" + ? {catch {::nsf::relation::set CC class-filter UNKNOWN}} 1 + ? {::nsf::relation::get CC class-filter} "filterB" ? {CC info filter methods} "filterB" ? {CC filter unset} "" - ? {::nsf::relation CC class-filter} "" + ? {::nsf::relation::get CC class-filter} "" ? {CC info filter methods} "" } Index: tests/object-system.test =================================================================== diff -u -r4bc60e16c10fdbbb640b3019d4bdebdc469fdf55 -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- tests/object-system.test (.../object-system.test) (revision 4bc60e16c10fdbbb640b3019d4bdebdc469fdf55) +++ tests/object-system.test (.../object-system.test) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -297,14 +297,14 @@ ? {::nsf::object::exists ::object} 1 ? {::nsf::is class ::object} 1 ? {::nsf::is metaclass ::object} 0 -? {::nsf::relation ::object class} ::class -? {::nsf::relation ::object superclass} "" +? {::nsf::relation::get ::object class} ::class +? {::nsf::relation::get ::object superclass} "" ? {::nsf::object::exists ::class} 1 ? {::nsf::is class ::class} 1 ? {::nsf::is metaclass ::class} 1 -? {::nsf::relation ::class class} ::class -? {::nsf::relation ::class superclass} ::object +? {::nsf::relation::get ::class class} ::class +? {::nsf::relation::get ::class superclass} ::object # define non-standard methos to create/destroy objects and classes ::nsf::method::alias ::class + ::nsf::methods::class::create @@ -316,16 +316,16 @@ ? {::nsf::object::exists ::C} 1 ? {::nsf::is class ::C} 1 ? {::nsf::is metaclass ::C} 0 -? {::nsf::relation ::C class} ::class -? {::nsf::relation ::C superclass} ::object +? {::nsf::relation::get ::C class} ::class +? {::nsf::relation::get ::C superclass} ::object # create an instance of C C + c1 ? {::nsf::object::exists ::c1} 1 ? {::nsf::is class ::c1} 0 ? {::nsf::is metaclass ::c1} 0 -? {::nsf::relation ::c1 class} ::C +? {::nsf::relation::get ::c1 class} ::C # destroy instance c1 - Index: tests/parameters.test =================================================================== diff -u -r5d3bc04b5ec0a4422236a65220d94ceee17a8796 -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- tests/parameters.test (.../parameters.test) (revision 5d3bc04b5ec0a4422236a65220d94ceee17a8796) +++ tests/parameters.test (.../parameters.test) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -304,7 +304,7 @@ ? {c1 info lookup slots -source application} "::C::slot::a ::C::slot::b ::C::slot::c" - nsf::relation c1 class nx::Object + nsf::relation::set c1 class nx::Object ? {c1 info lookup slots -source application} "" Index: tests/varresolution.test =================================================================== diff -u -r12319faaf20df7116346558bd948b0edda9124eb -r3cbf24ff95e38976cdc905ec0e8014d9d754ad6f --- tests/varresolution.test (.../varresolution.test) (revision 12319faaf20df7116346558bd948b0edda9124eb) +++ tests/varresolution.test (.../varresolution.test) (revision 3cbf24ff95e38976cdc905ec0e8014d9d754ad6f) @@ -723,10 +723,10 @@ nx::Class create M2 C mixin set M1 - ? {::nsf::relation C class-mixin} "::module::M1" + ? {::nsf::relation::get C class-mixin} "::module::M1" C mixin add M2 - ? {::nsf::relation C class-mixin} "::module::M2 ::module::M1" + ? {::nsf::relation::get C class-mixin} "::module::M2 ::module::M1" }