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

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

?? msgfun.c

?? clips源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
  }/*********************************************************************  NAME         : DeleteHandler  DESCRIPTION  : Deletes one or more message-handlers                   from a class definition  INPUTS       : 1) The class address                 2) The message-handler name                    (if this is * and there is no handler                     called *, then the delete operations                     will be applied to all handlers matching the type                 3) The message-handler type                    (if this is -1, then the delete operations will be                     applied to all handlers matching the name                 4) A flag saying whether to print error messages when                     handlers are not found meeting specs  RETURNS      : 1 if successful, 0 otherwise  SIDE EFFECTS : Handlers deleted  NOTES        : If any handlers for the class are                   currently executing, this routine                   will fail **********************************************************************/globle int DeleteHandler(   void *theEnv,   DEFCLASS *cls,   SYMBOL_HN *mname,   int mtype,   int indicate_missing)  {   long i;   HANDLER *hnd;   int found,success = 1;   if (cls->handlerCount == 0)     {      if (indicate_missing)        {         HandlerDeleteError(theEnv,EnvGetDefclassName(theEnv,(void *) cls));         return(0);        }      return(1);     }   if (HandlersExecuting(cls))     {      HandlerDeleteError(theEnv,EnvGetDefclassName(theEnv,(void *) cls));      return(0);     }   if (mtype == -1)     {      found = FALSE;      for (i = MAROUND ; i <= MAFTER ; i++)        {         hnd = FindHandlerByAddress(cls,mname,(unsigned) i);         if (hnd != NULL)           {            found = TRUE;            if (hnd->system == 0)              hnd->mark = 1;            else              {               PrintErrorID(theEnv,"MSGPSR",3,FALSE);               EnvPrintRouter(theEnv,WERROR,"System message-handlers may not be modified.\n");               success = 0;              }           }        }      if ((found == FALSE) ? (strcmp(ValueToString(mname),"*") == 0) : FALSE)        {         for (i = 0 ; i < cls->handlerCount ; i++)           if (cls->handlers[i].system == 0)             cls->handlers[i].mark = 1;        }     }   else     {      hnd = FindHandlerByAddress(cls,mname,(unsigned) mtype);      if (hnd == NULL)        {         if (strcmp(ValueToString(mname),"*") == 0)           {            for (i = 0 ; i < cls->handlerCount ; i++)              if ((cls->handlers[i].type == (unsigned) mtype) &&                  (cls->handlers[i].system == 0))                cls->handlers[i].mark = 1;           }         else           {            if (indicate_missing)              HandlerDeleteError(theEnv,EnvGetDefclassName(theEnv,(void *) cls));            success = 0;           }        }      else if (hnd->system == 0)        hnd->mark = 1;      else        {         if (indicate_missing)           {            PrintErrorID(theEnv,"MSGPSR",3,FALSE);            EnvPrintRouter(theEnv,WERROR,"System message-handlers may not be modified.\n");           }         success = 0;        }     }   DeallocateMarkedHandlers(theEnv,cls);   return(success);  }/***************************************************  NAME         : DeallocateMarkedHandlers  DESCRIPTION  : Removes any handlers from a class                   that have been previously marked                   for deletion.  INPUTS       : The class  RETURNS      : Nothing useful  SIDE EFFECTS : Marked handlers are deleted  NOTES        : Assumes none of the handlers are                   currently executing or have a                   busy count != 0 for any reason ***************************************************/globle void DeallocateMarkedHandlers(  void *theEnv,  DEFCLASS *cls)  {   short count;   HANDLER *hnd,*nhnd;   unsigned *arr,*narr;   long i,j;   for (i = 0 , count = 0 ; i < cls->handlerCount ; i++)     {      hnd = &cls->handlers[i];      if (hnd->mark == 1)        {         count++;         DecrementSymbolCount(theEnv,hnd->name);         ExpressionDeinstall(theEnv,hnd->actions);         ReturnPackedExpression(theEnv,hnd->actions);         ClearUserDataList(theEnv,hnd->usrData);         if (hnd->ppForm != NULL)           rm(theEnv,(void *) hnd->ppForm,              (sizeof(char) * (strlen(hnd->ppForm)+1)));        }      else         /* ============================================            Use the busy field to count how many            message-handlers are removed before this one            ============================================ */        hnd->busy = count;     }   if (count == 0)     return;   if (count == cls->handlerCount)     {      rm(theEnv,(void *) cls->handlers,(sizeof(HANDLER) * cls->handlerCount));      rm(theEnv,(void *) cls->handlerOrderMap,(sizeof(unsigned) * cls->handlerCount));      cls->handlers = NULL;      cls->handlerOrderMap = NULL;      cls->handlerCount = 0;     }   else     {      count = cls->handlerCount - count;      hnd = cls->handlers;      arr = cls->handlerOrderMap;      nhnd = (HANDLER *) gm2(theEnv,(sizeof(HANDLER) * count));      narr = (unsigned *) gm2(theEnv,(sizeof(unsigned) * count));      for (i = 0 , j = 0 ; j < count ; i++)        {         if (hnd[arr[i]].mark == 0)           {            /* ==============================================================               The offsets in the map need to be decremented by the number of               preceding nodes which were deleted.  Use the value of the busy               field set in the first loop.               ============================================================== */            narr[j] = arr[i] - hnd[arr[i]].busy;            j++;           }        }      for (i = 0 , j = 0 ; j < count ; i++)        {         if (hnd[i].mark == 0)           {            hnd[i].busy = 0;            GenCopyMemory(HANDLER,1,&nhnd[j],&hnd[i]);            j++;           }        }      rm(theEnv,(void *) hnd,(sizeof(HANDLER) * cls->handlerCount));      rm(theEnv,(void *) arr,(sizeof(unsigned) * cls->handlerCount));      cls->handlers = nhnd;      cls->handlerOrderMap = narr;      cls->handlerCount = count;     }  }#endif/*****************************************************  NAME         : HandlerType  DESCRIPTION  : Determines type of message-handler  INPUTS       : 1) Calling function string                 2) String representing type  RETURNS      : MAROUND  (0) for "around"                 MBEFORE  (1) for "before"                 MPRIMARY (2) for "primary"                 MAFTER   (3) for "after"                 MERROR   (4) on errors  SIDE EFFECTS : None  NOTES        : None *****************************************************/globle unsigned HandlerType(  void *theEnv,  char *func,  char *str)  {   register unsigned i;   for (i = MAROUND ; i <= MAFTER ; i++)     if (strcmp(str,MessageHandlerData(theEnv)->hndquals[i]) == 0)       {        return(i);       }   PrintErrorID(theEnv,"MSGFUN",7,FALSE);   EnvPrintRouter(theEnv,"werror","Unrecognized message-handler type in ");   EnvPrintRouter(theEnv,"werror",func);   EnvPrintRouter(theEnv,"werror",".\n");   return(MERROR);  }/*****************************************************************  NAME         : CheckCurrentMessage  DESCRIPTION  : Makes sure that a message is available                   and active for an internal message function  INPUTS       : 1) The name of the function checking the message                 2) A flag indicating whether the object must be                      a class instance or not (it could be a                      primitive type)  RETURNS      : TRUE if all OK, FALSE otherwise  SIDE EFFECTS : EvaluationError set on errors  NOTES        : None *****************************************************************/globle int CheckCurrentMessage(  void *theEnv,  char *func,  int ins_reqd)  {   register DATA_OBJECT *activeMsgArg;   if (!MessageHandlerData(theEnv)->CurrentCore || (MessageHandlerData(theEnv)->CurrentCore->hnd->actions != ProceduralPrimitiveData(theEnv)->CurrentProcActions))     {      PrintErrorID(theEnv,"MSGFUN",4,FALSE);      EnvPrintRouter(theEnv,WERROR,func);      EnvPrintRouter(theEnv,WERROR," may only be called from within message-handlers.\n");      SetEvaluationError(theEnv,TRUE);      return(FALSE);     }   activeMsgArg = GetNthMessageArgument(theEnv,0);   if ((ins_reqd == TRUE) ? (activeMsgArg->type != INSTANCE_ADDRESS) : FALSE)     {      PrintErrorID(theEnv,"MSGFUN",5,FALSE);      EnvPrintRouter(theEnv,WERROR,func);      EnvPrintRouter(theEnv,WERROR," operates only on instances.\n");      SetEvaluationError(theEnv,TRUE);      return(FALSE);     }   if ((activeMsgArg->type == INSTANCE_ADDRESS) ?       (((INSTANCE_TYPE *) activeMsgArg->value)->garbage == 1) : FALSE)     {      StaleInstanceAddress(theEnv,func,0);      SetEvaluationError(theEnv,TRUE);      return(FALSE);     }   return(TRUE);  }/***************************************************  NAME         : PrintHandler  DESCRIPTION  : Displays a handler synopsis  INPUTS       : 1) Logical name of output                 2) The handler                 5) Flag indicating whether to                    printout a terminating newline  RETURNS      : Nothing useful  SIDE EFFECTS : None  NOTES        : None ***************************************************/globle void PrintHandler(  void *theEnv,  char *logName,  HANDLER *theHandler,  int crtn)  {   EnvPrintRouter(theEnv,logName,ValueToString(theHandler->name));   EnvPrintRouter(theEnv,logName," ");   EnvPrintRouter(theEnv,logName,MessageHandlerData(theEnv)->hndquals[theHandler->type]);   EnvPrintRouter(theEnv,logName," in class ");   PrintClassName(theEnv,logName,theHandler->cls,crtn);  }/***********************************************************  NAME         : FindHandlerByAddress  DESCRIPTION  : Uses a binary search on a class's                   handler header array  INPUTS       : 1) The class address                 2) The handler symbolic name                 3) The handler type (MPRIMARY,etc.)  RETURNS      : The address of the found handler,                   NULL if not found  SIDE EFFECTS : None  NOTES        : Assumes array is in ascending order                   1st key: symbolic name of handler                   2nd key: type of handler ***********************************************************/globle HANDLER *FindHandlerByAddress(  DEFCLASS *cls,  SYMBOL_HN *name,  unsigned type)  {   register int b;   long i;   HANDLER *hnd;   unsigned *arr;   if ((b = FindHandlerNameGroup(cls,name)) == -1)     return(NULL);   arr = cls->handlerOrderMap;   hnd = cls->handlers;   for (i = (unsigned) b ; i < cls->handlerCount ; i++)     {      if (hnd[arr[i]].name != name)        return(NULL);      if (hnd[arr[i]].type == type)        return(&hnd[arr[i]]);     }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本高清成人免费播放| 日韩一区二区电影在线| 极品少妇一区二区| 亚洲午夜精品网| 亚洲一区二区偷拍精品| 亚洲欧美电影一区二区| 亚洲免费视频成人| 一区二区三区不卡视频 | 成人av在线播放网址| 国产一区二区三区在线观看精品 | 亚洲精品网站在线观看| 亚洲欧美激情在线| 一区二区三区日韩欧美精品| 亚洲摸摸操操av| 亚洲午夜电影网| 日本一区中文字幕| 韩国中文字幕2020精品| 国产精品一二三四| 成人丝袜高跟foot| 色8久久精品久久久久久蜜| 色香色香欲天天天影视综合网| 色综合天天综合网天天狠天天| 欧美三级三级三级爽爽爽| 日韩一卡二卡三卡国产欧美| 亚洲精品在线电影| 国产精品久久久久久久久晋中| 亚洲乱码国产乱码精品精小说 | 成人激情电影免费在线观看| 91麻豆国产在线观看| 欧美吞精做爰啪啪高潮| 日韩免费福利电影在线观看| 国产欧美一区二区在线观看| 亚洲激情自拍视频| 久久91精品久久久久久秒播| av激情亚洲男人天堂| 欧美日韩的一区二区| 久久久精品国产免费观看同学| 日韩理论片在线| 欧美aaa在线| 一本大道久久精品懂色aⅴ| 欧美一区二区在线视频| 国产免费观看久久| 日韩影视精彩在线| 99精品欧美一区二区三区小说 | 欧美亚洲一区二区在线| 2024国产精品| 亚洲一区二区偷拍精品| 国产成人精品www牛牛影视| 欧美日韩亚洲另类| 国产精品高潮久久久久无| 日本不卡在线视频| 色88888久久久久久影院野外| xfplay精品久久| 日日欢夜夜爽一区| 97精品国产露脸对白| 欧美精品一区二区高清在线观看 | 欧美在线观看视频一区二区| 国产亚洲一区二区三区在线观看 | 精品久久人人做人人爱| 亚洲成人激情综合网| 91碰在线视频| 国产日韩综合av| 亚洲一区在线观看视频| 99re这里只有精品视频首页| 国产亚洲综合色| 韩日精品视频一区| 精品免费日韩av| 麻豆精品新av中文字幕| 欧美日韩一区二区三区视频| 一区二区三区久久久| 99综合影院在线| 中文字幕亚洲在| av毛片久久久久**hd| 亚洲欧洲性图库| www.成人在线| 亚洲人成人一区二区在线观看 | 日韩欧美国产三级| 奇米888四色在线精品| 日韩欧美专区在线| 久久电影网站中文字幕| 日韩女优制服丝袜电影| 激情综合色播激情啊| 2欧美一区二区三区在线观看视频| 美日韩一区二区| xnxx国产精品| 成人理论电影网| 亚洲精品水蜜桃| 欧美日韩亚洲综合一区| 日韩国产精品久久久| 精品欧美一区二区在线观看| 精品一区二区av| 国产欧美日产一区| 99久久久无码国产精品| 亚洲另类中文字| 欧美日韩一卡二卡三卡| 激情五月婷婷综合| 国产片一区二区三区| 色哟哟精品一区| 天堂久久久久va久久久久| 欧美r级电影在线观看| 国产福利视频一区二区三区| 国产精品久久久久久久浪潮网站| 色88888久久久久久影院野外| 性欧美疯狂xxxxbbbb| 欧美r级在线观看| 91片在线免费观看| 久久精品国产99久久6| 国产视频视频一区| 在线免费视频一区二区| 日本成人超碰在线观看| 国产精品久久久久aaaa| 日韩午夜激情电影| 风间由美一区二区三区在线观看 | 欧美mv日韩mv国产网站| www.欧美亚洲| 日韩av在线发布| 国产精品视频免费看| 3d动漫精品啪啪一区二区竹菊 | 97精品超碰一区二区三区| 日韩精品五月天| 日本一区二区三区在线观看| 欧美视频中文字幕| 国产a视频精品免费观看| 无吗不卡中文字幕| 国产精品久久久久一区| 日韩视频一区二区三区在线播放 | 欧美主播一区二区三区美女| 国产精品99久久久| 婷婷六月综合网| 亚洲人成网站影音先锋播放| 欧美α欧美αv大片| 欧美美女喷水视频| 97se亚洲国产综合自在线不卡| 美国三级日本三级久久99| 亚洲欧洲一区二区三区| 久久久精品影视| 91成人免费在线视频| 性久久久久久久| 欧美午夜精品一区二区蜜桃| 91丨九色丨国产丨porny| 亚洲成人av电影在线| 精品欧美乱码久久久久久| 国产精品主播直播| 亚洲免费在线视频一区 二区| 99久久er热在这里只有精品15| 国产美女一区二区| 五月激情丁香一区二区三区| 国产精品全国免费观看高清 | 极品少妇xxxx精品少妇偷拍| 日产欧产美韩系列久久99| 亚洲欧美一区二区久久| 亚洲六月丁香色婷婷综合久久| 中文字幕一区二区三区精华液| 国产精品嫩草影院com| 亚洲区小说区图片区qvod| 亚洲www啪成人一区二区麻豆| 性做久久久久久久久| 麻豆久久久久久| 欧美在线色视频| 欧美丰满嫩嫩电影| 久久伊99综合婷婷久久伊| 国产精品久久久久久久蜜臀| 亚洲影视在线观看| 日韩中文字幕一区二区三区| 麻豆精品久久精品色综合| 91论坛在线播放| 久久亚洲捆绑美女| 亚洲一区二区精品3399| 国产精品亚洲第一区在线暖暖韩国| 在线视频一区二区三区| 欧美激情一区二区| 久久99久久久欧美国产| 色婷婷综合久久久| 亚洲三级在线看| 不卡的电影网站| 国产不卡视频在线观看| 欧美一级久久久久久久大片| 亚洲激情自拍视频| 91视频91自| 夜夜嗨av一区二区三区| 欧美三电影在线| 免费在线成人网| 精品国产百合女同互慰| 亚洲第一二三四区| 91蜜桃传媒精品久久久一区二区| 国产欧美日韩不卡免费| 一本久道中文字幕精品亚洲嫩| 在线观看一区二区精品视频| 亚洲免费成人av| 欧美在线三级电影| 美国精品在线观看| 国产精品无码永久免费888| 91浏览器入口在线观看| 一区2区3区在线看| 91精品欧美综合在线观看最新 | 成人av网站在线观看免费| 欧美国产精品一区| 日韩精品免费视频人成| 另类综合日韩欧美亚洲| 日韩三级免费观看|