Index: ChangeLog-2.0.0-2.1.0.log =================================================================== diff -u -N -racc1c347010153b600d440af866809a544dd3f65 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- ChangeLog-2.0.0-2.1.0.log (.../ChangeLog-2.0.0-2.1.0.log) (revision acc1c347010153b600d440af866809a544dd3f65) +++ ChangeLog-2.0.0-2.1.0.log (.../ChangeLog-2.0.0-2.1.0.log) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -38,7 +38,7 @@ 2016-12-18 Gustaf Neumann - * nsf.c (PrecedenceOrder, MergeInheritanceLists): Fix occassional + * nsf.c (PrecedenceOrder, MergeInheritanceLists): Fix occasional crash when deleting and recomputing precedence orders under multiple inheritance. One assumption in the precedence order computation is that the precedence orders of superclasses are @@ -545,7 +545,7 @@ * nsf.c (ParamDefsNames): Fix another Tcl_Obj leak and optimize code slightly, Tcl_Obj is only allocated once the string-matching - operation suceeded. [253e9e6] + operation succeeded. [253e9e6] (NsfForwardPrintError): Fix another instance of the NsfMethodNamePath leak. [0739b93] (NsfMethodName): Avoid unnecessary append operation between lists, @@ -595,7 +595,7 @@ messages which have a severity larger or equal than a given log severity; so; "nsf::configure debugLevel 0" will print everything, and "nsf::configure debugLevel 3" will print just error messages - while omiting warnings etc. This is not a change in logging + while omitting warnings etc. This is not a change in logging semantics, but removes some confusion at the C level. Therefore, the nsf::configure option "debugLevel" was not changed. @@ -983,7 +983,7 @@ location (nx::shell) to ease sharing between nxsh & friends, as well as to facilitate implementingNX/XOTcl shells in wrapped applications (tclkits). [6c6f313] - (nx::shell): Avoid poluting global namespace. [f1bfcbc] + (nx::shell): Avoid polluting global namespace. [f1bfcbc] 2016-01-11 Gustaf Neumann @@ -1006,7 +1006,7 @@ 2016-01-07 Gustaf Neumann - * nsf-cmd.test: Add absolute path in returned proc defintion to + * nsf-cmd.test: Add absolute path in returned proc definition to regression test. [a775d31] * nsf.tcl: Add result in debug exit calls. [2771c4c] @@ -1258,7 +1258,7 @@ * nsf.c, nsfInt.h (NsfParamDefs): Removed NsfParamDefs.slotObj and - single occurance for memory-management since it is not used for + single occurrence for memory-management since it is not used for the time being [08dedac] (NsfProcClientData, MethodDispatch, ObjectDispatch): Write body-blocks of if on separate lines; change variable name Index: ChangeLog-2.0b5-2.0.0.log =================================================================== diff -u -N -r5bdfdb70f7570bda409acd24efbdc7e73b908c6b -rf934951db464db1a6f39ac98290ecde17a466cd7 --- ChangeLog-2.0b5-2.0.0.log (.../ChangeLog-2.0b5-2.0.0.log) (revision 5bdfdb70f7570bda409acd24efbdc7e73b908c6b) +++ ChangeLog-2.0b5-2.0.0.log (.../ChangeLog-2.0b5-2.0.0.log) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -1451,7 +1451,7 @@ the unevaluated error cmd statement from the trace message - At two or three locations, we used to compute the method path using different helpers (CallStackMethodPath, NsfMethodNamePath) etc. I - tried to unify this by revising NsfMethodNamePath to accomodate the + tried to unify this by revising NsfMethodNamePath to accommodate the different uses. - Besides, for required-argument checks, I included the method path (for ensemble invocations) into the error messages. @@ -1468,7 +1468,7 @@ certain instance variables such as arrays or dicts to customizable representations in MongoDB) - added nx-serialize to test cases (simple state - persistance for nx objects) + persistence for nx objects) - added nx-rep to test cases (rep types for "array" and "dict") - provide datarootdir to get rid of warning during configure Index: TODO =================================================================== diff -u -N -rf5f15deb1923d01d5507929e9eb76487c7b92d1a -rf934951db464db1a6f39ac98290ecde17a466cd7 --- TODO (.../TODO) (revision f5f15deb1923d01d5507929e9eb76487c7b92d1a) +++ TODO (.../TODO) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -300,7 +300,7 @@ allowed in valuecheck - pass arg from objectparameter as first argument to objparms - (similiar to client data) + (similar to client data) - support for parameter spec of form "type=XXX" to denote that the parameter must be an object of the specified type (class; @@ -1902,7 +1902,7 @@ it as a setter, and (c) calling it as a getter. For providing a value, no arg is used for switch. For calling a setter, it is necessary to provide a value even for a switch. -- disallow type "switch" in setter definiton (use boolean instead) +- disallow type "switch" in setter definition (use boolean instead) - disallow type "switch" for positional arguments (use boolean instead) - extended regression test @@ -2539,7 +2539,7 @@ one has to use "o configure -class NEWCLASS". The term "object-class" looks alien to language beginners, the term "class" is much more straightforward. Changing classes - or superclasses is seldomly used by typical application programs. + or superclasses is seldom used by typical application programs. For already existing nx scripts, changing "object-class" into class should be straightforward. @@ -3033,7 +3033,7 @@ method contains spaces). - some minor cleanup - extended regression test -- fix typos in string "unknown" (unknown, unkown) +- fix typos in string "unknown" - reduce verbosity - reduce scope of variables @@ -3436,7 +3436,7 @@ - renamed "nsf::object::dispatch" to "nsf::dispatch" - nsf.c: - * added permissable value "private" to flag "-callprotection" for + * added permissible value "private" to flag "-callprotection" for "info lookup method" and "info methods". * extended regression test @@ -4855,7 +4855,7 @@ - added support for rep types (allow for mappings between certain instance variables such as arrays or dicts to customizable representations in MongoDB) -- added nx-serialize to test cases (simple state persistance for nx objects) +- added nx-serialize to test cases (simple state persistence for nx objects) - added nx-rep to test cases (rep types for "array" and "dict") - improve performance of mongo->tcl conversion by using predefined global strings @@ -6067,7 +6067,7 @@ - warnings for "numeric" names for args and nonpos-args? - special handling of values looking like nonpos-flags, - but wich are not ones (-1, "- a b c", ....) in detection + but which are not ones (-1, "- a b c", ....) in detection when to throw unknown. - interface of "variable" and "attribute": Index: doc/Announce2.0.0 =================================================================== diff -u -N -r5bdfdb70f7570bda409acd24efbdc7e73b908c6b -rf934951db464db1a6f39ac98290ecde17a466cd7 --- doc/Announce2.0.0 (.../Announce2.0.0) (revision 5bdfdb70f7570bda409acd24efbdc7e73b908c6b) +++ doc/Announce2.0.0 (.../Announce2.0.0) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -11,7 +11,7 @@ happened in NX and, therefore, on the NSF scripting level, without the need to modify the NSF C layer. The implementation of XOTcl 2 has changed very little. The Next Scripting Framework was tested with Tcl -8.5.17 and Tcl 8.6.2 on Linux, Mac OS X, and in Windows enviroments +8.5.17 and Tcl 8.6.2 on Linux, Mac OS X, and in Windows environments (MinGW, VC12). Below are the most notable differences in NSF/NX 2.0 final relative to Index: doc/Announce2.0b5 =================================================================== diff -u -N -rcd631185c59d3d8b69ab8611fb822302692672f4 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- doc/Announce2.0b5 (.../Announce2.0b5) (revision cd631185c59d3d8b69ab8611fb822302692672f4) +++ doc/Announce2.0b5 (.../Announce2.0b5) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -14,7 +14,7 @@ happened in NX and, therefore, on the NSF scripting level, without the need to modify the NSF C layer. The implementation of XOTcl 2 has changed very little. The Next Scripting Framework was tested with Tcl -8.5.14 and Tcl 8.6.0 on Linux, Mac OS X, and in windows enviroments +8.5.14 and Tcl 8.6.0 on Linux, Mac OS X, and in windows environments (MinGW, VC11). This beta-release is supposed to be the last release before Index: doc/Object.3 =================================================================== diff -u -N -r8f64a468d8bb53f2ba317c8c738c2d3a24243980 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- doc/Object.3 (.../Object.3) (revision 8f64a468d8bb53f2ba317c8c738c2d3a24243980) +++ doc/Object.3 (.../Object.3) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -637,7 +637,7 @@ .CE .IP -A customized object-desctruction scheme can be made shared between the instances +A customized object-destruction scheme can be made shared between the instances of a class, by defining the custom \fBdestroy\fR for an application class: .CS @@ -1571,4 +1571,4 @@ .nf Copyright (c) 2014-16 Stefan Sobernig , Gustaf Neumann ; available under the Creative Commons Attribution 3\&.0 Austria license (CC BY 3\&.0 AT)\&. -.fi \ No newline at end of file +.fi Index: doc/Object.man =================================================================== diff -u -N -rc210a16eea562921715652f023bc6d07e4e25ed2 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- doc/Object.man (.../Object.man) (revision c210a16eea562921715652f023bc6d07e4e25ed2) +++ doc/Object.man (.../Object.man) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -334,7 +334,7 @@ destroying ::obj }] -A customized object-desctruction scheme can be made shared between the instances +A customized object-destruction scheme can be made shared between the instances of a class, by defining the custom [method destroy] for an application class: Index: doc/next-migration.html =================================================================== diff -u -N -rd303212e06bfd89c57038a26ba54f9f86e941601 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- doc/next-migration.html (.../next-migration.html) (revision d303212e06bfd89c57038a26ba54f9f86e941601) +++ doc/next-migration.html (.../next-migration.html) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -753,7 +753,7 @@

