home *** CD-ROM | disk | FTP | other *** search
/ Practical Programming in Tcl & Tk (4th Edition) / TCLBOOK4.BIN / pc / exsource / 47_12.c < prev    next >
Text File  |  2003-04-16  |  708b  |  41 lines

  1. /*
  2.  * Example 47-12
  3.  * The BlobCommand and BlobPoke procedures.
  4.  */
  5.  
  6. int
  7. BlobCommand(Tcl_Interp *interp, Blob *blobPtr, 
  8.     Tcl_Obj *objPtr)
  9. {
  10.     if (objPtr != NULL) {
  11.         if (blobPtr->cmdPtr != NULL) {
  12.             Tcl_DecrRefCount(blobPtr->cmdPtr);
  13.         }
  14.         Tcl_IncrRefCount(objPtr);
  15.         blobPtr->cmdPtr = objPtr;
  16.     }
  17.     if (blobPtr->cmdPtr != NULL) {
  18.         Tcl_SetObjResult(interp, blobPtr->cmdPtr);
  19.     }
  20.     return TCL_OK;
  21. }
  22. int
  23. BlobPoke(Tcl_Interp *interp, Blob *blobPtr)
  24. {
  25.     int result = TCL_OK;
  26.     if (blobPtr->cmdPtr != NULL) {
  27.         Tcl_Preserve(blobPtr);
  28.         result = Tcl_EvalObj(interp, blobPtr->cmdPtr);
  29.         /*
  30.          * Safe to use blobPtr here
  31.          */
  32.         Tcl_Release(blobPtr);
  33.         /*
  34.          * blobPtr may not be valid here
  35.          */
  36.     }
  37.     return result;
  38. }
  39.  
  40.  
  41.