static void RestoreExecutionInformation() { HKEY hKey; DWORD lpdwDisposition; struct ExecutionInformation executionInfo; DWORD type = REG_BINARY; DWORD size = sizeof(struct ExecutionInformation); if (RegCreateKeyEx(HKEY_CURRENT_USER,TEXT("Software\\CLIPS\\CLIPSWin"),0,"",0, KEY_READ | KEY_WRITE,NULL,&hKey,&lpdwDisposition) != ERROR_SUCCESS) { return; } if (RegQueryValueEx(hKey,"Execution",0,&type,(BYTE *) &executionInfo, &size) != ERROR_SUCCESS) { RegCloseKey(hKey); return; } EnvSetSalienceEvaluation(GlobalEnv,executionInfo.salienceEvaluation); EnvSetStrategy(GlobalEnv,executionInfo.strategy); EnvSetStaticConstraintChecking(GlobalEnv,executionInfo.staticConstraintChecking); EnvSetDynamicConstraintChecking(GlobalEnv,executionInfo.dynamicConstraintChecking); EnvSetAutoFloatDividend(GlobalEnv,executionInfo.autoFloatDividend); EnvSetResetGlobals(GlobalEnv,executionInfo.resetGlobals); EnvSetFactDuplication(GlobalEnv,executionInfo.factDuplication); EnvSetIncrementalReset(GlobalEnv,executionInfo.incrementalReset); EnvSetSequenceOperatorRecognition(GlobalEnv,executionInfo.sequenceOperatorRecognition); RegCloseKey(hKey); }
globle void *SetStrategyCommand( void *theEnv) { DATA_OBJECT argPtr; char *argument; int oldStrategy; oldStrategy = AgendaData(theEnv)->Strategy; /*=====================================================*/ /* Check for the correct number and type of arguments. */ /*=====================================================*/ if (EnvArgCountCheck(theEnv,"set-strategy",EXACTLY,1) == -1) { return((SYMBOL_HN *) EnvAddSymbol(theEnv,GetStrategyName(EnvGetStrategy(theEnv)))); } if (EnvArgTypeCheck(theEnv,"set-strategy",1,SYMBOL,&argPtr) == FALSE) { return((SYMBOL_HN *) EnvAddSymbol(theEnv,GetStrategyName(EnvGetStrategy(theEnv)))); } argument = DOToString(argPtr); /*=============================================*/ /* Set the strategy to the specified strategy. */ /*=============================================*/ if (strcmp(argument,"depth") == 0) { EnvSetStrategy(theEnv,DEPTH_STRATEGY); } else if (strcmp(argument,"breadth") == 0) { EnvSetStrategy(theEnv,BREADTH_STRATEGY); } else if (strcmp(argument,"lex") == 0) { EnvSetStrategy(theEnv,LEX_STRATEGY); } else if (strcmp(argument,"mea") == 0) { EnvSetStrategy(theEnv,MEA_STRATEGY); } else if (strcmp(argument,"complexity") == 0) { EnvSetStrategy(theEnv,COMPLEXITY_STRATEGY); } else if (strcmp(argument,"simplicity") == 0) { EnvSetStrategy(theEnv,SIMPLICITY_STRATEGY); } else if (strcmp(argument,"random") == 0) { EnvSetStrategy(theEnv,RANDOM_STRATEGY); } else { ExpectedTypeError1(theEnv,"set-strategy",1, "symbol with value depth, breadth, lex, mea, complexity, simplicity, or random"); return((SYMBOL_HN *) EnvAddSymbol(theEnv,GetStrategyName(EnvGetStrategy(theEnv)))); } /*=======================================*/ /* Return the old value of the strategy. */ /*=======================================*/ return((SYMBOL_HN *) EnvAddSymbol(theEnv,GetStrategyName(oldStrategy))); }