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

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

?? genrcpsr.c

?? clips源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
 ************************************************************************/globle DEFMETHOD *AddMethod(  void *theEnv,  DEFGENERIC *gfunc,  DEFMETHOD *meth,  int mposn,  short mi,  EXPRESSION *params,  int rcnt,  int lvars,  SYMBOL_HN *wildcard,  EXPRESSION *actions,  char *ppForm,  int copyRestricts)  {   RESTRICTION *rptr,*rtmp;   register int i,j;   int mai;   SaveBusyCount(gfunc);   if (meth == NULL)     {      mai = (mi != 0) ? FindMethodByIndex(gfunc,mi) : -1;      if (mai == -1)        meth = AddGenericMethod(theEnv,gfunc,mposn,mi);      else        {         DeleteMethodInfo(theEnv,gfunc,&gfunc->methods[mai]);         if (mai < mposn)           {            mposn--;            for (i = mai+1 ; i <= mposn ; i++)              GenCopyMemory(DEFMETHOD,1,&gfunc->methods[i-1],&gfunc->methods[i]);           }         else           {            for (i = mai-1 ; i >= mposn ; i--)              GenCopyMemory(DEFMETHOD,1,&gfunc->methods[i+1],&gfunc->methods[i]);           }         meth = &gfunc->methods[mposn];         meth->index = mi;        }     }   else     {      /* ================================         The old trace state is preserved         ================================ */      ExpressionDeinstall(theEnv,meth->actions);      ReturnPackedExpression(theEnv,meth->actions);      if (meth->ppForm != NULL)        rm(theEnv,(void *) meth->ppForm,(sizeof(char) * (strlen(meth->ppForm)+1)));     }   meth->system = 0;   meth->actions = actions;   ExpressionInstall(theEnv,meth->actions);   meth->ppForm = ppForm;   if (mposn == -1)     {      RestoreBusyCount(gfunc);      return(meth);     }   meth->localVarCount = lvars;   meth->restrictionCount = rcnt;   if (wildcard != NULL)     {      meth->minRestrictions = rcnt-1;      meth->maxRestrictions = -1;     }   else     meth->minRestrictions = meth->maxRestrictions = rcnt;   if (rcnt != 0)     meth->restrictions = (RESTRICTION *)                          gm2(theEnv,(sizeof(RESTRICTION) * rcnt));   else     meth->restrictions = NULL;   for (i = 0 ; i < rcnt ; i++)     {      rptr = &meth->restrictions[i];      rtmp = (RESTRICTION *) params->argList;      rptr->query = PackExpression(theEnv,rtmp->query);      rptr->tcnt = rtmp->tcnt;      if (copyRestricts)        {         if (rtmp->types != NULL)           {            rptr->types = (void **) gm2(theEnv,(rptr->tcnt * sizeof(void *)));            GenCopyMemory(void *,rptr->tcnt,rptr->types,rtmp->types);           }         else           rptr->types = NULL;        }      else        {         rptr->types = rtmp->types;         /* =====================================================            Make sure the types-array is not deallocated when the              temporary restriction nodes are            ===================================================== */         rtmp->tcnt = 0;         rtmp->types = NULL;        }      ExpressionInstall(theEnv,rptr->query);      for (j = 0 ; j < rptr->tcnt ; j++)#if OBJECT_SYSTEM        IncrementDefclassBusyCount(theEnv,rptr->types[j]);#else        IncrementIntegerCount((INTEGER_HN *) rptr->types[j]);#endif      params = params->nextArg;     }   RestoreBusyCount(gfunc);   return(meth);  }/*****************************************************  NAME         : PackRestrictionTypes  DESCRIPTION  : Takes the restriction type list                   and packs it into a contiguous                   array of void *.  INPUTS       : 1) The restriction structure                 2) The types expression list  RETURNS      : Nothing useful  SIDE EFFECTS : Array allocated & expressions freed  NOTES        : None *****************************************************/globle void PackRestrictionTypes(  void *theEnv,  RESTRICTION *rptr,  EXPRESSION *types)  {   EXPRESSION *tmp;   long i;   rptr->tcnt = 0;   for (tmp = types ; tmp != NULL ; tmp = tmp->nextArg)     rptr->tcnt++;   if (rptr->tcnt != 0)     rptr->types = (void **) gm2(theEnv,(sizeof(void *) * rptr->tcnt));   else     rptr->types = NULL;   for (i = 0 , tmp = types ; i < rptr->tcnt ; i++ , tmp = tmp->nextArg)     rptr->types[i] = (void *) tmp->value;   ReturnExpression(theEnv,types);  }/***************************************************  NAME         : DeleteTempRestricts  DESCRIPTION  : Deallocates the method                   temporary parameter list  INPUTS       : The head of the list  RETURNS      : Nothing useful  SIDE EFFECTS : List deallocated  NOTES        : None ***************************************************/globle void DeleteTempRestricts(  void *theEnv,  EXPRESSION *phead)  {   EXPRESSION *ptmp;   RESTRICTION *rtmp;   while (phead != NULL)     {      ptmp = phead;      phead = phead->nextArg;      rtmp = (RESTRICTION *) ptmp->argList;      rtn_struct(theEnv,expr,ptmp);      ReturnExpression(theEnv,rtmp->query);      if (rtmp->tcnt != 0)        rm(theEnv,(void *) rtmp->types,(sizeof(void *) * rtmp->tcnt));      rtn_struct(theEnv,restriction,rtmp);     }  }/**********************************************************  NAME         : FindMethodByRestrictions  DESCRIPTION  : See if a method for the specified                   generic satsifies the given restrictions  INPUTS       : 1) Generic function                 2) Parameter/restriction expression list                 3) Number of restrictions                 4) Wildcard symbol (can be NULL)                 5) Caller's buffer for holding array posn                      of where to add new generic method                      (-1 if method already present)  RETURNS      : The address of the found method, NULL if                    not found  SIDE EFFECTS : Sets the caller's buffer to the index of                   where to place the new method, -1 if                   already present  NOTES        : None **********************************************************/globle DEFMETHOD *FindMethodByRestrictions(  DEFGENERIC *gfunc,  EXPRESSION *params,  int rcnt,  SYMBOL_HN *wildcard,  int *posn)  {   register int i,cmp;   int min,max;   if (wildcard != NULL)     {      min = rcnt-1;      max = -1;     }   else     min = max = rcnt;   for (i = 0 ; i < gfunc->mcnt ; i++)     {      cmp = RestrictionsCompare(params,rcnt,min,max,&gfunc->methods[i]);      if (cmp == IDENTICAL)        {         *posn = -1;         return(&gfunc->methods[i]);        }      else if (cmp == HIGHER_PRECEDENCE)        {         *posn = i;         return(NULL);        }     }   *posn = i;   return(NULL);  }/* =========================================   *****************************************          INTERNALLY VISIBLE FUNCTIONS   =========================================   ***************************************** *//***********************************************************  NAME         : ValidGenericName  DESCRIPTION  : Determines if a particular function name                    can be overloaded  INPUTS       : The name  RETURNS      : TRUE if OK, FALSE otherwise  SIDE EFFECTS : Error message printed  NOTES        : GetConstructNameAndComment() (called before                 this function) ensures that the defgeneric                 name does not conflict with one from                 another module ***********************************************************/static intBool ValidGenericName(  void *theEnv,  char *theDefgenericName)  {   struct constructHeader *theDefgeneric;#if DEFFUNCTION_CONSTRUCT   struct defmodule *theModule;   struct constructHeader *theDeffunction;#endif   struct FunctionDefinition *systemFunction;   /* ============================================      A defgeneric cannot be named the same as a      construct type, e.g, defclass, defrule, etc.      ============================================ */   if (FindConstruct(theEnv,theDefgenericName) != NULL)     {      PrintErrorID(theEnv,"GENRCPSR",3,FALSE);      EnvPrintRouter(theEnv,WERROR,"Defgenerics are not allowed to replace constructs.\n");      return(FALSE);     }#if DEFFUNCTION_CONSTRUCT   /* ========================================      A defgeneric cannot be named the same as      a defffunction (either in this module or      imported from another)      ======================================== */   theDeffunction =      (struct constructHeader *) LookupDeffunctionInScope(theEnv,theDefgenericName);   if (theDeffunction != NULL)     {      theModule = GetConstructModuleItem(theDeffunction)->theModule;      if (theModule != ((struct defmodule *) EnvGetCurrentModule(theEnv)))        {         PrintErrorID(theEnv,"GENRCPSR",4,FALSE);         EnvPrintRouter(theEnv,WERROR,"Deffunction ");         EnvPrintRouter(theEnv,WERROR,EnvGetDeffunctionName(theEnv,(void *) theDeffunction));         EnvPrintRouter(theEnv,WERROR," imported from module ");         EnvPrintRouter(theEnv,WERROR,EnvGetDefmoduleName(theEnv,(void *) theModule));         EnvPrintRouter(theEnv,WERROR," conflicts with this defgeneric.\n");         return(FALSE);        }      else        {         PrintErrorID(theEnv,"GENRCPSR",5,FALSE);         EnvPrintRouter(theEnv,WERROR,"Defgenerics are not allowed to replace deffunctions.\n");        }      return(FALSE);     }#endif   /* =========================================      See if the defgeneric already exists in      this module (or is imported from another)      ========================================= */   theDefgeneric = (struct constructHeader *) EnvFindDefgeneric(theEnv,theDefgenericName);   if (theDefgeneric != NULL)     {      /* ===========================================         And the redefinition of a defgeneric in         the current module is only valid if none         of its methods are executing         =========================================== */      if (MethodsExecuting((DEFGENERIC *) theDefgeneric))        {         MethodAlterError(theEnv,(DEFGENERIC *) theDefgeneric);         return(FALSE);        }     }   /* =======================================      Only certain specific system functions      may be overloaded by generic functions      ======================================= */   systemFunction = FindFunction(theEnv,theDefgenericName);   if ((systemFunction != NULL) ?       (systemFunction->overloadable == FALSE) : FALSE)     {      PrintErrorID(theEnv,"GENRCPSR",16,FALSE);      EnvPrintRouter(theEnv,WERROR,"The system function ");      EnvPrintRouter(theEnv,WERROR,theDefgenericName);      EnvPrintRouter(theEnv,WERROR," cannot be overloaded.\n");      return(FALSE);     }   return(TRUE);  }#if DEBUGGING_FUNCTIONS/***************************************************  NAME         : CreateDefaultGenericPPForm  DESCRIPTION  : Adds a default pretty-print form                 for a gneric function when it is                 impliciylt created by the defn                 of its first method  INPUTS       : The generic function  RETURNS      : Nothing useful  SIDE EFFECTS : Pretty-print form created and                 attached.  NOTES        : None ***************************************************/static void CreateDefaultGenericPPForm(  void *theEnv,  DEFGENERIC *gfunc)  {   char *moduleName,*genericName,*buf;   moduleName = EnvGetDefmoduleName(theEnv,(void *) ((struct defmodule *) EnvGetCurrentModule(theEnv)));   genericName = EnvGetDefgenericName(theEnv,(void *) gfunc);   buf = (char *) gm2(theEnv,(sizeof(char) * (strlen(moduleName) + strlen(genericName) + 17)));   gensprintf(buf,"(defgeneric %s::%s)\n",moduleName,genericName);   SetDefgenericPPForm((void *) gfunc,buf);  }#endif/*******************************************************  NAME         : ParseMethodNameAndIndex  DESCRIPTION  : Parses the name of the method and                   optional method index  INPUTS       : 1) The logical name of the input source                 2) Caller's buffer for method index                    (0 if not specified)  RETURNS      : The symbolic name of the method  SIDE EFFECTS : None  NOTES        : Assumes "(defmethod " already parsed *******************************************************/static SYMBOL_HN *ParseMethodNameAndIndex(  void *theEnv,  char *readSource,  int *theIndex)  {   SYMBOL_HN *gname;   *theIndex = 0;   gname = GetConstructNameAndComment(theEnv,readSource,&DefgenericData(theEnv)->GenericInputToken,"defgeneric",                                      EnvFindDefgeneric,NULL,"&",TRUE,FALSE,TRUE);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩小说| 欧美日韩高清一区二区不卡 | 中文字幕第一区第二区| 国产精品久久久久久久久免费桃花| 亚洲欧美区自拍先锋| 午夜精品久久久久久久久久久| 美女精品自拍一二三四| 成人激情综合网站| 欧美日本视频在线| 久久久91精品国产一区二区精品| 亚洲精品中文字幕在线观看| 奇米影视一区二区三区小说| 大尺度一区二区| 69久久夜色精品国产69蝌蚪网| 日本一区二区三区四区在线视频| 亚洲成人福利片| 成人精品视频一区| 91麻豆精品国产91久久久久| 亚洲国产精品av| 日产欧产美韩系列久久99| 成人激情开心网| 欧美一区二区二区| 亚洲色图欧美在线| 麻豆国产精品一区二区三区| 色哟哟国产精品| 久久尤物电影视频在线观看| 亚洲自拍另类综合| 国产不卡视频在线播放| 在线观看91av| 亚洲男女一区二区三区| 国产一区二区精品久久99| 欧美色国产精品| 国产精品毛片久久久久久| 蜜桃一区二区三区在线| 91片在线免费观看| 久久精品一区二区三区四区| 婷婷开心久久网| 色婷婷久久久久swag精品| 久久久精品免费观看| 日韩成人午夜电影| 欧美性高清videossexo| 中文字幕av一区二区三区| 欧美aⅴ一区二区三区视频| 91小宝寻花一区二区三区| 久久婷婷色综合| 日本不卡一区二区三区高清视频| 99精品视频在线免费观看| 久久精品人人爽人人爽| 日本成人在线不卡视频| 欧美性做爰猛烈叫床潮| 中文字幕在线一区免费| 国产suv精品一区二区6| 精品不卡在线视频| 蜜桃视频一区二区| 欧美高清hd18日本| 亚洲第一久久影院| 欧美综合亚洲图片综合区| 中文字幕一区二区三区不卡 | 中文字幕日韩一区| 成人国产视频在线观看| 国产亚洲视频系列| 国产中文一区二区三区| 精品国产91久久久久久久妲己| 美洲天堂一区二卡三卡四卡视频 | 另类调教123区 | 国产一区二区三区四区五区入口| 日韩欧美中文字幕公布| 午夜精品一区二区三区三上悠亚| 欧美中文字幕一区二区三区亚洲| 亚洲美女淫视频| 日本一区二区综合亚洲| 久久av中文字幕片| 欧美v亚洲v综合ⅴ国产v| 秋霞影院一区二区| 欧美大片日本大片免费观看| 美国三级日本三级久久99| 日韩三级电影网址| 韩国毛片一区二区三区| 欧美精品一区男女天堂| 国产精品综合在线视频| 国产精品水嫩水嫩| 99久久久无码国产精品| 亚洲精品美国一| 欧洲视频一区二区| 五月天一区二区| 日韩欧美一区二区免费| 蜜桃视频一区二区| www精品美女久久久tv| 国产乱人伦偷精品视频不卡| 久久精品视频免费观看| 99久久精品国产一区| 亚洲一区二区三区爽爽爽爽爽| 精品视频在线免费看| 日本伊人色综合网| 2023国产精品自拍| heyzo一本久久综合| 一区二区三区在线播| 欧美理论电影在线| 久草在线在线精品观看| 中文无字幕一区二区三区| 不卡一区二区中文字幕| 一区二区三区成人在线视频| 日韩一级免费观看| 丁香啪啪综合成人亚洲小说| 亚洲久本草在线中文字幕| 欧美老女人在线| 国产精品亚洲第一区在线暖暖韩国| 中文字幕在线观看不卡视频| 欧美日韩国产一区二区三区地区| 久久99国内精品| 中文字幕综合网| 337p亚洲精品色噜噜噜| 国内精品久久久久影院薰衣草 | 91小视频在线观看| 日韩av网站在线观看| 国产日韩欧美不卡| 欧美在线观看视频在线| 极品少妇一区二区| 尤物av一区二区| 精品国产乱码久久久久久夜甘婷婷| 成人av片在线观看| 日韩激情中文字幕| 国产精品理伦片| 91精品在线免费观看| 成人丝袜视频网| 日本亚洲视频在线| 日本一区二区高清| 欧美一卡二卡在线| 99riav一区二区三区| 久久狠狠亚洲综合| 夜夜嗨av一区二区三区中文字幕 | 成人黄页毛片网站| 青青草原综合久久大伊人精品| 国产精品久久三区| 精品国产伦一区二区三区免费 | 亚洲成人高清在线| 亚洲欧美一区二区视频| 精品国产精品网麻豆系列| 欧洲一区二区av| av成人老司机| 国产一区欧美二区| 午夜日韩在线观看| 最新国产精品久久精品| 精品国产伦一区二区三区观看体验| 在线观看亚洲精品视频| 成人18精品视频| 国内一区二区视频| 日韩黄色片在线观看| 亚洲色图.com| 国产亚洲精品资源在线26u| 欧美电影一区二区| 欧美性受xxxx| 91在线国产观看| 欧美日韩一区二区三区在线| 成人午夜视频网站| 国产精品91xxx| 久久精品国产久精国产| 五月婷婷久久综合| 亚洲欧美日韩国产综合| 国产欧美一区二区三区鸳鸯浴 | 激情欧美日韩一区二区| 图片区小说区区亚洲影院| 亚洲精品美国一| 亚洲天堂成人网| 18欧美乱大交hd1984| 日本一区二区三区dvd视频在线| 日韩一级免费观看| 日韩一级免费观看| 日韩免费观看高清完整版在线观看| 欧美午夜精品免费| 91国偷自产一区二区使用方法| www.亚洲精品| 99久久亚洲一区二区三区青草| 风间由美一区二区三区在线观看 | 欧美激情综合在线| 久久久久久久免费视频了| 亚洲精品在线三区| 精品va天堂亚洲国产| 26uuu亚洲综合色| 欧美精品一区二区三区四区 | 国产激情91久久精品导航| 九色综合国产一区二区三区| 蓝色福利精品导航| 国模一区二区三区白浆| 国内成人免费视频| 国产91富婆露脸刺激对白| 国产成人免费视频精品含羞草妖精| 国内精品免费**视频| 国产盗摄女厕一区二区三区| 国产aⅴ精品一区二区三区色成熟| 国产99久久久国产精品免费看| 91精品婷婷国产综合久久竹菊| 亚洲成人自拍偷拍| 日本系列欧美系列| 日韩精品成人一区二区在线| 青青草原综合久久大伊人精品优势| 日本伊人精品一区二区三区观看方式| 美女网站在线免费欧美精品| 麻豆精品久久精品色综合| 国产在线精品一区在线观看麻豆|