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

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

?? sclproc.c

?? scl解析文件,歡迎大家學(xué)習(xí)共享,解析算法值得學(xué)習(xí)
?? C
?? 第 1 頁 / 共 5 頁
字號:
    return (SD_FAILURE);	/* not enough space left to add this	*/
    }
  strcpy (tdl_ctxt->tdlptr, text_to_add);
  tdl_ctxt->tdlptr += len_added;
  tdl_ctxt->len_avail -= len_added;
  return (SD_SUCCESS);
  }
/************************************************************************/
/*			tdladd_sdo					*/
/* NOTE: if (error) returned, caller should break out of loop.		*/
/* RETURNS:	SD_SUCCESS or error code				*/
/************************************************************************/
static ST_RET tdladd_sdo (
	TDLADD_CTXT *tdl_ctxt,
	SCL_INFO *scl_info,
	ST_CHAR *FC,		/* FC to match	*/
	ST_CHAR *name,		/* SDO name	*/
	ST_CHAR *type)		/* SDO type	*/
  {
SCL_DOTYPE *scl_dotype;
SCL_DA *scl_da;
ST_CHAR work_buf [100];		/* temporary buffer for writing TDL	*/
ST_RET retcode;
ST_CHAR *save_start;			/* to save initial ptr		*/
ST_INT save_avail;			/* to save initial len avail	*/
ST_CHAR *save_ptr_after_head;	/* to save ptr after header written	*/

  /* Save initial ptr and len available.	*/
  save_start = tdl_ctxt->tdlptr;
  save_avail = tdl_ctxt->len_avail;

  /* First add SDO name (passed to this funct). May need rollback later	*/
  sprintf (work_buf, "(%s){", name);
  if (tdladd_string (tdl_ctxt, work_buf)!=SD_SUCCESS)
    return (SD_FAILURE);	/* error (already logged)	*/

  save_ptr_after_head = tdl_ctxt->tdlptr;	/* save ptr after header written*/

  /* Find DOType whose "id" matches the SDO "type".	*/
  scl_dotype = scl_find_dotype (scl_info, type);
  if (scl_dotype)
    {
    /* Find all DA or SDO in this DO that match the FC	*/
    /* NOTE: linked list is in reverse order from data in SCL file,	*/
    /*     so get off list in reverse order.				*/
    for (scl_da = (SCL_DA *) list_find_last ((DBL_LNK *) scl_dotype->daHead);
         scl_da != NULL;
         scl_da = (SCL_DA *) list_find_prev ((DBL_LNK *) scl_dotype->daHead, (DBL_LNK *) scl_da))
      {
      if (scl_da->objtype == SCL_OBJTYPE_SDO)
        {		/* ERROR: just break & ret NULL	*/	
        SXLOG_ERR1 ("SDO named '%s' defined inside another SDO: not supported.", scl_da->name);
        return (SD_FAILURE);	/* error	*/
        }
      else
        {	/* objtype must be SCL_OBJTYPE_DA	*/
        if (strcmp (scl_da->fc, FC) == 0)	/* FC of this DA matches FC	*/
          {
          retcode = tdladd_da_or_bda (tdl_ctxt, scl_info, scl_da->name, scl_da->bType,
                    scl_da->type, scl_da->count);
          if (retcode != SD_SUCCESS)	/* error (already logged)	*/
            return (retcode);			/* error	*/
          }
        }
      }	/* end "for (scl_da...)" loop	*/
   
    }
  else
    {
    SXLOG_ERR1 ("SDO type '%s' cannot be found", type);
    return (SD_FAILURE);	/* error	*/
    }

  if (tdl_ctxt->tdlptr > save_ptr_after_head)
    {		/* tdl was added. Finish it.	*/
    if (tdladd_string (tdl_ctxt, "},\n")!=SD_SUCCESS)
      return (SD_FAILURE);	/* error (already logged)	*/
    }
  else
    {				/* SDO is empty so rollback changes	*/
    tdl_ctxt->tdlptr = save_start;		/* restore orig ptr		*/
    tdl_ctxt->len_avail = save_avail;	/* restore orig len		*/
    *save_start = '\0';			/* write NULL at orig ptr	*/
    }
  return (SD_SUCCESS);	/* only successful return	*/
  }
