Я изменяю шаблонный факт с помощью вызова (изменения) действия, но это приводит к зависанию CLIPS.
ПРАВИЛА:
(deffunction reset-allowed-values "Resets allowed values"
; no argument
($?arg)
(if (eq (any-factp ((?fact model1)) TRUE) TRUE)
then
;T1_1, T2_1, T3_1
(do-for-all-facts ((?fact ar-node)) (eq ?fact:trip 1)
(modify ?fact (allowed-values A B C D E F))))
MAIN:
int main(void)
{
DATA_OBJECT rtn;
void *env = CreateEnvironment();
printf("Environment Created!\n");
EnvSetConserveMemory(env, 1);
int result = EnvLoad(env, "custom/rules/test.clp");
if(result == 0) {
printf("Unable to find the consruct!\n");
DestroyEnvironment(env);
return(1);
} else if(result == -1) {
printf("Unable to load the consruct!\n");
DestroyEnvironment(env);
return(1);
}
printf("Construct Loaded!\n");
EnvReset(env);
printf("Environment Reset!\n");
EnvFunctionCall(env,"reset-allowed-values", 0, &rtn);
printf("CLIPS test done! Used memory %ld bytes.\n", EnvMemUsed(env));
DestroyEnvironment(env);
return(0);
}
Я в настоящее время понятия не имею, почему вызов на изменение заставляет вызов сбросить допустимые значения не возвращаться.CLIPS построен и работает в UBUNTU Linux 32bit.Любой может помочь мне в этом, вся помощь очень ценится.Большое спасибо.