Index: generic/gentclAPI.tcl =================================================================== diff -u -r417968f9109f1c27af478b142b34b64f38e3908e -ra8b1c870410599a9af3ab36e08871f56426acfda --- generic/gentclAPI.tcl (.../gentclAPI.tcl) (revision 417968f9109f1c27af478b142b34b64f38e3908e) +++ generic/gentclAPI.tcl (.../gentclAPI.tcl) (revision a8b1c870410599a9af3ab36e08871f56426acfda) @@ -120,12 +120,14 @@ set cVar 1 set (-argName) [string map [list - _] $(-argName)] if {[regexp {^_(.*)$} $(-argName) _ switchName]} { + # non positional args set varName with[string totitle $switchName] set calledArg $varName set type "int " if {$(-nrargs) == 1} { switch -glob $(-type) { - "" {set type "CONST char *"} + "" {#set type "CONST char *" +} "class" {set type "NsfClass *"} "object" {set type "NsfObject *"} "tclobj" {set type "Tcl_Obj *"} @@ -260,9 +262,9 @@ foreach key [lsort [array names ::definitions]] { array set d $::definitions($key) lappend enums $d(idx) - set nrArgs [llength $d(parameterDefinitions)] + set nrParams [llength $d(parameterDefinitions)] set stubDecl "static int $d(stub)$::objCmdProc\n" - set ifd "{\"$d(ns)::$d(methodName)\", $d(stub), $nrArgs, {\n [genifd $d(parameterDefinitions)]}\n}" + set ifd "{\"$d(ns)::$d(methodName)\", $d(stub), $nrParams, {\n [genifd $d(parameterDefinitions)]}\n}" gencall $d(methodName) $d(stub) $d(parameterDefinitions) $d(clientData) cDefs ifDef arglist pre post intro append decls "static int [implArgList $d(implementation) {Tcl_Interp *} $ifDef];\n" @@ -275,17 +277,17 @@ set call "return [implArgList $d(implementation) {} $arglist];" } - #if {$nrArgs == 1} { puts stderr "$d(stub) => '$arglist' cDefs=$cDefs ifd=$ifDef" } - if {$nrArgs == 1 && $arglist eq "objc, objv"} { + #if {$nrParams == 1} { puts stderr "$d(stub) => '$arglist' cDefs=$cDefs ifd=$ifDef" } + if {$nrParams == 1 && $arglist eq "objc, objv"} { # TODO we would not need to generate a stub at all.... - #set ifd "{\"$d(ns)::$d(methodName)\", $d(implementation), $nrArgs, {\n [genifd $d(parameterDefinitions)]}\n}" + #set ifd "{\"$d(ns)::$d(methodName)\", $d(implementation), $nrParams, {\n [genifd $d(parameterDefinitions)]}\n}" #set stubDecl "static int $d(implementation)$::objCmdProc\n" append fns [genSimpleStub $d(stub) $intro $d(idx) $cDefs $pre $call $post] - } elseif {$nrArgs == 1 && $arglist eq "obj, objc, objv"} { + } elseif {$nrParams == 1 && $arglist eq "obj, objc, objv"} { # no need to call objv parser #puts stderr "$d(stub) => '$arglist'" append fns [genSimpleStub $d(stub) $intro $d(idx) $cDefs $pre $call $post] - } elseif {$nrArgs == 0} { + } elseif {$nrParams == 0} { append pre [subst -nocommands { if (objc != 1) { return NsfArgumentError(interp, "too many arguments:", @@ -294,7 +296,7 @@ } }] append fns [genSimpleStub $d(stub) $intro $d(idx) $cDefs $pre $call $post] - } elseif {$nrArgs == 1 && [string match "Tcl_Obj *" $cDefs]} { + } elseif {$nrParams == 1 && [string match "Tcl_Obj *" $cDefs]} { array set defs [list -required 0] array set defs [lindex $d(parameterDefinitions) 0] @@ -383,7 +385,7 @@ } set completed [list] foreach parameterDefinition $parameterDefinitions { - array set "" {-required 0 -nrargs 0 -type ""} + array set "" {-required 0 -nrargs 1 -type ""} array set "" $parameterDefinition lappend completed [array get ""] }