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

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

?? extnfunc.c

?? clips源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.30  10/19/06            */   /*                                                     */   /*               EXTERNAL FUNCTION MODULE              */   /*******************************************************//*************************************************************//* Purpose: Routines for adding new user or system defined   *//*   functions.                                              *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*                                                           *//* Contributing Programmer(s):                               *//*      Brian L. Donnell                                     *//*                                                           *//* Revision History:                                         *//*                                                           *//*      6.24: Corrected code to remove run-time program      *//*            compiler warning.                              *//*                                                           *//*      6.30: Added support for passing context information  */ /*            to user defined functions.                     *//*                                                           *//*************************************************************/#define _EXTNFUNC_SOURCE_#include "setup.h"#include <ctype.h>#include <stdlib.h>#include "constant.h"#include "envrnmnt.h"#include "router.h"#include "memalloc.h"#include "evaluatn.h"#include "extnfunc.h"/***************************************//* LOCAL INTERNAL FUNCTION DEFINITIONS *//***************************************/   static void                    AddHashFunction(void *,struct FunctionDefinition *);   static void                    InitializeFunctionHashTable(void *);   static void                    DeallocateExternalFunctionData(void *);#if (! RUN_TIME)   static int                     RemoveHashFunction(void *,struct FunctionDefinition *);#endif/*********************************************************//* InitializeExternalFunctionData: Allocates environment *//*    data for external functions.                       *//*********************************************************/globle void InitializeExternalFunctionData(  void *theEnv)  {   AllocateEnvironmentData(theEnv,EXTERNAL_FUNCTION_DATA,sizeof(struct externalFunctionData),DeallocateExternalFunctionData);  }/***********************************************************//* DeallocateExternalFunctionData: Deallocates environment *//*    data for external functions.                         *//***********************************************************/static void DeallocateExternalFunctionData(  void *theEnv)  {   struct FunctionHash *fhPtr, *nextFHPtr;   int i;#if ! RUN_TIME   struct FunctionDefinition *tmpPtr, *nextPtr;   tmpPtr = ExternalFunctionData(theEnv)->ListOfFunctions;   while (tmpPtr != NULL)     {      nextPtr = tmpPtr->next;      rtn_struct(theEnv,FunctionDefinition,tmpPtr);      tmpPtr = nextPtr;     }#endif   if (ExternalFunctionData(theEnv)->FunctionHashtable == NULL)     { return; }        for (i = 0; i < SIZE_FUNCTION_HASH; i++)     {      fhPtr = ExternalFunctionData(theEnv)->FunctionHashtable[i];      while (fhPtr != NULL)        {         nextFHPtr = fhPtr->next;         rtn_struct(theEnv,FunctionHash,fhPtr);         fhPtr = nextFHPtr;        }     }      genfree(theEnv,ExternalFunctionData(theEnv)->FunctionHashtable,           (int) sizeof (struct FunctionHash *) * SIZE_FUNCTION_HASH);  }#if (! RUN_TIME)/************************************************************//* DefineFunction: Used to define a system or user external *//*   function so that the KB can access it.                 *//************************************************************/#if (! ENVIRONMENT_API_ONLY) && ALLOW_ENVIRONMENT_GLOBALSgloble int DefineFunction(  char *name,  int returnType,  int (*pointer)(void),  char *actualName)  {   void *theEnv;      theEnv = GetCurrentEnvironment();   return(DefineFunction3(theEnv,name,returnType,                          (int (*)(void *)) pointer,                          actualName,NULL,FALSE,NULL));  }#endif/***************************************************************//* EnvDefineFunction: Used to define a system or user external *//*   function so that the KB can access it.                    *//***************************************************************/globle int EnvDefineFunction(  void *theEnv,  char *name,  int returnType,  int (*pointer)(void *),  char *actualName)  {   return(DefineFunction3(theEnv,name,returnType,pointer,actualName,NULL,TRUE,NULL));  }  /************************************************************//* EnvDefineFunctionWithContext: Used to define a system or *//*   user external function so that the KB can access it.   *//************************************************************/globle int EnvDefineFunctionWithContext(  void *theEnv,  char *name,  int returnType,  int (*pointer)(void *),  char *actualName,  void *context)  {   return(DefineFunction3(theEnv,name,returnType,pointer,actualName,NULL,TRUE,context));  }  /*************************************************************//* DefineFunction2: Used to define a system or user external *//*   function so that the KB can access it.                  *//*************************************************************/#if (! ENVIRONMENT_API_ONLY) && ALLOW_ENVIRONMENT_GLOBALSgloble int DefineFunction2(  char *name,  int returnType,  int (*pointer)(void),  char *actualName,  char *restrictions)  {   void *theEnv;      theEnv = GetCurrentEnvironment();   return(DefineFunction3(theEnv,name,returnType,                          (int (*)(void *)) pointer,                          actualName,restrictions,FALSE,NULL));  }#endif  /*************************************************************//* EnvDefineFunction2: Used to define a system or user external *//*   function so that the KB can access it.                  *//*************************************************************/globle int EnvDefineFunction2(  void *theEnv,  char *name,  int returnType,  int (*pointer)(void *),  char *actualName,  char *restrictions)  {   return(DefineFunction3(theEnv,name,returnType,pointer,actualName,restrictions,TRUE,NULL));  }/*************************************************************//* EnvDefineFunction2WithContext: Used to define a system or *//*   user external function so that the KB can access it.    *//*************************************************************/globle int EnvDefineFunction2WithContext(  void *theEnv,  char *name,  int returnType,  int (*pointer)(void *),  char *actualName,  char *restrictions,  void *context)  {   return(DefineFunction3(theEnv,name,returnType,pointer,actualName,restrictions,TRUE,context));  }/*************************************************************//* DefineFunction3: Used to define a system or user external *//*   function so that the KB can access it. Allows argument  *//*   restrictions to be attached to the function.            *//*   Return types are:                                       *//*     a - external address                                  *//*     b - boolean integer (converted to symbol)             *//*     c - character (converted to symbol)                   *//*     d - double precision float                            *//*     f - single precision float (converted to double)      *//*     g - long long integer                                 *//*     i - integer (converted to long long integer)          *//*     j - unknown (symbol, string,                          *//*                  or instance name by convention)          *//*     k - unknown (symbol or string by convention)          *//*     l - long integer (converted to long long integer)     *//*     m - unknown (multifield by convention)                *//*     n - unknown (integer or float by convention)          *//*     o - instance name                                     *//*     s - string                                            *//*     u - unknown                                           *//*     v - void                                              *//*     w - symbol                                            *//*     x - instance address                                  *//*************************************************************/globle int DefineFunction3(  void *theEnv,  char *name,  int returnType,  int (*pointer)(void *),  char *actualName,  char *restrictions,  intBool environmentAware,  void *context)  {   struct FunctionDefinition *newFunction;   if ( (returnType != 'a') &&        (returnType != 'b') &&        (returnType != 'c') &&        (returnType != 'd') &&        (returnType != 'f') &&        (returnType != 'g') &&        (returnType != 'i') &&        (returnType != 'j') &&        (returnType != 'k') &&        (returnType != 'l') &&        (returnType != 'm') &&        (returnType != 'n') &&#if OBJECT_SYSTEM        (returnType != 'o') &&#endif        (returnType != 's') &&        (returnType != 'u') &&        (returnType != 'v') &&#if OBJECT_SYSTEM        (returnType != 'x') &&#endif        (returnType != 'w') )     { return(0); }   newFunction = FindFunction(theEnv,name);   if (newFunction == NULL)     {      newFunction = get_struct(theEnv,FunctionDefinition);      newFunction->callFunctionName = (SYMBOL_HN *) EnvAddSymbol(theEnv,name);      IncrementSymbolCount(newFunction->callFunctionName);      newFunction->next = GetFunctionList(theEnv);      ExternalFunctionData(theEnv)->ListOfFunctions = newFunction;      AddHashFunction(theEnv,newFunction);     }        newFunction->returnValueType = (char) returnType;   newFunction->functionPointer = (int (*)(void)) pointer;   newFunction->actualFunctionName = actualName;   if (restrictions != NULL)     {      if (((int) (strlen(restrictions)) < 2) ? TRUE :          ((! isdigit(restrictions[0]) && (restrictions[0] != '*')) ||           (! isdigit(restrictions[1]) && (restrictions[1] != '*'))))        restrictions = NULL;     }   newFunction->restrictions = restrictions;   newFunction->parser = NULL;   newFunction->overloadable = TRUE;   newFunction->sequenceuseok = TRUE;   newFunction->environmentAware = (short) environmentAware;   newFunction->usrData = NULL;   newFunction->context = context;   return(1);  }  /***********************************************//* UndefineFunction: Used to remove a function *//*   definition from the list of functions.    *//***********************************************/globle int UndefineFunction(  void *theEnv,  char *functionName)  {   SYMBOL_HN *findValue;   struct FunctionDefinition *fPtr, *lastPtr = NULL;   findValue = (SYMBOL_HN *) FindSymbolHN(theEnv,functionName);   for (fPtr = ExternalFunctionData(theEnv)->ListOfFunctions;        fPtr != NULL;        fPtr = fPtr->next)     {      if (fPtr->callFunctionName == findValue)        {         DecrementSymbolCount(theEnv,fPtr->callFunctionName);         RemoveHashFunction(theEnv,fPtr);         if (lastPtr == NULL)           { ExternalFunctionData(theEnv)->ListOfFunctions = fPtr->next; }         else           { lastPtr->next = fPtr->next; }                    ClearUserDataList(theEnv,fPtr->usrData);         rtn_struct(theEnv,FunctionDefinition,fPtr);         return(TRUE);        }      lastPtr = fPtr;     }   return(FALSE);  }/******************************************//* RemoveHashFunction: Removes a function *//*   from the function hash table.        *//******************************************/static int RemoveHashFunction(  void *theEnv,  struct FunctionDefinition *fdPtr)  {   struct FunctionHash *fhPtr, *lastPtr = NULL;   unsigned hashValue;   hashValue = HashSymbol(ValueToString(fdPtr->callFunctionName),SIZE_FUNCTION_HASH);   for (fhPtr = ExternalFunctionData(theEnv)->FunctionHashtable[hashValue];        fhPtr != NULL;        fhPtr = fhPtr->next)     {      if (fhPtr->fdPtr == fdPtr)        {         if (lastPtr == NULL)           { ExternalFunctionData(theEnv)->FunctionHashtable[hashValue] = fhPtr->next; }         else           { lastPtr->next = fhPtr->next; }         rtn_struct(theEnv,FunctionHash,fhPtr);         return(TRUE);        }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区三区在线看| 99re视频精品| 亚洲摸摸操操av| 日韩欧美久久一区| 色欧美片视频在线观看在线视频| 久久av中文字幕片| 一区二区三区日韩欧美精品| 精品国产三级a在线观看| 欧美影院精品一区| www.性欧美| 欧美日韩一卡二卡三卡 | 欧美伊人久久久久久久久影院 | 亚洲伦理在线精品| 日韩一区二区三免费高清| 99国产精品久久| 日韩在线观看一区二区| 中文字幕第一页久久| 国产精品123区| 国产精品美女一区二区| 欧美一区二区视频网站| 图片区小说区国产精品视频| 91色婷婷久久久久合中文| 狠狠色综合播放一区二区| 丝袜美腿亚洲色图| 亚洲激情图片qvod| 国产精品激情偷乱一区二区∴| 91日韩精品一区| 美国三级日本三级久久99| 国产日韩欧美激情| 欧洲精品视频在线观看| 99久久久精品免费观看国产蜜| 极品尤物av久久免费看| 日本在线不卡视频| 天堂在线亚洲视频| 午夜欧美在线一二页| 亚洲国产综合人成综合网站| 亚洲黄网站在线观看| 亚洲精品国产a久久久久久| 国产精品嫩草影院com| 国产精品午夜在线| 国产精品成人在线观看| 国产精品国产三级国产有无不卡| 国产精品伦理在线| 椎名由奈av一区二区三区| 亚洲视频在线观看一区| 亚洲另类色综合网站| 一区二区在线观看免费| 亚洲成人免费在线观看| 五月天激情综合| 久久国产福利国产秒拍| 国产精品主播直播| 成人激情开心网| 91蜜桃婷婷狠狠久久综合9色| 色婷婷综合视频在线观看| 欧美伊人久久久久久午夜久久久久| 欧美日本乱大交xxxxx| 91精品麻豆日日躁夜夜躁| 精品日本一线二线三线不卡| 久久精品亚洲国产奇米99| 国产精品三级av在线播放| 亚洲视频精选在线| 五月天激情综合| 国产激情视频一区二区三区欧美| 成人污污视频在线观看| 欧美性一二三区| 欧美变态凌虐bdsm| 国产精品国产自产拍在线| 亚洲国产精品久久人人爱| 美女任你摸久久| 成人免费视频播放| 欧美熟乱第一页| 亚洲精品一区二区三区精华液| 中文字幕精品一区 | 国产精品一区二区免费不卡 | 精品久久久久久久久久久久久久久| 欧美一区二区三区四区高清| 久久久久久久久岛国免费| 国产精品久久久久久久久久免费看 | 婷婷六月综合网| 国产精品一区二区久激情瑜伽| 99久久国产免费看| 欧美一级在线免费| 国产精品超碰97尤物18| 免费一级片91| 91香蕉视频mp4| 精品久久人人做人人爽| 亚洲精选免费视频| 国产一区二区在线影院| 欧美视频一区二区三区四区| 国产清纯白嫩初高生在线观看91 | 久久先锋影音av| 一区二区高清免费观看影视大全| 精品影视av免费| 在线视频一区二区免费| 国产夜色精品一区二区av| 亚洲成a人片在线观看中文| 国产69精品久久久久毛片| 制服丝袜亚洲网站| 中文字幕一区二区三区四区不卡| 蜜桃av噜噜一区| 欧美中文字幕一区| 国产精品久久久久天堂| 极品尤物av久久免费看| 欧美日韩一区二区在线观看 | 久久久久久麻豆| 视频一区中文字幕国产| 91色视频在线| 国产精品久久三| 国产一区 二区| 欧美一卡2卡三卡4卡5免费| 亚洲国产一区在线观看| av午夜精品一区二区三区| 久久欧美中文字幕| 久久国产精品99精品国产 | 丁香亚洲综合激情啪啪综合| 日韩精品一区二区三区视频播放| 亚洲一区二区三区视频在线| 91网址在线看| 亚洲欧美综合色| 成人午夜av在线| 国产女人18水真多18精品一级做| 日本vs亚洲vs韩国一区三区| 精品视频999| 亚洲线精品一区二区三区八戒| heyzo一本久久综合| 欧美激情一区二区三区蜜桃视频| 国产一区二区在线免费观看| 日韩欧美一区二区三区在线| 日本视频在线一区| 91精品国产综合久久久久久久久久 | 一区精品在线播放| 成人一道本在线| 中文字幕成人在线观看| 成人一级片网址| 国产精品国产三级国产| jizzjizzjizz欧美| 亚洲欧美经典视频| 91国产精品成人| 亚洲国产精品一区二区久久恐怖片| 欧美图区在线视频| 日韩专区欧美专区| 日韩欧美国产麻豆| 国产资源精品在线观看| 国产女人18水真多18精品一级做| 制服丝袜一区二区三区| 美日韩黄色大片| 久久亚洲私人国产精品va媚药| 国产精品亚洲人在线观看| 欧美极品少妇xxxxⅹ高跟鞋 | 视频一区视频二区在线观看| 欧美区在线观看| 日韩黄色免费电影| 精品国产在天天线2019| 国产成人免费9x9x人网站视频| 国产精品久久免费看| 欧洲一区在线电影| 免费观看久久久4p| 国产欧美日韩综合| 一本一道综合狠狠老| 香蕉加勒比综合久久| 精品国产一区二区国模嫣然| www.亚洲色图| 日韩电影在线观看电影| 久久久www成人免费无遮挡大片 | 欧美性三三影院| 麻豆精品新av中文字幕| 久久久国产午夜精品| 色婷婷精品久久二区二区蜜臂av| 婷婷六月综合网| 中文成人av在线| 欧美日韩精品一二三区| 国产一区二区在线视频| 一区二区不卡在线视频 午夜欧美不卡在| 欧美日韩国产首页在线观看| 国产一区二区三区免费| 一区二区三区四区蜜桃| 精品美女被调教视频大全网站| 成人精品国产福利| 午夜不卡av在线| 国产精品国产成人国产三级| 777亚洲妇女| 91香蕉视频在线| 国模大尺度一区二区三区| 亚洲免费在线观看| 久久这里只精品最新地址| 日本精品裸体写真集在线观看| 精一区二区三区| 洋洋成人永久网站入口| 久久久久久久国产精品影院| 欧美日韩中文国产| heyzo一本久久综合| 久热成人在线视频| 一区二区三区**美女毛片| 久久久久久久久久久久久久久99 | 中文字幕精品一区二区精品绿巨人| 欧美精品在线视频| 99久久精品免费看国产免费软件| 美女视频一区二区三区| 亚洲午夜日本在线观看| 国产精品久久久久久久浪潮网站|