nsf

Clone Tools
  • last updated 4 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
- improved handling of required configure parameters when classes are changed dynamically. When configure parameter are defined required, checking for the absence of required parameter was only performed at creation time. When objects were re-classed or their classes extended with required parameters, later calls to configure did not trigger exceptions. Now we check for the existence of the instance variable which addresses most of these points, but in future we might wish a more general solution (see comment for futures releases)

- when creation with an required configure parameter failed, delete the half-baked object to avoid confusing states.

- nx::test: show msg at start of test file

- changed multiplicity of mixin, object-mixin, filter, object-filter from 1..n to 0..n; rationale: when one has a list of eg. mixins, which should be passed, one has to test for the length before passing it, otherwise the empty list would generate an error. Allowing 0..n makes the usage simpler and the program shorter.

nx.tcl: - renamed variable option "-config" to "-configurable" to make its intention clearer

    • -22
    • +17
    /doc/next-tutorial/slots.graffle
- traits: added ability to trun on verbosity for traits by using nx::configure trait-verbosity on|off

nx.tcl: - replaced functionality of "/obj/ configure" by "/obj/ info configure" to re-enable semantics of the plain configure method, even when called without arguments. "/obj/ info configure" is actually a convenience method to allow to write o1 info configure instead of o1 info lookup configure syntax

package nx::class-method: - convenience package similar to nx::plain-object-method - allow for usage "C class method ..." in addition to "C object method". - made warnings configurable via nx::configure class-method-warning on|off - completed coverage and test cases

    • -4
    • +58
    /library/nx/plain-object-method.tcl
    • -0
    • +124
    /tests/class-method.test
package nx::plain-object-method: - made warnings configurable via nx::configure plain-object-method-warning on|off - completed coverage and test cases

    • -42
    • +41
    /library/nx/plain-object-method.tcl
nsf.c - fixed potential inifinite loop in pattern matching for precedence lists - cget: make error message closer to tcl conventions - extended regression test

- adapt to object methods

- prevent default value checking, when it is determined by a command

- completed coverage if plain-object-method.tcl - provide warnings via plain-object-method.tcl via "nsf::log warn ..."

    • -9
    • +14
    /library/nx/plain-object-method.tcl
- renamed initblock parameter from __initcmd to __initblock - renamed nsf::configure parameter from "keepinitcmds" to "keepcmds" - saving "keepcmds" in an associative array named "__cmd(/parameternName)" to allow saving of multiple parmeters with less nameclash danger (when application stays away from variables stating with double underscore)

    • -2463
    • +164
    /doc/next-tutorial/slots.graffle
  1. … 3 more files in changeset.
nx.tcl: - removed "info is .." since it might raise more questions than it solves

- changed enumeration values for "-source" in "info lookup methods" "info lookup slots" "info methods" "info slots" of "all|application|baseclasses" to "all|application|system" for consistencey with "nsf::my" and "nsf::dispatch" which uses "-system" as well

Traits: - changed from traits-as-objects to traits-as-classes. This allows for higher orthogonality of traits and class definitons and allows in principle traits for object-specific methods (not fully implemented/tested) - fixed property/variable inheritance in traits.

    • -11
    • +12
    /doc/example-scripts/traits-composite.tcl
    • -9
    • +9
    /doc/example-scripts/traits-simple.tcl
- remove spurious debug line

Cleanup of nsfAPI.decls - remove unneeded enumeration types - use "typeName" to shorten reported names of parameters - use camel case for reported names

- changed ::nsf::parametersyntax(..) to ::nsf::parameter::syntax(..) - xotcl2: adjusted manual parameter syntax entries to new conventions

    • -25
    • +27
    /library/xotcl/library/xotcl2.tcl
- added implementation for slots with traces+types for classes - exception for incorrect defaults are thrown during slot creation - extended nsf::is, added parameter * ?-configure? -- accept configure paramter options * ?-name /name/? -- provide a parameter name for error message - simplified nx.tcl by using new nsf::is - extended regression test

- added partly implementation for slots with traces+types for classes

- fixed cases, where valuechangedcmd (and the other traces) did not work with "configure" method. When slot traces are used, it cleans other traces for the same operations. - extended regression test

Clear the TODOs

- nsf.c: fix crash when "nsf::my" is called with a single argument outside the object context.

- fix assert

- removed some TODOs from tests/parameters.test

- parameter dispositions:

We differentiate now between "initcmd" and "cmd": an "initcmd" is only

evaluated once, but one can provide configure values for this parameter

later. a "cmd" is executed on every evaluation, it is only possible

to pass cmds to it. The trailing argument of the configure parameters

(used e.g. for scripted object/class definitions) is now of type "cmd".

Implementation not yet complete (object cases are not correct).

- streamline documentation

- C-code Generator: added "-typeName" for enumeration types that allows for disambiguation of enumerations with different argument names. Before that, the argument name determined the c-type of the enumeration. Therefore it was not possible to use argName "-type" for two different functions with a different list of enumerators.

- changed "-methodtype" to simply "-type" in

/obj/ info methods ... ?-type all|scripted|builtin|alias|forwarder|object|setter|nsfproc? ...

/obj/ info object methods ... ?-type all|scripted|builtin|alias|forwarder|object|setter|nsfproc? ...

/obj/ info lookup methods ... ?-type all|scripted|builtin|alias|forwarder|object|setter|nsfproc? ...

- minor code cleanup