/************************************************************************/
/*			tdladd_da_or_bda				*/
/* NOTE: if (error) returned, caller should break out of loop.	*/
/* RETURNS:	SD_SUCCESS or error code				*/
/************************************************************************/
static ST_RET tdladd_da_or_bda (
	TDLADD_CTXT *tdl_ctxt,
	SCL_INFO *scl_info,
	ST_CHAR *name,		/* DA or BDA name	*/
	ST_CHAR *bType,		/* DA or BDA bType	*/
	ST_CHAR *type,		/* DA or BDA type	*/
	ST_UINT count)		/* DA or BDA count	*/
  {
ST_CHAR work_buf [100];		/* temporary buffer for writing TDL	*/
ST_RET retcode;
ST_CHAR *save_start;			/* to save initial ptr		*/
ST_INT save_avail;			/* to save initial len avail	*/
ST_CHAR *raw_tdl;

  /* Save initial ptr and len available.	*/
  save_start = tdl_ctxt->tdlptr;
  save_avail = tdl_ctxt->len_avail;

  /* Add DA or BDA name for ANY "bType"	*/
  sprintf (work_buf, "(%s)", name);
  if (tdladd_string (tdl_ctxt, work_buf)!=SD_SUCCESS)
    return (SD_FAILURE);	/* error (already logged)	*/

  /* If count!=0, this is array.	*/
  if (count)
    {				/* this DA is array	*/
    sprintf (work_buf, "[%u:", count);
    if (tdladd_string (tdl_ctxt, work_buf)!=SD_SUCCESS)
      return (SD_FAILURE);	/* error (already logged)	*/
    }

  /* Add different text depending on "bType" (Struct, Enum, or BasicType).	*/
  if (strcmp (bType, "Struct") == 0)
    {
    /* NOTE: this may cause recursion		*/
    /* (i.e. tdladd_da_struct may call tdladd_da_or_bda).*/
    retcode = tdladd_da_struct (tdl_ctxt, scl_info, type);
    if (retcode != SD_SUCCESS)
      {
      SXLOG_ERR1 ("SCL ERROR: Can't create TDL for BDA Struct type=%s", type);
      return (retcode);
      }
    }
  else if (strcmp (bType, "Enum") == 0)
    {
    /* DEBUG: for now assume all enums are 8-bit	*/
    /* Someday may need to chk for maximum "EnumVal ord" to determine # of bits	*/
    if (tdladd_string (tdl_ctxt, "Byte,")!=SD_SUCCESS)
      return (SD_FAILURE);	/* error (already logged)	*/
    }
  else
    {				/* must be BasicType, convert to raw TDL*/
    /* NOTE: converting these to raw TDL makes later conversion	*/
    /*       from TDL to RUNTIME_TYPE much more efficient.	*/
    raw_tdl = btype_to_raw_tdl (bType);
    if (raw_tdl == NULL)
      {
      SXLOG_ERR2 ("Unrecognized bType=%s for DA or BDA name=%s", bType, name);
      return (SD_FAILURE);	/* error (already logged)	*/
      }

    if (tdladd_string (tdl_ctxt, raw_tdl)!=SD_SUCCESS)
      return (SD_FAILURE);	/* error (already logged)	*/

    if (tdladd_string (tdl_ctxt, ",")!=SD_SUCCESS)
      return (SD_FAILURE);	/* error (already logged)	*/
    }

  /* If count!=0, this is array.	*/
  if (count)
    {				/* this BDA is array	*/
    if (tdladd_string (tdl_ctxt, "],")!=SD_SUCCESS)
      return (SD_FAILURE);	/* error (already logged)	*/
    }

  assert (strlen(save_start));	/* must never never be empty	*/
  return (SD_SUCCESS);	/* only successful return	*/
  }
/************************************************************************/
/*			tdladd_da_struct				*/
/* Concatinate the TDL for DA that is "Struct".				*/
/* RETURNS:	SD_SUCCESS or error code				*/
/************************************************************************/
static ST_RET tdladd_da_struct (
	TDLADD_CTXT *tdl_ctxt,
	SCL_INFO *scl_info,
	ST_CHAR *type_id)
  {
SCL_DATYPE *scl_datype;
SCL_BDA *scl_bda;
ST_RET retcode;
ST_CHAR *save_start;			/* to save initial ptr		*/
ST_INT save_avail;			/* to save initial len avail	*/

  /* Save initial ptr and len available.	*/
  save_start = tdl_ctxt->tdlptr;
  save_avail = tdl_ctxt->len_avail;

  scl_datype = scl_find_datype (scl_info, type_id);
  if (scl_datype)
    {
    if (tdladd_string (tdl_ctxt, "{")!=SD_SUCCESS)
      return (SD_FAILURE);	/* error (already logged)	*/

    /* Add TDL for all BDA in this DAType.	*/
    /* NOTE: linked list is in reverse order from data in SCL file,	*/
    /*     so get off list in reverse order.				*/
    for (scl_bda = (SCL_BDA *) list_find_last ((DBL_LNK *) scl_datype->bdaHead);
         scl_bda != NULL;
         scl_bda = (SCL_BDA *) list_find_prev ((DBL_LNK *) scl_datype->bdaHead, (DBL_LNK *) scl_bda))
      {
      retcode = tdladd_da_or_bda (tdl_ctxt, scl_info, scl_bda->name, scl_bda->bType,
              scl_bda->type, scl_bda->count);
      if (retcode != SD_SUCCESS)	/* error (already logged)	*/
        return (retcode);			/* error	*/
      }	/* end "for (scl_bda...)" loop	*/

    if (tdladd_string (tdl_ctxt, "},")!=SD_SUCCESS)
      return (SD_FAILURE);	/* error (already logged)	*/
    }
  else
    {
    SXLOG_ERR1 ("SCL ERROR: DAType id=%s not found", type_id);
    return (SD_FAILURE);	/* error	*/
    }

  return (SD_SUCCESS);	/* only successful return	*/
  }
