?? watch.c
字號(hào):
/*************************************************************/globle char *GetNthWatchName( void *theEnv, int whichItem) { int i; struct watchItem *wPtr; for (wPtr = WatchData(theEnv)->ListOfWatchItems, i = 1; wPtr != NULL; wPtr = wPtr->next, i++) { if (i == whichItem) return(wPtr->name); } return(NULL); }/***************************************************************//* GetNthWatchValue: Returns the current state associated with *//* the nth item in the list of watchable items. If the nth *//* item does not exist, then -1 is returned. *//***************************************************************/globle int GetNthWatchValue( void *theEnv, int whichItem) { int i; struct watchItem *wPtr; for (wPtr = WatchData(theEnv)->ListOfWatchItems, i = 1; wPtr != NULL; wPtr = wPtr->next, i++) { if (i == whichItem) return((int) *(wPtr->flag)); } return(-1); }/**************************************//* WatchCommand: H/L access routine *//* for the watch command. *//**************************************/globle void WatchCommand( void *theEnv) { DATA_OBJECT theValue; char *argument; int recognized; struct watchItem *wPtr; /*========================================*/ /* Determine which item is to be watched. */ /*========================================*/ if (EnvArgTypeCheck(theEnv,"watch",1,SYMBOL,&theValue) == FALSE) return; argument = DOToString(theValue); wPtr = ValidWatchItem(theEnv,argument,&recognized); if (recognized == FALSE) { SetEvaluationError(theEnv,TRUE); ExpectedTypeError1(theEnv,"watch",1,"watchable symbol"); return; } /*=================================================*/ /* Check to make sure extra arguments are allowed. */ /*=================================================*/ if (GetNextArgument(GetFirstArgument()) != NULL) { if ((wPtr == NULL) ? TRUE : (wPtr->accessFunc == NULL)) { SetEvaluationError(theEnv,TRUE); ExpectedCountError(theEnv,"watch",EXACTLY,1); return; } } /*=====================*/ /* Set the watch item. */ /*=====================*/ EnvSetWatchItem(theEnv,argument,ON,GetNextArgument(GetFirstArgument())); }/****************************************//* UnwatchCommand: H/L access routine *//* for the unwatch command. *//****************************************/globle void UnwatchCommand( void *theEnv) { DATA_OBJECT theValue; char *argument; int recognized; struct watchItem *wPtr; /*==========================================*/ /* Determine which item is to be unwatched. */ /*==========================================*/ if (EnvArgTypeCheck(theEnv,"unwatch",1,SYMBOL,&theValue) == FALSE) return; argument = DOToString(theValue); wPtr = ValidWatchItem(theEnv,argument,&recognized); if (recognized == FALSE) { SetEvaluationError(theEnv,TRUE); ExpectedTypeError1(theEnv,"unwatch",1,"watchable symbol"); return; } /*=================================================*/ /* Check to make sure extra arguments are allowed. */ /*=================================================*/ if (GetNextArgument(GetFirstArgument()) != NULL) { if ((wPtr == NULL) ? TRUE : (wPtr->accessFunc == NULL)) { SetEvaluationError(theEnv,TRUE); ExpectedCountError(theEnv,"unwatch",EXACTLY,1); return; } } /*=====================*/ /* Set the watch item. */ /*=====================*/ EnvSetWatchItem(theEnv,argument,OFF,GetNextArgument(GetFirstArgument())); }/************************************************//* ListWatchItemsCommand: H/L access routines *//* for the list-watch-items command. *//************************************************/globle void ListWatchItemsCommand( void *theEnv) { struct watchItem *wPtr; DATA_OBJECT theValue; int recognized; /*=======================*/ /* List the watch items. */ /*=======================*/ if (GetFirstArgument() == NULL) { for (wPtr = WatchData(theEnv)->ListOfWatchItems; wPtr != NULL; wPtr = wPtr->next) { EnvPrintRouter(theEnv,WDISPLAY,wPtr->name); if (*(wPtr->flag)) EnvPrintRouter(theEnv,WDISPLAY," = on\n"); else EnvPrintRouter(theEnv,WDISPLAY," = off\n"); } return; } /*=======================================*/ /* Determine which item is to be listed. */ /*=======================================*/ if (EnvArgTypeCheck(theEnv,"list-watch-items",1,SYMBOL,&theValue) == FALSE) return; wPtr = ValidWatchItem(theEnv,DOToString(theValue),&recognized); if ((recognized == FALSE) || (wPtr == NULL)) { SetEvaluationError(theEnv,TRUE); ExpectedTypeError1(theEnv,"list-watch-items",1,"watchable symbol"); return; } /*=================================================*/ /* Check to make sure extra arguments are allowed. */ /*=================================================*/ if ((wPtr->printFunc == NULL) && (GetNextArgument(GetFirstArgument()) != NULL)) { SetEvaluationError(theEnv,TRUE); ExpectedCountError(theEnv,"list-watch-items",EXACTLY,1); return; } /*====================================*/ /* List the status of the watch item. */ /*====================================*/ EnvPrintRouter(theEnv,WDISPLAY,wPtr->name); if (*(wPtr->flag)) EnvPrintRouter(theEnv,WDISPLAY," = on\n"); else EnvPrintRouter(theEnv,WDISPLAY," = off\n"); /*============================================*/ /* List the status of individual watch items. */ /*============================================*/ if (wPtr->printFunc != NULL) { if ((*wPtr->printFunc)(theEnv,WDISPLAY,wPtr->code, GetNextArgument(GetFirstArgument())) == FALSE) { SetEvaluationError(theEnv,TRUE); } } }/*******************************************//* GetWatchItemCommand: H/L access routine *//* for the get-watch-item command. *//*******************************************/globle int GetWatchItemCommand( void *theEnv) { DATA_OBJECT theValue; char *argument; int recognized; /*============================================*/ /* Check for the correct number of arguments. */ /*============================================*/ if (EnvArgCountCheck(theEnv,"get-watch-item",EXACTLY,1) == -1) { return(FALSE); } /*========================================*/ /* Determine which item is to be watched. */ /*========================================*/ if (EnvArgTypeCheck(theEnv,"get-watch-item",1,SYMBOL,&theValue) == FALSE) { return(FALSE); } argument = DOToString(theValue); ValidWatchItem(theEnv,argument,&recognized); if (recognized == FALSE) { SetEvaluationError(theEnv,TRUE); ExpectedTypeError1(theEnv,"get-watch-item",1,"watchable symbol"); return(FALSE); } /*===========================*/ /* Get the watch item value. */ /*===========================*/ if (EnvGetWatchItem(theEnv,argument) == 1) { return(TRUE); } return(FALSE); }/*************************************************************//* WatchFunctionDefinitions: Initializes the watch commands. *//*************************************************************/globle void WatchFunctionDefinitions( void *theEnv) {#if ! RUN_TIME EnvDefineFunction2(theEnv,"watch", 'v', PTIEF WatchCommand, "WatchCommand", "1**w"); EnvDefineFunction2(theEnv,"unwatch", 'v', PTIEF UnwatchCommand, "UnwatchCommand", "1**w"); EnvDefineFunction2(theEnv,"get-watch-item", 'b', PTIEF GetWatchItemCommand, "GetWatchItemCommand", "11w"); EnvDefineFunction2(theEnv,"list-watch-items", 'v', PTIEF ListWatchItemsCommand, "ListWatchItemsCommand", "0**w");#endif EnvAddRouter(theEnv,WTRACE,1000,RecognizeWatchRouters,CaptureWatchPrints,NULL,NULL,NULL); EnvDeactivateRouter(theEnv,WTRACE); }/**************************************************//* RecognizeWatchRouters: Looks for WTRACE prints *//**************************************************/#if IBM_TBC#pragma argsused#endifstatic intBool RecognizeWatchRouters( void *theEnv, char *logName) {#if MAC_MCW || IBM_MCW || MAC_XCD#pragma unused(theEnv)#endif if (strcmp(logName,WTRACE) == 0) return(TRUE); return(FALSE); }/**************************************************//* CaptureWatchPrints: Suppresses WTRACE messages *//**************************************************/#if IBM_TBC#pragma argsused#endifstatic int CaptureWatchPrints( void *theEnv, char *logName, char *str) {#if MAC_MCW || IBM_MCW || MAC_XCD#pragma unused(logName)#pragma unused(str)#pragma unused(theEnv)#endif return(1); }#endif /* DEBUGGING_FUNCTIONS */
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -