nsf.c

Clone Tools
  • last updated 4 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Merge branch '2.0.0-develop' of ssh://alice.wu-wien.ac.at/usr/local/src/git-repo/xotcl into 2.0.0-develop

- don't allow options "-intrinsic", "-local" and "-system" used in parallel

- generic/nsfAPI.h: Renamed the [::nsf::current next] subcommand to [::nsf::current nextmethod] - library/xotcl/library/xotcl2.tcl: Accordingly, the xotcl::self emulation maps [self next] to [current nextmethod] - tests/disposition.test, tests/methods.test, tests/submethods.test, tests/tcloo.test: Changed the few occurrences of [current next] to [current nextmethod] - tests/introspection.test: Added some basic tests on the expected behaviour of [::nsf::current nextmethod]

  1. … 8 more files in changeset.
- generic/nsf.c: Provided a documentation block for CmdListRemoveDeleted()

- generic/nsf.c: For "tolerating" hidden objects, I verified the various occurrences of conitional branching based on the cmd's epoch counter. While most occurrences are not concerned (cmds of nested objects, or simply non-object commands), I identified three relevant spots: a) In NsfProcAliasMethod(), invalidating and rebinding the alias target command (including hidden objects as alias pointers) is based on the epoch counter; b) in MixinSearchProc() the lookup of mixed-in methods is affected; c) using CmdListRemoveEpoched() (as the name says), "deleted" commands are identified by looking at the cmd epoch and sorted out from mixin lists computed for precedence lists. I corrected cases b) and c), with the fixes being covered by accompanying tests; a) turned out to be consistent with alias rebinding behaviour for [rename]. While we could correct a) for hidden cmd awareness, this would have to be done for the likeminded alias + [rename] as well. - generic/nsf.c: Renamed CmdListRemoveEpoched() to CmdListRemoveDeleted() - tests/interp.test: Added tests on b) and c), as well as hiding globally namespaced procs and objects as alias targets (merely for documenting the behaviour).

  1. … 1 more file in changeset.
- nsf.c: * added "/obj/ -intrinsic ..." similar to "/obj/ -system ..." * added "nsf::my /obj/ -intrinsic ..." similar to "/obj/ -intrinsic ..." * added "nsf::object::dispatch /obj/ -intrinsic ..." similar to "/obj/ -intrinsic ..." * extended regression test

  1. … 4 more files in changeset.
- provide error message for "/obj/ -system"

  1. … 3 more files in changeset.
- reduce verbosity

- reduce verbosity

- minor cleanup

  1. … 2 more files in changeset.
Merge branch '2.0.0-develop' of ssh://alice.wu-wien.ac.at/usr/local/src/git-repo/xotcl into 2.0.0-develop

Conflicts:

library/lib/test.tcl

  1. … 1 more file in changeset.
- nsf.c: * integrated "-local" and fully qualified handling with ObjectDispatch to ensure proper behavior of mixins/next etc. * added "/obj/ -local ..." similar to "/obj/ -system ..." * added "nsf::object::disapatch /obj/ -local ..." similar to "/obj/ -local ..." * extended regression test (next from -local, fully qualified names, private methods, "...dispatch -local")

  1. … 8 more files in changeset.
- generic/nsf.c: [current calledclass] used to return a literal "NULL" for cases of no active callstacked class. I fixed this, with [current calledclass] now reporting an empty string in these cases. - library/lib/test.tcl: Adjusted the explanations along the exit/return fix - tests/introspection.test: Added some basic testing of [current calledclass]

  1. … 3 more files in changeset.
* added flag "-keepvars" to nsf::finalize for handling cases in interp.test * reactivated tests and simplified in interp.test

  1. … 4 more files in changeset.
* re-established assertion checking for deleted cmds in cmd lists

  1. … 1 more file in changeset.
- nsf.c: * change mem-count statistics from per-interp to per-thread * generalized GetObjectFromCmdTable() to ReverseLookupCmdFromCmdTable() * changed GetObjectScreenedByCmdName() to GetHiddenObjectFromCmd() * modularized interp.test to locate potential problems faster * partly simplified interp.test syntactically * deacivated a few tests in interp.test for the time being (runs commands after finalize)

  1. … 3 more files in changeset.
