亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? lgcldpnd.c

?? clips源代碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.30  10/19/06            */   /*                                                     */   /*             LOGICAL DEPENDENCIES MODULE             */   /*******************************************************//*************************************************************//* Purpose: Provide support routines for managing truth      *//*   maintenance using the logical conditional element.      *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*                                                           *//* Contributing Programmer(s):                               *//*                                                           *//* Revision History:                                         *//*                                                           *//*      6.24: Removed LOGICAL_DEPENDENCIES compilation flag. *//*                                                           *//*            Renamed BOOLEAN macro type to intBool.         *//*                                                           *//*            Rule with exists CE has incorrect activation.  *//*            DR0867                                         *//*                                                           *//*      6.30: Added support for hashed alpha memories.       *//*                                                           *//*************************************************************/#define _LGCLDPND_SOURCE_#include <stdio.h>#define _STDIO_INCLUDED_#include "setup.h"#if DEFRULE_CONSTRUCT#include "memalloc.h"#include "router.h"#include "envrnmnt.h"#include "evaluatn.h"#include "engine.h"#include "reteutil.h"#include "pattern.h"#include "argacces.h"#include "factmngr.h"#if OBJECT_SYSTEM#include "insfun.h"#endif#include "lgcldpnd.h"/***************************************//* LOCAL INTERNAL FUNCTION DEFINITIONS *//***************************************/   static struct partialMatch    *FindLogicalBind(struct joinNode *,struct partialMatch *);   static struct dependency      *DetachAssociatedDependencies(void *,struct dependency *,void *);/***********************************************************************//* AddLogicalDependencies: Adds the logical dependency links between a *//*   data entity (such as a fact or instance) and the partial match    *//*   which logically supports that data entity. If a data entity is    *//*   unconditionally asserted (i.e. the global variable TheLogicalJoin *//*   is NULL), then existing logical support for the data entity is no *//*   longer needed and it is removed. If a data entity is already      *//*   unconditionally supported and that data entity is conditionally   *//*   asserted (i.e. the global variable TheLogicalJoin is not NULL),   *//*   then the logical support is ignored. Otherwise, the partial match *//*   is linked to the data entity and the data entity is linked to the *//*   partial match. Note that the word assert is used to refer to      *//*   creating a fact with the assert command and creating an instance  *//*   with the make-instance command.                                   *//***********************************************************************/globle intBool AddLogicalDependencies(  void *theEnv,  struct patternEntity *theEntity,  int existingEntity)  {   struct partialMatch *theBinds;   struct dependency *newDependency;   /*==============================================*/   /* If the rule has no logical patterns, then no */   /* dependencies have to be established.         */   /*==============================================*/   if (EngineData(theEnv)->TheLogicalJoin == NULL)     {      if (existingEntity) RemoveEntityDependencies(theEnv,theEntity);      return(TRUE);     }   else if (existingEntity && (theEntity->dependents == NULL))     { return(TRUE); }   /*============================================================*/   /* Find the partial match in the logical join associated with */   /* activation partial match. If the partial match cannot be   */   /* found, then the partial match must have been deleted by a  */   /* previous RHS action and the dependency link should not be  */   /* added.                                                     */   /*============================================================*/   theBinds = FindLogicalBind(EngineData(theEnv)->TheLogicalJoin,EngineData(theEnv)->GlobalLHSBinds);   if (theBinds == NULL) return(FALSE);   /*==============================================================*/   /* Add a dependency link between the partial match and the data */   /* entity. The dependency links are stored in the partial match */   /* behind the data entities stored in the partial match and the */   /* activation link, if any.                                     */   /*==============================================================*/   newDependency = get_struct(theEnv,dependency);   newDependency->dPtr = (void *) theEntity;   newDependency->next = (struct dependency *) theBinds->dependents;   theBinds->dependents = (void *) newDependency;   /*================================================================*/   /* Add a dependency link between the entity and the partialMatch. */   /*================================================================*/   newDependency = get_struct(theEnv,dependency);   newDependency->dPtr = (void *) theBinds;   newDependency->next = (struct dependency *) theEntity->dependents;   theEntity->dependents = (void *) newDependency;   /*==================================================================*/   /* Return TRUE to indicate that the data entity should be asserted. */   /*==================================================================*/   return(TRUE);  }/************************************************************************//* FindLogicalBind: Finds the partial match associated with the logical *//*   CE which will provide logical support for a data entity asserted   *//*   from the currently executing rule. The function is called when     *//*   creating logical support links between the data entity and         *//*   supporting partial matches.                                        *//************************************************************************/static struct partialMatch *FindLogicalBind(  struct joinNode *theJoin,  struct partialMatch *theBinds)  {   struct partialMatch *compPtr;         /*========================================================*/   /* Follow the parent link of the activation back through  */   /* the join network until the join containing the logical */   /* partial match is found. The partial match at this      */   /* join will have the dependency link assigned to it.     */   /*========================================================*/      for (compPtr = theBinds;        compPtr != NULL;        compPtr = compPtr->leftParent)     {      if (compPtr->owner == theJoin)        { return(compPtr); }     }   return(NULL);  }/*********************************************************************//* RemoveEntityDependencies: Removes all logical support links from  *//*   a pattern entity that point to partial matches or other pattern *//*   entities. Also removes the associated links from the partial    *//*   matches or pattern entities which point back to the pattern     *//*   entities.                                                       *//*********************************************************************/globle void RemoveEntityDependencies(  void *theEnv,  struct patternEntity *theEntity)  {   struct dependency *fdPtr, *nextPtr, *theList;   struct partialMatch *theBinds;   /*===============================*/   /* Get the list of dependencies. */   /*===============================*/   fdPtr = (struct dependency *) theEntity->dependents;   /*========================================*/   /* Loop through each of the dependencies. */   /*========================================*/   while (fdPtr != NULL)     {      /*===============================*/      /* Remember the next dependency. */      /*===============================*/      nextPtr = fdPtr->next;      /*================================================================*/      /* Remove the link between the data entity and the partial match. */      /*================================================================*/      theBinds = (struct partialMatch *) fdPtr->dPtr;      theList = (struct dependency *) theBinds->dependents;      theList = DetachAssociatedDependencies(theEnv,theList,(void *) theEntity);      theBinds->dependents = (void *) theList;      /*========================*/      /* Return the dependency. */      /*========================*/      rtn_struct(theEnv,dependency,fdPtr);      /*=================================*/      /* Move on to the next dependency. */      /*=================================*/      fdPtr = nextPtr;     }   /*=====================================================*/   /* Set the dependency list of the data entity to NULL. */   /*=====================================================*/   theEntity->dependents = NULL;  }  /********************************************************************//* ReturnEntityDependencies: Removes all logical support links from *//*   a pattern entity. This is unidirectional. The links from the   *//*   the partial match to the entity are not removed.               *//********************************************************************/globle void ReturnEntityDependencies(  void *theEnv,  struct patternEntity *theEntity)  {   struct dependency *fdPtr, *nextPtr;   fdPtr = (struct dependency *) theEntity->dependents;   while (fdPtr != NULL)     {      nextPtr = fdPtr->next;      rtn_struct(theEnv,dependency,fdPtr);      fdPtr = nextPtr;     }   theEntity->dependents = NULL;  }/*******************************************************************//* DetachAssociatedDependencies: Removes all logical support links *//*   which pointer to a pattern entity from a list of dependencies *//*   (which may be associated with either a partial match or       *//*   another pattern entity). Does not remove links which point in *//*   the other direction.                                          *//*******************************************************************/static struct dependency *DetachAssociatedDependencies(  void *theEnv,  struct dependency *theList,  void *theEntity)  {   struct dependency *fdPtr, *nextPtr, *lastPtr = NULL;   fdPtr = theList;   while (fdPtr != NULL)     {      if (fdPtr->dPtr == theEntity)        {         nextPtr = fdPtr->next;         if (lastPtr == NULL) theList = nextPtr;         else lastPtr->next = nextPtr;         rtn_struct(theEnv,dependency,fdPtr);         fdPtr = nextPtr;        }      else        {         lastPtr = fdPtr;         fdPtr = fdPtr->next;        }     }   return(theList);  }/**************************************************************************//* RemovePMDependencies: Removes all logical support links from a partial *//*   match that point to any data entities. Also removes the associated   *//*   links from the data entities which point back to the partial match.  *//**************************************************************************/globle void RemovePMDependencies(  void *theEnv,  struct partialMatch *theBinds)  {   struct dependency *fdPtr, *nextPtr, *theList;   struct patternEntity *theEntity;   fdPtr = (struct dependency *) theBinds->dependents;   while (fdPtr != NULL)     {      nextPtr = fdPtr->next;      theEntity = (struct patternEntity *) fdPtr->dPtr;      theList = (struct dependency *) theEntity->dependents;      theList = DetachAssociatedDependencies(theEnv,theList,(void *) theBinds);      theEntity->dependents = (void *) theList;      rtn_struct(theEnv,dependency,fdPtr);      fdPtr = nextPtr;     }   theBinds->dependents = NULL;  }

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆精品国产无毒不卡在线观看| 中文字幕欧美激情| 国产成人小视频| 亚洲天天做日日做天天谢日日欢 | 亚洲欧洲av在线| 在线观看国产日韩| 成人一区二区三区视频在线观看| 精品免费一区二区三区| 99精品欧美一区二区三区综合在线| 亚洲国产精品自拍| 日本一区二区三区在线不卡| 欧美私人免费视频| 成人aa视频在线观看| 国产综合成人久久大片91| 成人精品免费看| 国产乱对白刺激视频不卡| 亚洲国产成人高清精品| 成人欧美一区二区三区| 久久久久久免费网| 国产午夜精品一区二区| 精品免费日韩av| 日韩视频免费观看高清在线视频| 欧美日本在线视频| 欧美一卡二卡在线| 91视频观看视频| 91国偷自产一区二区三区观看| 白白色亚洲国产精品| 成人免费毛片高清视频| 成人v精品蜜桃久久一区| 国产成人免费视频网站| 99久久99久久综合| 欧美日韩国产电影| 777午夜精品免费视频| 色狠狠色狠狠综合| 91福利社在线观看| 日韩欧美色综合网站| 亚洲国产精品av| 亚洲成人免费视| 韩国成人在线视频| 欧美色视频在线观看| 久久久99精品免费观看不卡| 亚洲欧美偷拍三级| 看片的网站亚洲| 色综合久久中文综合久久97| 欧美一级生活片| 亚洲精品日韩专区silk| 精品一区二区三区免费视频| aa级大片欧美| 国产嫩草影院久久久久| 亚洲国产精品久久一线不卡| 久久99国产精品久久| 欧美在线视频不卡| 亚洲欧美自拍偷拍色图| 久久99国产乱子伦精品免费| 欧美精品tushy高清| 国产精品免费av| 国产精品18久久久久久久网站| 欧美猛男超大videosgay| 中文字幕一区不卡| 成人国产精品视频| 国产清纯白嫩初高生在线观看91| 日韩av中文字幕一区二区三区| 91在线精品一区二区| 国产精品美女久久久久aⅴ | 久久精品网站免费观看| 日本一区中文字幕| 69堂国产成人免费视频| 亚洲自拍都市欧美小说| 欧美日韩国产成人在线免费| 亚洲一卡二卡三卡四卡无卡久久 | 国产精品资源站在线| 国产亚洲综合在线| 国产成人高清在线| 国产精品欧美综合在线| 不卡的av网站| 亚洲一区在线视频观看| 欧美精品1区2区3区| 韩国成人福利片在线播放| 久久久精品2019中文字幕之3| 国产成人福利片| 一区二区在线免费观看| 欧美乱妇一区二区三区不卡视频| 天堂精品中文字幕在线| 欧美精品一区二区高清在线观看| 国产精品亚洲午夜一区二区三区| 中文字幕欧美激情| 91精品国产综合久久蜜臀| 韩国三级电影一区二区| 亚洲欧美偷拍另类a∨色屁股| 欧美在线免费观看亚洲| 国产一区二区三区免费播放| 美女视频黄 久久| 一区二区在线观看视频| 久久久亚洲欧洲日产国码αv| 色婷婷香蕉在线一区二区| 国产一本一道久久香蕉| 亚洲高清中文字幕| 亚洲国产精品成人综合| 日韩女优电影在线观看| 欧美日韩精品综合在线| 99天天综合性| 99久久亚洲一区二区三区青草| 日本成人在线电影网| 亚洲成人免费在线| 亚洲成人免费视频| 男人的j进女人的j一区| 日韩不卡手机在线v区| 亚洲一区二区三区三| 亚洲激情中文1区| 一区二区三区高清不卡| 亚洲成人综合网站| 五月天婷婷综合| 免费亚洲电影在线| 国产一区视频导航| 久久久久综合网| 3d动漫精品啪啪一区二区竹菊 | 国产精品影视在线| 欧美视频精品在线观看| 欧美性感一区二区三区| 欧美色国产精品| 欧美大黄免费观看| 久久综合视频网| 国产精品亲子伦对白| 亚洲在线成人精品| 美女免费视频一区| 成人免费视频国产在线观看| 欧美伊人精品成人久久综合97| 91精品国产综合久久国产大片| 日韩欧美激情一区| 综合久久综合久久| 视频在线在亚洲| 国产高清视频一区| 欧美剧情片在线观看| 欧美电视剧在线观看完整版| 亚洲va韩国va欧美va精品| 国产成人精品一区二| 精品理论电影在线观看| 午夜精品123| 欧美日韩一区三区| 视频在线观看一区| 欧美日本视频在线| 亚洲电影中文字幕在线观看| 97se亚洲国产综合在线| 国产精品国产三级国产普通话蜜臀 | 丝袜亚洲另类欧美| 在线观看亚洲成人| 亚洲成a人片在线观看中文| 91精品国产91久久综合桃花| 日韩区在线观看| 亚洲欧美在线视频| 日韩午夜激情免费电影| 岛国av在线一区| 免费观看日韩av| 日韩美女视频一区二区| 精品国产乱码久久久久久久| 国产一区二区毛片| 亚洲欧美日韩精品久久久久| 99热在这里有精品免费| 亚洲va欧美va人人爽午夜| 欧美xxxxx牲另类人与| 国产精选一区二区三区| 中文字幕精品一区二区精品绿巨人| 不卡一卡二卡三乱码免费网站| 亚洲精选免费视频| 欧美r级在线观看| heyzo一本久久综合| 日产国产高清一区二区三区| 国产精品白丝在线| 精品精品欲导航| 欧美日韩国产精选| 成人av在线播放网站| 丝袜美腿亚洲综合| 亚洲国产美女搞黄色| 亚洲一区二区三区美女| 中文字幕亚洲在| 国产亚洲精品bt天堂精选| 91精品国产综合久久久蜜臀粉嫩 | 激情久久五月天| 亚洲永久免费视频| 中文字幕一区二| 亚洲国产精品精华液ab| 久久久久久久一区| 2024国产精品视频| 久久色中文字幕| 久久久99免费| 国产亚洲午夜高清国产拍精品| 7777精品伊人久久久大香线蕉 | 欧美一级在线免费| 欧美日本在线观看| 91成人在线观看喷潮| 在线观看不卡一区| 日韩欧美国产综合| www国产成人免费观看视频 深夜成人网| 欧美一区二区国产| 国产精品免费网站在线观看| 偷窥少妇高潮呻吟av久久免费| 另类小说综合欧美亚洲| 成人黄色片在线观看| 91精品国产乱| 亚洲精品国产高清久久伦理二区|