This document describes the differences between the Next Scripting Language Framework and XOTcl 1. In particular, it presents a migration guide from XOTcl 1 to NX, and presents potential -incompatibilities beween XOTcl 1 and XOTcl 2.

+incompatibilities between XOTcl 1 and XOTcl 2.

The Next Scripting Language (NX) is a successor of XOTcl 1 and is based on 10 years of experience with XOTcl in projects containing @@ -1634,7 +1634,7 @@ # # NX does not provide own methods, but uses # the low level framework commands, since -# application developer will only seldomly +# application developer will only seldom # need it. Class create C @@ -1775,14 +1775,14 @@ # method, forward, alias # Class create C { - :/method-definiton-method/ ... - :public /method-definiton-method/ ... - :protected /method-definiton-method/ ... - :private /method-definiton-method/ ... - :object /method-definiton-method/ ... - :public object /method-definiton-method/ ... - :protected object /method-definiton-method/ ... - :private object /method-definiton-method/ ... + :/method-definition-method/ ... + :public /method-definition-method/ ... + :protected /method-definition-method/ ... + :private /method-definition-method/ ... + :object /method-definition-method/ ... + :public object /method-definition-method/ ... + :protected object /method-definition-method/ ... + :private object /method-definition-method/ ... }

@@ -5189,7 +5189,7 @@ # For ensemble methods (method name contains # spaces) one can query as well the registration # handle, which is the handle to the root of the -# ensemble; the definiton handle points to the +# ensemble; the definition handle points to the # leaf of the ensemble. # /cls/ info method registrationhandle /methodName/ Index: doc/next-migration.txt =================================================================== diff -u -N -r576c7576787dc6257a22364e21fff19f99ce1bac -rf934951db464db1a6f39ac98290ecde17a466cd7 --- doc/next-migration.txt (.../next-migration.txt) (revision 576c7576787dc6257a22364e21fff19f99ce1bac) +++ doc/next-migration.txt (.../next-migration.txt) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -14,7 +14,7 @@ This document describes the differences between the Next Scripting Language Framework and XOTcl 1. In particular, it presents a migration guide from XOTcl 1 to NX, and presents potential -incompatibilities beween XOTcl 1 and XOTcl 2. +incompatibilities between XOTcl 1 and XOTcl 2. ***************************************************************************** The Next Scripting Language (NX) is a successor of XOTcl 1 and is @@ -557,8 +557,8 @@ # # NX does not provide own methods, but uses # the low level framework commands, since -# application developer will only seldomly -# need it. +# application developer will only +# need it in rare cases. Class create C ::nsf::method::setter C p1 @@ -644,14 +644,14 @@ # method, forward, alias # Class create C { - :/method-definiton-method/ ... - :public /method-definiton-method/ ... - :protected /method-definiton-method/ ... - :private /method-definiton-method/ ... - :object /method-definiton-method/ ... - :public object /method-definiton-method/ ... - :protected object /method-definiton-method/ ... - :private object /method-definiton-method/ ... + :/method-definition-method/ ... + :public /method-definition-method/ ... + :protected /method-definition-method/ ... + :private /method-definition-method/ ... + :object /method-definition-method/ ... + :public object /method-definition-method/ ... + :protected object /method-definition-method/ ... + :private object /method-definition-method/ ... } ---------------- |====================== @@ -2468,7 +2468,7 @@ # For ensemble methods (method name contains # spaces) one can query as well the registration # handle, which is the handle to the root of the -# ensemble; the definiton handle points to the +# ensemble; the definition handle points to the # leaf of the ensemble. # /cls/ info method registrationhandle /methodName/ Index: doc/next-tutorial/next-tutorial.html =================================================================== diff -u -N -rd303212e06bfd89c57038a26ba54f9f86e941601 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- doc/next-tutorial/next-tutorial.html (.../next-tutorial.html) (revision d303212e06bfd89c57038a26ba54f9f86e941601) +++ doc/next-tutorial/next-tutorial.html (.../next-tutorial.html) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -2362,7 +2362,7 @@ current object (therefore, the call is equivalent to d1 foo). The next three calls show how to provide flags that influence the method resolution. The flags can be provided between the colon and the method -name. These flags are used rather seldomly but can be helpful in some +name. These flags are used rather seldom but can be helpful in some situations.

