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

📄 dffctbsc.c

📁 clips源代码
💻 C
字号:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.24  06/05/06            */   /*                                                     */   /*         DEFFACTS BASIC COMMANDS HEADER FILE         */   /*******************************************************//*************************************************************//* Purpose: Implements core commands for the deffacts        *//*   construct such as clear, reset, save, undeffacts,       *//*   ppdeffacts, list-deffacts, and get-deffacts-list.       *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*                                                           *//* Contributing Programmer(s):                               *//*      Brian L. Donnell                                     *//*                                                           *//* Revision History:                                         *//*      6.23: Corrected compilation errors for files         *//*            generated by constructs-to-c. DR0861           *//*                                                           *//*      6.24: Renamed BOOLEAN macro type to intBool.         *//*                                                           *//*************************************************************/#define _DFFCTBSC_SOURCE_#include "setup.h"#if DEFFACTS_CONSTRUCT#include <stdio.h>#define _STDIO_INCLUDED_#include <string.h>#include "envrnmnt.h"#include "argacces.h"#include "memalloc.h"#include "scanner.h"#include "router.h"#include "extnfunc.h"#include "constrct.h"#include "cstrccom.h"#include "factrhs.h"#include "tmpltdef.h"#include "cstrcpsr.h"#include "dffctpsr.h"#include "dffctdef.h"#if BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE#include "dffctbin.h"#endif#if CONSTRUCT_COMPILER && (! RUN_TIME)#include "dffctcmp.h"#endif#include "dffctbsc.h"/***************************************//* LOCAL INTERNAL FUNCTION DEFINITIONS *//***************************************/   static void                    ResetDeffacts(void *);   static void                    ClearDeffacts(void *);   static void                    SaveDeffacts(void *,void *,char *);   static void                    ResetDeffactsAction(void *,struct constructHeader *,void *);/***************************************************************//* DeffactsBasicCommands: Initializes basic deffacts commands. *//***************************************************************/globle void DeffactsBasicCommands(  void *theEnv)  {      EnvAddResetFunction(theEnv,"deffacts",ResetDeffacts,0);   EnvAddClearFunction(theEnv,"deffacts",ClearDeffacts,0);   AddSaveFunction(theEnv,"deffacts",SaveDeffacts,10);#if ! RUN_TIME   EnvDefineFunction2(theEnv,"get-deffacts-list",'m',PTIEF GetDeffactsListFunction,"GetDeffactsListFunction","01w");   EnvDefineFunction2(theEnv,"undeffacts",'v',PTIEF UndeffactsCommand,"UndeffactsCommand","11w");   EnvDefineFunction2(theEnv,"deffacts-module",'w',PTIEF DeffactsModuleFunction,"DeffactsModuleFunction","11w");#if DEBUGGING_FUNCTIONS   EnvDefineFunction2(theEnv,"list-deffacts",'v', PTIEF ListDeffactsCommand,"ListDeffactsCommand","01w");   EnvDefineFunction2(theEnv,"ppdeffacts",'v',PTIEF PPDeffactsCommand,"PPDeffactsCommand","11w");#endif#if (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE)   DeffactsBinarySetup(theEnv);#endif#if CONSTRUCT_COMPILER && (! RUN_TIME)   DeffactsCompilerSetup(theEnv);#endif#endif  }/**********************************************************//* ResetDeffacts: Deffacts reset routine for use with the *//*   reset command. Asserts all of the facts contained in *//*   deffacts constructs.                                 *//**********************************************************/static void ResetDeffacts(  void *theEnv)  {    DoForAllConstructs(theEnv,ResetDeffactsAction,DeffactsData(theEnv)->DeffactsModuleIndex,TRUE,NULL);   }/*****************************************************//* ResetDeffactsAction: Action to be applied to each *//*   deffacts construct during a reset command.      *//*****************************************************/#if IBM_TBC#pragma argsused#endifstatic void ResetDeffactsAction(  void *theEnv,  struct constructHeader *theConstruct,  void *buffer)  {#if MAC_MCW || IBM_MCW || MAC_XCD#pragma unused(buffer)#endif   DATA_OBJECT result;   struct deffacts *theDeffacts = (struct deffacts *) theConstruct;   if (theDeffacts->assertList == NULL) return;   SetEvaluationError(theEnv,FALSE);   EvaluateExpression(theEnv,theDeffacts->assertList,&result);  }/**********************************************************//* ClearDeffacts: Deffacts clear routine for use with the *//*   clear command. Creates the initial-facts deffacts.   *//**********************************************************/static void ClearDeffacts(  void *theEnv)  {#if (! RUN_TIME) && (! BLOAD_ONLY)   struct expr *stub;   struct deffacts *newDeffacts;   /*=====================================*/   /* Create the data structures for the  */   /* expression (assert (initial-fact)). */   /*=====================================*/   stub = GenConstant(theEnv,FCALL,FindFunction(theEnv,"assert"));   stub->argList = GenConstant(theEnv,DEFTEMPLATE_PTR,EnvFindDeftemplate(theEnv,"initial-fact"));   ExpressionInstall(theEnv,stub);   /*=============================================*/   /* Create a deffacts data structure to contain */   /* the expression and initialize it.           */   /*=============================================*/   newDeffacts = get_struct(theEnv,deffacts);   newDeffacts->header.whichModule =      (struct defmoduleItemHeader *) GetDeffactsModuleItem(theEnv,NULL);   newDeffacts->header.name = (SYMBOL_HN *) EnvAddSymbol(theEnv,"initial-fact");   IncrementSymbolCount(newDeffacts->header.name);   newDeffacts->assertList = PackExpression(theEnv,stub);   newDeffacts->header.next = NULL;   newDeffacts->header.ppForm = NULL;   newDeffacts->header.usrData = NULL;   ReturnExpression(theEnv,stub);   /*===========================================*/   /* Store the deffacts in the current module. */   /*===========================================*/   AddConstructToModule(&newDeffacts->header);#else#if MAC_MCW || IBM_MCW || MAC_XCD#pragma unused(theEnv)#endif#endif  }/***************************************//* SaveDeffacts: Deffacts save routine *//*   for use with the save command.    *//***************************************/static void SaveDeffacts(  void *theEnv,  void *theModule,  char *logicalName)  {    SaveConstruct(theEnv,theModule,logicalName,DeffactsData(theEnv)->DeffactsConstruct);   }/*******************************************//* UndeffactsCommand: H/L access routine   *//*   for the undeffacts command.           *//*******************************************/globle void UndeffactsCommand(  void *theEnv)  {    UndefconstructCommand(theEnv,"undeffacts",DeffactsData(theEnv)->DeffactsConstruct);   }/***********************************//* EnvUndeffacts: C access routine *//*   for the undeffacts command.   *//***********************************/globle intBool EnvUndeffacts(  void *theEnv,  void *theDeffacts)  {    return(Undefconstruct(theEnv,theDeffacts,DeffactsData(theEnv)->DeffactsConstruct));   }/*************************************************//* GetDeffactsListFunction: H/L access routine   *//*   for the get-deffacts-list function.         *//*************************************************/globle void GetDeffactsListFunction(  void *theEnv,  DATA_OBJECT_PTR returnValue)  {    GetConstructListFunction(theEnv,"get-deffacts-list",returnValue,DeffactsData(theEnv)->DeffactsConstruct);   }/*****************************************//* EnvGetDeffactsList: C access routine  *//*   for the get-deffacts-list function. *//*****************************************/globle void EnvGetDeffactsList(  void *theEnv,  DATA_OBJECT_PTR returnValue,  void *theModule)  {    GetConstructList(theEnv,returnValue,DeffactsData(theEnv)->DeffactsConstruct,(struct defmodule *) theModule);   }/************************************************//* DeffactsModuleFunction: H/L access routine   *//*   for the deffacts-module function.          *//************************************************/globle void *DeffactsModuleFunction(  void *theEnv)  {    return(GetConstructModuleCommand(theEnv,"deffacts-module",DeffactsData(theEnv)->DeffactsConstruct));   }#if DEBUGGING_FUNCTIONS/*******************************************//* PPDeffactsCommand: H/L access routine   *//*   for the ppdeffacts command.           *//*******************************************/globle void PPDeffactsCommand(  void *theEnv)  {    PPConstructCommand(theEnv,"ppdeffacts",DeffactsData(theEnv)->DeffactsConstruct);   }/************************************//* PPDeffacts: C access routine for *//*   the ppdeffacts command.        *//************************************/globle int PPDeffacts(  void *theEnv,  char *deffactsName,  char *logicalName)  {    return(PPConstruct(theEnv,deffactsName,logicalName,DeffactsData(theEnv)->DeffactsConstruct));   }/*********************************************//* ListDeffactsCommand: H/L access routine   *//*   for the list-deffacts command.          *//*********************************************/globle void ListDeffactsCommand(  void *theEnv)  {    ListConstructCommand(theEnv,"list-deffacts",DeffactsData(theEnv)->DeffactsConstruct);   }/*************************************//* EnvListDeffacts: C access routine *//*   for the list-deffacts command.  *//*************************************/globle void EnvListDeffacts(  void *theEnv,  char *logicalName,  void *theModule)  {    ListConstruct(theEnv,DeffactsData(theEnv)->DeffactsConstruct,logicalName,(struct defmodule *) theModule);  }#endif /* DEBUGGING_FUNCTIONS */#endif /* DEFFACTS_CONSTRUCT */

⌨️ 快捷键说明

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