gentclAPI.tcl

Clone Tools
  • last updated 6 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
- namespace changes: mostly due to marketing reasons, the naming of the top-level namespace changed from "xotcl2" to "next". reasons: xotcl is hard to pronounce for beginners, sounds like "exotic" (but who wants to program in an exotic language) has a certain stigma of strange namings (e.g. "instproc"), is seen as a precursor of tcloo, the top-level namespace ::xotcl2:: is not very nice either, the separation of framework and language is not clear.

We have now:

::next (the new object system, former ::xotcl2)

::next::core (framework, primitives)

::xotcl (former xotcl1)

- "::xotcl::use" no longer needed, use Tcl standard mechanisms instead

(e.g. "package req next"; "package req XOTcl", "namespace import ::next*")

  1. … 48 more files in changeset.
- add check for optional match arguments in tcl stub generator - fix potential memory leaks all "definitely losts" from valgrind (except 24 bytes from Tcl_PkgRequire) gone

  1. … 3 more files in changeset.
- use "CONST char *" in generated interface and below

  1. … 5 more files in changeset.
- made error messages for failed conversions more consistent (note that tcl does not provide the parameter name in the error message, but user-defined converters do)

  1. … 13 more files in changeset.
- added argument for converter to return the converted tcl_obj, which should be passed on (currently only used for viaCmd); this way, we could remove the kludge of querying the converter after the conversion for special handling.

  1. … 3 more files in changeset.
- making methodDefinitions NULL terminated - passing optional arg to user-defined argument converter - refuse to redefine type converters for a single parameter - adding regression test for parameters

  1. … 9 more files in changeset.
- added ::xotcl::forward as cmd instead of method now, all method-defining-methods (alias, method, forward, setter) are defined as cmds (this should make life of serializer easier)

  1. … 6 more files in changeset.
- use INT2PTR and PTR2INT macros in generated stubs

  1. … 1 more file in changeset.
- Methods defined via "method" are now per default "protected" - new switch "-public" for "method" to define public methods - new flag for "info callable": -callprotection", values "all|protected|public" - new flag for "info methods": -callprotection", values "all|protected|public" - converted part of regression test

  1. … 9 more files in changeset.
- gentTclAPI: create every converter only once.

- new method named "setter" * <Object> setter <varName> * <|Class> setter ?-per-object? <varName>

- new info method named "method"

* <Object|Class> info method ?-per-object? definition|name|type <methodName>"

* "info method definition" returns full cmds

(e.g. for scripted methods parameters, body, pre- and postconditions)

* fixed proper list handling in AssertionList()

* added tests for "info method" (infomethodtest.xotcl)

- changed method "alias" in xotcl2:

* removed the long list of arguments

".... -cmd -source-object -source-method -source-per-object:switch"

* determine method cmdname via "... info method name <methodName>"

and pass it to alias

- method "parametercmd" and "instparametercmd" are gone (for xotcl2)

we have now

"<Object> setter <name>"

"<Class> setter ?-per-object? <name>"

- added emulation for old "parametercmd" and "instparametercmd" in xotcl1

- method "instforward" is gone (for xotcl2),

we have now

"<Object> forward <name> ... "

"<Class> forward ?-per-object? <name> ... "

- added emulation for old "forward" and "instforward" in xotcl1

- "info body" gone, added emulation in xotcl1

- "info instbody" gone, added emulation in xotcl1

- "info commands" gone, added emulation in xotcl1

- "info instcommands" gone, added emulation in xotcl1

- "info parametercmd" gone, added emulation in xotcl1

- "info instparametercmd" gone, added emulation in xotcl1

  1. … 15 more files in changeset.
- extended genrclAPI to allow enumeration type for nonpos args - changed api of "info methods": added nonpos arg "methodType" possible values: "all", "scripted", "compiled", "alias", "forwarder", "object", "setter" - added compatible scripted "info methods" interface for xotcl1 - "info methods -methodtype alias" not tested and not working

  1. … 6 more files in changeset.
- allow to distinguish for enumeration values between missing value and given first value (numerically 0) - generated stub for selfCmd

  1. … 4 more files in changeset.
- implementing "method" instead of "proc" and "instproc" on the C level

  1. … 6 more files in changeset.
- first implementation of application specific checkers - changed XOTclDispatchCmd to parameter interface (testing and adjustment outstanding) - reactivated XOTclOSetMethod, since one test in regression test caused troubles for still unknown reasons

  1. … 8 more files in changeset.
- some cleanup of visibility of symbols

  1. … 4 more files in changeset.
- shortend some function/type names (e.g. use everywhere "Param" instead of "Parameter") - delayed parseContextRelease() in InvokeProc() until end if proc - process all argumens of proc/instpoc; before, this happend only, when nonpos parameters were used; - use parameter definitions only when they provide a value-add - finish freeing of parameter definitions

  1. … 7 more files in changeset.
- passing obj to ArgumentParse() to get the object-context and to be able to produce nicer error messages - pass pushFrame to ProcessMethodArguments() to signal, whether stack frame was already pushed or not - deactivated check for {$} in objectparameter (for activating substdefault) - fixed class converter, which was to liberal - extended objparametertest for substdefault and some types

  1. … 5 more files in changeset.
- renamed parseObjv() -> ArgumentParse() - renamed ifdSize -> nrParameters - argDefinitionsFree() -> ParameterDefinitionsFree() - renamed argDefinitionsNew() -> ParameterDefinitionsNew() - renamed struct XOTclParsedInterfaceDefinition -> XOTclParsedParameterDefinition - renamed ParsedInterfaceDefinitionFree() -> ParsedParameterDefinitionFree() - renamed struct argDefinition -> parameterDefinition - renamed struct XOTclNonposArgs ->XOTclParamDefs - renamed GeneratIfd() -> ParsedParameterDefinitionGet() - renamed parseNonposArgs() -> ParseParameterDefinitions() - renamed parseArgDefinition() -> ParseParamDefintion()

- new function ArgumentDefaults()

- new functions ArgumentError()

- ArgumentParse() handles now defaults as well (could be optimized)

- made varargs passing explicit

  1. … 4 more files in changeset.
- generated interface for ::xotcl::deprecated

  1. … 6 more files in changeset.
- generated interface for ::xotcl::XOTclInstvarCmd - define objects with cmdName of tcl obj type "cmd"

  1. … 4 more files in changeset.
- no need to call objvparser in stub code, when just "allargs" are specified in a method

  1. … 1 more file in changeset.
- generated interface for ::xotcl::createobjectsystem and ::xotcl::finalize

  1. … 3 more files in changeset.
- 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

  1. … 3 more files in changeset.
- make ifdsize explicit (stubcode generator) - new method parseContextInit(), will be used for variable sized interfaces (for nonpos arg parsing)

  1. … 3 more files in changeset.
- 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

  1. … 7 more files in changeset.
- 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

  1. … 5 more files in changeset.
- support for enumeration types in c-code generator - use function pointer for type checker instead of strings - generated interface for ::xotcl::methodproperty

  1. … 5 more files in changeset.
- support for generating interface for ::xotcl commands - generated interface for ::xotcl::alias

  1. … 4 more files in changeset.
- separated C-code generator from declarations

  1. … 3 more files in changeset.