The invocation flag -local means that the method has to be resolved from the same place, where the current method is defined. Since the @@ -2825,7 +2825,7 @@ allowed.

If the same checks are used in many places in the program, defining names for the value checker will be the better choice since -it improves maintainability. For seldomly used kind of checks, the +it improves maintainability. For seldom used kind of checks, the parameterized value checkers might be more convenient.

Index: doc/next-tutorial/next-tutorial.txt =================================================================== diff -u -N -rd8b8fec1b9c4b2ab7c1cc36c156649109ca0807a -rf934951db464db1a6f39ac98290ecde17a466cd7 --- doc/next-tutorial/next-tutorial.txt (.../next-tutorial.txt) (revision d8b8fec1b9c4b2ab7c1cc36c156649109ca0807a) +++ doc/next-tutorial/next-tutorial.txt (.../next-tutorial.txt) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -1532,7 +1532,7 @@ current object (therefore, the call is equivalent to +d1 foo+). The next three calls show how to provide flags that influence the method resolution. The flags can be provided between the colon and the method -name. These flags are used rather seldomly but can be helpful in some +name. These flags are used rather seldom but can be helpful in some situations. The invocation flag +-local+ means that the method has to be resolved @@ -1964,7 +1964,7 @@ If the same checks are used in many places in the program, defining names for the value checker will be the better choice since -it improves maintainability. For seldomly used kind of checks, the +it improves maintainability. For seldom used kind of checks, the parameterized value checkers might be more convenient. ==== Multiplicity Index: doc/tutorial2.html =================================================================== diff -u -N -rea3bbe8b1039c45baa2c027c005151e04e57d4b1 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- doc/tutorial2.html (.../tutorial2.html) (revision ea3bbe8b1039c45baa2c027c005151e04e57d4b1) +++ doc/tutorial2.html (.../tutorial2.html) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -441,9 +441,9 @@ Stack empty! -Note that the definition of Saftey can be used not only for instances +Note that the definition of Safety can be used not only for instances of the class Stack, but for arbitrary objects supporting the -same interface. We can as well use Saftey to create a new +same interface. We can as well use Safety to create a new class SafeStack. In this case, all instances of SafeStack have the safety property defined above. @@ -592,12 +592,12 @@
   SoccerTeam method newPlayer args {
     # we create a new player who is part of the soccer team
-    # "eval" is needed to pass the provided arguments seperately to the call of new
+    # "eval" is needed to pass the provided arguments separately to the call of new
     eval Player new -childof [self] $args
   }
 

-A player can be transfered to another team. The player object does +A player can be transferred to another team. The player object does not change internally (e.g. the playerRole stays the same). Therefore we move it to the destination team.

@@ -776,7 +776,7 @@
   Class TransferObserver {
     :method transferPlayer {pname destinationTeam} {
-      puts "Player '$pname' is transfered to Team '[$destinationTeam name]'"
+      puts "Player '$pname' is transferred to Team '[$destinationTeam name]'"
       next
     }
   }
@@ -920,7 +920,7 @@
 intrinsic changes of object properties (in contrast to extrinsic
 properties e.g. modeled through roles and implemented through
 per-object and per-class mixins [Neumann and
-Zdun 1999c] ) . These changes can be achieved without loosing the
+Zdun 1999c] ) . These changes can be achieved without losing the
 object's identity, its inner state, and its per-object behavior (methods
 and mixins).
 

@@ -1816,7 +1816,7 @@ dynamics is the changing of the relationship between object and class. This means, objects can also change their class dynamically at run-time. This feature may be used to model a life-cycle of an object, -without loosing the object's identity, inner state or +without losing the object's identity, inner state or per-object-specializations through procs. The class instance method enables this functionality.

