Deutsch English Français Italiano |
<vmiie1$24c6l$2@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: aotto1968 <aotto1968@t-online.de> Newsgroups: comp.lang.tcl Subject: Re: what happen to tcl C api ? Date: Sun, 19 Jan 2025 10:59:29 +0100 Organization: A noiseless patient Spider Lines: 44 Message-ID: <vmiie1$24c6l$2@dont-email.me> References: <vmihnq$24c6l$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Sun, 19 Jan 2025 10:59:33 +0100 (CET) Injection-Info: dont-email.me; posting-host="3da57d183ec623340eca6a2638b336b1"; logging-data="2240725"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+tdeSLC8SXCrpJl0mz1QDc7D376p4COas=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:3tfoG/ozlM/C4svF/7b9JOfDmm4= In-Reply-To: <vmihnq$24c6l$1@dont-email.me> Content-Language: en-US below is the code used for testing: MOX_ ... is the internal name from me for various tcl api-types RL_ ... is a helper to build the objc/objv array to finally call the Tcl_EvalObjv api-command int NS(_IncrIndex1) (OBJCMD_ARGS) { MOX_SETUP_hdl_static; if (objc < (1+__skip) || objc > (2+__skip)) { Tcl_WrongNumArgs(interp,__skip,objv,"... expect: varName ?increment?"); return TCL_ERROR; } MOX_OBJ_T varNameO = objv[__skip++]; MOX_OBJ_T incrO = __skip < objc ? objv[__skip++] : NULL; int incrI=1; if (incrO) { if (Tcl_GetIntFromObj(interp,incrO,&incrI) == TCL_ERROR) return TCL_ERROR; } MOX_OBJ_T varO = Tcl_ObjGetVar2(interp,varNameO,NULL,TCL_LEAVE_ERR_MSG); if (varO == NULL) return TCL_ERROR; int varI; if (Tcl_GetIntFromObj(interp,varO,&varI) == TCL_ERROR) return TCL_ERROR; MOX_OBJ_T newO = Tcl_ObjSetVar2(interp,varNameO,NULL, Tcl_NewIntObj(varI+incrI), TCL_LEAVE_ERR_MSG); if (newO== NULL) return TCL_ERROR; Tcl_SetObjResult(interp,newO); return TCL_OK; }; MoxObjDelete(_IncrIndex1); int NS(_IncrIndex2) (OBJCMD_ARGS) { MOX_SETUP_hdl_static; if (objc < (1+__skip) || objc > (2+__skip)) { Tcl_WrongNumArgs(interp,__skip,objv,"... expect: varName ?increment?"); return TCL_ERROR; } if (objc == 2) { RL_init( 2, RL_NewS(0,"incr") ) ; RL_O(1,objv[1]) ; return RL_EvalEx(TCL_LEAVE_ERR_MSG); } else { RL_init( 3, RL_NewS(0,"incr") ) ; RL_O(1,objv[1]) ; RL_O(2,objv[2]) ; return RL_EvalEx(TCL_LEAVE_ERR_MSG); } }; MoxObjDelete(_IncrIndex2);