/************************************************************************/
/*			tdladd_do					*/
/* Concatinate the TDL for one DO to the specified buffer "tdlbuf".	*/
/* RETURNS:	SD_SUCCESS or error code				*/
/************************************************************************/
static ST_RET tdladd_do (
	TDLADD_CTXT *tdl_ctxt,
	char *FC,
	SCL_INFO *scl_info,
	ST_CHAR *do_name,
	SCL_DOTYPE *scl_dotype)
  {
SCL_DA *scl_da;
ST_CHAR work_buf [100];		/* temporary buffer for writing TDL	*/
ST_RET retcode;
ST_CHAR *save_start;			/* to save initial ptr		*/
ST_INT save_avail;			/* to save initial len avail	*/
ST_CHAR *save_ptr_after_head;	/* to save ptr after header written	*/

  /* Save initial ptr and len available.	*/
  save_start = tdl_ctxt->tdlptr;
  save_avail = tdl_ctxt->len_avail;

  sprintf (work_buf, "(%s){", do_name);
  assert (strlen (work_buf) < sizeof (work_buf));

  if (tdladd_string (tdl_ctxt, work_buf)!=SD_SUCCESS)
    return (SD_FAILURE);	/* error (already logged)	*/

  save_ptr_after_head = tdl_ctxt->tdlptr;	/* save ptr after header written*/

  /* Find all DA or SDO in this DO that match the FC	*/
  /* NOTE: linked list is in reverse order from data in SCL file,	*/
  /*     so get off list in reverse order.				*/
  for (scl_da = (SCL_DA *) list_find_last ((DBL_LNK *) scl_dotype->daHead);
       scl_da != NULL;
       scl_da = (SCL_DA *) list_find_prev ((DBL_LNK *) scl_dotype->daHead, (DBL_LNK *) scl_da))
    {
    if (scl_da->objtype == SCL_OBJTYPE_SDO)
      {
      /* Only "name" and "type" used for SDO.	*/
      retcode = tdladd_sdo (tdl_ctxt, scl_info, FC, scl_da->name, scl_da->type);
      if (retcode != SD_SUCCESS)		/* error (already logged)	*/
        return (retcode);			/* error	*/
      }
    else
      {	/* objtype must be SCL_OBJTYPE_DA	*/
      if (strcmp (scl_da->fc, FC) == 0)	/* FC of this DA matches FC	*/
        {
        retcode = tdladd_da_or_bda (tdl_ctxt, scl_info, scl_da->name, scl_da->bType,
                  scl_da->type, scl_da->count);
        if (retcode != SD_SUCCESS)	/* error (already logged)	*/
          return (retcode);			/* error	*/
        }
      }
    }	/* end "for (scl_da...)" loop	*/

  if (tdl_ctxt->tdlptr > save_ptr_after_head)
    {		/* tdl was added. Finish it.	*/
    if (tdladd_string (tdl_ctxt, "},\n")!=SD_SUCCESS)
      return (SD_FAILURE);	/* error (already logged)	*/
    }
  else
    {				/* DO is empty so rollback changes	*/
    tdl_ctxt->tdlptr = save_start;		/* restore orig ptr		*/
    tdl_ctxt->len_avail = save_avail;	/* restore orig len		*/
    *save_start = '\0';			/* write NULL at orig ptr	*/
    }

  return (SD_SUCCESS);	/* only successful return	*/
  }