- generic/nsf.c: After several takes, adding support for basic handling of hidden and re-exposed objects in the sense of [interp hidden|hide|expose]. I wanted to make sure that NSF does not crash upon basic hiding/exposing operations (see tests/interp.test) and guarantees that hidden/re-exposed objects are properly handled when cleaning up object systems, i.e., the destructors are called and physical deletion is performed. [interp hidden|hide|expose] is challenging for NSF (as well as TclOO) because they way it is implementing effectively modifyies command names *without* providing any calling back to trace these changes (as for renames). As a consequence, object and command names start to diverge once an object has been hidden or re-exposed. As the changes affect the cleanup machinery in ObjectSystemsCleanup() & friends, I verified for leaks by running valgrind; no leaks were found running destroy.test and interp.test. - tests/interp.test: A test suite that covers basic scenarios of hiding and exposing objects. - Makefile.in: Registering interp.test with make env

  1. … 2 more files in changeset.
- nsf.c: * fixed name path in unknown called from ensemble methods (erroneous colon could show up) * added -system flag to: - ordinary dispatch (e.g. "o1 -system info vars") - nsf::object::dispatch with plain methodName - nsf::my (mutual exclusive with -local)

  1. … 6 more files in changeset.
- added flag "-system" to ObjectDispatch

  1. … 1 more file in changeset.
- nsf.c: * added preliminary/minimal "private" support * private can be called via "my -local", direct dispatches are forbidden, ignored in mixins and next; * extended regression test

  1. … 6 more files in changeset.
- nsf.c: * fixed "nsf::my -local ..." (never worked in nsf) * added regression test

  1. … 2 more files in changeset.
- nsf.c: * fixed next path computation in cases where command handles are used to refer to methods in the current mixin order. * extended regression test

  1. … 2 more files in changeset.
Merge branch '2.0.0-develop' of ssh://alice.wu-wien.ac.at/usr/local/src/git-repo/xotcl into 2.0.0-develop

Conflicts:

library/lib/doc-tools.tcl

  1. … 2 more files in changeset.
- nx.tcl * renamed "info parameter name" to "info parameter names" (since it returns a list of names) * renamed "info parameter name" to "info parameter names" (since it returns a list of names) * renamed "info slots" to "info slot objects" * additional method "info slot definition" * additional method "info slot name" * additional method "info properties" (alias to "info slot definition") * removed "info parameter slot" * use term "noaccessor" and "noconfig" to deactivate accessors or object-parameters in property definitions * don't show slots with noconfig in "info parameter names" * don't show slots with noconfig in "info parameter definition" * renamed slot property "configparam" to "config" * renamed "::nsf::methods::class::info::slots" to "::nsf::methods::class::info::slotobjects" * additional public method ObjectParameterSlot.getPropertyDefinition * updated and extended regression test

  1. … 14 more files in changeset.
- minor cleanup

- generic/nsfError.c: Made sure that the colon prefix is not printed in occurrences of NsfObjWrongArgs() - generic/nsfInt.h: Advertising the MethodName() function prototype - tests/parameters.test: Added a corresponding test

  1. … 3 more files in changeset.
- nsf.c: implemented "... info method origin ..." which returns the implementation handle (in contrast to the registration handle) of a method.

  1. … 3 more files in changeset.
-nsf.c: * move to greedy assert to an inner scope ("info method ...") * allow testwise "switch" as object parameter (when it is used, accessors are deactivated for this attribute) * extended regression test

  1. … 5 more files in changeset.
- changed Stack example in tutorial from constructor to :variable - allow just valid specs for :attribute and :variable methods - improved error message for invalid parameter specs (with leading colons) - extended regression test

  1. … 5 more files in changeset.
- fixed book-keeping for TclNamespace refcounting such that now alias.test, destroy.test and test.xotcl run now clean, 2 test are still open with tcl 8.5.10 (contains.test and xotcomm.test)

  1. … 1 more file in changeset.