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

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

?? moduldef.c

?? clips源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.24  06/05/06            */   /*                                                     */   /*                  DEFMODULE MODULE                   */   /*******************************************************//*************************************************************//* Purpose: Defines basic defmodule primitive functions such *//*   as allocating and deallocating, traversing, and finding *//*   defmodule data structures.                              *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*                                                           *//* Contributing Programmer(s):                               *//*      Brian L. Donnell                                     *//*                                                           *//* Revision History:                                         *//*      6.23: Correction for FalseSymbol/TrueSymbol. DR0859  *//*                                                           *//*            Corrected compilation errors for files         *//*            generated by constructs-to-c. DR0861           *//*                                                           *//*      6.24: Renamed BOOLEAN macro type to intBool.         *//*                                                           *//*************************************************************/#define _MODULDEF_SOURCE_#include "setup.h"#include <stdio.h>#include <string.h>#define _STDIO_INCLUDED_#include "memalloc.h"#include "constant.h"#include "router.h"#include "extnfunc.h"#include "argacces.h"#include "constrct.h"#include "modulpsr.h"#include "modulcmp.h"#include "modulbsc.h"#include "utility.h"#include "envrnmnt.h"#if BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE#include "bload.h"#include "modulbin.h"#endif#include "moduldef.h"/***************************************//* LOCAL INTERNAL FUNCTION DEFINITIONS *//***************************************/#if (! RUN_TIME)   static void                       ReturnDefmodule(void *,struct defmodule *,intBool);#endif   static void                       DeallocateDefmoduleData(void *);/**************************************************************//* InitializeDefmodules: Initializes the defmodule construct. *//**************************************************************/globle void AllocateDefmoduleGlobals(  void *theEnv)  {   AllocateEnvironmentData(theEnv,DEFMODULE_DATA,sizeof(struct defmoduleData),NULL);   AddEnvironmentCleanupFunction(theEnv,"defmodules",DeallocateDefmoduleData,-1000);   DefmoduleData(theEnv)->CallModuleChangeFunctions = TRUE;   DefmoduleData(theEnv)->MainModuleRedefinable = TRUE;  }/****************************************************//* DeallocateDefmoduleData: Deallocates environment *//*    data for the defmodule construct.             *//****************************************************/static void DeallocateDefmoduleData(  void *theEnv)  {   struct moduleStackItem *tmpMSPtr, *nextMSPtr;   struct moduleItem *tmpMIPtr, *nextMIPtr;#if (! RUN_TIME) && (! BLOAD_ONLY)   struct defmodule *tmpDMPtr, *nextDMPtr;   struct portConstructItem *tmpPCPtr, *nextPCPtr;#endif#if (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE) && (! RUN_TIME)   int i;   size_t space;#endif#if (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE) && (! RUN_TIME)   for (i = 0; i < DefmoduleData(theEnv)->BNumberOfDefmodules; i++)     {      if (DefmoduleData(theEnv)->DefmoduleArray[i].itemsArray != NULL)        {          rm(theEnv,DefmoduleData(theEnv)->DefmoduleArray[i].itemsArray,            sizeof(void *) * GetNumberOfModuleItems(theEnv));        }     }   space = DefmoduleData(theEnv)->BNumberOfDefmodules * sizeof(struct defmodule);   if (space != 0)      {      genfree(theEnv,(void *) DefmoduleData(theEnv)->DefmoduleArray,space);      DefmoduleData(theEnv)->ListOfDefmodules = NULL;     }   space = DefmoduleData(theEnv)->NumberOfPortItems * sizeof(struct portItem);   if (space != 0) genfree(theEnv,(void *) DefmoduleData(theEnv)->PortItemArray,space);#endif#if (! RUN_TIME) && (! BLOAD_ONLY)   tmpDMPtr = DefmoduleData(theEnv)->ListOfDefmodules;   while (tmpDMPtr != NULL)     {      nextDMPtr = tmpDMPtr->next;      ReturnDefmodule(theEnv,tmpDMPtr,TRUE);      tmpDMPtr = nextDMPtr;     }   tmpPCPtr = DefmoduleData(theEnv)->ListOfPortConstructItems;   while (tmpPCPtr != NULL)     {      nextPCPtr = tmpPCPtr->next;      rtn_struct(theEnv,portConstructItem,tmpPCPtr);      tmpPCPtr = nextPCPtr;     }#endif   tmpMSPtr = DefmoduleData(theEnv)->ModuleStack;   while (tmpMSPtr != NULL)     {      nextMSPtr = tmpMSPtr->next;      rtn_struct(theEnv,moduleStackItem,tmpMSPtr);      tmpMSPtr = nextMSPtr;     }   tmpMIPtr = DefmoduleData(theEnv)->ListOfModuleItems;   while (tmpMIPtr != NULL)     {      nextMIPtr = tmpMIPtr->next;      rtn_struct(theEnv,moduleItem,tmpMIPtr);      tmpMIPtr = nextMIPtr;     }     #if (! RUN_TIME) && (! BLOAD_ONLY)   DeallocateCallList(theEnv,DefmoduleData(theEnv)->AfterModuleDefinedFunctions);#endif   DeallocateCallList(theEnv,DefmoduleData(theEnv)->AfterModuleChangeFunctions);  }  /**************************************************************//* InitializeDefmodules: Initializes the defmodule construct. *//**************************************************************/globle void InitializeDefmodules(  void *theEnv)  {   DefmoduleBasicCommands(theEnv);#if (! RUN_TIME)   CreateMainModule(theEnv);#endif#if DEFMODULE_CONSTRUCT && (! RUN_TIME) && (! BLOAD_ONLY)   AddConstruct(theEnv,"defmodule","defmodules",ParseDefmodule,NULL,NULL,NULL,NULL,                                                        NULL,NULL,NULL,NULL,NULL);#endif#if (! RUN_TIME) && DEFMODULE_CONSTRUCT   EnvDefineFunction2(theEnv,"get-current-module", 'w',                   PTIEF GetCurrentModuleCommand,                   "GetCurrentModuleCommand", "00");   EnvDefineFunction2(theEnv,"set-current-module", 'w',                   PTIEF SetCurrentModuleCommand,                   "SetCurrentModuleCommand", "11w");#endif  }/******************************************************//* RegisterModuleItem: Called to register a construct *//*   which can be placed within a module.             *//******************************************************/globle int RegisterModuleItem(   void *theEnv,   char *theItem,   void *(*allocateFunction)(void *),   void (*freeFunction)(void *,void *),   void *(*bloadModuleReference)(void *,int),   void  (*constructsToCModuleReference)(void *,FILE *,int,int,int),   void *(*findFunction)(void *,char *))  {   struct moduleItem *newModuleItem;   newModuleItem = get_struct(theEnv,moduleItem);   newModuleItem->name = theItem;   newModuleItem->allocateFunction = allocateFunction;   newModuleItem->freeFunction = freeFunction;   newModuleItem->bloadModuleReference = bloadModuleReference;   newModuleItem->constructsToCModuleReference = constructsToCModuleReference;   newModuleItem->findFunction = findFunction;   newModuleItem->moduleIndex = DefmoduleData(theEnv)->NumberOfModuleItems++;   newModuleItem->next = NULL;   if (DefmoduleData(theEnv)->LastModuleItem == NULL)     {      DefmoduleData(theEnv)->ListOfModuleItems = newModuleItem;      DefmoduleData(theEnv)->LastModuleItem = newModuleItem;     }   else     {      DefmoduleData(theEnv)->LastModuleItem->next = newModuleItem;      DefmoduleData(theEnv)->LastModuleItem = newModuleItem;     }   return(newModuleItem->moduleIndex);  }/***********************************************************//* GetListOfModuleItems: Returns the list of module items. *//***********************************************************/globle struct moduleItem *GetListOfModuleItems(  void *theEnv)  {   return (DefmoduleData(theEnv)->ListOfModuleItems);  }/***************************************************************//* GetNumberOfModuleItems: Returns the number of module items. *//***************************************************************/globle int GetNumberOfModuleItems(  void *theEnv)  {   return (DefmoduleData(theEnv)->NumberOfModuleItems);  }/********************************************************//* FindModuleItem: Finds the module item data structure *//*   corresponding to the specified name.               *//********************************************************/globle struct moduleItem *FindModuleItem(  void *theEnv,  char *theName)  {   struct moduleItem *theModuleItem;   for (theModuleItem = DefmoduleData(theEnv)->ListOfModuleItems;        theModuleItem != NULL;        theModuleItem = theModuleItem->next)     { if (strcmp(theModuleItem->name,theName) == 0) return(theModuleItem); }   return(NULL);  }/******************************************//* EnvGetCurrentModule: Returns a pointer *//*   to the current module.               *//******************************************/globle void *EnvGetCurrentModule(  void *theEnv)  {   return ((void *) DefmoduleData(theEnv)->CurrentModule);  }/**************************************************************//* EnvSetCurrentModule: Sets the value of the current module. *//**************************************************************/globle void *EnvSetCurrentModule(  void *theEnv,  void *xNewValue)  {   struct defmodule *newValue = (struct defmodule *) xNewValue;   struct callFunctionItem *changeFunctions;   void *rv;   /*=============================================*/   /* Change the current module to the specified  */   /* module and save the previous current module */   /* for the return value.                       */   /*=============================================*/   rv = (void *) DefmoduleData(theEnv)->CurrentModule;   DefmoduleData(theEnv)->CurrentModule = newValue;   /*==========================================================*/   /* Call the list of registered functions that need to know  */   /* when the module has changed. The module change functions */   /* should only be called if this is a "real" module change. */   /* Many routines temporarily change the module to look for  */   /* constructs, etc. The SaveCurrentModule function will     */   /* disable the change functions from being called.          */   /*==========================================================*/   if (DefmoduleData(theEnv)->CallModuleChangeFunctions)     {      DefmoduleData(theEnv)->ModuleChangeIndex++;      changeFunctions = DefmoduleData(theEnv)->AfterModuleChangeFunctions;      while (changeFunctions != NULL)        {         (* (void (*)(void *)) changeFunctions->func)(theEnv);         changeFunctions = changeFunctions->next;        }     }   /*=====================================*/   /* Return the previous current module. */   /*=====================================*/   return(rv);  }/********************************************************//* SaveCurrentModule: Saves current module on stack and *//*   prevents SetCurrentModule() from calling change    *//*   functions                                          *//********************************************************/globle void SaveCurrentModule(  void *theEnv)  {   MODULE_STACK_ITEM *tmp;   tmp = get_struct(theEnv,moduleStackItem);   tmp->changeFlag = DefmoduleData(theEnv)->CallModuleChangeFunctions;   DefmoduleData(theEnv)->CallModuleChangeFunctions = FALSE;   tmp->theModule = DefmoduleData(theEnv)->CurrentModule;   tmp->next = DefmoduleData(theEnv)->ModuleStack;   DefmoduleData(theEnv)->ModuleStack = tmp;  }/**********************************************************//* RestoreCurrentModule: Restores saved module and resets *//*   ability of SetCurrentModule() to call changed        *//*   functions to previous state                          *//**********************************************************/globle void RestoreCurrentModule(  void *theEnv)  {   MODULE_STACK_ITEM *tmp;   tmp = DefmoduleData(theEnv)->ModuleStack;   DefmoduleData(theEnv)->ModuleStack = tmp->next;   DefmoduleData(theEnv)->CallModuleChangeFunctions = tmp->changeFlag;   DefmoduleData(theEnv)->CurrentModule = tmp->theModule;   rtn_struct(theEnv,moduleStackItem,tmp);  }/*************************************************************//* GetModuleItem: Returns the data pointer for the specified *//*   module item in the specified module. If no module is    *//*   indicated, then the module item for the current module  *//*   is returned.                                            *//*************************************************************/globle void *GetModuleItem(  void *theEnv,  struct defmodule *theModule,  int moduleItemIndex)  {   if (theModule == NULL)     {      if (DefmoduleData(theEnv)->CurrentModule == NULL) return(NULL);      theModule = DefmoduleData(theEnv)->CurrentModule;     }   if (theModule->itemsArray == NULL) return (NULL);   return ((void *) theModule->itemsArray[moduleItemIndex]);  }/************************************************************//* SetModuleItem: Sets the data pointer for the specified   *//*   module item in the specified module. If no module is   *//*   indicated, then the module item for the current module *//*   is returned.                                           *//************************************************************/globle void SetModuleItem(  void *theEnv,  struct defmodule *theModule,  int moduleItemIndex,  void *newValue)  {   if (theModule == NULL)     {      if (DefmoduleData(theEnv)->CurrentModule == NULL) return;      theModule = DefmoduleData(theEnv)->CurrentModule;     }   if (theModule->itemsArray == NULL) return;   theModule->itemsArray[moduleItemIndex] = (struct defmoduleItemHeader *) newValue;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人毛片视频在线观看| 亚洲大尺度视频在线观看| 爽爽淫人综合网网站| 在线播放日韩导航| 国产综合成人久久大片91| 久久久精品欧美丰满| 色噜噜狠狠色综合中国| 国内久久精品视频| 亚洲超碰精品一区二区| 日韩欧美一区中文| 国产精品小仙女| 亚洲国产乱码最新视频| 欧美日韩一区二区三区在线| 午夜一区二区三区视频| 欧美不卡在线视频| av一本久道久久综合久久鬼色| 国产欧美va欧美不卡在线| 成人黄动漫网站免费app| 亚洲尤物视频在线| 欧美哺乳videos| 欧洲精品一区二区| 成人动漫精品一区二区| 国产精品久久久久久妇女6080| 免费久久99精品国产| 久久久久久久av麻豆果冻| 欧美sm极限捆绑bd| 成人免费视频app| 国产999精品久久| 91麻豆精品久久久久蜜臀| 中文字幕免费在线观看视频一区| 丝袜脚交一区二区| 久久久夜色精品亚洲| 色域天天综合网| 国产精品99精品久久免费| 中文字幕永久在线不卡| av福利精品导航| 亚洲色图.com| 欧美伦理电影网| 国产在线视频一区二区| 亚洲成人免费观看| 亚洲精品视频在线| 国产精品久久久久一区| 欧美国产一区在线| 欧美国产日韩在线观看| 亚洲国产综合91精品麻豆| 首页国产丝袜综合| 丁香啪啪综合成人亚洲小说 | 成人app在线| av在线播放成人| 欧美日韩国产小视频| 日本一区二区三区视频视频| 亚洲尤物视频在线| 国产一区二区影院| 色婷婷av一区二区三区软件 | 99精品视频在线观看| 久久精品噜噜噜成人av农村| 中文字幕在线观看不卡| 亚洲另类中文字| 午夜国产精品一区| 国产精品一区免费在线观看| 成人高清av在线| 一本到不卡免费一区二区| 日韩三级高清在线| 亚洲丝袜自拍清纯另类| 婷婷国产在线综合| 国模无码大尺度一区二区三区 | 7777精品伊人久久久大香线蕉的 | 国产精品麻豆视频| 亚洲欧美激情一区二区| 韩国av一区二区三区在线观看| 美女脱光内衣内裤视频久久网站 | 亚洲图片一区二区| 亚洲精品一区二区精华| 91精彩视频在线| 91色|porny| 日韩免费一区二区三区在线播放| 欧美激情一区二区三区不卡| 天堂一区二区在线| 粉嫩aⅴ一区二区三区四区| 2024国产精品| 国产欧美一区在线| 日本不卡123| 欧美日韩国产乱码电影| 奇米色一区二区三区四区| 日韩欧美区一区二| 国产精品亚洲午夜一区二区三区 | 同产精品九九九| 欧美日韩mp4| 国产精品一区二区三区乱码| 国产精品久久网站| 精品捆绑美女sm三区| 久久99九九99精品| 在线国产电影不卡| 国产精品视频观看| 丰满亚洲少妇av| 欧美大片在线观看| 麻豆免费精品视频| 欧美精品欧美精品系列| 一区二区三区免费网站| 国产+成+人+亚洲欧洲自线| 日韩精品一区在线| 蜜臀久久99精品久久久久宅男 | 亚洲欧洲制服丝袜| 免费视频一区二区| 日韩一区二区三区视频在线| 亚洲视频免费观看| 捆绑调教一区二区三区| 9l国产精品久久久久麻豆| 国产欧美精品一区| 精品一区二区在线播放| 亚洲二区在线视频| 国产精品卡一卡二| 色综合久久综合网| 亚洲国产精华液网站w| 久久99国产精品免费| 亚洲精品在线三区| 成人黄页在线观看| 久久久www免费人成精品| 亚洲一区二区视频在线| 欧美人与性动xxxx| 午夜精品123| 久久综合九色综合久久久精品综合| 亚洲国产另类av| 精品日韩一区二区| 亚洲成av人片在线| 在线观看一区不卡| 日本视频在线一区| 久久久午夜精品| 欧美午夜影院一区| 国产成人在线影院| 香港成人在线视频| 一级精品视频在线观看宜春院| 日韩视频中午一区| 国产成人精品亚洲777人妖| 日本不卡视频在线观看| 日韩avvvv在线播放| 无码av免费一区二区三区试看 | 欧美一区二区福利在线| 欧美日韩在线直播| 精品国一区二区三区| 精品91自产拍在线观看一区| 久久网这里都是精品| 亚洲激情五月婷婷| 免费不卡在线视频| 成人午夜av影视| 91首页免费视频| 欧美巨大另类极品videosbest | 91 com成人网| 国产成人免费在线观看不卡| 麻豆国产精品777777在线| 蜜桃视频一区二区三区| 日本精品免费观看高清观看| 国内精品嫩模私拍在线| 亚洲一区二区三区在线播放| 亚洲欧美另类在线| 一区二区三国产精华液| 亚洲欧美在线aaa| 国产欧美精品一区aⅴ影院| wwwwxxxxx欧美| 91精品国产高清一区二区三区蜜臀| 成人动漫中文字幕| 欧美一区三区二区| 风间由美一区二区三区在线观看| 国产成人精品免费看| 亚洲日本青草视频在线怡红院| 91麻豆精品国产91久久久久久久久| 99久久99久久精品免费观看| 91啪九色porn原创视频在线观看| 91香蕉视频在线| 制服丝袜日韩国产| 欧美亚洲综合久久| 91蜜桃视频在线| 91麻豆.com| av电影天堂一区二区在线| 波多野结衣亚洲| 91在线播放网址| 欧美精品一区二区三区在线| 一级女性全黄久久生活片免费| 国产成人精品亚洲午夜麻豆| 51久久夜色精品国产麻豆| 《视频一区视频二区| 韩国在线一区二区| 欧美日本一区二区在线观看| 精品粉嫩超白一线天av| 日韩电影免费一区| 在线成人免费视频| 中文字幕中文字幕一区| 粉嫩一区二区三区在线看| 中文字幕第一区综合| 国产精品影视在线| 久久久久国产成人精品亚洲午夜 | 久久精品一区四区| 久草中文综合在线| 日韩一区二区三区视频在线观看| 性欧美疯狂xxxxbbbb| 日韩一级大片在线| 激情六月婷婷综合| 最近日韩中文字幕| 色视频欧美一区二区三区| 精品国产在天天线2019|