/************************************************************************/
/*			tdladd_fc					*/
/* RETURNS:	SD_SUCCESS or error code				*/
/* Add the TDL for one FC at the current pointer (tdl_ctxt->tdlptr).	*/
/* Increase (tdl_ctxt->tdlptr) by the number of bytes added.		*/
/* Decrease (tdl_ctxt->len_avail) by the number of bytes added.		*/
/************************************************************************/
static ST_RET tdladd_fc (
	TDLADD_CTXT *tdl_ctxt,
	ST_CHAR *FC,
	SCL_INFO *scl_info,
	SCL_LNTYPE *scl_lntype)
  {
SCL_DO *scl_do;
SCL_DOTYPE *scl_dotype;
ST_CHAR work_buf [100];		/* temporary buffer for writing TDL	*/
ST_RET retcode;
ST_CHAR *save_start;			/* to save initial ptr		*/
ST_INT save_avail;			/* to save initial len avail	*/
ST_CHAR *save_ptr_after_head;	/* to save ptr after header written	*/

  /* Save initial ptr and len available.	*/
  save_start = tdl_ctxt->tdlptr;
  save_avail = tdl_ctxt->len_avail;

  /* Add component name for this FC. May have to remove later if no DA's found*/
  sprintf (work_buf, "(%s){\n", FC);
  assert (strlen (work_buf) < sizeof (work_buf));
  if (tdladd_string (tdl_ctxt, work_buf)!=SD_SUCCESS)
    return (SD_FAILURE);

  save_ptr_after_head = tdl_ctxt->tdlptr;	/* save ptr after header written*/

  /* NOTE: linked list is in reverse order from data in SCL file,	*/
  /*     so get off list in reverse order.				*/
  for (scl_do = (SCL_DO *) list_find_last ((DBL_LNK *) scl_lntype->doHead);
       scl_do != NULL;
       scl_do = (SCL_DO *) list_find_prev ((DBL_LNK *) scl_lntype->doHead, (DBL_LNK *) scl_do))
    {
    /* Find DOType for this DO.	*/
    scl_dotype = scl_find_dotype (scl_info, scl_do->type);
    if (scl_dotype)	/* found DOType	*/
      {
      retcode = tdladd_do (tdl_ctxt, FC, scl_info, scl_do->name, scl_dotype);
      if (retcode != SD_SUCCESS)
        {
        SXLOG_ERR1 ("ERROR adding TDL for DO='%s'", scl_do->name);
        return (retcode);
        }
      }
    else
      {	/* can't find DOType for this DO. Cannot continue.	*/
      SXLOG_ERR2 ("Cannot find DOType='%s' for DO='%s'.",

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区视频网站| 亚洲小说欧美激情另类| 26uuu色噜噜精品一区| 69成人精品免费视频| 欧美另类变人与禽xxxxx| 欧美午夜电影一区| 欧美视频一区二区三区四区| 欧美亚洲国产一卡| 欧美色手机在线观看| 在线精品亚洲一区二区不卡| 在线观看日产精品| 欧美性受xxxx| 制服丝袜国产精品| 日韩一区二区三区视频在线观看| 日韩一级片网站| 欧美一级一级性生活免费录像| 91精品福利在线一区二区三区| 欧美一区二区久久久| 日韩精品中文字幕在线一区| 欧美电视剧在线观看完整版| 2020国产精品自拍| 国产欧美一区二区精品久导航 | 亚洲人成电影网站色mp4| 亚洲欧洲99久久| 亚洲视频在线观看一区| 一区二区三区中文免费| 亚洲成人在线网站| 久久精品国产99久久6| 国内精品不卡在线| www.66久久| 91国偷自产一区二区使用方法| 欧美视频在线播放| 精品久久人人做人人爰| 国产精品你懂的在线欣赏| 亚洲色图丝袜美腿| 日韩精品一二三| 国产一区二区三区不卡在线观看| 成人av中文字幕| 在线看不卡av| 欧美精品一区视频| 亚洲特级片在线| 日韩va欧美va亚洲va久久| 国内精品视频一区二区三区八戒 | 精品少妇一区二区三区日产乱码 | 国产三级欧美三级日产三级99| 国产精品欧美极品| 亚洲国产成人av网| 国产一区二区精品久久| 91豆麻精品91久久久久久| 欧美成人精品1314www| 国产精品日日摸夜夜摸av| 午夜视频在线观看一区| 国模少妇一区二区三区| 色偷偷88欧美精品久久久| 日韩一区二区三区三四区视频在线观看| 久久久久国产精品麻豆ai换脸 | 国产三级精品三级| 亚洲午夜在线视频| 国产精品123| 精品视频1区2区3区| 国产调教视频一区| 三级不卡在线观看| eeuss鲁片一区二区三区在线看| 在线播放91灌醉迷j高跟美女| 中文字幕不卡三区| 蜜桃av一区二区三区电影| 97se亚洲国产综合在线| 久久色.com| 午夜精品福利一区二区蜜股av | 国产欧美一区二区精品性色| 天堂av在线一区| av一区二区三区四区| 精品免费国产二区三区| 亚洲一区二区三区四区在线观看| 国产成人精品一区二区三区四区| 5566中文字幕一区二区电影| 综合久久一区二区三区| 国产九色精品成人porny| 欧美日韩和欧美的一区二区| 国产精品乱码人人做人人爱| 久久99热99| 欧美日韩国产精品自在自线| 亚洲男帅同性gay1069| 国产伦精品一区二区三区免费迷 | 26uuu亚洲| 视频一区二区三区在线| 色综合久久九月婷婷色综合| 久久久亚洲午夜电影| 美女脱光内衣内裤视频久久网站| 欧美视频一区在线| 亚洲激情综合网| 99免费精品视频| 中文字幕乱码久久午夜不卡 | 五月开心婷婷久久| 日本高清不卡在线观看| 亚洲欧洲av另类| 春色校园综合激情亚洲| 久久久精品国产99久久精品芒果| 麻豆精品视频在线观看视频| 欧美精品久久99久久在免费线 | 亚洲男同1069视频| 91网站最新网址| 亚洲国产精品成人综合| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 精品国产成人系列| 久久国产精品露脸对白| 欧美一区二区久久久| 日韩精品一卡二卡三卡四卡无卡| 欧美日韩一区中文字幕| 亚洲综合999| 欧美视频一区二区在线观看| 亚洲伊人色欲综合网| 在线观看91视频| 亚洲一区欧美一区| 欧美久久一区二区| 日韩精品免费视频人成| 91精品国产综合久久精品图片| 午夜精品国产更新| 91精品国产黑色紧身裤美女| 日本欧美一区二区在线观看| 欧美一级爆毛片| 国产综合色在线| 国产亚洲一区二区三区四区| 成人一级视频在线观看| 中文字幕一区视频| 一本大道综合伊人精品热热| 亚洲一线二线三线久久久| 在线观看免费亚洲| 日韩精品免费专区| 欧美精品一区在线观看| 成人免费三级在线| 一区av在线播放| 8x8x8国产精品| 国产一区二区三区高清播放| 国产精品入口麻豆九色| 欧美亚洲综合色| 蜜臀av一区二区在线观看| 久久精品免视看| 色噜噜狠狠色综合中国| 日韩一区精品视频| 国产亚洲综合色| 91久久国产综合久久| 蜜桃久久精品一区二区| 国产欧美日韩亚州综合 | 精品一区二区三区不卡 | 亚洲一区在线免费观看| 欧美精品tushy高清| 美国av一区二区| 亚洲国产成人自拍| 欧美日韩美少妇| 国产一区二区不卡| 樱桃视频在线观看一区| 日韩一二三区视频| 99精品欧美一区二区三区小说| 亚洲国产你懂的| 久久久久久亚洲综合影院红桃| av在线综合网| 麻豆视频观看网址久久| 国产精品九色蝌蚪自拍| 在线综合+亚洲+欧美中文字幕| 国产精品一区免费视频| 亚洲一区二区欧美| 国产亚洲欧美中文| 欧美午夜精品免费| 国产成人精品一区二区三区四区 | 国产在线精品不卡| 一区二区三区美女视频| 久久综合色8888| 91免费国产在线观看| 激情亚洲综合在线| 亚洲一二三四在线| 欧美韩国日本不卡| 日韩一区国产二区欧美三区| 色综合久久66| 国产精品一区二区男女羞羞无遮挡| 亚洲综合一区二区| 中文字幕av一区二区三区 | 爽好久久久欧美精品| 国产精品的网站| 日韩欧美国产一区在线观看| 91福利社在线观看| 成人污视频在线观看| 男女视频一区二区| 亚洲一区二区三区四区在线观看| 国产精品美女视频| 久久一区二区三区四区| 欧美一区二区三区四区在线观看| 99麻豆久久久国产精品免费| 国产精品18久久久久久久网站| 日本不卡一区二区三区| 亚洲一级二级在线| 1024国产精品| 国产精品视频麻豆| 久久蜜桃一区二区| 精品噜噜噜噜久久久久久久久试看| 欧美日韩综合一区| 在线亚洲一区二区| 色综合av在线| 色综合天天综合网国产成人综合天| 国产精品一区二区久激情瑜伽 |