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

📄 evaluatn.h

📁 clips源代码
💻 H
字号:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.24  06/05/06            */   /*                                                     */   /*               EVALUATION HEADER FILE                */   /*******************************************************//*************************************************************//* Purpose: Provides routines for evaluating expressions.    *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*                                                           *//* Contributing Programmer(s):                               *//*                                                           *//* Revision History:                                         *//*                                                           *//*      6.24: Renamed BOOLEAN macro type to intBool.         *//*                                                           *//*            Added EvaluateAndStoreInDataObject function.   *//*                                                           *//*************************************************************/#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;   unsigned short type;   void *value;   long begin;   long end;   struct dataObject *next;  };typedef struct dataObject DATA_OBJECT;typedef struct dataObject * DATA_OBJECT_PTR;typedef struct expr FUNCTION_REFERENCE;#define DATA_OBJECT_PTR_ARG DATA_OBJECT_PTR#include "userdata.h"struct entityRecord  {   char *name;   unsigned int type : 13;   unsigned int copyToEvaluate : 1;   unsigned int bitMap : 1;   unsigned int addsToRuleComplexity : 1;   void (*shortPrintFunction)(void *,char *,void *);   void (*longPrintFunction)(void *,char *,void *);   intBool (*deleteFunction)(void *,void *);   intBool (*evaluateFunction)(void *,void *,DATA_OBJECT *);   void *(*getNextFunction)(void *,void *);   void (*decrementBusyCount)(void *,void *);   void (*incrementBusyCount)(void *,void *);   void (*propagateDepth)(void *,void *);   void (*markNeeded)(void *,void *);   void (*install)(void *,void *);   void (*deinstall)(void *,void *);   struct userData *usrData;  };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 = (long) ((val) - 1))#define SetDOEnd(target,val)     ((target).end = (long) ((val) - 1))#define SetpDOBegin(target,val)   ((target)->begin = (long) ((val) - 1))#define SetpDOEnd(target,val)     ((target)->end = (long) ((val) - 1))#define EnvGetDOLength(theEnv,target)       (((target).end - (target).begin) + 1)#define EnvGetpDOLength(theEnv,target)      (((target)->end - (target)->begin) + 1)#define EnvGetDOBegin(theEnv,target)        ((target).begin + 1)#define EnvGetDOEnd(theEnv,target)          ((target).end + 1)#define EnvGetpDOBegin(theEnv,target)       ((target)->begin + 1)#define EnvGetpDOEnd(theEnv,target)         ((target)->end + 1)#define EnvSetDOBegin(theEnv,target,val)   ((target).begin = (long) ((val) - 1))#define EnvSetDOEnd(theEnv,target,val)     ((target).end = (long) ((val) - 1))#define EnvSetpDOBegin(theEnv,target,val)   ((target)->begin = (long) ((val) - 1))#define EnvSetpDOEnd(theEnv,target,val)     ((target)->end = (long) ((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 EnvDOPToString(theEnv,target) (((struct symbolHashNode *) ((target)->value))->contents)#define EnvDOPToDouble(theEnv,target) (((struct floatHashNode *) ((target)->value))->contents)#define EnvDOPToFloat(theEnv,target) ((float) (((struct floatHashNode *) ((target)->value))->contents))#define EnvDOPToLong(theEnv,target) (((struct integerHashNode *) ((target)->value))->contents)#define EnvDOPToInteger(theEnv,target) ((int) (((struct integerHashNode *) ((target)->value))->contents))#define EnvDOPToPointer(theEnv,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 EnvDOToString(theEnv,target) (((struct symbolHashNode *) ((target).value))->contents)#define EnvDOToDouble(theEnv,target) (((struct floatHashNode *) ((target).value))->contents)#define EnvDOToFloat(theEnv,target) ((float) (((struct floatHashNode *) ((target).value))->contents))#define EnvDOToLong(theEnv,target) (((struct integerHashNode *) ((target).value))->contents)#define EnvDOToInteger(theEnv,target) ((int) (((struct integerHashNode *) ((target).value))->contents))#define EnvDOToPointer(theEnv,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()           (EvaluationData(theEnv)->CurrentExpression->argList)#define GetNextArgument(ep)          (ep->nextArg)#define MAXIMUM_PRIMITIVES 150#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)#define EVALUATION_DATA 44struct evaluationData  {    struct expr *CurrentExpression;   int EvaluationError;   int HaltExecution;   int CurrentEvaluationDepth;   struct entityRecord *PrimitivesArray[MAXIMUM_PRIMITIVES];  };#define EvaluationData(theEnv) ((struct evaluationData *) GetEnvironmentData(theEnv,EVALUATION_DATA))#ifdef LOCALE#undef LOCALE#endif#ifdef _EVALUATN_SOURCE_#define LOCALE#else#define LOCALE extern#endif#if ENVIRONMENT_API_ONLY#define SetMultifieldErrorValue(theEnv,a) EnvSetMultifieldErrorValue(theEnv,a)#define FunctionCall(theEnv,a,b,c) EnvFunctionCall(theEnv,a,b,c)#else#define SetMultifieldErrorValue(a) EnvSetMultifieldErrorValue(GetCurrentEnvironment(),a)#define FunctionCall(a,b,c) EnvFunctionCall(GetCurrentEnvironment(),a,b,c)#endif   LOCALE void                           InitializeEvaluationData(void *);   LOCALE int                            EvaluateExpression(void *,struct expr *,struct dataObject *);   LOCALE void                           SetEvaluationError(void *,intBool);   LOCALE int                            GetEvaluationError(void *);   LOCALE void                           SetHaltExecution(void *,int);   LOCALE int                            GetHaltExecution(void *);   LOCALE void                           ReturnValues(void *,struct dataObject *);   LOCALE void                           PrintDataObject(void *,char *,struct dataObject *);   LOCALE void                           EnvSetMultifieldErrorValue(void *,struct dataObject *);   LOCALE void                           ValueInstall(void *,struct dataObject *);   LOCALE void                           ValueDeinstall(void *,struct dataObject *);   LOCALE void                           PropagateReturnValue(void *,struct dataObject *);#if DEFFUNCTION_CONSTRUCT || DEFGENERIC_CONSTRUCT   LOCALE int                            EnvFunctionCall(void *,char *,char *,DATA_OBJECT *);   LOCALE int                            FunctionCall2(void *,FUNCTION_REFERENCE *,char *,DATA_OBJECT *);#endif   LOCALE void                           CopyDataObject(void *,DATA_OBJECT *,DATA_OBJECT *,int);   LOCALE void                           AtomInstall(void *,int,void *);   LOCALE void                           AtomDeinstall(void *,int,void *);   LOCALE struct expr                   *ConvertValueToExpression(void *,DATA_OBJECT *);   LOCALE unsigned int                   GetAtomicHashValue(unsigned short,void *,int);   LOCALE void                           InstallPrimitive(void *,struct entityRecord *,int);   LOCALE void                           TransferDataObjectValues(DATA_OBJECT *,DATA_OBJECT *);   LOCALE struct expr                   *FunctionReferenceExpression(void *,char *);   LOCALE intBool                        GetFunctionReference(void *,char *,FUNCTION_REFERENCE *);   LOCALE intBool                        DOsEqual(DATA_OBJECT_PTR,DATA_OBJECT_PTR);   LOCALE int                            EvaluateAndStoreInDataObject(void *,int,EXPRESSION *,DATA_OBJECT *,int);#endif

⌨️ 快捷键说明

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