Index: generic/aolstub.c =================================================================== diff -u -N -r24571ae44c492c681d3efd2f2d2f5169ad7d6d57 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- generic/aolstub.c (.../aolstub.c) (revision 24571ae44c492c681d3efd2f2d2f5169ad7d6d57) +++ generic/aolstub.c (.../aolstub.c) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -114,7 +114,7 @@ * * So, we made sure (by patching the AOLserver code) that no commands with * delete callbacks declared, are ever copied from the startup thread. - * Additionaly, we also made sure that AOLserver properly invokes any + * Additionally, we also made sure that AOLserver properly invokes any * AtCreate callbacks. So, instead of activating those callbacks *after* * running the Tcl-initialization script (which is the standard behaviour) * we activate them *before*. So we may get a chance to configure the Index: generic/asm/asmAssembleTemplate.c =================================================================== diff -u -N -r24571ae44c492c681d3efd2f2d2f5169ad7d6d57 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- generic/asm/asmAssembleTemplate.c (.../asmAssembleTemplate.c) (revision 24571ae44c492c681d3efd2f2d2f5169ad7d6d57) +++ generic/asm/asmAssembleTemplate.c (.../asmAssembleTemplate.c) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -9,7 +9,7 @@ NULL }; -enum asmStatmentArgTypeIndex { +enum asmStatementArgTypeIndex { asmStatementArgTypeArgIdx, asmStatementArgTypeArgvIdx, asmStatementArgTypeInstructionIdx, @@ -261,7 +261,7 @@ */ for (patchPtr = &patchArray[0]; patchPtr < patches; patchPtr++) { - fprintf(stderr, "wanna patch code[%d]->argv = code[%d]->argv[%d]\n", + fprintf(stderr, "want to patch code[%d]->argv = code[%d]->argv[%d]\n", patchPtr->targetAsmInstruction, patchPtr->sourceAsmInstruction, patchPtr->argvIndex); /* set the argument vector of code[1] to the address of code[4]->argv[1] */ (&proc->code[patchPtr->targetAsmInstruction])->argv = Index: generic/asm/nsfAsmAssemble.c =================================================================== diff -u -N -r24571ae44c492c681d3efd2f2d2f5169ad7d6d57 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- generic/asm/nsfAsmAssemble.c (.../nsfAsmAssemble.c) (revision 24571ae44c492c681d3efd2f2d2f5169ad7d6d57) +++ generic/asm/nsfAsmAssemble.c (.../nsfAsmAssemble.c) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -49,7 +49,7 @@ NULL }; -enum asmStatmentArgTypeIndex { +enum asmStatementArgTypeIndex { asmStatementArgTypeArgIdx, asmStatementArgTypeArgvIdx, asmStatementArgTypeInstructionIdx, @@ -567,7 +567,7 @@ */ for (patchPtr = &patchArray[0]; patchPtr < patches; patchPtr++) { - fprintf(stderr, "wanna patch code[%d]->argv = code[%d]->argv[%d]\n", + fprintf(stderr, "want to patch code[%d]->argv = code[%d]->argv[%d]\n", patchPtr->targetAsmInstruction, patchPtr->sourceAsmInstruction, patchPtr->argvIndex); /* set the argument vector of code[1] to the address of code[4]->argv[1] */ (&proc->code[patchPtr->targetAsmInstruction])->argv = Index: generic/nsf.c =================================================================== diff -u -N -r5561af6ab78fa00fbd28de17087ece99f76fd844 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- generic/nsf.c (.../nsf.c) (revision 5561af6ab78fa00fbd28de17087ece99f76fd844) +++ generic/nsf.c (.../nsf.c) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -2423,7 +2423,7 @@ * * Results: * Indicates whether a cycle was detected (0) or not (1); and, - * therefore, whether the sort failed (0) or suceeded (1). + * therefore, whether the sort failed (0) or succeeded (1). * * Side effects: * Allocates class list. @@ -5761,7 +5761,7 @@ * single pass risks leaking so-revived Var structures. TclDeleteVars() * requires variables under deletion to be untraced. * - * As Tcl does not provide access to the neccessary lower-level Var API to + * As Tcl does not provide access to the necessary lower-level Var API to * extensions (ideally: TclDeleteNamespaceVars or TclPtrUnsetVar), we resort * to a mix of navigating the variable table and calling high-level unset * operations (UnsetInstVar). @@ -6157,10 +6157,10 @@ /*fprintf(stderr, "NSCheckNamespace %s parentNsPtr %p\n", nameString, parentNsPtr);*/ /* - * Check, if there is a already a namespace for the full name. The - * namespace will be seldomly here, but we have to make this check - * in every case. If there is a full namespace, we can use it to - * determine the parent name. + * Check, if there is a already a namespace for the full name. The namespace + * will be only in rare cases, but we have to make this check in every + * case. If there is a full namespace, we can use it to determine the parent + * name. */ TclGetNamespaceForQualName(interp, nameString, NULL, TCL_GLOBAL_ONLY|TCL_FIND_ONLY_NS, @@ -9779,7 +9779,7 @@ * client data. * * Results: - * Returns 0 or 1 depending on wether the cmd is part of the + * Returns 0 or 1 depending on whether the cmd is part of the * definition list. * * Side effects: @@ -9979,7 +9979,7 @@ *---------------------------------------------------------------------- * FilterIsActive -- * - * Check, wether a method name is in the set of methods, which were used as + * Check, whether a method name is in the set of methods, which were used as * filters in the current interp. * * Results: @@ -11068,7 +11068,7 @@ *---------------------------------------------------------------------- * ByteCompiled -- * - * Function to determine wether a proc is already byted compiled or not. + * Function to determine whether a proc is already byted compiled or not. * * Results: * 0 or 1 based on success @@ -11333,7 +11333,7 @@ return TCL_ERROR; } else { /* - * Alias definition suceeded + * Alias definition succeeded. */ Tcl_Obj *methodObj = Tcl_GetObjResult(interp); Tcl_Command cmd = Tcl_GetCommandFromObj(interp, methodObj); @@ -12204,7 +12204,7 @@ *---------------------------------------------------------------------- * NsfParamDefsAppendVirtual -- * - * Check for the given paramsPtr wether this is a virtual parameter and if + * Check for the given paramsPtr whether this is a virtual parameter and if * possible, resolve it and append the formatted content to the Tcl_Obj. * * Results: @@ -13301,7 +13301,7 @@ cscPtr1 = cscPtr; - /*fprintf(stderr, "cscPtr %p cmd %p %s wanna stack cmd %p %s cp %p no-leaf %d force frame %d\n", + /*fprintf(stderr, "cscPtr %p cmd %p %s want to stack cmd %p %s cp %p no-leaf %d force frame %d\n", cscPtr, cmd, Tcl_GetCommandName(interp, cmd), cmd, Tcl_GetCommandName(interp, cmd), cp, @@ -14900,7 +14900,7 @@ int Nsf_ConvertToClass(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, ClientData *clientData, Tcl_Obj **outObjPtr) { - int withUnkown, result; + int withUnknown, result; nonnull_assert(interp != NULL); nonnull_assert(objPtr != NULL); @@ -14909,9 +14909,9 @@ nonnull_assert(outObjPtr != NULL); assert(*outObjPtr == objPtr); - withUnkown = (RUNTIME_STATE(interp)->doClassConverterOmitUnkown == 0); + withUnknown = (RUNTIME_STATE(interp)->doClassConverterOmitUnknown == 0); - if (likely(GetClassFromObj(interp, objPtr, (NsfClass **)clientData, withUnkown) == TCL_OK)) { + if (likely(GetClassFromObj(interp, objPtr, (NsfClass **)clientData, withUnknown) == TCL_OK)) { result = IsObjectOfType(interp, (NsfObject *)*clientData, "class", objPtr, pPtr); } else { result = NsfObjErrType(interp, NULL, objPtr, "class", (Nsf_Param *)pPtr); @@ -22872,7 +22872,7 @@ *---------------------------------------------------------------------- * AppendMethodRegistration -- * - * Append to the listObj the command words needed for defintion / + * Append to the listObj the command words needed for definition / * registration. * * Results: @@ -23331,10 +23331,9 @@ /* * The cmd must be an alias or object. * - * Note that some aliases come with procPtr == NsfObjDispatch. - * In order to distinguish between "object" and alias, we have - * to do the lookup for the entryObj to determine wether it is - * really an alias. + * Note that some aliases come with procPtr == NsfObjDispatch. In order + * to distinguish between "object" and alias, we have to do the lookup for + * the entryObj to determine whether it is really an alias. */ Tcl_Obj *entryObj; @@ -28402,9 +28401,9 @@ paramPtr->flags &= ~NSF_ARG_UNNAMED; } - RUNTIME_STATE(interp)->doClassConverterOmitUnkown = 1; + RUNTIME_STATE(interp)->doClassConverterOmitUnknown = 1; result = ArgumentCheck(interp, valueObj, paramPtr, doCheckArguments, &flags, &checkedData, &outObjPtr); - RUNTIME_STATE(interp)->doClassConverterOmitUnkown = 0; + RUNTIME_STATE(interp)->doClassConverterOmitUnknown = 0; /*fprintf(stderr, "ParameterCheck paramPtr %p final refCount of wrapper %d can free %d flags %.6x\n", paramPtr, paramWrapperPtr->refCount, paramWrapperPtr->canFree, flags);*/ @@ -28673,7 +28672,7 @@ * (object->flags & NSF_INIT_CALLED) * * to perform required testing just for in the non-initialized state. We - * switched in 2.0b5 to checking for the existance of the associated + * switched in 2.0b5 to checking for the existence of the associated * instance variable, which works under the assumption that the instance * variable has the same name and that e.g. an required alias parameter * sets this variable either. Similar assumption is in the default Index: generic/nsfInt.h =================================================================== diff -u -N -r95656d2638199a6292c1b2c9bc570c37020280b6 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- generic/nsfInt.h (.../nsfInt.h) (revision 95656d2638199a6292c1b2c9bc570c37020280b6) +++ generic/nsfInt.h (.../nsfInt.h) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -943,7 +943,7 @@ int doProfile; int doTrace; unsigned int preventRecursionFlags; - int doClassConverterOmitUnkown; + int doClassConverterOmitUnknown; int doSoftrecreate; int exitHandlerDestroyRound; /* shutdown handling */ Index: generic/nsfUtil.c =================================================================== diff -u -N -r878a74b68b15d4ee5c33d345e670f50ce7473ebc -rf934951db464db1a6f39ac98290ecde17a466cd7 --- generic/nsfUtil.c (.../nsfUtil.c) (revision 878a74b68b15d4ee5c33d345e670f50ce7473ebc) +++ generic/nsfUtil.c (.../nsfUtil.c) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -42,8 +42,8 @@ * strnstr -- * * Implementation of strnstr() for platforms not providing it via their C - * library. The function strnstr locates the first occurance of a substring - * in a null-terminated string + * library. The function strnstr locates the first occurrence of a + * substring in a null-terminated string. * * Results: * Strbstring or NULL Index: library/lib/nx-traits.tcl =================================================================== diff -u -N -r6751144a362a62d47801ee1b59caed7aa85f518e -rf934951db464db1a6f39ac98290ecde17a466cd7 --- library/lib/nx-traits.tcl (.../nx-traits.tcl) (revision 6751144a362a62d47801ee1b59caed7aa85f518e) +++ library/lib/nx-traits.tcl (.../nx-traits.tcl) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -100,7 +100,7 @@ } } foreach slot [$traitName info variables] { - #puts "$obj - wanna define: [$traitName info variable definition $slot]" + #puts "$obj - will define: [$traitName info variable definition $slot]" $obj {*}[lrange [$traitName info variable definition $slot] 1 end] if {[nx::configure trait-verbosity]} { puts "...trait: $obj [lrange [$traitName info variable definition $slot] 1 end]" Index: library/mongodb/nsfmongo.c =================================================================== diff -u -N -r3d447c3c5b6f5b5becb6baa26950bbd06e60b9a4 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- library/mongodb/nsfmongo.c (.../nsfmongo.c) (revision 3d447c3c5b6f5b5becb6baa26950bbd06e60b9a4) +++ library/mongodb/nsfmongo.c (.../nsfmongo.c) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -912,7 +912,7 @@ if (withUnique != 0) {options.unique = 1;} if (withTtl != 0) {options.expire_after_seconds = withTtl;} if (withName != 0) {options.name = withName;} - /* TODO: not handled: is_initialized, v, weights, default_language, laguage_override, padding */ + /* TODO: not handled: is_initialized, v, weights, default_language, language_override, padding */ success = mongoc_collection_create_index(collectionPtr, keysPtr, &options, &bsonError); Index: library/mongodb/tests/nx-reference-many.test =================================================================== diff -u -N -rcef3de5c4f65e767d0c66389bacc77bc3c2e5a68 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- library/mongodb/tests/nx-reference-many.test (.../nx-reference-many.test) (revision cef3de5c4f65e767d0c66389bacc77bc3c2e5a68) +++ library/mongodb/tests/nx-reference-many.test (.../nx-reference-many.test) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -63,7 +63,7 @@ ###################################################################### # The third approach is to embed the objects in the referencing # document. This might be feasible when the values of the embedded -# objects seldomly change, When the containing object (the posting) is +# objects seldom change, When the containing object (the posting) is # loaded, the appropriate object structure is created automatically. # ? {nx::mongo::Class create Member { Index: library/mongodb/tests/nx-reference-one.test =================================================================== diff -u -N -rcef3de5c4f65e767d0c66389bacc77bc3c2e5a68 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- library/mongodb/tests/nx-reference-one.test (.../nx-reference-one.test) (revision cef3de5c4f65e767d0c66389bacc77bc3c2e5a68) +++ library/mongodb/tests/nx-reference-one.test (.../nx-reference-one.test) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -64,7 +64,7 @@ ###################################################################### # The third approach is to embed the object in the referencing # document. This might be feasible when the values of the embedded -# objects seldomly change, When the containing object (the Post +# objects seldom change, When the containing object (the Post # instance) is loaded, the appropriate object structure is created # automatically. # Index: library/nx/nx.tcl =================================================================== diff -u -N -r8f64a468d8bb53f2ba317c8c738c2d3a24243980 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- library/nx/nx.tcl (.../nx.tcl) (revision 8f64a468d8bb53f2ba317c8c738c2d3a24243980) +++ library/nx/nx.tcl (.../nx.tcl) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -1059,7 +1059,7 @@ } elseif {$property in [list "alias" "forward" "cmd" "initcmd"]} { lappend opts -disposition $property set class [:requireClass ::nx::ObjectParameterSlot $class] - } elseif {[regexp {([01])[.][.]([1n*])} $property _ minOccurance maxOccurance]} { + } elseif {[regexp {([01])[.][.]([1n*])} $property _ minOccurrence maxOccurrence]} { lappend opts -multiplicity $property } else { set type $property @@ -2518,7 +2518,7 @@ # Evaluate the command under catch to ensure reverse mapping # of "new" # - set errorOccured [catch \ + set errorOccurred [catch \ [list ::apply [list {} $cmds $object]] \ result errorOptions] @@ -2532,7 +2532,7 @@ # # Report the error with message and code when necessary # - if {$errorOccured} { + if {$errorOccurred} { dict incr errorOptions -level dict unset errorOptions -errorinfo } Index: library/serialize/serializer.tcl =================================================================== diff -u -N -r353fdf460e5124d48f9ebe0f37e23abe51494b38 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- library/serialize/serializer.tcl (.../serializer.tcl) (revision 353fdf460e5124d48f9ebe0f37e23abe51494b38) +++ library/serialize/serializer.tcl (.../serializer.tcl) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -197,7 +197,7 @@ } :public method getTargetName {sourceName} { - # TODO: make more efficent; + # TODO: make more efficient; if {![string match ::* $sourceName]} { set sourceName ::$sourceName } @@ -314,7 +314,7 @@ } ############################### - # class object specfic methods + # class object specific methods ############################### :public object method allChildren o { @@ -770,7 +770,7 @@ # # Handle targets of forwarders: when target object mapping # is activated, we might have to adapt the forwarding target - # as well. This is particulary important for per-object + # as well. This is in particular important for per-object # forwarders, which are used frequently in the slot objects # (but not necessarily only there). # Index: library/xotcl/apps/comm/get-regression-nb.xotcl =================================================================== diff -u -N -r9a0b8bb0992be0561d8187c275fc1d9b7e0bbcd0 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- library/xotcl/apps/comm/get-regression-nb.xotcl (.../get-regression-nb.xotcl) (revision 9a0b8bb0992be0561d8187c275fc1d9b7e0bbcd0) +++ library/xotcl/apps/comm/get-regression-nb.xotcl (.../get-regression-nb.xotcl) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -26,7 +26,7 @@ # webserver.xotcl: # cd wafe/src/cineast # get-regression-nb.xotcl -port 8086 -sequential 0 -# die ausgabe sollte mit totalbytes=6536120 +# die Ausgabe sollte mit totalbytes=6536120 # abgeschlossen werden # # 5) grosser testlauf: @@ -365,7 +365,7 @@ assert {lindex [exec md5sum test.ps] 0} c6029c987e841430f3ca9bab157da12f } -test "specify filesink and use cache; no copying neccesary" { +test "specify filesink and use cache; no copying necessary" { persistentCache invalidate \ http://nestroy.wi-inf.uni-essen.de/Lv/muster-d1klausur.ps SimpleRequest $r -useFileSink 1 -caching 1 \ Index: library/xotcl/apps/comm/get-regression.xotcl =================================================================== diff -u -N -r9a0b8bb0992be0561d8187c275fc1d9b7e0bbcd0 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- library/xotcl/apps/comm/get-regression.xotcl (.../get-regression.xotcl) (revision 9a0b8bb0992be0561d8187c275fc1d9b7e0bbcd0) +++ library/xotcl/apps/comm/get-regression.xotcl (.../get-regression.xotcl) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -155,7 +155,7 @@ assert {lindex [exec md5sum test.ps] 0} c6029c987e841430f3ca9bab157da12f } -test "specify filesink and use cache; no copying neccesary" { +test "specify filesink and use cache; no copying necessary" { persistentCache invalidate \ http://nestroy.wi-inf.uni-essen.de/Lv/muster-d1klausur.ps SimpleRequest $r -useFileSink 1 -caching 1 \ Index: library/xotcl/apps/comm/secure-webclient.xotcl =================================================================== diff -u -N -r9a0b8bb0992be0561d8187c275fc1d9b7e0bbcd0 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- library/xotcl/apps/comm/secure-webclient.xotcl (.../secure-webclient.xotcl) (revision 9a0b8bb0992be0561d8187c275fc1d9b7e0bbcd0) +++ library/xotcl/apps/comm/secure-webclient.xotcl (.../secure-webclient.xotcl) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -34,7 +34,7 @@ puts -nonewline "\nTrying to load image logo-100.jpg ... (not secure)" SimpleRequest r2 -url $http_server/logo-100.jpg if {[r2::sink set contentLength] == 1706} { - puts "suceeded! Loaded 1706 bytes!" + puts "succeeded! Loaded 1706 bytes!" } else { puts "failed! Loaded [r2::sink set contentLength] (!= 1706) bytes" exit @@ -43,7 +43,7 @@ puts -nonewline "\nTrying to load image logo-100.jpg secure ... " SimpleRequest r1 -url $https_server/logo-100.jpg if {[r1::sink set contentLength] == 1706} { - puts "suceeded! Loaded 1706 bytes!" + puts "succeeded! Loaded 1706 bytes!" } else { puts "failed! Loaded [r1::sink set contentLength] (!= 1706) bytes" exit Index: library/xotcl/apps/comm/webserver.xotcl =================================================================== diff -u -N -re607595596399193900b411fa551280e7086963a -rf934951db464db1a6f39ac98290ecde17a466cd7 --- library/xotcl/apps/comm/webserver.xotcl (.../webserver.xotcl) (revision e607595596399193900b411fa551280e7086963a) +++ library/xotcl/apps/comm/webserver.xotcl (.../webserver.xotcl) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -54,7 +54,7 @@ We implent here "exit", and we return the information about the actual request and user in HTML format for all other requests.

This method is an example, how to access on the server side - request specific infomation. + request specific information. }} SpecializedWorker instproc respond {} { if {[my set resourceName] eq "exit"} { Index: library/xotcl/doc/Announce-0.9.4 =================================================================== diff -u -N -re8715774bf274fbeadabf08a5a0777a968f71148 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- library/xotcl/doc/Announce-0.9.4 (.../Announce-0.9.4) (revision e8715774bf274fbeadabf08a5a0777a968f71148) +++ library/xotcl/doc/Announce-0.9.4 (.../Announce-0.9.4) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -52,7 +52,7 @@ c1 ++ c1 print - In earlier versions it was neccessary to use "[self]" + In earlier versions it was necessary to use "[self]" instead of "my". This change reduces the number of special characters in XOTcl programs. "[self]" will continue to be supported by XOTcl. @@ -77,7 +77,7 @@ - optimizations: * XOTcl is trying to keep Tcl_Objs of type tclCmdNameType - instead of converting it to XOTclObjectType agressively. + instead of converting it to XOTclObjectType aggressively. * A patch for Tcl 8.4a3 is available from the XOTcl web site for performance hungry applications to provide special Index: library/xotcl/doc/Announce-1.5.3 =================================================================== diff -u -N -re8715774bf274fbeadabf08a5a0777a968f71148 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- library/xotcl/doc/Announce-1.5.3 (.../Announce-1.5.3) (revision e8715774bf274fbeadabf08a5a0777a968f71148) +++ library/xotcl/doc/Announce-1.5.3 (.../Announce-1.5.3) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -11,7 +11,7 @@ + provided compatibility with Tcl 8.4.14 (fixed a nasty bug caused by a change in tcl 8.4.14, could - led to a crash due to freed Tcl_Objs in OpenACS, allthough + led to a crash due to freed Tcl_Objs in OpenACS, although the xotcl regression test passed correctly) + reduced calling overhead of methods with nonpositional Index: library/xotcl/doc/tutorial.html =================================================================== diff -u -N -rbe3ba45f303ed61511b034e73e0bba5d10d10982 -rf934951db464db1a6f39ac98290ecde17a466cd7 --- library/xotcl/doc/tutorial.html (.../tutorial.html) (revision be3ba45f303ed61511b034e73e0bba5d10d10982) +++ library/xotcl/doc/tutorial.html (.../tutorial.html) (revision f934951db464db1a6f39ac98290ecde17a466cd7) @@ -411,7 +411,7 @@ Stack empty!

-Note that the definition of Saftey can be used not only for instances of the class Stack, but for arbitrary objects supporting the same interface. Therefore we could as well make the stack object stack (that we created before) safe at any time by adding the safety at arbitrary times with the method mixin, and we can remove the safety as well at any time. +Note that the definition of Safety can be used not only for instances of the class Stack, but for arbitrary objects supporting the same interface. Therefore we could as well make the stack object stack (that we created before) safe at any time by adding the safety at arbitrary times with the method mixin, and we can remove the safety as well at any time.
 # Add Safety to the object stack
@@ -422,7 +422,7 @@
 # remove Safety
 % stack mixin {}
 
-We can as well use Saftey to create a new class SafeStack. In this case, all instances of SafeStack have the safety property defined above. +We can as well use Safety to create a new class SafeStack. In this case, all instances of SafeStack have the safety property defined above.
 #
 # Create a safe stack class by using Stack and mixin 
@@ -548,7 +548,7 @@
   }
 

-A player can be transfered to another team. The player object does +A player can be transferred to another team. The player object does not change internally (e.g. the playerRole stays the same). Therefore we move it to the destination team.

@@ -728,7 +728,7 @@
   Class TransferObserver
   TransferObserver instproc transferPlayer {pname destinationTeam} {
-    puts "Player '$pname' is transfered to Team '[$destinationTeam name]'"
+    puts "Player '$pname' is transferred to Team '[$destinationTeam name]'"
     next
   }
 
@@ -827,7 +827,7 @@ intrinsic changes of object properties (in contrast to extrinsic properties e.g. modeled through roles and implemented through per-object and per-class mixins [Neumann and -Zdun 1999c] ) . These changes can be achieved without loosing the +Zdun 1999c] ) . These changes can be achieved without losing the object's identity, its inner state, and its per-object behavior (procs and per-object mixins).

@@ -1717,7 +1717,7 @@ dynamics is the changing of the relationship between object and class. This means, objects can also change their class dynamically at run-time. This feature may be used to model a life-cycle of an object, -without loosing the object's identity, inner state or +without losing the object's identity, inner state or per-object-specializations through procs. The class instance method enables this functionality.

@@ -3688,7 +3688,7 @@

XOTcl provides a short-hand notation for creating attribute slots, which is backward compatible for the most important options of XOTcl -verison prior to 1.5.0. Instead of writing

+version prior to 1.5.0. Instead of writing

   Class Car -slots {
Index: library/xotcl/library/comm/Access.xotcl
===================================================================
diff -u -N -rb34996b24ea334963e83aadda66384680a6f8ce5 -rf934951db464db1a6f39ac98290ecde17a466cd7
--- library/xotcl/library/comm/Access.xotcl	(.../Access.xotcl)	(revision b34996b24ea334963e83aadda66384680a6f8ce5)
+++ library/xotcl/library/comm/Access.xotcl	(.../Access.xotcl)	(revision f934951db464db1a6f39ac98290ecde17a466cd7)
@@ -135,10 +135,10 @@
     #
     #   incCb:     when new data is available
     #
-    #   endCb:     when the request is finished sucessfully and the object
+    #   endCb:     when the request is finished successfully and the object
     #              is going to be destroyed
     #
-    #   cancelCb:  when the request is finished nonsucessfully and the object
+    #   cancelCb:  when the request is finished nonsuccessfully and the object
     #              is going to be destroyed
     #
     # All these messages receive the name of the Access object
@@ -266,9 +266,9 @@
 
     #########################################
     Access instproc timeout t {
-	my set timeout [::after $t [self] timeoutOccured]
+	my set timeout [::after $t [self] timeoutOccurred]
     }
-    Access instproc timeoutOccured {} {
+    Access instproc timeoutOccurred {} {
 	#my showCall
 	my unset timeout
 	my abort "timeout exceeded"
@@ -956,7 +956,7 @@
 	    #if {$totalsize == 0 && ($responseCode > 300 || !$expectsBody($method) )} 
 	    #my showVars method totalsize expectsBody($method) expectBody
 	    # the following is used currently for Actiweb-Agents:
-	    # the reponse of a PUTS contains a BODY!
+	    # the response of a PUTS contains a BODY!
 	    if {!$expectBody && 
 		[::info exists v(content-length)] &&
 		$v(content-length) > 0} {
@@ -1189,7 +1189,7 @@
     pwdManager proc requireCredentials {realm url} {
 	regexp {^(.*/)[^/]*$} $url _ path
 	if {[my exists pwd($realm)]} {
-	    #my showMsg "*** register url=$url for ther realm=$realm"
+	    #my showMsg "*** register url=$url for other realm=$realm"
 	    my set area($path) $realm
 	    return 1
 	} else {
Index: library/xotcl/library/comm/Connection.xotcl
===================================================================
diff -u -N -r073177c8b1304443107efeeb0c334e9477346778 -rf934951db464db1a6f39ac98290ecde17a466cd7
--- library/xotcl/library/comm/Connection.xotcl	(.../Connection.xotcl)	(revision 073177c8b1304443107efeeb0c334e9477346778)
+++ library/xotcl/library/comm/Connection.xotcl	(.../Connection.xotcl)	(revision f934951db464db1a6f39ac98290ecde17a466cd7)
@@ -201,7 +201,7 @@
 	$req freeConnection
 	if {[my exists persistent]} {
 	    my flush
-	    #::puts stderr "[self] PERSISTENT CONNECTION wanna close"
+	    #::puts stderr "[self] PERSISTENT CONNECTION wants close"
 	    if {$blocked eq ""} {
 		::fileevent $socket readable [list [self] destroy]
 		unset req
Index: library/xotcl/library/lib/htmllib.xotcl
===================================================================
diff -u -N -r073177c8b1304443107efeeb0c334e9477346778 -rf934951db464db1a6f39ac98290ecde17a466cd7
--- library/xotcl/library/lib/htmllib.xotcl	(.../htmllib.xotcl)	(revision 073177c8b1304443107efeeb0c334e9477346778)
+++ library/xotcl/library/lib/htmllib.xotcl	(.../htmllib.xotcl)	(revision f934951db464db1a6f39ac98290ecde17a466cd7)
@@ -102,7 +102,7 @@
 	    if {$compressed == "0"} {
 		append rvalue "$line\n"
 	    } else {
-		## only new line for closing tags at the beginnig 
+		## only new line for closing tags at the beginning 
 		## of a document element
 		if {[string equal -length 2 "