| Deutsch English Français Italiano |
|
<vmiie1$24c6l$2@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!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
Bytes: 2611
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);