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

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

?? edg-decode.c

?? vxworks的完整的源代碼
?? 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一区二区三区免费野_久草精品视频
欧美精品第1页| 国产精品麻豆欧美日韩ww| 亚洲精品在线三区| 亚洲欧美日韩小说| 激情五月婷婷综合网| 日本乱人伦一区| 久久久久9999亚洲精品| 秋霞电影网一区二区| 欧美午夜精品一区二区三区| 国产精品天干天干在观线| 久久精品国产免费看久久精品| 91亚洲永久精品| 欧美极品xxx| 极品少妇一区二区| 日韩美女一区二区三区四区| 午夜久久久久久久久| 91蝌蚪porny成人天涯| 中文一区在线播放| 国产成人欧美日韩在线电影| 久久女同性恋中文字幕| 麻豆中文一区二区| 日韩精品一区二区三区视频播放| 亚洲第一电影网| 欧美丝袜丝交足nylons图片| 亚洲激情五月婷婷| 91麻豆免费看| 一级日本不卡的影视| 99精品视频中文字幕| 国产精品污网站| 99精品在线免费| 亚洲精品国产第一综合99久久| 99精品视频在线观看免费| 亚洲人成网站精品片在线观看| 97久久精品人人做人人爽| 亚洲视频免费观看| 欧美影视一区在线| 五月天激情综合网| 日韩视频免费观看高清完整版在线观看 | 久久一区二区三区国产精品| 久久成人免费日本黄色| 日韩久久免费av| 国产一区二区三区电影在线观看| 久久亚洲一区二区三区四区| 国产成人av福利| 国产精品久久久久婷婷二区次| 91啪九色porn原创视频在线观看| 最新高清无码专区| 4438x亚洲最大成人网| 免费观看日韩av| 久久久久久久久蜜桃| 99riav久久精品riav| 伊人开心综合网| 欧美一区二区三区视频在线观看| 极品美女销魂一区二区三区免费| 中文字幕精品综合| 欧美性大战久久久久久久| 青青草精品视频| 国产精品青草久久| 欧美绝品在线观看成人午夜影视| 久久99热这里只有精品| 亚洲国产精品成人综合| 欧美怡红院视频| 国产精品一二三区| 樱桃视频在线观看一区| 日韩精品中文字幕在线一区| 国产成人精品1024| 亚洲一级不卡视频| 国产亚洲污的网站| 欧美亚洲综合在线| 国产在线视视频有精品| 一区二区三区四区在线免费观看| 日韩区在线观看| 99久久er热在这里只有精品15 | 91免费版pro下载短视频| 婷婷丁香久久五月婷婷| 欧美国产精品v| 日韩一区二区三区三四区视频在线观看| 粉嫩蜜臀av国产精品网站| 视频一区二区中文字幕| 亚洲欧美综合另类在线卡通| 日韩视频中午一区| 欧美日韩在线播放一区| 99国产精品久| 国内偷窥港台综合视频在线播放| 亚洲国产一区二区视频| 国产欧美日韩另类一区| 欧美一区二区成人6969| 色呦呦网站一区| jvid福利写真一区二区三区| 蜜臀av性久久久久蜜臀av麻豆| 一区精品在线播放| 国产偷国产偷精品高清尤物| 欧美偷拍一区二区| 99久久亚洲一区二区三区青草| 国产一区二区三区久久久| 日韩成人av影视| 五月天中文字幕一区二区| 一级中文字幕一区二区| 亚洲乱码国产乱码精品精98午夜| 国产亚洲欧美激情| 国产亚洲欧美日韩在线一区| 欧美本精品男人aⅴ天堂| 欧美疯狂做受xxxx富婆| 91国在线观看| 91黄色免费版| 欧美综合视频在线观看| 日本韩国一区二区| 欧美亚洲一区二区三区四区| 色美美综合视频| 一本色道综合亚洲| 91激情在线视频| 欧美日韩国产免费一区二区| 欧美视频在线一区| 欧美日韩激情在线| 欧美二区三区91| 欧美一区日本一区韩国一区| 欧美日韩中文国产| 宅男在线国产精品| 精品黑人一区二区三区久久| 久久久久国产精品人| 国产偷国产偷精品高清尤物| 国产精品色婷婷| 亚洲同性gay激情无套| 一区二区三区av电影| 日韩在线一区二区| 久久精品国内一区二区三区| 国产一区二区久久| 成人毛片在线观看| 91豆麻精品91久久久久久| 欧美日韩国产精品自在自线| 日韩欧美区一区二| 中文欧美字幕免费| 一区二区三区视频在线观看| 无码av中文一区二区三区桃花岛| 老色鬼精品视频在线观看播放| 国内久久婷婷综合| 一本色道久久综合精品竹菊| 欧美美女bb生活片| 2024国产精品视频| 亚洲欧美另类小说| 日本大胆欧美人术艺术动态| 国产成人激情av| 欧美日韩国产综合一区二区三区| 日韩免费看的电影| 亚洲免费色视频| 日本成人超碰在线观看| 成人午夜av电影| 欧美日韩国产区一| 国产精品高清亚洲| 欧美bbbbb| 色婷婷激情久久| 久久蜜臀中文字幕| 无码av免费一区二区三区试看| 国产呦精品一区二区三区网站| 在线视频一区二区三区| 久久久久久久久久久久电影| 亚洲国产中文字幕| 成人app下载| 精品国产3级a| 亚洲国产欧美一区二区三区丁香婷| 国产一区二区美女| 欧美男男青年gay1069videost | 日本韩国精品一区二区在线观看| 日韩欧美色综合网站| 亚洲午夜久久久久久久久电影网| 国产精品18久久久久久久网站| 欧美视频在线一区| √…a在线天堂一区| 国模少妇一区二区三区| 欧美精品日日鲁夜夜添| 亚洲视频电影在线| 成人午夜又粗又硬又大| 欧美大尺度电影在线| 亚洲国产精品自拍| 一本大道久久精品懂色aⅴ | 久久婷婷久久一区二区三区| 亚洲二区在线观看| 97久久精品人人做人人爽| 久久久精品tv| 精品在线播放午夜| 91精品国产全国免费观看| 亚洲丶国产丶欧美一区二区三区| 不卡视频免费播放| 国产人久久人人人人爽| 久久99精品久久久| 日韩午夜在线观看| 日本美女一区二区三区视频| 欧美人与性动xxxx| 无吗不卡中文字幕| 欧美精品 国产精品| 首页欧美精品中文字幕| 欧美性猛片aaaaaaa做受| 亚洲美女一区二区三区| 色吧成人激情小说| 曰韩精品一区二区| 欧美日韩美少妇| 日韩制服丝袜av| 欧美v日韩v国产v| 韩国三级中文字幕hd久久精品| 欧美α欧美αv大片|