Posted to tcl by lmcvoy at Tue Nov 06 16:07:58 GMT 2007view raw
- % time {Lset i} 1000000
- 1.429418 microseconds per iteration
- % time {Lecho foo} 1000000
- 0.753119 microseconds per iteration
- % time {counter} 1000000
- 0.5431 microseconds per iteration
- +int
- +TclCounterObjCmd(
- + ClientData dummy, /* Not used. */
- + Tcl_Interp *interp, /* Current interpreter. */
- + int objc, /* Number of arguments. */
- + Tcl_Obj *const objv[]) /* Argument objects. */
- +{
- + static int i;
- +
- + if (objc != 1) {
- + Tcl_WrongNumArgs(interp, 1, objv, "");
- + return TCL_ERROR;
- + }
- + Tcl_SetObjResult(interp, Tcl_NewIntObj(i++));
- + return TCL_OK;
- +}
- +
- +
- +int
- +TclEchoObjCmd(
- + ClientData dummy, /* Not used. */
- + Tcl_Interp *interp, /* Current interpreter. */
- + int objc, /* Number of arguments. */
- + Tcl_Obj *const objv[]) /* Argument objects. */
- +{
- + char *p;
- + Tcl_Obj *objPtr;
- +
- + if (objc != 2) {
- + Tcl_WrongNumArgs(interp, 1, objv, "arg");
- + return TCL_ERROR;
- + }
- + p = Tcl_GetString(objv[1]);
- + objPtr = Tcl_NewObj();
- + Tcl_SetStringObj(objPtr, p, strlen(p));
- + Tcl_SetObjResult(interp, objPtr);
- + return TCL_OK;
- +}
- +
- +int
- +TclLsetObjCmd(
- + ClientData dummy, /* Not used. */
- + Tcl_Interp *interp, /* Current interpreter. */
- + int objc, /* Number of arguments. */
- + Tcl_Obj *const objv[]) /* Argument objects. */
- +{
- + static int i;
- + Tcl_Obj *objPtr;
- + char buf[100];
- +
- + if (objc != 2) {
- + Tcl_WrongNumArgs(interp, 1, objv, "var");
- + return TCL_ERROR;
- + }
- + sprintf(buf, "%d", i++);
- + objPtr = Tcl_NewObj();
- + Tcl_SetStringObj(objPtr, buf, strlen(buf));
- + Tcl_ObjSetVar2(interp, objv[1], NULL, objPtr, 0);
- + Tcl_SetObjResult(interp, Tcl_NewIntObj(i));
- + return TCL_OK;
- +}