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

  1. critcl::cproc myincr {Tcl_Interp* interp char* varname} int {
  2. Tcl_Obj* var = Tcl_GetVar2Ex(interp,varname, NULL, 0);
  3. int i, rc;
  4. if(var == NULL) return -1;
  5. if(Tcl_IsShared(var)) {
  6. var = Tcl_DuplicateObj(var);
  7. Tcl_IncrRefCount(var);
  8. }
  9. rc = Tcl_GetIntFromObj(interp, var, &i);
  10. Tcl_SetIntObj(var, i+1);
  11. Tcl_SetVar(interp, varname, Tcl_GetStringFromObj(var,NULL), 0);
  12. return i+1;
  13. }
  14. set foo 42
  15. set bar x;#$foo
  16. myincr foo
  17. puts foo:$foo,bar:$bar
  18.