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

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

?? edg-decode.c

?? Vxworks OS source code
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*******************************************************************************                                                             \  ___  /       **                                                               /   \         ** Edison Design Group C++/C Front End                        - | \^/ | -      **                                                               \   /         **                                                             /  | |  \       ** Copyright 1996-1999 Edison Design Group Inc.                   [_]          **                                                                             *******************************************************************************//*Copyright (c) 1996-1999, Edison Design Group, Inc.Redistribution and use in source and binary forms are permittedprovided that the above copyright notice and this paragraph areduplicated in all source code forms.  The name of Edison DesignGroup, Inc. may not be used to endorse or promote products derivedfrom this software without specific prior written permission.THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS ORIMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.Any use of this software is at the user's own risk.*//*edg-decode.c -- Name demangler for C++.The demangling is intended to work only on names of external entities.There is some name mangling done for internal entities, or by theC-generating back end, that this program does not try to decode.*/#include <stdio.h>#include <stddef.h>#include <string.h>#include <ctype.h>typedef size_t	sizeof_t;typedef int	a_boolean;#define FALSE 0#define TRUE 1/*Block used to hold state variables.  A block is used so that these routineswill be reentrant.*/typedef struct a_decode_control_block *a_decode_control_block_ptr;typedef struct a_decode_control_block {  unsigned long		input_id_len;			/* Length of the input identifier, not counting the			   final null. */  char		*output_id;			/* Pointer to buffer for demangled version of			   the current identifier. */  sizeof_t	output_id_len;			/* Length of output_id, not counting the final			   null. */  sizeof_t	output_id_size;			/* Allocated size of output_id. */  a_boolean	err_in_id;			/* TRUE if any error was encountered in the current			   identifier. */  a_boolean	output_overflow_err;			/* TRUE if the demangled output overflowed the			   output buffer. */  unsigned long	suppress_id_output;			/* If > 0, demangled id output is suppressed.  This			   might be because of an error or just as a way			   of avoiding output during some processing. */  char		*end_of_constant;			/* While scanning a constant, this can be set to the			   character after the end of the constant as an			   aid to disambiguation.  NULL otherwise. */  sizeof_t	uncompressed_length;			/* If non-zero, the original name was compressed,			   and this indicates the length of the uncompressed			   (but still mangled) name. */#ifndef WRS_ORIG					/* WRS LOCAL */  a_boolean	suppress_function_params;			/* TRUE if we do not want to see function parameters;			   used by GDB to compose a stack trace. */  a_boolean	suppress_return_types;			/* TRUE if we should avoid printing return types			   (since they don't participate in overloading).  */  a_boolean	sourcelike_template_params;			/* TRUE if we should display template parameters so			   they look like a usage in program source code.  */#endif} a_decode_control_block;/*Block that contains information used to control the output of templateparameter lists.*/typedef struct a_template_param_block *a_template_param_block_ptr;typedef struct a_template_param_block {  unsigned long	nesting_level;			/* Number of levels of template nesting at this			   point (1 == top level). */  char		*final_specialization;			/* Set to point to the mangled encoding for the final			   specialization encountered while working from			   outermost template to innermost.  NULL if			   no specialization has been found yet. */  a_boolean	set_final_specialization;			/* TRUE if final_specialization should be set while			   scanning. */  a_boolean	actual_template_args_until_final_specialization;			/* TRUE if template parameter names should not be			   put out.  Reset when the final_specialization			   position is reached. */  a_boolean	output_only_correspondences;			/* TRUE if doing a post-pass to output only template			   parameter/argument correspondences and not			   anything else.  suppress_id_output will have been			   incremented to suppress everything else, and			   gets decremented temporarily when correspondences			   are output. */  a_boolean	first_correspondence;			/* TRUE until the first template parameter/argument			   correspondence is put out. */  a_boolean	use_old_form_for_template_output;			/* TRUE if templates should be output in the old			   form that always puts actual argument values			   in template argument lists. */#ifndef WRS_ORIG					/* WRS LOCAL */  a_boolean	base_name_only;			/* TRUE if we are printing a bare basename, without			   template parameters; this is used for printing the			   implicit names of Constructors and Destructors. */#endif} a_template_param_block;/*Declarations needed because of forward references:*/static char *demangle_name(char                       *ptr,                           unsigned long              nchars,                           a_boolean                  stop_on_underscores,                           char                       *mclass,                           a_template_param_block_ptr temp_par_info,                           a_decode_control_block_ptr dctl);static char *demangle_name_with_preceding_length(                                char                       *ptr,                                a_template_param_block_ptr temp_par_info,                                a_decode_control_block_ptr dctl);static char *demangle_operation(char                       *ptr,                                a_decode_control_block_ptr dctl);static char *demangle_operator(char      *ptr,                               int       *mangled_length,                               a_boolean *takes_type);static char *demangle_type(char                       *ptr,                           a_decode_control_block_ptr dctl);static char *full_demangle_type_name(char                       *ptr,                                     a_boolean                  base_name_only,                                     a_template_param_block_ptr temp_par_info,                                     a_decode_control_block_ptr dctl);static char *demangle_template_arguments(                                      char                       *ptr,                                      a_boolean                  partial_spec,                                      a_template_param_block_ptr temp_par_info,                                      a_decode_control_block_ptr dctl);/*Interface to full_demangle_type_name for the simple case.*/#define demangle_type_name(ptr, dctl)                                 \  full_demangle_type_name((ptr), /*base_name_only=*/FALSE,            \                          /*temp_par_info=*/(a_template_param_block_ptr)NULL, \                          (dctl))static char *full_demangle_identifier(char                       *ptr,                                      unsigned long              nchars,                                      a_decode_control_block_ptr dctl);/* Interface to full_demangle_identifier for the simple case. */#define demangle_identifier(ptr, dctl)                                \  full_demangle_identifier((ptr), (unsigned long)0, (dctl))static void write_id_ch(char                       ch,                        a_decode_control_block_ptr dctl)/*Add the indicated character to the demangled version of the current identifier.*/{  if (!dctl->suppress_id_output) {    if (!dctl->output_overflow_err) {      /* Test for buffer overflow, leaving room for a terminating null. */      if (dctl->output_id_len >= dctl->output_id_size-1) {        /* There's no room for the character in the buffer. */        dctl->output_overflow_err = TRUE;        /* Make sure the (truncated) output is null-terminated. */        dctl->output_id[dctl->output_id_size-1] = '\0';      } else {        /* No overflow; put the character in the buffer. */        dctl->output_id[dctl->output_id_len] = ch;      }  /* if */    }  /* if */    /* Keep track of the number of characters (even if output has overflowed       the buffer). */    dctl->output_id_len++;  }  /* if */}  /* write_id_ch */static void write_id_str(char                      *str,                        a_decode_control_block_ptr dctl)/*Add the indicated string to the demangled version of the current identifier.*/{  char *p = str;  if (!dctl->suppress_id_output) {    for (; *p != '\0'; p++) write_id_ch(*p, dctl);  }  /* if */}  /* write_id_str */static void bad_mangled_name(a_decode_control_block_ptr dctl)/*A bad name mangling has been encountered.  Record an error.*/{  if (!dctl->err_in_id) {    dctl->err_in_id = TRUE;    dctl->suppress_id_output++;  }  /* if */}  /* bad_mangled_name */static a_boolean start_of_id_is(char *str, char *id)/*Return TRUE if the identifier (at id) begins with the string str.*/{  a_boolean is_start = FALSE;  for (;;) {    char chs = *str++;    if (chs == '\0') {      is_start = TRUE;      break;    }  /* if */    if (chs != *id++) break;  }  /* for */  return is_start;}  /* start_of_id_is */static char *advance_past_underscore(char                       *p,                                     a_decode_control_block_ptr dctl)/*An underscore is expected at *p.  If it's there, advance past it.  Ifnot, call bad_mangled_name.  In either case, return the updated value of p.*/{  if (*p == '_') {    p++;  } else {    bad_mangled_name(dctl);  }  /* if */  return p;}  /* advance_past_underscore */static char *get_length(char                       *p,                        unsigned long              *num,                        a_decode_control_block_ptr dctl)/*Accumulate a number indicating a length, starting at position p, andreturn its value in *num.  Return a pointer to the character positionfollowing the number.*/{  unsigned long n = 0;  if (!isdigit((unsigned char)*p)) {    bad_mangled_name(dctl);    goto end_of_routine;  }  /* if */  do {    n = n*10 + (*p - '0');    if (n > dctl->input_id_len) {      /* Bad number. */      bad_mangled_name(dctl);      n = dctl->input_id_len;      goto end_of_routine;    }  /* if */    p++;  } while (isdigit((unsigned char)*p));end_of_routine:  *num = n;  return p;}  /* get_length */static char *get_number(char                       *p,                        unsigned long              *num,                        a_decode_control_block_ptr dctl)/*Accumulate a number starting at position p and return its value in *num.Return a pointer to the character position following the number.*/{  unsigned long n = 0;  if (!isdigit((unsigned char)*p)) {    bad_mangled_name(dctl);    goto end_of_routine;  }  /* if */  do {    n = n*10 + (*p - '0');    p++;  } while (isdigit((unsigned char)*p));end_of_routine:  *num = n;  return p;}  /* get_number */static char *get_single_digit_number(char                       *p,                                     unsigned long              *num,                                     a_decode_control_block_ptr dctl)/*Accumulate a number starting at position p and return its value in *num.The number is a single digit.  Return a pointer to the character positionfollowing the number.*/{  *num = 0;  if (!isdigit((unsigned char)*p)) {    bad_mangled_name(dctl);    goto end_of_routine;  }  /* if */  *num = (*p - '0');  p++;end_of_routine:  return p;}  /* get_single_digit_number */static char *get_length_with_optional_underscore(                                               char                       *p,                                               unsigned long              *num,                                               a_decode_control_block_ptr dctl)/*Accumulate a number starting at position p and return its value in *num.If the number has more than one digit, it is followed by an underscore.(Or, in a newer representation, surrounded by underscores.)Return a pointer to the character position following the number.*/{  if (*p == '_') {    /* New encoding (not from cfront) -- the length is surrounded by

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区国产精华| 视频在线观看一区二区三区| 天天做天天摸天天爽国产一区| 99综合电影在线视频| 欧美激情资源网| 日本中文字幕一区| 欧美一二三区精品| 久久精工是国产品牌吗| 欧美一区三区四区| 久久成人av少妇免费| 欧美日韩五月天| 日韩影视精彩在线| 精品欧美久久久| 国产精品正在播放| 中文字幕高清不卡| 91亚洲精品乱码久久久久久蜜桃 | 亚洲欧美在线另类| 一本久道中文字幕精品亚洲嫩| 亚洲精品成人在线| 99热99精品| 亚洲高清视频的网址| 欧美日韩三级视频| 欧美日韩国产另类不卡| 日本视频一区二区| 国产精品日韩成人| 欧美一区二区三区在线视频| 成人自拍视频在线| 丝袜亚洲精品中文字幕一区| 国产蜜臀av在线一区二区三区| 色美美综合视频| 国产精品羞羞答答xxdd| 亚洲精品乱码久久久久| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 日韩欧美一卡二卡| 99在线精品观看| 九九精品视频在线看| 洋洋成人永久网站入口| 欧美国产97人人爽人人喊| 51精品秘密在线观看| 91美女蜜桃在线| 国产电影精品久久禁18| 日韩精品电影一区亚洲| 亚洲色图另类专区| 国产日韩精品一区二区三区| 欧美日韩视频在线一区二区 | 国产精品亲子伦对白| 91精品国产乱| 在线观看成人小视频| 国产精品中文字幕一区二区三区| 亚洲网友自拍偷拍| 亚洲视频精选在线| 国产精品嫩草99a| 久久九九久久九九| 欧美大黄免费观看| 91精品久久久久久久91蜜桃| 91色综合久久久久婷婷| 成人av资源网站| 国产成人亚洲精品青草天美 | 亚洲一区在线观看视频| 亚洲欧洲av在线| 国产精品色眯眯| 久久精品网站免费观看| 日韩欧美电影一区| 日韩一区二区三区视频| 666欧美在线视频| 欧美日韩免费观看一区二区三区 | 国产精品18久久久久久久久| 美脚の诱脚舐め脚责91| 天堂成人国产精品一区| 五月婷婷欧美视频| 视频在线观看91| 免费一级片91| 久久99精品国产.久久久久久| 亚洲妇熟xx妇色黄| 日本中文在线一区| 极品少妇一区二区三区精品视频| 久久精品久久久精品美女| 久久国产精品色| 国产老妇另类xxxxx| 国产麻豆精品theporn| 国产成人综合在线播放| 成人精品视频一区二区三区 | 洋洋av久久久久久久一区| 亚洲精品国产无套在线观| 一区二区免费在线播放| 午夜私人影院久久久久| 麻豆精品一区二区av白丝在线| 精品一区二区三区视频在线观看| 久久电影网站中文字幕| 国产成人免费在线| 91免费国产在线| 欧美麻豆精品久久久久久| 欧美丰满美乳xxx高潮www| 日韩一级视频免费观看在线| 26uuu国产电影一区二区| 国产无人区一区二区三区| 中文字幕欧美一区| 午夜日韩在线电影| 国产精品资源网站| 99国产精品99久久久久久| 精品1区2区3区| 精品久久人人做人人爰| 国产精品久久三区| 亚洲第一综合色| 国产成人午夜视频| 欧美色网一区二区| 国产无人区一区二区三区| 成人免费在线播放视频| 日韩高清电影一区| 粉嫩蜜臀av国产精品网站| 91久久精品一区二区| 日韩欧美一区二区在线视频| 国产精品丝袜黑色高跟| 午夜视频一区二区三区| 国产69精品久久久久毛片| 欧美在线观看你懂的| 欧美电影免费观看高清完整版在| 中文字幕在线观看不卡视频| 视频一区二区三区在线| 国产福利91精品| 在线成人免费观看| 亚洲日本在线视频观看| 精品一区免费av| 91国偷自产一区二区开放时间 | 色综合网站在线| 亚洲精品在线观看网站| 亚洲制服欧美中文字幕中文字幕| 久久精工是国产品牌吗| 欧美吞精做爰啪啪高潮| 国产日韩精品一区二区浪潮av | 欧美久久高跟鞋激| 中文字幕在线一区| 激情综合色综合久久| 欧美色大人视频| 亚洲免费av高清| 国产高清在线观看免费不卡| 91精品国产品国语在线不卡| 亚洲欧美色一区| 国产成人av电影免费在线观看| 日韩一区和二区| 日一区二区三区| 在线观看国产精品网站| 亚洲欧洲性图库| 国产69精品久久777的优势| 日韩欧美中文字幕精品| 日韩精品欧美成人高清一区二区| 97成人超碰视| 成人欧美一区二区三区1314| 国产精品一区久久久久| 精品电影一区二区| 美日韩黄色大片| 91精品国产91久久久久久一区二区| 亚洲女女做受ⅹxx高潮| 成人高清视频在线观看| 国产欧美综合色| 国产69精品久久777的优势| 久久美女艺术照精彩视频福利播放| 美女免费视频一区二区| 日韩一区二区免费在线观看| 视频一区二区三区在线| 欧美区一区二区三区| 天天综合色天天综合色h| 欧美日韩国产成人在线免费| 亚洲国产日韩综合久久精品| 欧洲av一区二区嗯嗯嗯啊| 亚洲精品国久久99热| 在线观看不卡一区| 亚洲一区二区三区四区在线观看 | 亚洲精品成人在线| 日本电影欧美片| 亚洲一区二区视频在线观看| 在线精品视频免费观看| 一区二区三区免费看视频| 色婷婷av一区| 午夜久久久久久| 欧美mv日韩mv亚洲| 国产麻豆精品视频| 国产精品初高中害羞小美女文| 99精品视频一区| 亚洲一区二区三区在线| 欧美狂野另类xxxxoooo| 蜜臀av性久久久久蜜臀aⅴ| 久久午夜电影网| 成人av先锋影音| 亚洲一二三四久久| 91精品国产综合久久久久久久| 久久99国产精品久久99果冻传媒| 久久久蜜臀国产一区二区| 不卡视频免费播放| 亚洲成人手机在线| 欧美刺激脚交jootjob| 国产69精品久久777的优势| 曰韩精品一区二区| 91精品国产黑色紧身裤美女| 国产精品一二三区| 亚洲国产日韩在线一区模特| 精品国产伦一区二区三区免费| 国产69精品久久777的优势| 亚洲一区二区三区四区的| 精品国产成人系列|