Index: generic/gentclAPI.tcl =================================================================== diff -u -r17ba2f1d86be4afd497d652b7ee39a5edc771a22 -rcef0608bea97458e5dcd87615c9b8ca3fe7b464c --- generic/gentclAPI.tcl (.../gentclAPI.tcl) (revision 17ba2f1d86be4afd497d652b7ee39a5edc771a22) +++ generic/gentclAPI.tcl (.../gentclAPI.tcl) (revision cef0608bea97458e5dcd87615c9b8ca3fe7b464c) @@ -82,7 +82,16 @@ } else { set conv ConvertTo$converter } - lappend l "{\"$argName\", $flags, $(-nrargs), $conv, NULL,NULL,\"$(-type)\",NULL,NULL,NULL,NULL,NULL}" + switch -glob -- $(-type) { + "*|*" - + "tclobj" - + "args" - + "" {set typeString NULL} + default { + set typeString "\"$(-type)\"" + } + } + lappend l "{\"$argName\", $flags, $(-nrargs), $conv, NULL,NULL,$typeString,NULL,NULL,NULL,NULL,NULL}" } if {[llength $l] == 0} { return "{NULL, 0, 0, NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}" @@ -193,8 +202,13 @@ default { if {[info exists ::ptrConverter($(-type))]} { set type "$(-type) *" - set varName "$(-type)Ptr" + set varName "${varName}Ptr" set calledArg $varName + if {$(-withObj)} { + append calledArg [subst -nocommands {,pc.objv[$i]}] + lappend if "$type$varName" "Tcl_Obj *$(-argName)Obj" + set ifSet 1 + } } else { error "type '$(-type)' not allowed for argument" } @@ -399,7 +413,7 @@ } set completed [list] foreach parameterDefinition $parameterDefinitions { - array set "" {-required 0 -nrargs 1 -type ""} + array set "" {-required 0 -nrargs 1 -type "" -withObj 0} array set "" $parameterDefinition lappend completed [array get ""] }