nx.tcl

Clone Tools
  • last updated 6 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
- nx.tcl: needsForwarder is true, when method "get" is specified on a slot - nx.tcl: Don't generate per-slot add/assign handlers, when not needed

  1. … 1 more file in changeset.
- removed deactivated slot optimizer

- nx.tcl: * full rewrite of slot machinerie, much simpler structure * relation handling via parameter aliases instread of pseudo converter * mixinclass SlotOptimizer removed * new class BootStrapAttributeSlot

- ConvertToRelation() and handling of parametertype "relation"

- Make CompiledColonVarFetch() more robust in case of

half initialized objects (create vartable on the fly if needed)

- allow empty parameter options in parameter parser

- removed nsf::parametersfromslots (became simple, part of objectparameter now)

- removed hardcoded objectparameter (attributes, volatile and noinit)

- updated regression test

  1. … 8 more files in changeset.
- nx.tcl: * new method requireClass to Combine two classes and return the more specialized one * make slot objects for parameter aliases and parameter forwarder instances of ObjectParameterSlot * get rid of attributes "isforward" and "isalias" and replace it by "dispositon" * complete list of predefined value checkers * we have now three approaches for providing parameter -object-filter and -object-method Approach 1: create RelationSlot with nosetter Approach 2: use parameter forwarder Approach 3: use parameter alias we switched from approach 1 to approach 3

  1. … 3 more files in changeset.
- handle spaces more carefully in [from|to]parameterSpec

- renamed object parameter type "method" to "alias" - removed parameter option "slotobj=" in toParameterSyntax - renamed to [from|to]parameterSyntax to [from|to]parameterSpec

  1. … 7 more files in changeset.
- added first implementation of object parameter type forward

  1. … 3 more files in changeset.
- parameter specs: use "arg=" in object parameter type "method" as name of a called method to allow to call unregistered methods - eliminate protected method "noinit" for nx and allow it just as an object parameter

  1. … 3 more files in changeset.
- remove parameter option "opitional" when not needed

  1. … 1 more file in changeset.
- nx.tcl: defined method unknown as protected - nx.tcl: never pass "substdefault" to a setter - nx.tcl: define a minimal valuechecker any to suppress warnings for potential conflicts with non-positional parameters, when the values start with a dash

- no need to define "-class" as objectparameter - no need to define "Object.cleanup" as a method

- removed method "setter" from migration guide

  1. … 4 more files in changeset.
- removed method "setter" from nx - nx method "attribute": changed name of nonposarg from "slotclass" to "class" - fix bug for "C class-object attribute foo" (incorrect forwarder) - extended regression test

  1. … 3 more files in changeset.
- "/obj/ info method parametersyntax /method/": return results of ::nsf::parametersyntax in case, the parametersyntax cannot obtained from a parameter definition (e.g. the method is a forwarder to a tcl cmd).

  1. … 4 more files in changeset.
- improve wording in comment

- introduced a few forms of multiplicty * 0..1 allow empty value * 0..* list, can be empty (equivalent to 0..n) * 1..* list, cannot be empty (equivalent to 1..n) - deprecate multivalued in parameter specs in favor of multiplicty - deprecate allowempty in parameter specs in favor of multiplicty - adjust regression test

  1. … 8 more files in changeset.
- quote name of referenced parameter in error message to ease reading - new parameter checker "parameter", performing an approximate checking for valid parameter specs - set NSF_ARG_CHECK_NONPOS only when there are multiple arguments - remove space checking for NSF_ARG_CHECK_NONPOS in favor of parameter checker

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

- Fixed some naming confusion around @class-object-method - Completed statusmark support down to the @param level - method parameter definitions are now pre-processed during tracing; see ::nx::doc::paraminfo - Continued the pinfo/pdata-based refactoring

  1. … 5 more files in changeset.
- nx.tcl: cleanup of forward implementation

  1. … 1 more file in changeset.
