doc

Clone Tools
  • last updated 6 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
nx::test: - change test cases to newer interface - don't use "namespace import nx::*" in test cases when not required

  1. … 32 more files in changeset.
- fix typos, example code

  1. … 1 more file in changeset.
- further release work

  1. … 34 more files in changeset.
Fixed some typos and suggesting some rewording

- preparing 2.0b5 release

  1. … 2 more files in changeset.
nx.tcl: - renamed variable option "-config" to "-configurable" to make its intention clearer

  1. … 7 more files in changeset.
- 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
    ./next-tutorial/slots.graffle
  1. … 16 more files in changeset.
nx.tcl: - removed "info is .." since it might raise more questions than it solves

  1. … 7 more files in changeset.
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
    ./example-scripts/traits-composite.tcl
  1. … 3 more files in changeset.
- 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? ...

  1. … 13 more files in changeset.
- updated next-tutorial: * bring definitions of properties and variables up to date * fix "object methods"

    • -0
    • +1281
    ./next-tutorial/configure-parameter.graffle
    • binary
    ./next-tutorial/configure-parameter.png
    • -121
    • +159
    ./next-tutorial/next-tutorial.html
    • -121
    • +161
    ./next-tutorial/next-tutorial.txt
    • -2498
    • +0
    ./next-tutorial/object-parameter.graffle
    • -1127
    • +71
    ./next-tutorial/person-student.graffle
- updated next-migration guide to reflect changes from the configure reform

  1. … 1 more file in changeset.
- nx.tcl: handle "incremental" in slot reconfigure - nx.tcl: change defaultAccessor to "none"

    • -1
    • +1
    ./example-scripts/rosetta-constraint-genericity.tcl
    • -1
    • +1
    ./example-scripts/rosetta-delegates.tcl
    • -2
    • +2
    ./example-scripts/rosetta-polymorphism.tcl
    • -1
    • +1
    ./example-scripts/traits-composite.tcl
  1. … 15 more files in changeset.
- minor documentation updates

- updating next-tutorial to object method syntax

    • -402
    • +404
    ./next-tutorial/next-tutorial.html
    • -75
    • +76
    ./next-tutorial/next-tutorial.txt
    • -321
    • +600
    ./next-tutorial/object-class-appclass.graffle
    • binary
    ./next-tutorial/object-class-appclass.png
    • -250
    • +407
    ./next-tutorial/object-stack.graffle
    • -354
    • +705
    ./next-tutorial/per-class-mixin.graffle
    • binary
    ./next-tutorial/per-class-mixin.png
    • -350
    • +662
    ./next-tutorial/per-object-mixin.graffle
    • binary
    ./next-tutorial/per-object-mixin.png
- updated migration guide

- first and incomplete update of migration guide to new syntax

Object-method Reform: - changed interface to object specific commands by requiring an ensemble named "object". The rational behind is essentially to use always the same info command to retrieve object specific methods, no matter whether these are defined on a plain object or an a class object (does not break the "contract" what e.g. "info method" returns).

Now we define methods via:

/cls/ method foo {args} {...body...}

/cls/ object method foo {args} {...body...}

/obj/ object method foo {args} {...body...}

Similarly, aliases, forwards and mixins are defined, e.g.

/cls/ mixin add ...

/cls/ object mixin add ...

/obj/ object mixin add ...

/obj/ require object method ...

The same change propagated as well to the "info" method.

Now we have:

/cls/ info methods ...

/cls/ info object methods ...

/obj/ info object methods ...

Similar, the object parametererization uses

/cls/ create obj -object-mixin M

/cls/ create obj -object-filter f

/metacls/ create cls -mixin M1 -object-mixin M2

/metacls/ create cls -filter f1 -object-filter f2

- as a consequence,

a) "/cls/ class method ...",

"/cls/ class alias ...",

"/cls/ class forward ...",

"/cls/ class filter ...",

"/cls/ class mixin ...",

"/cls/ class info ..."

"/obj/ class method require method ..."

"/obj/ class method require public method ..."

"/obj/ class method require protected method ..."

"/obj/ class method require private method ..."

were dropped

b) "/obj/ method ....",

"/obj/ alias ....",

"/obj/ forward ...."

"/obj/ filter ...."

"/obj/ mixin ...."

"/obj/ info method*"

"/cls/ create obj -mixin M"

"/cls/ create obj -filter f"

"/obj/ method require method ..."

"/obj/ method require public method ..."

"/obj/ method require protected method ..."

"/obj/ method require private method ..."

were dropped

