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

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

?? tmpltutl.c

?? clips源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.24  06/05/06            */   /*                                                     */   /*            DEFTEMPLATE UTILITIES MODULE             */   /*******************************************************//*************************************************************//* Purpose: Provides utility routines for deftemplates.      *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*                                                           *//* Contributing Programmer(s):                               *//*      Brian L. Donnell                                     *//*                                                           *//* Revision History:                                         *//*      6.23: Added support for templates maintaining their  *//*            own list of facts.                             *//*                                                           *//*      6.24: Renamed BOOLEAN macro type to intBool.         *//*                                                           *//*            Added additional arguments to                  *//*            InvalidDeftemplateSlotMessage function.        *//*                                                           *//*            Added additional arguments to                  *//*            PrintTemplateFact function.                    *//*                                                           *//*************************************************************/#define  _TMPLTUTL_SOURCE_#include "setup.h"#if DEFTEMPLATE_CONSTRUCT#include <stdio.h>#define _STDIO_INCLUDED_#include <string.h>#include "extnfunc.h"#include "memalloc.h"#include "constrct.h"#include "router.h"#include "argacces.h"#include "cstrnchk.h"#include "envrnmnt.h"#include "tmpltfun.h"#include "tmpltpsr.h"#include "modulutl.h"#include "watch.h"#include "sysdep.h"#include "tmpltbsc.h"#include "tmpltdef.h"#include "tmpltutl.h"/********************************************************//* InvalidDeftemplateSlotMessage: Generic error message *//*   for use when a specified slot name isn't defined   *//*   in its corresponding deftemplate.                  *//********************************************************/globle void InvalidDeftemplateSlotMessage(  void *theEnv,  char *slotName,  char *deftemplateName,  int printCR)  {   PrintErrorID(theEnv,"TMPLTDEF",1,printCR);   EnvPrintRouter(theEnv,WERROR,"Invalid slot ");   EnvPrintRouter(theEnv,WERROR,slotName);   EnvPrintRouter(theEnv,WERROR," not defined in corresponding deftemplate ");   EnvPrintRouter(theEnv,WERROR,deftemplateName);   EnvPrintRouter(theEnv,WERROR,".\n");  }/**********************************************************//* SingleFieldSlotCardinalityError: Generic error message *//*   used when an attempt is made to placed a multifield  *//*   value into a single field slot.                      *//**********************************************************/globle void SingleFieldSlotCardinalityError(  void *theEnv,  char *slotName)  {   PrintErrorID(theEnv,"TMPLTDEF",2,TRUE);   EnvPrintRouter(theEnv,WERROR,"The single field slot ");   EnvPrintRouter(theEnv,WERROR,slotName);   EnvPrintRouter(theEnv,WERROR," can only contain a single field value.\n");  }/**********************************************************************//* MultiIntoSingleFieldSlotError: Determines if a multifield value is *//*   being placed into a single field slot of a deftemplate fact.     *//**********************************************************************/globle void MultiIntoSingleFieldSlotError(  void *theEnv,  struct templateSlot *theSlot,  struct deftemplate *theDeftemplate)  {   PrintErrorID(theEnv,"TMPLTFUN",2,TRUE);   EnvPrintRouter(theEnv,WERROR,"Attempted to assert a multifield value \n");   EnvPrintRouter(theEnv,WERROR,"into the single field slot ");   if (theSlot != NULL) EnvPrintRouter(theEnv,WERROR,theSlot->slotName->contents);   else EnvPrintRouter(theEnv,WERROR,"<<unknown>>");   EnvPrintRouter(theEnv,WERROR," of deftemplate ");   if (theDeftemplate != NULL) EnvPrintRouter(theEnv,WERROR,theDeftemplate->header.name->contents);   else EnvPrintRouter(theEnv,WERROR,"<<unknown>>");   EnvPrintRouter(theEnv,WERROR,".\n");   SetEvaluationError(theEnv,TRUE);  }/**************************************************************//* CheckTemplateFact: Checks a fact to see if it violates any *//*   deftemplate type, allowed-..., or range specifications.  *//**************************************************************/globle void CheckTemplateFact(  void *theEnv,  struct fact *theFact)  {   struct field *sublist;   int i;   struct deftemplate *theDeftemplate;   struct templateSlot *slotPtr;   DATA_OBJECT theData;   char thePlace[20];   int rv;   if (! EnvGetDynamicConstraintChecking(theEnv)) return;   sublist = theFact->theProposition.theFields;   /*========================================================*/   /* If the deftemplate corresponding to the first field of */   /* of the fact cannot be found, then the fact cannot be   */   /* checked against the deftemplate format.                */   /*========================================================*/   theDeftemplate = theFact->whichDeftemplate;   if (theDeftemplate == NULL) return;   if (theDeftemplate->implied) return;   /*=============================================*/   /* Check each of the slots of the deftemplate. */   /*=============================================*/   i = 0;   for (slotPtr = theDeftemplate->slotList;        slotPtr != NULL;        slotPtr = slotPtr->next)     {      /*================================================*/      /* Store the slot value in the appropriate format */      /* for a call to the constraint checking routine. */      /*================================================*/      if (slotPtr->multislot == FALSE)        {         theData.type = sublist[i].type;         theData.value = sublist[i].value;         i++;        }      else        {         theData.type = MULTIFIELD;         theData.value = (void *) sublist[i].value;         SetDOBegin(theData,1);         SetDOEnd(theData,((struct multifield *) sublist[i].value)->multifieldLength);         i++;        }      /*=============================================*/      /* Call the constraint checking routine to see */      /* if a constraint violation occurred.         */      /*=============================================*/      rv = ConstraintCheckDataObject(theEnv,&theData,slotPtr->constraints);      if (rv != NO_VIOLATION)        {         gensprintf(thePlace,"fact f-%-5lld ",theFact->factIndex);         PrintErrorID(theEnv,"CSTRNCHK",1,TRUE);         EnvPrintRouter(theEnv,WERROR,"Slot value ");         PrintDataObject(theEnv,WERROR,&theData);         EnvPrintRouter(theEnv,WERROR," ");         ConstraintViolationErrorMessage(theEnv,NULL,thePlace,FALSE,0,slotPtr->slotName,                                         0,rv,slotPtr->constraints,TRUE);         SetHaltExecution(theEnv,TRUE);         return;        }     }   return;  }/***********************************************************************//* CheckRHSSlotTypes: Checks the validity of a change to a slot as the *//*   result of an assert, modify, or duplicate command. This checking  *//*   is performed statically (i.e. when the command is being parsed).  *//***********************************************************************/globle intBool CheckRHSSlotTypes(  void *theEnv,  struct expr *rhsSlots,  struct templateSlot *slotPtr,  char *thePlace)  {   int rv;   char *theName;   if (EnvGetStaticConstraintChecking(theEnv) == FALSE) return(TRUE);      rv = ConstraintCheckExpressionChain(theEnv,rhsSlots,slotPtr->constraints);      if (rv != NO_VIOLATION)        {         if (rv != CARDINALITY_VIOLATION) theName = "A literal slot value";         else theName = "Literal slot values";         ConstraintViolationErrorMessage(theEnv,theName,thePlace,TRUE,0,                                         slotPtr->slotName,0,rv,slotPtr->constraints,TRUE);         return(0);        }   return(1);  }/*********************************************************//* GetNthSlot: Given a deftemplate and an integer index, *//*   returns the nth slot of a deftemplate.              *//*********************************************************/globle struct templateSlot *GetNthSlot(  struct deftemplate *theDeftemplate,  int position)  {   struct templateSlot *slotPtr;   int i = 0;   slotPtr = theDeftemplate->slotList;   while (slotPtr != NULL)     {      if (i == position) return(slotPtr);      slotPtr = slotPtr->next;      i++;     }   return(NULL);  }/*******************************************************//* FindSlotPosition: Finds the position of a specified *//*   slot in a deftemplate structure.                  *//*******************************************************/globle int FindSlotPosition(  struct deftemplate *theDeftemplate,  SYMBOL_HN *name)  {   struct templateSlot *slotPtr;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡欧美aaaaa| 亚洲欧美综合在线精品| 91丨九色丨尤物| 成人性生交大片免费看中文| 国产一区二区三区日韩| 国产自产2019最新不卡| 日韩一区二区在线看片| 欧美国产激情一区二区三区蜜月| 精品免费国产一区二区三区四区| 欧美系列一区二区| 欧美最猛黑人xxxxx猛交| 在线观看一区二区精品视频| 欧美综合一区二区| 69久久99精品久久久久婷婷| 欧美一区二区三区视频| 26uuu精品一区二区三区四区在线| 欧美一级二级三级蜜桃| 久久影院电视剧免费观看| 久久久精品中文字幕麻豆发布| 国产午夜精品久久久久久免费视| 日本一区二区在线不卡| 一区二区中文视频| 亚洲午夜影视影院在线观看| 欧美aⅴ一区二区三区视频| 免费看欧美女人艹b| 国产在线精品国自产拍免费| 成人激情免费电影网址| 欧美日韩精品专区| 久久久精品黄色| 亚洲香肠在线观看| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 91视频一区二区三区| 欧美性大战久久久久久久蜜臀| 91精品国产免费久久综合| 欧美国产日本视频| 午夜激情一区二区| 盗摄精品av一区二区三区| 欧美日韩午夜精品| 日本一二三四高清不卡| 偷窥少妇高潮呻吟av久久免费| 国产精品中文欧美| 欧美伦理影视网| 国产精品第13页| 麻豆一区二区在线| 欧洲在线/亚洲| 亚洲国产精品v| 久热成人在线视频| 欧美日韩日日骚| 亚洲国产精品精华液ab| 美国一区二区三区在线播放| av在线不卡免费看| 26uuu精品一区二区| 日韩激情一区二区| 色婷婷精品久久二区二区蜜臂av| 欧美精品一区二区三区一线天视频| 亚洲精品老司机| 波多野结衣在线一区| 欧美一区二区福利视频| 亚洲青青青在线视频| 国产不卡一区视频| 欧美精品一区二区三区在线| 日韩在线观看一区二区| 欧美日韩在线电影| 一区二区三区四区精品在线视频 | 国产网红主播福利一区二区| 视频一区欧美精品| 欧美日韩精品一区二区三区四区 | 久久你懂得1024| 日本不卡一二三| 91超碰这里只有精品国产| 在线亚洲欧美专区二区| 欧美伊人久久大香线蕉综合69| 成人免费毛片片v| 久久久久国产一区二区三区四区| 奇米一区二区三区| 日韩美女在线视频| 国产一区三区三区| 久久这里只精品最新地址| 精品一区二区三区的国产在线播放| 在线成人av网站| 蜜臀av一区二区在线观看| 91精品国产免费| 精品亚洲免费视频| 国产欧美一二三区| 99精品欧美一区二区蜜桃免费 | av午夜精品一区二区三区| 日本一区二区三区高清不卡 | 国产精品第四页| 91蜜桃在线免费视频| 亚洲男人天堂av| 欧美三级日韩三级国产三级| 五月天激情综合| wwwwww.欧美系列| 成人激情小说乱人伦| 亚洲码国产岛国毛片在线| 欧美色视频一区| 免费看日韩a级影片| 国产日韩欧美高清在线| av亚洲精华国产精华精| 亚洲成在人线免费| 日韩免费成人网| 99精品国产视频| 五月综合激情婷婷六月色窝| 欧美xxx久久| 99久久综合狠狠综合久久| 性感美女久久精品| 久久久久久久久久看片| 在线亚洲人成电影网站色www| 丝袜a∨在线一区二区三区不卡| 日韩精品在线看片z| 99精品视频一区| 日本美女视频一区二区| 国产精品第五页| 欧美日韩高清不卡| 六月丁香婷婷色狠狠久久| 成人福利电影精品一区二区在线观看| 国产精品久久毛片av大全日韩| 欧美亚洲综合色| 国产一区二区三区四区五区入口| 亚洲精品少妇30p| 久久伊99综合婷婷久久伊| 色诱视频网站一区| 国产精品1区2区3区| 亚洲成av人在线观看| 国产精品入口麻豆原神| 在线成人av网站| 欧美亚洲综合久久| 91性感美女视频| 国产成人av影院| 国精产品一区一区三区mba视频 | 亚洲亚洲精品在线观看| 国产欧美日产一区| 26uuu国产一区二区三区| 欧美日韩专区在线| 99久久久久久| 成人h动漫精品一区二区| 日韩一区二区三区在线视频| 91久久人澡人人添人人爽欧美| 国产一区二区按摩在线观看| 日日摸夜夜添夜夜添国产精品| 欧美韩国日本一区| 亚洲国产成人av好男人在线观看| 午夜电影一区二区| 欧美丰满高潮xxxx喷水动漫| 床上的激情91.| 日韩一区二区免费高清| 91麻豆国产福利在线观看| 国产制服丝袜一区| 久久精品国产77777蜜臀| 天天综合网天天综合色| 亚洲国产视频一区二区| 亚洲激情欧美激情| 亚洲精品高清视频在线观看| 中文字幕不卡的av| 国产精品国产三级国产普通话蜜臀 | 99精品桃花视频在线观看| 风间由美一区二区三区在线观看 | 欧美日韩黄色一区二区| 91免费视频观看| 色综合天天视频在线观看| av中文一区二区三区| 91免费观看在线| 欧美综合一区二区| 欧美一区二区国产| 久久久久久久综合色一本| 久久久一区二区三区捆绑**| 国产亚洲成aⅴ人片在线观看| 日本一区二区视频在线观看| 国产精品久久久一区麻豆最新章节| 欧美经典三级视频一区二区三区| 国产欧美日韩久久| 国产精品三级视频| 日韩电影在线观看电影| 视频一区视频二区在线观看| 99久久免费国产| 欧美一a一片一级一片| 日韩视频免费观看高清完整版| 欧美一级黄色片| 中文一区二区在线观看| 一区二区三区中文字幕在线观看| 午夜av区久久| 国内精品不卡在线| 色哟哟日韩精品| 91麻豆精品91久久久久同性| 亚洲精品一区二区三区福利| 日韩一区在线播放| 日韩精品免费专区| 不卡视频一二三| 欧美一区二区三区四区五区| 久久精品视频一区| 亚洲在线成人精品| 国产一区二区网址| 欧美性大战久久久久久久蜜臀| 久久视频一区二区| 亚洲午夜精品久久久久久久久| 国产综合色视频| 欧美最猛黑人xxxxx猛交| 国产午夜精品一区二区三区四区 | 在线中文字幕一区| 99vv1com这只有精品|