nsf

Clone Tools
  • last updated 18 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
- new function CallStackDestroyObject() to factor out xotcl stack access Since tcl-stack-entries have a lightly different life-time (pop is managed by tcl), we have as well slightly different life-times of objects. One test in the test suite is deactivated for now, we will see, if this turs out to become a problem as we proceed.

- new function CallStackClearCmdReferences() to factor out xotcl stack access

- moved stack procs into new files xotclStack.c and xotclStack85.c - based CallStackGetFrame() in addition to GetSelfObj() to new stack structure, when TCL86STACK is defined - fixed error and warning message for failed assertions to avoid access to the xotcl stack

    • -0
    • +33
    /generic/xotclStack.c
    • -0
    • +55
    /generic/xotclStack85.c
- follow naming conventions for defines TCL85STACK_TRACE - deactivate CANONICAL_ARGS for the time being

- Stefan implementation for args with canonical args - canonicalNonpositionalArgs() receives explicit current xotcl object

- remove debug output

- rename variable "ns" (namespace pointer) to "nsPtr" for tcl naming compliance

- simplified callingNameSpace() significantly (works with and without TCL85STACK the same way) - simplified GuardCall (removed argument push) - removed unneeded functions, reduced tracing

- snapshot 3 - first version passing regression test again

more trace

- snapshot #2

- starting to use tcl85 stack (when complied with TCL85STACK). Goal is to remove the own stack handling, when compiled with Tcl 8.5+ Introduced two frame types, FRAME_IS_XOTCL_METHOD and FRAME_IS_XOTCL_OBJECt - Currently, only self is resolved this way from the Tcl stack. - Currentlsy, just parts (e.g. testo.tcl) of the regression test work

- updating changelog - cleanup and documentation in xotcl.c

- cleanup of arguments in makeproc (Stefan Sobernig)

- finishing unset unspefied values in nonpos arg passing under canonical args, when a nonposarg has no default, and the parameter is not required, we have to unset the dummy default value. Since causes some overhead, since unset is done via ::xotcl::unsetUnknownArgs

commit snapshot

- releasing dynamically allocated parse contexts - tried to reduce overhead of method invocation when no nonposArgs are used, but failed, sind proc has neither flags not clientData

- make ifdsize explicit (stubcode generator) - new method parseContextInit(), will be used for variable sized interfaces (for nonpos arg parsing)

- first implementation of canonical arguments

removed duplicate line

- based introspection for procs/instprocs on new argument definition structures

- allowing type checkers also for positional arguments

(for now only, when nonpos args are given as well; we have

to think about using these either for all procs/instprocs,

or only, when e.g. type checkers are used; we have to

make more benchmarking to get a better foundation)

- registered the following type checkers for procs/instprocs:

switch, integer, boolean, object, class

Example

o proc bar {-enable:switch o:object c:class} {

return "o=$o c=$c"

}

- generated interface for ::xotcl::configure; now 97 interfaces are

generated; shortcoming for bool/int converter stubs: optional

0-vaues are not recognized, so use tclobj for the time being

- extended regression test

- parse non-pos-args for procs/instprocs into new argument definition structure - using new parseObjv for calling procs and instproc when nonpos-args are used (invocation time went from 9.08ms to 5.95ms) - TODO: complete implementation for regression test, base introspection/copy etc. on new structures

- support for enumeration types in c-code generator - use function pointer for type checker instead of strings - generated interface for ::xotcl::methodproperty

- ::xotcl::my generated

- generated interface for ::xotcl::relation

- support for generating interface for ::xotcl commands - generated interface for ::xotcl::alias

- removed compatibility for versions before Tcl 8.4 (was not tested anyhow) This version requires at least Tcl 8.4.

- separated C-code generator from declarations

    • -0
    • +408
    /generic/gentclAPI.decls
- moved all definitions of method commands to generated code - from 15356 generic/xotcl.c => 13408

- all object methods generated - added reference counting for patternobj - some cleanup and reordering