- added package nx::class to allow optionally the "class" notation

"/cls/ class method ..." (and friends, see (a)), and

"/cls/ class info ...

- added package nx::plain-object-method to allow optionally plain method

b) "/obj/ method ...." (and friends, see (b))

- add support to slots to use ensemble methods as setters

    • -1
    • +1
    ./example-scripts/rosetta-abstract-type.tcl
    • -1
    • +1
    ./example-scripts/rosetta-singleton.tcl
    • -11
    • +11
    ./example-scripts/traits-composite.tcl
  1. … 39 more files in changeset.
- improve wording in rosetta example

    • -2
    • +3
    ./example-scripts/rosetta-unknown-method.tcl
- improve wording in rosetta example

    • -2
    • +8
    ./example-scripts/rosetta-abstract-type.tcl
Property Reform Part 2: better handling of per-object properties nsf.c: - changed "/class/ __objectconfigure" to "/obj/ __objectconfigure" to be able to handle per-object properties on classes properly. - renamed "info method parametersyntax" -> "info method syntax" - renamed "/obj|cls/ info method parametersyntax" into "/obj|cls/ info method syntax" - replaced "::nsf::methods::class::info::objectparameter" by "::nsf::methods::object::info::objectparameter" - new command "::nsf::parameter::specs ?-configure? ?-noposargs? slotobjs": convert provided slotobjs into a list of parameter specs - new command "::nsf::parameter::get list|name|syntax parameterspec": convert parameter spec into syntax form, or retrieve pieces of information from it (can be extended in the future) - added more or less generic list handling functions TclObjListFreeList(), TclObjListNewElement() and TclObjListAdd() used by "::nsf::parameter::specs" - replaced "::nsf::method::property /obj/ -per-object /name/ slotcontainer ?value?" by "::nsf::object::property /obj/ slotcontainer ?value?" - added "::nsf::object::property /obj/ hasperobjectslots ?value?"

nx.tcl:

- new info methods

* "/obj/ info lookup parameter definitions"

* "/obj/ info lookup parameter names"

* "/obj/ info lookup parameter list"

* "/obj/ info lookup parameter syntax"

- changed "/cls/ info parameter definition ?name?"

into "/cls/ info parameter definitions ?name?"

since ir returns a list. Still, "list" or "syntax" won't

be plural

  1. … 18 more files in changeset.
Property reform part 1:

- disallow protection modifiers for "properties" and

add new flag "-accessor" to "property" and "variable"

This changes definitions like

Class create C {

:property {a a1}

:public property {b b1}

:protected property {c c1}

:private property {d d1}

}

to

Class create C {

:property {a a1}

:property -accessor public {b b1}

:property -accessor protected {c c1}

:property -accessor private {d d1}

}

since "properties" are always public accessible

over the "configure" and "cget" interface, but the

accessors methods might not be public. The value of

the accessor might be also "none" (specifying explicitely

that no accessor is wanted) or "", which means: use the default.

Same holds for "variable"

- disallow parameter option "incremental" and change it to a flag

of the property or variable. The motivation for this is due to

the fact, that "incremental" is a property of the accessor, and

not of the value.

old:

Class create C {

:property foo:int,incremental

:variable bar:int,incremental

}

new:

Class create C {

:property -incremental foo:int

:variable -incremental bar:int

}

- disallow "public class property" and friends since these are not needed

- removed parameter property "noaccessor"

- removed "nx::configure defaultPropertyCallProtection" and

method hook "__default_property_call_protection"

- introduced "nx::configure defaultAccessor" and

method hook "__default_accessor"

- for the time being, "defaultAccessor" is "public" for NX and XOTcl,

will be changed to "none" in NX

- extended regression test (new file properties.test)

    • -1
    • +1
    ./example-scripts/rosetta-constraint-genericity.tcl
  1. … 15 more files in changeset.
- use explicit return in tutorial example scripts

- improve documentation

    • -17
    • +24
    ./example-scripts/ruby-mixins.html
    • -15
    • +23
    ./example-scripts/ruby-mixins.tcl
- minor documentation updates

    • -53
    • +47
    ./example-scripts/ruby-mixins.html
Don't recommend to use "configure" method for chaning class/superclass

cosmetical documentation changes

- document private properties in tutorial and migration guide - improve wording in documenting - extend regression test

    • -51
    • +128
    ./next-tutorial/next-tutorial.html
  1. … 2 more files in changeset.
- added documentation for "/obj/ info name" to migration guide and .nxd file - adding more comments to examples in migration guide

  1. … 2 more files in changeset.