Posted to tcl by suchenwi at Wed Oct 03 18:53:17 GMT 2007view pretty

 critcl::cproc myincr {Tcl_Interp* interp char* varname} int {
    Tcl_Obj* var = Tcl_GetVar2Ex(interp,varname, NULL, 0);
    int i, rc;
    if(var == NULL) return -1;
    if(Tcl_IsShared(var)) {
        var = Tcl_DuplicateObj(var);
        Tcl_IncrRefCount(var);
    }
    rc = Tcl_GetIntFromObj(interp, var, &i);
    Tcl_SetIntObj(var, i+1);
    Tcl_SetVar(interp, varname, Tcl_GetStringFromObj(var,NULL), 0);
    return i+1;    
 }
 set foo 42
 set bar x;#$foo
 myincr foo
 puts foo:$foo,bar:$bar