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

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

?? insquery.c

?? clips源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
     {      for (i = 0 , j = (unsigned) (result->end + 2) ; i < rcnt ; i++ , j++)        {         SetMFType(result->value,j,INSTANCE_NAME);         SetMFValue(result->value,j,GetFullInstanceName(theEnv,InstanceQueryData(theEnv)->QueryCore->soln_set->soln[i]));        }      result->end = (long) j-2;      PopQuerySoln(theEnv);     }   rm(theEnv,(void *) InstanceQueryData(theEnv)->QueryCore->solns,(sizeof(INSTANCE_TYPE *) * rcnt));   rtn_struct(theEnv,query_core,InstanceQueryData(theEnv)->QueryCore);   PopQueryCore(theEnv);   DeleteQueryClasses(theEnv,qclasses);  }/******************************************************************************  NAME         : QueryDoForInstance  DESCRIPTION  : Finds the first set of instances which satisfy the query and                   executes a user-action with that set  INPUTS       : None  RETURNS      : Caller's result buffer  SIDE EFFECTS : The query class-expressions are evaluated once,                   and the query boolean-expression is evaluated                   zero or more times (depending on instance restrictions                   and how early the expression evaulates to TRUE - if at all).                   Also the action expression is executed zero or once.                 Caller's result buffer holds result of user-action  NOTES        : H/L Syntax : See ParseQueryAction() ******************************************************************************/globle void QueryDoForInstance(  void *theEnv,  DATA_OBJECT *result)  {   QUERY_CLASS *qclasses;   unsigned rcnt;   result->type = SYMBOL;   result->value = EnvFalseSymbol(theEnv);   qclasses = DetermineQueryClasses(theEnv,GetFirstArgument()->nextArg->nextArg,                                      "do-for-instance",&rcnt);   if (qclasses == NULL)     return;   PushQueryCore(theEnv);   InstanceQueryData(theEnv)->QueryCore = get_struct(theEnv,query_core);   InstanceQueryData(theEnv)->QueryCore->solns = (INSTANCE_TYPE **) gm2(theEnv,(sizeof(INSTANCE_TYPE *) * rcnt));   InstanceQueryData(theEnv)->QueryCore->query = GetFirstArgument();   InstanceQueryData(theEnv)->QueryCore->action = GetFirstArgument()->nextArg;   if (TestForFirstInChain(theEnv,qclasses,0) == TRUE)     EvaluateExpression(theEnv,InstanceQueryData(theEnv)->QueryCore->action,result);   InstanceQueryData(theEnv)->AbortQuery = FALSE;   ProcedureFunctionData(theEnv)->BreakFlag = FALSE;   rm(theEnv,(void *) InstanceQueryData(theEnv)->QueryCore->solns,(sizeof(INSTANCE_TYPE *) * rcnt));   rtn_struct(theEnv,query_core,InstanceQueryData(theEnv)->QueryCore);   PopQueryCore(theEnv);   DeleteQueryClasses(theEnv,qclasses);  }/******************************************************************************  NAME         : QueryDoForAllInstances  DESCRIPTION  : Finds all sets of instances which satisfy the query and                   executes a user-function for each set as it is found  INPUTS       : Caller's result buffer  RETURNS      : Nothing useful  SIDE EFFECTS : The query class-expressions are evaluated once,                   and the query boolean-expression is evaluated                   once for every instance set.  Also, the action is                   executed for every instance set.                 Caller's result buffer holds result of last action executed.  NOTES        : H/L Syntax : See ParseQueryAction() ******************************************************************************/globle void QueryDoForAllInstances(  void *theEnv,  DATA_OBJECT *result)  {   QUERY_CLASS *qclasses;   unsigned rcnt;   result->type = SYMBOL;   result->value = EnvFalseSymbol(theEnv);   qclasses = DetermineQueryClasses(theEnv,GetFirstArgument()->nextArg->nextArg,                                      "do-for-all-instances",&rcnt);   if (qclasses == NULL)     return;   PushQueryCore(theEnv);   InstanceQueryData(theEnv)->QueryCore = get_struct(theEnv,query_core);   InstanceQueryData(theEnv)->QueryCore->solns = (INSTANCE_TYPE **) gm2(theEnv,(sizeof(INSTANCE_TYPE *) * rcnt));   InstanceQueryData(theEnv)->QueryCore->query = GetFirstArgument();   InstanceQueryData(theEnv)->QueryCore->action = GetFirstArgument()->nextArg;   InstanceQueryData(theEnv)->QueryCore->result = result;   ValueInstall(theEnv,InstanceQueryData(theEnv)->QueryCore->result);   TestEntireChain(theEnv,qclasses,0);   ValueDeinstall(theEnv,InstanceQueryData(theEnv)->QueryCore->result);   PropagateReturnValue(theEnv,InstanceQueryData(theEnv)->QueryCore->result);   InstanceQueryData(theEnv)->AbortQuery = FALSE;   ProcedureFunctionData(theEnv)->BreakFlag = FALSE;   rm(theEnv,(void *) InstanceQueryData(theEnv)->QueryCore->solns,(sizeof(INSTANCE_TYPE *) * rcnt));   rtn_struct(theEnv,query_core,InstanceQueryData(theEnv)->QueryCore);   PopQueryCore(theEnv);   DeleteQueryClasses(theEnv,qclasses);  }/******************************************************************************  NAME         : DelayedQueryDoForAllInstances  DESCRIPTION  : Finds all sets of instances which satisfy the query and                   and exceutes a user-action for each set                 This function differs from QueryDoForAllInstances() in                   that it forms the complete list of query satisfactions                   BEFORE executing any actions.  INPUTS       : Caller's result buffer  RETURNS      : Nothing useful  SIDE EFFECTS : The query class-expressions are evaluated once,                   and the query boolean-expression is evaluated                   once for every instance set.  The action is executed                   for evry query satisfaction.                 Caller's result buffer holds result of last action executed.  NOTES        : H/L Syntax : See ParseQueryNoAction() ******************************************************************************/globle void DelayedQueryDoForAllInstances(  void *theEnv,  DATA_OBJECT *result)  {   QUERY_CLASS *qclasses;   unsigned rcnt;   register unsigned i;   result->type = SYMBOL;   result->value = EnvFalseSymbol(theEnv);   qclasses = DetermineQueryClasses(theEnv,GetFirstArgument()->nextArg->nextArg,                                      "delayed-do-for-all-instances",&rcnt);   if (qclasses == NULL)     return;   PushQueryCore(theEnv);   InstanceQueryData(theEnv)->QueryCore = get_struct(theEnv,query_core);   InstanceQueryData(theEnv)->QueryCore->solns = (INSTANCE_TYPE **) gm2(theEnv,(sizeof(INSTANCE_TYPE *) * rcnt));   InstanceQueryData(theEnv)->QueryCore->query = GetFirstArgument();   InstanceQueryData(theEnv)->QueryCore->action = NULL;   InstanceQueryData(theEnv)->QueryCore->soln_set = NULL;   InstanceQueryData(theEnv)->QueryCore->soln_size = rcnt;   InstanceQueryData(theEnv)->QueryCore->soln_cnt = 0;   TestEntireChain(theEnv,qclasses,0);   InstanceQueryData(theEnv)->AbortQuery = FALSE;   InstanceQueryData(theEnv)->QueryCore->action = GetFirstArgument()->nextArg;   while (InstanceQueryData(theEnv)->QueryCore->soln_set != NULL)     {      for (i = 0 ; i < rcnt ; i++)        InstanceQueryData(theEnv)->QueryCore->solns[i] = InstanceQueryData(theEnv)->QueryCore->soln_set->soln[i];      PopQuerySoln(theEnv);      EvaluationData(theEnv)->CurrentEvaluationDepth++;      EvaluateExpression(theEnv,InstanceQueryData(theEnv)->QueryCore->action,result);      EvaluationData(theEnv)->CurrentEvaluationDepth--;      if (ProcedureFunctionData(theEnv)->ReturnFlag == TRUE)        { PropagateReturnValue(theEnv,result); }      PeriodicCleanup(theEnv,FALSE,TRUE);      if (EvaluationData(theEnv)->HaltExecution || ProcedureFunctionData(theEnv)->BreakFlag || ProcedureFunctionData(theEnv)->ReturnFlag)        {         while (InstanceQueryData(theEnv)->QueryCore->soln_set != NULL)           PopQuerySoln(theEnv);         break;        }     }   ProcedureFunctionData(theEnv)->BreakFlag = FALSE;   rm(theEnv,(void *) InstanceQueryData(theEnv)->QueryCore->solns,(sizeof(INSTANCE_TYPE *) * rcnt));   rtn_struct(theEnv,query_core,InstanceQueryData(theEnv)->QueryCore);   PopQueryCore(theEnv);   DeleteQueryClasses(theEnv,qclasses);  }/* =========================================   *****************************************          INTERNALLY VISIBLE FUNCTIONS   =========================================   ***************************************** *//*******************************************************  NAME         : PushQueryCore  DESCRIPTION  : Pushes the current QueryCore onto stack  INPUTS       : None  RETURNS      : Nothing useful  SIDE EFFECTS : Allocates new stack node and changes                   QueryCoreStack  NOTES        : None *******************************************************/static void PushQueryCore(  void *theEnv)  {   QUERY_STACK *qptr;   qptr = get_struct(theEnv,query_stack);   qptr->core = InstanceQueryData(theEnv)->QueryCore;   qptr->nxt = InstanceQueryData(theEnv)->QueryCoreStack;   InstanceQueryData(theEnv)->QueryCoreStack = qptr;  }/******************************************************  NAME         : PopQueryCore  DESCRIPTION  : Pops top of QueryCore stack and                   restores QueryCore to this core  INPUTS       : None  RETURNS      : Nothing useful  SIDE EFFECTS : Stack node deallocated, QueryCoreStack                   changed and QueryCore reset  NOTES        : Assumes stack is not empty ******************************************************/static void PopQueryCore(  void *theEnv)  {   QUERY_STACK *qptr;   InstanceQueryData(theEnv)->QueryCore = InstanceQueryData(theEnv)->QueryCoreStack->core;   qptr = InstanceQueryData(theEnv)->QueryCoreStack;   InstanceQueryData(theEnv)->QueryCoreStack = InstanceQueryData(theEnv)->QueryCoreStack->nxt;   rtn_struct(theEnv,query_stack,qptr);  }/***************************************************  NAME         : FindQueryCore  DESCRIPTION  : Looks up a QueryCore Stack Frame                    Depth 0 is current frame                    1 is next deepest, etc.  INPUTS       : Depth  RETURNS      : Address of query core stack frame  SIDE EFFECTS : None  NOTES        : None ***************************************************/static QUERY_CORE *FindQueryCore(  void *theEnv,  int depth)  {   QUERY_STACK *qptr;   if (depth == 0)     return(InstanceQueryData(theEnv)->QueryCore);   qptr = InstanceQueryData(theEnv)->QueryCoreStack;   while (depth > 1)     {      qptr = qptr->nxt;      depth--;     }   return(qptr->core);  }/**********************************************************  NAME         : DetermineQueryClasses  DESCRIPTION  : Builds a list of classes to be used in                   instance queries - uses parse form.  INPUTS       : 1) The parse class expression chain                 2) The name of the function being executed                 3) Caller's buffer for restriction count                    (# of separate lists)  RETURNS      : The query list, or NULL on errors  SIDE EFFECTS : Memory allocated for list                 Busy count incremented for all classes  NOTES        : Each restriction is linked by nxt pointer,                   multiple classes in a restriction are                   linked by the chain pointer.                 Rcnt caller's buffer is set to reflect the                   total number of chains                 Assumes classExp is not NULL and that each                   restriction chain is terminated with                   the QUERY_DELIMITER_SYMBOL "(QDS)" **********************************************************/static QUERY_CLASS *DetermineQueryClasses(  void *theEnv,  EXPRESSION *classExp,  char *func,  unsigned *rcnt)  {   QUERY_CLASS *clist = NULL,*cnxt = NULL,*cchain = NULL,*tmp;   int new_list = FALSE;   DATA_OBJECT temp;   *rcnt = 0;   while (classExp != NULL)     {      if (EvaluateExpression(theEnv,classExp,&temp))        {         DeleteQueryClasses(theEnv,clist);         return(NULL);        }      if ((temp.type == SYMBOL) && (temp.value == (void *) InstanceQueryData(theEnv)->QUERY_DELIMETER_SYMBOL))        {         new_list = TRUE;         (*rcnt)++;        }      else if ((tmp = FormChain(theEnv,func,&temp)) != NULL)        {         if (clist == NULL)           clist = cnxt = cchain = tmp;         else if (new_list == TRUE)           {            new_list = FALSE;            cnxt->nxt = tmp;            cnxt = cchain = tmp;           }         else           cchain->chain = tmp;         while (cchain->chain != NULL)           cchain = cchain->chain;        }      else        {         SyntaxErrorMessage(theEnv,"instance-set query class restrictions");         DeleteQueryClasses(theEnv,clist);         SetEvaluationError(theEnv,TRUE);         return(NULL);        }      classExp = classExp->nextArg;     }   return(clist);  }/*************************************************************  NAME         : FormChain  DESCRIPTION  : Builds a list of classes to be used in                   instance queries - uses parse form.  INPUTS       : 1) Name of calling function for error msgs                 2) Data object - must be a symbol or a                      multifield value containing all symbols                 The symbols must be names of existing classes  RETURNS      : The query chain, or NULL on errors  SIDE EFFECTS : Memory allocated for chain                 Busy count incremented for all classes  NOTES        : None *************************************************************/static QUERY_CLASS *FormChain(  void *theEnv,  char *func,  DATA_OBJECT *val)  {   DEFCLASS *cls;   QUERY_CLASS *head,*bot,*tmp;   register long i,end; /* 6.04 Bug Fix */   char *className;   struct defmodule *currentModule;   currentModule = ((struct defmodule *) EnvGetCurrentModule(theEnv));   if (val->type == DEFCLASS_PTR)     {      IncrementDefclassBusyCount(theEnv,(void *) val->value);      head = get_struct(theEnv,query_class);      head->cls = (DEFCLASS *) val->value;      if (DefclassInScope(theEnv,head->cls,currentModule))        head->theModule = currentModule;      else        head->theModule = head->cls->header.whichModule->theModule;      head->chain = NULL;      head->nxt = NULL;      return(head);     }   if (val->type == SYMBOL)     {      /* ===============================================         Allow instance-set query restrictions to have a         module specifier as part of the class name,         but search imported defclasses too if a         module specifier is not given         =============================================== */      cls = LookupDefclassByMdlOrScope(theEnv,DOPToString(val));      if (cls == NULL)        {         ClassExistError(theEnv,func,DOPToString(val));         return(NULL);        }      IncrementDefclassBusyCount(theEnv,(void *) cls);      head = get_struct(theEnv,query_class);      head->cls = cls;      if (DefclassInScope(theEnv,head->cls,currentModule))        head->theModule = currentModule;      else        head->theModule = head->cls->header.whichModule->theModule;      head->chain = NULL;      head->nxt = NULL;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av高清在线| 久久久久久久久久久黄色| 91久久精品国产91性色tv | 欧美在线一区二区| 成人污污视频在线观看| 成人涩涩免费视频| 成人动漫在线一区| 91网站在线播放| 欧美曰成人黄网| 欧美裸体bbwbbwbbw| 欧美日韩国产乱码电影| 欧美日韩国产首页| 宅男在线国产精品| 精品久久人人做人人爽| 久久久精品黄色| 国产精品免费网站在线观看| 国产精品高潮呻吟| 一区二区三区在线观看欧美| 亚洲国产中文字幕| 日韩电影在线观看电影| 久草在线在线精品观看| 韩国三级电影一区二区| 成人综合婷婷国产精品久久| 99国产一区二区三精品乱码| 在线亚洲人成电影网站色www| 欧美日韩精品一区二区三区| 欧美一级夜夜爽| 欧美国产日韩亚洲一区| 亚洲色图欧美在线| 日韩精品电影在线| 精品在线播放午夜| 97se亚洲国产综合自在线观| 欧美日韩一区二区在线观看| 欧美一级在线免费| 亚洲国产精品t66y| 亚洲一区二区成人在线观看| 美腿丝袜亚洲色图| 成人av电影在线观看| 欧美专区日韩专区| 久久亚洲捆绑美女| 亚洲综合视频在线观看| 老司机一区二区| caoporen国产精品视频| 91麻豆精品国产91久久久久| 久久久亚洲午夜电影| 亚洲国产精品综合小说图片区| 麻豆精品一区二区三区| av福利精品导航| 日韩一区二区中文字幕| 国产精品国产三级国产aⅴ原创 | 亚洲成人免费视频| 精东粉嫩av免费一区二区三区 | 最新国产の精品合集bt伙计| 日本一不卡视频| 91香蕉视频污在线| 亚洲精品一区二区三区蜜桃下载| 一区二区免费在线播放| 国产一区二区精品久久| 91极品视觉盛宴| 欧美国产日韩a欧美在线观看| 丝袜亚洲另类欧美综合| 91啪在线观看| 久久综合一区二区| 偷拍与自拍一区| 91在线看国产| 久久亚区不卡日本| 日韩精品一区第一页| 97精品国产露脸对白| 久久综合九色综合97_久久久| 亚洲高清中文字幕| jlzzjlzz亚洲日本少妇| 精品乱人伦小说| 天天操天天综合网| 91老师片黄在线观看| 国产婷婷精品av在线| 免费久久精品视频| 欧美无砖专区一中文字| 国产精品成人在线观看| 国产成人在线视频网址| 精品国产伦理网| 日韩电影一二三区| 欧美老年两性高潮| 一卡二卡欧美日韩| 99久久久久久| 久久机这里只有精品| 欧美精品自拍偷拍动漫精品| 亚洲自拍偷拍麻豆| 色就色 综合激情| 亚洲免费视频中文字幕| 成年人网站91| 欧美极品另类videosde| 国产一区在线看| 国产亚洲综合av| 国产精品一区二区三区网站| 久久综合久久综合久久| 精品在线一区二区三区| 日韩欧美国产一二三区| 久久精品国内一区二区三区| 日韩精品在线一区二区| 美女视频网站久久| 欧美不卡一区二区三区| 国内精品伊人久久久久av影院| 精品奇米国产一区二区三区| 久久精品久久99精品久久| 精品理论电影在线观看| 国产中文一区二区三区| 2023国产精华国产精品| 国产裸体歌舞团一区二区| 日本一区二区电影| 成人sese在线| 亚洲免费视频成人| 欧美日韩精品一区二区天天拍小说 | 午夜精品久久久久久久久| 欧美日韩高清一区| 蜜臀久久99精品久久久久久9| 欧美一二三区精品| 精彩视频一区二区三区| 欧美国产亚洲另类动漫| 99久久婷婷国产综合精品| 一区二区高清在线| 91精品国产色综合久久久蜜香臀| 日本伊人色综合网| 久久久亚洲高清| 成人永久aaa| 亚洲精品欧美二区三区中文字幕| 在线免费观看日韩欧美| 日韩电影在线免费看| 精品欧美乱码久久久久久1区2区| 国产成人精品一区二区三区四区| 综合久久综合久久| 制服丝袜一区二区三区| 国产精品99久久久| 亚洲精品写真福利| 欧美一区二区三区系列电影| 国产成+人+日韩+欧美+亚洲| 亚洲免费成人av| 91精品国产欧美一区二区成人| 国产一区二区精品在线观看| 亚洲欧美日韩在线| 日韩亚洲欧美在线观看| 成人综合在线观看| 午夜电影一区二区| 国产欧美精品国产国产专区| 在线精品视频一区二区| 裸体一区二区三区| 亚洲国产高清不卡| 欧美日韩激情一区二区| 欧美高清一级片在线| 国产成人在线免费| 香蕉久久夜色精品国产使用方法 | 欧美人xxxx| 国产精品一区在线观看乱码| 伊人一区二区三区| 精品国产伦一区二区三区免费| 91亚洲永久精品| 精品一区二区免费| 尤物av一区二区| 久久久久久久综合狠狠综合| 在线日韩一区二区| 国产成人免费视频精品含羞草妖精| 亚洲精品成人在线| 久久久国产精品麻豆| 欧美日韩另类一区| 波多野结衣亚洲一区| 伦理电影国产精品| 亚洲午夜免费福利视频| 中文字幕乱码亚洲精品一区| 欧美电视剧免费全集观看| 日本高清不卡视频| 成人一区在线观看| 精品夜夜嗨av一区二区三区| 亚洲国产视频一区| 国产精品国产a级| 久久九九久久九九| 日韩精品一区二区三区在线观看 | 国产在线国偷精品产拍免费yy| 一区二区高清免费观看影视大全| 久久久精品国产99久久精品芒果| 欧美日韩国产成人在线91 | 国产精品欧美极品| 精品福利在线导航| 欧美一区二区三区婷婷月色| 在线亚洲人成电影网站色www| 成人综合婷婷国产精品久久 | 97精品国产97久久久久久久久久久久| 精品一区二区成人精品| 日本亚洲免费观看| 亚洲一区二区精品视频| 国产精品一二三在| 免费观看日韩电影| 午夜精品aaa| 亚洲成人免费视频| 亚洲一区二区成人在线观看| 一区二区三区日韩欧美精品| 国产精品另类一区| 国产精品美日韩| 国产精品欧美精品| 国产精品乱码人人做人人爱| 国产精品视频线看| 国产精品女上位|