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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? objrtgen.c

?? clips源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*               CLIPS Version 6.24  05/17/06          */   /*                                                     */   /*    INFERENCE ENGINE OBJECT PARSING ROUTINES MODULE  */   /*******************************************************//**************************************************************//* Purpose: RETE Network Parsing Interface for Objects        *//*                                                            *//* Principal Programmer(s):                                   *//*      Brian L. Donnell                                      *//*                                                            *//* Contributing Programmer(s):                                *//*                                                            *//* Revision History:                                          *//*      6.23: Changed name of variable exp to theExp          *//*            because of Unix compiler warnings of shadowed   *//*            definitions.                                    *//*                                                            *//*      6.24: Converted INSTANCE_PATTERN_MATCHING to          *//*            DEFRULE_CONSTRUCT.                              *//*                                                            *//*            Renamed BOOLEAN macro type to intBool.          *//*                                                            *//**************************************************************//* =========================================   *****************************************               EXTERNAL DEFINITIONS   =========================================   ***************************************** */#include "setup.h"#if DEFRULE_CONSTRUCT && OBJECT_SYSTEM && (! RUN_TIME) && (! BLOAD_ONLY)#ifndef _STDIO_INCLUDED_#include <stdio.h>#define _STDIO_INCLUDED_#endif#include "classfun.h"#include "envrnmnt.h"#include "objrtfnx.h"#define _OBJRTGEN_SOURCE_#include "objrtgen.h"/* =========================================   *****************************************      INTERNALLY VISIBLE FUNCTION HEADERS   =========================================   ***************************************** */static void GenObjectGetVar(void *,int,EXPRESSION *,struct lhsParseNode *,int);static intBool IsSimpleSlotVariable(struct lhsParseNode *);static EXPRESSION *GenerateSlotComparisonTest(void *,int,int,struct lhsParseNode *,struct lhsParseNode *);/* =========================================   *****************************************          EXTERNALLY VISIBLE FUNCTIONS   =========================================   ***************************************** *//**********************************************  Build functions used by AddPatternParser() to  provide object access to the join nertwork **********************************************/globle void ReplaceGetJNObjectValue(  void *theEnv,  EXPRESSION *theItem,  struct lhsParseNode *theNode,  int side)  {   GenObjectGetVar(theEnv,TRUE,theItem,theNode,side);  }globle EXPRESSION *GenGetJNObjectValue(  void *theEnv,  struct lhsParseNode *theNode,  int side)  {   EXPRESSION *theItem;   theItem = GenConstant(theEnv,0,NULL);   GenObjectGetVar(theEnv,TRUE,theItem,theNode,side);   return(theItem);  }globle EXPRESSION *ObjectJNVariableComparison(  void *theEnv,  struct lhsParseNode *selfNode,  struct lhsParseNode *referringNode,  int isNand)  {    return(GenerateSlotComparisonTest(theEnv,TRUE,isNand,selfNode,referringNode));  }/**********************************************  Build functions used by AddPatternParser() to  provide object access to the pattern network **********************************************/globle EXPRESSION *GenObjectPNConstantCompare(  void *theEnv,  struct lhsParseNode *theNode)  {   struct ObjectCmpPNConstant hack;   EXPRESSION *theExp;   unsigned short tmpType;   /* ===============================================================      If the value of a single field slot (or relation name) is being      compared against a constant, then use specialized routines for      doing the comparison.      If a constant comparison is being done within a multifield slot      and the constant's position has no multifields to the left or      no multifields to the right, then use the same routine used for      the single field slot case, but include the offset from either      the beginning or end of the slot.      Otherwise, use a general eq/neq test.      =============================================================== */   ClearBitString((void *) &hack,(int) sizeof(struct ObjectCmpPNConstant));   if (theNode->negated)     hack.fail = 1;   else     hack.pass = 1;   if (((theNode->withinMultifieldSlot == FALSE) ||        (theNode->multiFieldsAfter == 0) ||        (theNode->multiFieldsBefore == 0)) &&       (theNode->slotNumber != ISA_ID) && (theNode->slotNumber != NAME_ID))     {      if (theNode->withinMultifieldSlot == FALSE)        hack.fromBeginning = TRUE;      else if (theNode->multiFieldsBefore == 0)        {         hack.fromBeginning = TRUE;         hack.offset = theNode->singleFieldsBefore;        }      else        hack.offset = theNode->singleFieldsAfter;      theExp = GenConstant(theEnv,OBJ_PN_CONSTANT,AddBitMap(theEnv,(void *) &hack,                                        (int) sizeof(struct ObjectCmpPNConstant)));      theExp->argList = GenConstant(theEnv,theNode->type,theNode->value);     }   else     {      hack.general = 1;      theExp = GenConstant(theEnv,OBJ_PN_CONSTANT,AddBitMap(theEnv,(void *) &hack,                                        (int) sizeof(struct ObjectCmpPNConstant)));      theExp->argList = GenConstant(theEnv,0,NULL);      tmpType = theNode->type;      theNode->type = SF_VARIABLE;      GenObjectGetVar(theEnv,FALSE,theExp->argList,theNode,-1);      theNode->type = tmpType;      theExp->argList->nextArg = GenConstant(theEnv,theNode->type,theNode->value);     }   return(theExp);  }globle void ReplaceGetPNObjectValue(  void *theEnv,  EXPRESSION *theItem,  struct lhsParseNode *theNode)  {   GenObjectGetVar(theEnv,FALSE,theItem,theNode,-1);  }globle EXPRESSION *GenGetPNObjectValue(  void *theEnv,  struct lhsParseNode *theNode)  {   EXPRESSION *theItem;   theItem = GenConstant(theEnv,0,NULL);   GenObjectGetVar(theEnv,FALSE,theItem,theNode,-1);   return(theItem);  }globle EXPRESSION *ObjectPNVariableComparison(  void *theEnv,  struct lhsParseNode *selfNode,  struct lhsParseNode *referringNode)  {   return(GenerateSlotComparisonTest(theEnv,FALSE,FALSE,selfNode,referringNode));  }/****************************************************  NAME         : GenObjectLengthTest  DESCRIPTION  : Generates a test on the cardinality                 of a slot matching an object pattern  INPUTS       : The first lhsParseNode for a slot                 in an object pattern  RETURNS      : Nothing useful  SIDE EFFECTS : The lhsParseNode network test is                 modified to include the length test  NOTES        : None ****************************************************/globle void GenObjectLengthTest(  void *theEnv,  struct lhsParseNode *theNode)  {   struct ObjectMatchLength hack;   EXPRESSION *theTest;   if ((theNode->singleFieldsAfter == 0) &&       (theNode->type != SF_VARIABLE) &&       (theNode->type != SF_WILDCARD))     return;   ClearBitString((void *) &hack,(int) sizeof(struct ObjectMatchLength));   if ((theNode->type != MF_VARIABLE) &&       (theNode->type != MF_WILDCARD) &&       (theNode->multiFieldsAfter == 0))     hack.exactly = 1;   else     hack.exactly = 0;   if ((theNode->type == SF_VARIABLE) || (theNode->type == SF_WILDCARD))     hack.minLength = 1 + theNode->singleFieldsAfter;   else     hack.minLength = theNode->singleFieldsAfter;   theTest = GenConstant(theEnv,OBJ_SLOT_LENGTH,AddBitMap(theEnv,(void *) &hack,                                         (int) sizeof(struct ObjectMatchLength)));                                            if (theNode->constantSelector != NULL)     { theNode->constantSelector->nextArg = CopyExpression(theEnv,theTest); }   theNode->networkTest = CombineExpressions(theEnv,theTest,theNode->networkTest);  }/****************************************************  NAME         : GenObjectZeroLengthTest  DESCRIPTION  : Generates a test on the cardinality                 of a slot matching an object pattern  INPUTS       : The first lhsParseNode for a slot                 in an object pattern  RETURNS      : Nothing useful  SIDE EFFECTS : The lhsParseNode network test is                 modified to include the length test  NOTES        : None ****************************************************/globle void GenObjectZeroLengthTest(  void *theEnv,  struct lhsParseNode *theNode)  {   struct ObjectMatchLength hack;   EXPRESSION *theTest;   ClearBitString((void *) &hack,(int) sizeof(struct ObjectMatchLength));   hack.exactly = 1;   hack.minLength = 0;   theTest = GenConstant(theEnv,OBJ_SLOT_LENGTH,AddBitMap(theEnv,(void *) &hack,                                         (int) sizeof(struct ObjectMatchLength)));   theNode->networkTest = CombineExpressions(theEnv,theTest,theNode->networkTest);  }/* =========================================   *****************************************          INTERNALLY VISIBLE FUNCTIONS   =========================================   ***************************************** *//***************************************************  NAME         : GenObjectGetVar  DESCRIPTION  : Generates the expressions necessary                 to access object pattern variables  INPUTS       : 1) An integer code indicating if                    this is a join network reference                    or a pattern network reference                 2) The expression for which to set                    the type and value                 3) The lhsParseNode for the                    variable reference                 4) For a join reference, the side from                    which the variable must be retrieved.  RETURNS      : Nothing useful  SIDE EFFECTS : The value is a packed long holding                 pattern index, slot number,                 field index, etc.  NOTES        : None ***************************************************/static void GenObjectGetVar(  void *theEnv,  int joinReference,  EXPRESSION *theItem,  struct lhsParseNode *theNode,  int side)  {   struct ObjectMatchVar1 hack1;   struct ObjectMatchVar2 hack2;   ClearBitString((void *) &hack1,(int) sizeof(struct ObjectMatchVar1));   ClearBitString((void *) &hack2,(int) sizeof(struct ObjectMatchVar2));   if (joinReference)     {      /*      hack1.whichPattern = (unsigned short) theNode->pattern;      hack2.whichPattern = (unsigned short) theNode->pattern;      */      if (side == LHS)        {          hack1.lhs = 1;          hack2.lhs = 1;          hack1.whichPattern = (unsigned short) theNode->joinDepth;         hack2.whichPattern = (unsigned short) theNode->joinDepth;        }      else if (side == RHS)        {          hack1.rhs = 1;          hack2.rhs = 1;          hack1.whichPattern = (unsigned short) 0;         hack2.whichPattern = (unsigned short) 0;        }      else if (side == NESTED_RHS)        {          hack1.rhs = 1;          hack2.rhs = 1;          hack1.whichPattern = (unsigned short) theNode->joinDepth;         hack2.whichPattern = (unsigned short) theNode->joinDepth;        }      else        {          hack1.whichPattern = (unsigned short) theNode->joinDepth;          hack2.whichPattern = (unsigned short) theNode->joinDepth;         }     }   /* ========================      Access an object address      ======================== */   if (theNode->slotNumber < 0)     {      hack1.objectAddress = 1;      SetpType(theItem,(joinReference ? OBJ_GET_SLOT_JNVAR1 : OBJ_GET_SLOT_PNVAR1));      theItem->value = AddBitMap(theEnv,(void *) &hack1,(int) sizeof(struct ObjectMatchVar1));      return;     }   /* ======================================      Access the entire contents of the slot      ====================================== */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜视频在线观看一区二区三区 | 亚洲欧美激情插| 国产精品国产精品国产专区不片| 亚洲免费观看视频| 日韩电影网1区2区| 国产成人欧美日韩在线电影 | 午夜欧美大尺度福利影院在线看| 久久精品免费看| 99综合影院在线| 欧美精品18+| 国产精品三级久久久久三级| 在线观看视频欧美| 欧美一区二区国产| 亚洲欧洲在线观看av| 日本系列欧美系列| 成人18精品视频| 91精品1区2区| 欧美日本精品一区二区三区| 精品国产污污免费网站入口| 国产精品久久久久影院色老大 | 欧美夫妻性生活| 国产精品国产三级国产普通话三级| 日韩电影在线一区二区三区| 成人午夜电影网站| 欧美一区二区观看视频| 在线观看视频一区二区欧美日韩| 日本欧美一区二区三区| 日日夜夜一区二区| 亚洲第一狼人社区| 亚洲国产欧美日韩另类综合| 一片黄亚洲嫩模| 亚洲综合在线免费观看| 亚洲三级在线免费| 国产精品不卡一区| 亚洲人成网站精品片在线观看| 久久看人人爽人人| 久久欧美一区二区| 久久九九影视网| 国产欧美一区二区精品性| 久久久一区二区| 久久影院午夜片一区| 久久久国产午夜精品| 国产婷婷一区二区| 亚洲国产成人午夜在线一区| 亚洲国产成人私人影院tom | 麻豆精品在线视频| 久久国产福利国产秒拍| 国产在线视频一区二区| 国产美女主播视频一区| 在线精品视频一区二区三四| 欧美日韩国产综合久久| 欧美一区二区三区视频免费| 日韩美女视频在线| 欧美国产精品中文字幕| 亚洲日韩欧美一区二区在线| 亚洲综合自拍偷拍| 免费成人在线观看| 韩国精品免费视频| 成人97人人超碰人人99| 在线观看视频一区二区欧美日韩| 在线播放日韩导航| 国产午夜亚洲精品羞羞网站| 亚洲人成网站在线| 日韩av一二三| 国产激情视频一区二区在线观看 | 日韩欧美在线123| 国产色综合一区| 亚洲精品久久7777| 麻豆精品新av中文字幕| 丁香六月综合激情| 欧美综合色免费| 精品日韩一区二区三区| 国产精品视频观看| 亚洲电影第三页| 国产成人啪免费观看软件| 91黄色激情网站| 欧美xxxxxxxxx| 亚洲免费av观看| 久久国产精品99久久久久久老狼| 本田岬高潮一区二区三区| 欧美色倩网站大全免费| 国产亚洲短视频| 精品少妇一区二区三区免费观看 | av中文字幕亚洲| 欧美日韩综合不卡| 久久免费视频色| 亚洲一区二区三区四区在线免费观看 | 亚洲成人自拍网| 国产精品综合网| 在线不卡一区二区| 日本欧美在线看| 不卡一区二区中文字幕| 欧美夫妻性生活| 亚洲欧洲另类国产综合| 日韩高清一区在线| 成人一级片网址| 51精品久久久久久久蜜臀| 国产精品污www在线观看| 午夜电影网一区| a4yy欧美一区二区三区| 2017欧美狠狠色| 日韩黄色一级片| 色噜噜狠狠色综合欧洲selulu| 欧美电影免费观看高清完整版在线观看| 国产精品你懂的| 六月丁香婷婷久久| 国产麻豆日韩欧美久久| 欧美三级在线看| 国产精品成人一区二区三区夜夜夜 | 久久色视频免费观看| 亚洲午夜羞羞片| 91在线视频免费91| 久久精品男人的天堂| 九色综合国产一区二区三区| 欧美男生操女生| 综合婷婷亚洲小说| 风间由美一区二区三区在线观看| 日韩欧美亚洲国产另类 | 亚洲成人激情社区| 99re视频这里只有精品| 国产色产综合色产在线视频 | 国产91精品一区二区| 日韩精品中文字幕在线一区| 日韩综合一区二区| 欧美日韩电影在线播放| 亚洲综合图片区| 欧美亚洲高清一区| 夜夜嗨av一区二区三区四季av| 波多野结衣在线aⅴ中文字幕不卡| 久久人人爽人人爽| 国产夫妻精品视频| 国产欧美一区二区在线观看| 国产成人丝袜美腿| 国产精品福利一区二区三区| 国产成人8x视频一区二区| 久久久久久久久久电影| 国产成人a级片| 中文字幕乱码亚洲精品一区| 国产91在线|亚洲| 中文一区一区三区高中清不卡| 国产电影一区在线| 国产精品福利一区| 色94色欧美sute亚洲13| 夜色激情一区二区| 欧美精品日韩综合在线| 日本成人在线电影网| 精品国产一区二区三区久久影院| 国模娜娜一区二区三区| 亚洲国产精品av| 91在线一区二区| 国产99一区视频免费| 国产精品久久久久久福利一牛影视 | 91久久精品网| 一区二区高清视频在线观看| 欧美日韩亚洲不卡| 免费看欧美女人艹b| 久久九九久久九九| av在线免费不卡| 午夜av一区二区| 精品va天堂亚洲国产| 国产91精品欧美| 艳妇臀荡乳欲伦亚洲一区| 日韩午夜在线观看| 国产成人综合亚洲91猫咪| 国产精品久久久久桃色tv| 91成人看片片| 久久99精品久久久久久| 国产精品理论在线观看| 在线观看国产一区二区| 卡一卡二国产精品 | av一区二区三区黑人| 亚洲一区在线观看视频| 日韩一区二区麻豆国产| 国产东北露脸精品视频| 亚洲伊人伊色伊影伊综合网| 26uuu成人网一区二区三区| 91日韩一区二区三区| 麻豆精品国产传媒mv男同| 国产精品萝li| 91精品国产入口在线| av电影天堂一区二区在线| 无码av中文一区二区三区桃花岛| 国产午夜精品理论片a级大结局| 欧美这里有精品| 国产精品综合一区二区| 午夜视频在线观看一区二区三区| 久久久av毛片精品| 欧美高清你懂得| 97精品久久久久中文字幕| 看电影不卡的网站| 一区二区免费视频| 欧美国产1区2区| 欧美成人精品福利| 在线精品亚洲一区二区不卡| 国产精品一区二区x88av| 午夜日韩在线电影| 亚洲欧美激情在线| 日本一区二区三区免费乱视频| 欧美一区二区三区在线视频| 91国产精品成人|