Index: doc/example-scripts/rosetta-constraint-genericity.tcl =================================================================== diff -u -ra963e8896fd07c345ccfa034cbd043344edbf083 -ra11d866d48c3ced35ec09fe74ddc12b58b6ef928 --- doc/example-scripts/rosetta-constraint-genericity.tcl (.../rosetta-constraint-genericity.tcl) (revision a963e8896fd07c345ccfa034cbd043344edbf083) +++ doc/example-scripts/rosetta-constraint-genericity.tcl (.../rosetta-constraint-genericity.tcl) (revision a11d866d48c3ced35ec09fe74ddc12b58b6ef928) @@ -16,7 +16,7 @@ } # -# A +FoodBax+ may only contain eatable items. Therefore with we define +# A +FoodBax+ may only contain eatable items. Therefore, with we define # +items+ as a property of type +Eatable" which has a multiplicity of # +0..n+ (might contain 0 to n eatable items). Furthermore, we define # items as +incremental+, such we can add / remove items with +item Index: doc/example-scripts/rosetta-delegates.tcl =================================================================== diff -u -ra963e8896fd07c345ccfa034cbd043344edbf083 -ra11d866d48c3ced35ec09fe74ddc12b58b6ef928 --- doc/example-scripts/rosetta-delegates.tcl (.../rosetta-delegates.tcl) (revision a963e8896fd07c345ccfa034cbd043344edbf083) +++ doc/example-scripts/rosetta-delegates.tcl (.../rosetta-delegates.tcl) (revision a11d866d48c3ced35ec09fe74ddc12b58b6ef928) @@ -36,7 +36,7 @@ # === Demonstrating the behavior in a shell: # -# Create a +Delegator+, which has no +delegatee+ defined. Therefore +# Create a +Delegator+, which has no +delegatee+ defined. Therefore, # delegator performs the action by itself, the default implementation. # ? {set a [Delegator new]} "::nsf::__#0" Index: doc/example-scripts/ruby-mixins.tcl =================================================================== diff -u -rf35ab630098876f0efbd8117aa981eb199a45227 -ra11d866d48c3ced35ec09fe74ddc12b58b6ef928 --- doc/example-scripts/ruby-mixins.tcl (.../ruby-mixins.tcl) (revision f35ab630098876f0efbd8117aa981eb199a45227) +++ doc/example-scripts/ruby-mixins.tcl (.../ruby-mixins.tcl) (revision a11d866d48c3ced35ec09fe74ddc12b58b6ef928) @@ -201,7 +201,7 @@ ? {SpecialForce create s1 -members {Donald Micky Daniel Gustav}} ::s1 # As above, the precedence of +Enumerable+ is lower then the -# precedence of +ATeam+ and +Enumerable+. Therefore +ATeam+ can refine +# precedence of +ATeam+ and +Enumerable+. Therefore, +ATeam+ can refine # the behavior of +Enumerable+, the class +SpecialForce+ can refine # the behavior of +ATeam+. ? {s1 info precedence} "::SpecialForce ::ATeam ::Enumerable ::nx::Object" Index: doc/next-migration.txt =================================================================== diff -u -rb2778d3ae9cba4e8f3487097ad5f1ac3999b0c17 -ra11d866d48c3ced35ec09fe74ddc12b58b6ef928 --- doc/next-migration.txt (.../next-migration.txt) (revision b2778d3ae9cba4e8f3487097ad5f1ac3999b0c17) +++ doc/next-migration.txt (.../next-migration.txt) (revision a11d866d48c3ced35ec09fe74ddc12b58b6ef928) @@ -101,7 +101,7 @@ under arbitrary names for arbitrary objects or classes. .. NX provides means for _method protection_ (method modifiers - +public+, +protected+, and +private+). Therefore developers have + +public+, +protected+, and +private+). Therefore, developers have to define explicitly public interfaces in order to use methods from other objects. Index: doc/next-tutorial/next-tutorial.txt =================================================================== diff -u -rb2778d3ae9cba4e8f3487097ad5f1ac3999b0c17 -ra11d866d48c3ced35ec09fe74ddc12b58b6ef928 --- doc/next-tutorial/next-tutorial.txt (.../next-tutorial.txt) (revision b2778d3ae9cba4e8f3487097ad5f1ac3999b0c17) +++ doc/next-tutorial/next-tutorial.txt (.../next-tutorial.txt) (revision a11d866d48c3ced35ec09fe74ddc12b58b6ef928) @@ -333,7 +333,7 @@ +push+ operations are issued on a stack). Safety checking can be implemented mostly independent from the implementation details of the stack (usage of internal data structures). There are as well different -ways of checking the safety. Therefore we say that safety checking is +ways of checking the safety. Therefore, we say that safety checking is orthogonal to the stack core implementation. With NX we can define stack-safety as a separate class using methods @@ -442,7 +442,7 @@ Note that in <>, the class +Safety+ is only mixed into a single object (here -+s2+), therefore we refer to this case as a _per-object mixin_. ++s2+), therefore, we refer to this case as a _per-object mixin_. <> shows the class diagram, where the class +Safety+ is used as a per-object mixin for +s2+. @@ -1498,7 +1498,7 @@ an extension of the previous example. We define here two additional classes +M1+ and +M2+ which are used as per-object and per-class mixins. Both classes define the method +foo+, these methods shadow -the definitions of the intrinsic class hierarchy. Therefore an +the definitions of the intrinsic class hierarchy. Therefore, an invocation of +foo+ on object +d1+ causes first an invocation of method in the per-object mixin. @@ -1538,7 +1538,7 @@ from the same place, where the current method is defined. Since the current method is defined as a object method, +foo+ is resolved as a object method. The effect is that the mixin definitions are -ignored. The invocation flag +-local+ was already introduced int the +ignored. The invocation flag +-local+ was already introduced in the section about method protection, where it was used to call _private_ methods. @@ -1550,7 +1550,7 @@ from basic - typically predefined - classes of the object system. This can be useful, when script overloads system methods, but still want to call the shadowed methods from the base classes. In our case, we have -no definitions of +foo+ on the base clases, therefore an error message +no definitions of +foo+ on the base clases, therefore, an error message is returned. The output of <> is: @@ -1653,15 +1653,15 @@ arguments. Method +baz+ provides two non-positional parameter (+-y+ and +-y+) and one positional parameter (namely +a+). The invocation in line 34 passes the value of +1+ to +x+ and the value of +100+ to +a+. -There is no value passed to +y+, therefore value of +y+ will be +There is no value passed to +y+, therefore, value of +y+ will be undefined in the body of +baz+, +info exists y+ checks for the existence of the variable +y+ and returns +0+. The invocation in line 35 passes only a value to the positional parameter. A more tricky case is in line 36, where we want to pass +-y+ as a value to the positional parameter +a+. The case is more tricky since syntactically the argument parser might consider +-y+ as -the name of one of the non-positional parameter. Therefore we use +--+ +the name of one of the non-positional parameter. Therefore, we use +--+ (double dash) to indicate the end of the block of the non-positional parameters and therefore the value of +-y+ is passed to +a+. @@ -2184,7 +2184,7 @@ In NX, these definitions imply that instances of the class of +Person+ have the properties +name+ and +birthday+ as _non-positional object -parameters_. Furthermore it implies that instances of +Student+ will +parameters_. Furthermore, it implies that instances of +Student+ will have the configure parameters of +Person+ augmented with the object parameters from +Student+ (namely +matnr+ and +oncampus+). Based on these configure parameters, we can create a +Person+ named +Bob+ and a @@ -2265,7 +2265,7 @@ specified, that +Student+ has +Person+ as superclass via the non-positional configure parameter +-superclass+. If no superclass is specified for a class, the default superclass is -+nx::Object+. Therefore +nx::Object+ is the default value for the ++nx::Object+. Therefore, +nx::Object+ is the default value for the parameter +superclass+. Another frequently used parameter for classes is +-mixins+ to denote Index: generic/nsf.c =================================================================== diff -u -reef40b991c9897e1f64760af7088cd1dec078f23 -ra11d866d48c3ced35ec09fe74ddc12b58b6ef928 --- generic/nsf.c (.../nsf.c) (revision eef40b991c9897e1f64760af7088cd1dec078f23) +++ generic/nsf.c (.../nsf.c) (revision a11d866d48c3ced35ec09fe74ddc12b58b6ef928) @@ -24059,7 +24059,7 @@ /* * Omit argument checking, provided that ... * ... argument checking is turned off *and* no converter is specified, or - * ... the ruling parameter option is 'initcmd' + * ... the ruling parameter option is 'cmd' * ... slotset is active */ if ((unlikely((doCheckArguments & NSF_ARGPARSE_CHECK) == 0u) && (pPtr->flags & (NSF_ARG_IS_CONVERTER)) == 0u) || @@ -31846,6 +31846,11 @@ */ Tcl_Obj *varObj = Tcl_ObjGetVar2(interp, NsfGlobalObjs[NSF_ARRAY_INITCMD], paramPtr->nameObj, 0); + + /*fprintf(stderr, "### NSF_ARRAY_INITCMD %s has a value %s\n", + NsfGlobalStrings[NSF_ARRAY_INITCMD], + ObjStr(paramPtr->defaultValue));*/ + if (varObj == NULL) { /* * The variable is not set. Therefore, we assume, we have to Index: library/xotcl/library/xotcl2.tcl =================================================================== diff -u -r39197485bb3bf3b52b16bccda51800cd801b8f4b -ra11d866d48c3ced35ec09fe74ddc12b58b6ef928 --- library/xotcl/library/xotcl2.tcl (.../xotcl2.tcl) (revision 39197485bb3bf3b52b16bccda51800cd801b8f4b) +++ library/xotcl/library/xotcl2.tcl (.../xotcl2.tcl) (revision a11d866d48c3ced35ec09fe74ddc12b58b6ef928) @@ -1098,7 +1098,7 @@ :property {substdefault} :property -accessor public multivalued { # - # The slot object is an nx object, therefore we need the nx + # The slot object is an nx object, therefore, we need the nx # "set" variant no matter what xotcl2 uses. # :public object method value=set {object property value} {