Accomplishments: - Completed a first version of the sandboxed (partial) evaluation of Tcl source artifacts (packages, script files, C extensions) based on a dedicated child/slave interp environment: see ::nx::doc::Sandbox; the test suite and the test documentation builts run on it. - Based on this infrastructure, we can now generate a snapshot of a program's structure to be documented (and contrast it to the explicitly documented structure). - Added simplistic css sprites for visualising the doc entity status (extra, missing, mismatch, complete); see also library/lib/doc-assets/status.svg and library/lib/doc-assets/status.png - The entity status is printed optionally along with the print name of an entity - Added switch-like parts to represent properties of doc entities: @deprecated, @stashed, @c-implemented, @syshook. The implementation and use of ::nx::doc::SwitchAttribute should be reviewed after having figured out how to proceed using "switching" objparams. - I provide a multi-property dispatcher as doc-syntactic sugar and for mere convenience: @property

Various:

- Corrected some div-boxing mess in the templates

- Added a filtered helper to process entity collections

- Made the mixin layer infrastructure more symmetric (a revoke operation).

- Added tracers for ::nsf::method and ::nsf::alias (remains to be completed)

- Renamed ::nx::doc to ::nx::processor and turned it into another

mixin layer to trace the doc entity creation in e.g. readin()

- Companion (*.nxd) files: Revised the handling of companion

files. Temporarily moved generic/nsf.nxd in the top-level

directory. We need to find a permanent place as its location is

currently derived from the location of the shared extension. A

candidate is doc/ but this is not linked to the shared extension

location at all.

- processor.readin() now returns a collection of entities created

during its execution.

- Improved robustedness and orthogonality: destroy hooks; the

tag-dispatcher can now handle empty comment lines; when placing NSF

object tracer, we now use the freshly added introspection of an

object system's method aliases.

  1. … 12 more files in changeset.
- fix typo

- nx: added "-returns" to forwarder

  1. … 1 more file in changeset.
- changed returns syntax from '->' to '-returns'

  1. … 4 more files in changeset.
- nx.tcl: removed debugging output - nx.tcl: added syntactic sugar to "method" and "alias" for return value checking. One can write now: Class create C { :public method foo {a:int b:int} -> int { return [expr {$a + $b}] } } - extended regression test

  1. … 5 more files in changeset.
- provide a more explicit way to handle resourcing after a "package forget" in the info methods (similar to Stefan's suggestion).

  1. … 1 more file in changeset.
- changed relation handling by evaluating the relationcmd in the parent context to keep evaluation order. - extend introspection "nsf::configure objectsystem": the command returns now all system methods in the syntax of nsf::createobjectsystem - "nsf::createobjectsystem" creates now a warning when an existing objectsystem is redefined and ignores the new definition attempt. This was done with the purpose to allow "package forget nx; package require nx" - Allow overwriting of redefine protected method during bootstrap to ease "package forget nx; package require nx" - forward had just "-objscope", no general "-frame method|object". Since forwarder have client data, they always push a method frame. So, the situation is different to nsd::alias and ::nsf::dispatch. Therefore, the flag "-objscope" was renamed to "-objectframe" to provide better consistency with "-frame object" - fixed bug, where error handling of invalid options in ForwardProcessOptions() could lead to a crash - return forwardoption "-earlybinding" via instrospection - extended regression test

  1. … 14 more files in changeset.
- disallow object parameter of type "switch" to avoid possible confusion between (a) providing a value for the o.p., (b) calling 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" for positional arguments (use boolean instead) - extended regression test

  1. … 4 more files in changeset.
- added "nosetter" automatically, when attribute "<name>:method" is used

  1. … 2 more files in changeset.
- activated SKIP_LAMBDA in nsfCallstack. As a consequence, we disallow resolving self/my ... from tcl-proc frames (use uplevel if necessary, avoid "namespace eval")

  1. … 3 more files in changeset.