nsf

Clone Tools
  • last updated 2 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
- updating next-tutorial to object method syntax

    • -402
    • +404
    /doc/next-tutorial/next-tutorial.html
    • -75
    • +76
    /doc/next-tutorial/next-tutorial.txt
    • -250
    • +407
    /doc/next-tutorial/object-stack.graffle
    • binary
    /doc/next-tutorial/object-stack.png
    • binary
    /doc/next-tutorial/per-class-mixin.png
    • binary
    /doc/next-tutorial/per-object-mixin.png
Merge branch 'object-method' of ssh://alice.wu-wien.ac.at/usr/local/src/git-repo/nsf into object-method

- updated migration guide

- update to new namings

Fix the 86-specific tests to reflect the object-modifier reform

- try to print arguments in one sweep in NsfDStringPrintf() - remove "extern" declarations

Revised NsfDStringPrintf() for portability to non-C99-compliant C runtimes; remains to be tested

- first and incomplete update of migration guide to new syntax

Re-enabling deletion of intermediate file in makefile

Remove legacy build artifacts

Provide native Win build support for MSVC++ and MSVC, using the Tcl 8.6 nmake templates. Tested using Visual Studio 12 (VC and nmake in version 11). See makefile.vc for build instructions for Win32 and Win64.

- bumped version number to 2.0b5 - tested with NaviServer and OpenACS (new version of nx needs as well a newest NaviServer, since ns_cache implementation needs to be objectified; newest NaviServer version works as well with older nx)

- fix xotcl instance method serialization (still not covered in regression test)

- bump version number to 2.0b5

- renamed "package require nx::class" to "package require nx::class-method" in analogy to "nx::plain-object-method"

    • -0
    • +108
    /library/nx/class-method.tcl
- added "/obj/ object variable" and "/obj/ object property"

    • -5
    • +14
    /library/nx/plain-object-method.tcl
MongoDB - added "nx::mongo::db drop collection /name/" - returning status from "nx::mongo::db remove" as success (0 or 1)

- adjust to object interface - reduce verbosity - add error messages for slot lookup failures

Merge branch 'master' into object-method

Updated MongoDB interface - upgraded to c-driver 0.7.1 - tested with MongoDB 2.4.4-pre - new commands: * mongo::run * mongo::cursor::find * mongo::cursor::next * mongo::cursor::close - adapted interface for c-driver 0.7.1 (e.g. new optional name for mongo::index

    • -0
    • +42
    /library/mongodb/example-nsf-mongo.tcl
- nsfPointer.c: add parameter to Nsf_PointerDelete() for allowing optional freeing - reduced default verbosity

- moved NsfConfigEnabled from nsf.h to nsfInt.h (no need to be part of the public interface) - moved NSF_ARGPARSE_* macros to nsf.h (since arg parser is public and uses these flags)

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

    • -11
    • +11
    /doc/example-scripts/traits-composite.tcl
    • -9
    • +9
    /doc/example-scripts/traits-simple.tcl
    • -0
    • +108
    /library/nx/class.tcl
  1. … 29 more files in changeset.
Merge branch 'master' of ssh://alice.wu-wien.ac.at/usr/local/src/git-repo/nsf

- allow explicit unsetting of -per-object flag in 0-argument -flag=value notation

Merge branch 'master' of ssh://alice.wu-wien.ac.at/usr/local/src/git-repo/nsf

- reduce variable scope

- update documentation

Improved wording in comment on NsfConfigEnabled()

Irgh. Had forgotten about two-level stringification to provide configuration macro expansions as strings in NsfReportVars()