⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 evaluatn.h

📁 NASA 开发使用的一个专家系统
💻 H
字号:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.05  04/09/97            */   /*                                                     */   /*               EVALUATION HEADER FILE                */   /*******************************************************//*************************************************************//* Purpose: Provides routines for evaluating expressions.    *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*                                                           *//* Contributing Programmer(s):                               *//*                                                           *//* Revision History:                                         *//*                                                           *//*************************************************************/#ifndef _H_evaluatn#define _H_evaluatnstruct entityRecord;struct dataObject;#ifndef _H_constant#include "constant.h"#endif#ifndef _H_symbol#include "symbol.h"#endif#ifndef _H_expressn#include "expressn.h"#endifstruct dataObject  {   VOID *supplementalInfo;   int type;   VOID *value;   long begin;   long end;   struct dataObject *next;  };typedef struct dataObject DATA_OBJECT;typedef struct dataObject * DATA_OBJECT_PTR;#if ANSI_COMPILER#define DATA_OBJECT_PTR_ARG DATA_OBJECT_PTR#else#define DATA_OBJECT_PTR_ARG#endifstruct entityRecord  {   unsigned int type : 13;   unsigned int copyToEvaluate : 1;   unsigned int bitMap : 1;   unsigned int addsToRuleComplexity : 1;#if ANSI_COMPILER   VOID (*shortPrintFunction)(char *,VOID *);   VOID (*longPrintFunction)(char *,VOID *);   BOOLEAN (*deleteFunction)(VOID *);   BOOLEAN (*evaluateFunction)(VOID *,DATA_OBJECT *);   VOID *(*getNextFunction)(VOID *);   VOID (*decrementBusyCount)(VOID *);   VOID (*incrementBusyCount)(VOID *);   VOID (*propagateDepth)(VOID *);   VOID (*markNeeded)(VOID *);   VOID (*install)(VOID *);   VOID (*deinstall)(VOID *);#else   VOID (*shortPrintFunction)();   VOID (*longPrintFunction)();   BOOLEAN (*deleteFunction)();   BOOLEAN (*evaluateFunction)();   VOID *(*getNextFunction)();   VOID (*decrementBusyCount)();   VOID (*incrementBusyCount)();   VOID (*propagateDepth)();   VOID (*markNeeded)();   VOID (*install)();   VOID (*deinstall)();#endif  };  typedef struct entityRecord ENTITY_RECORD;typedef struct entityRecord * ENTITY_RECORD_PTR;#define GetDOLength(target)       (((target).end - (target).begin) + 1)#define GetpDOLength(target)      (((target)->end - (target)->begin) + 1)#define GetDOBegin(target)        ((target).begin + 1)#define GetDOEnd(target)          ((target).end + 1)#define GetpDOBegin(target)       ((target)->begin + 1)#define GetpDOEnd(target)         ((target)->end + 1)#define SetDOBegin(target,val)   ((target).begin = (val) - 1) #define SetDOEnd(target,val)     ((target).end = (val) - 1)#define SetpDOBegin(target,val)   ((target)->begin = (val) - 1) #define SetpDOEnd(target,val)     ((target)->end = (val) - 1)#define DOPToString(target) (((struct symbolHashNode *) (target->value))->contents)#define DOPToDouble(target) (((struct floatHashNode *) (target->value))->contents)#define DOPToFloat(target) ((float) (((struct floatHashNode *) (target->value))->contents))#define DOPToLong(target) (((struct integerHashNode *) (target->value))->contents)#define DOPToInteger(target) ((int) (((struct integerHashNode *) (target->value))->contents))#define DOPToPointer(target)       ((target)->value) #define DOToString(target) (((struct symbolHashNode *) (target.value))->contents)#define DOToDouble(target) (((struct floatHashNode *) (target.value))->contents)#define DOToFloat(target) ((float) (((struct floatHashNode *) (target.value))->contents))#define DOToLong(target) (((struct integerHashNode *) (target.value))->contents)#define DOToInteger(target) ((int) (((struct integerHashNode *) (target.value))->contents))#define DOToPointer(target)        ((target).value) #define CoerceToLongInteger(t,v) ((t == INTEGER) ? ValueToLong(v) : (long int) ValueToDouble(v))#define CoerceToInteger(t,v) ((t == INTEGER) ? (int) ValueToLong(v) : (int) ValueToDouble(v))#define CoerceToDouble(t,v) ((t == INTEGER) ? (double) ValueToLong(v) : ValueToDouble(v))  #define GetFirstArgument()           (CurrentExpression->argList)#define GetNextArgument(ep)          (ep->nextArg)#define BITS_PER_BYTE    8#define BitwiseTest(n,b)   ((n) & (char) (1 << (b)))#define BitwiseSet(n,b)    (n |= (char) (1 << (b)))#define BitwiseClear(n,b)  (n &= (char) ~(1 << (b)))#define TestBitMap(map,id)  BitwiseTest(map[(id) / BITS_PER_BYTE],(id) % BITS_PER_BYTE)#define SetBitMap(map,id)   BitwiseSet(map[(id) / BITS_PER_BYTE],(id) % BITS_PER_BYTE)#define ClearBitMap(map,id) BitwiseClear(map[(id) / BITS_PER_BYTE],(id) % BITS_PER_BYTE)#ifdef LOCALE#undef LOCALE#endif#ifdef _EVALUATN_SOURCE_#define LOCALE#else#define LOCALE extern#endif#if ANSI_COMPILER   LOCALE int                            EvaluateExpression(struct expr *,struct dataObject *);   LOCALE VOID                           SetEvaluationError(BOOLEAN);   LOCALE int                            GetEvaluationError(void);   LOCALE VOID                           SetHaltExecution(int);   LOCALE int                            GetHaltExecution(void);   LOCALE VOID                           ReturnValues(struct dataObject *);   LOCALE VOID                           PrintDataObject(char *,struct dataObject *);   LOCALE VOID                           SetMultifieldErrorValue(struct dataObject *);   LOCALE VOID                           ValueInstall(struct dataObject *);   LOCALE VOID                           ValueDeinstall(struct dataObject *);   LOCALE VOID                           PropagateReturnValue(struct dataObject *);#if DEFFUNCTION_CONSTRUCT || DEFGENERIC_CONSTRUCT   LOCALE int                            CLIPSFunctionCall(char *,char *,DATA_OBJECT *);#endif   LOCALE VOID                           CopyDataObject(DATA_OBJECT *,DATA_OBJECT *,int);   LOCALE VOID                           AtomInstall(int,VOID *);   LOCALE VOID                           AtomDeinstall(int,VOID *);   LOCALE struct expr                   *ConvertValueToExpression(DATA_OBJECT *);   LOCALE unsigned int                   GetAtomicHashValue(int,VOID *,int);   LOCALE VOID                           InstallPrimitive(struct entityRecord *,int);#else   LOCALE int                            EvaluateExpression();   LOCALE VOID                           SetEvaluationError();   LOCALE int                            GetEvaluationError();   LOCALE VOID                           SetHaltExecution();   LOCALE int                            GetHaltExecution();   LOCALE VOID                           ReturnValues();   LOCALE VOID                           PrintDataObject();   LOCALE VOID                           SetMultifieldErrorValue();   LOCALE VOID                           ValueInstall();   LOCALE VOID                           ValueDeinstall();   LOCALE VOID                           PropagateReturnValue();#if DEFFUNCTION_CONSTRUCT || DEFGENERIC_CONSTRUCT   LOCALE int                            CLIPSFunctionCall();#endif   LOCALE VOID                           CopyDataObject();   LOCALE VOID                           AtomInstall();   LOCALE VOID                           AtomDeinstall();   LOCALE struct expr                   *ConvertValueToExpression();   LOCALE unsigned int                   GetAtomicHashValue();   LOCALE VOID                           InstallPrimitive();#endif#ifndef _EVALUATN_SOURCE_   extern struct expr            *CurrentExpression;   extern int                     EvaluationError;   extern int                     HaltExecution;   extern int                     CurrentEvaluationDepth;   extern struct entityRecord    *PrimitivesArray[];#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -