亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲欧洲精品一区二区精品久久久| 91精品国产91热久久久做人人| 99视频国产精品| 在线综合视频播放| 国产精品你懂的在线欣赏| 色婷婷国产精品| 欧美国产一区二区在线观看| 欧美在线你懂得| 欧美日本一区二区三区四区| 国产精品久久久久婷婷二区次| 青青草97国产精品免费观看无弹窗版| 91免费视频网| 国产日产精品1区| 久久精品久久综合| 欧美一区二区三区四区高清| 亚洲免费在线视频| 成人免费高清在线观看| 久久免费看少妇高潮| 麻豆中文一区二区| 7777精品伊人久久久大香线蕉的| 亚洲精品视频在线观看免费| 成人av在线资源网站| 久久只精品国产| 蜜臀精品久久久久久蜜臀 | 欧美在线观看视频在线| 免费成人结看片| 国产欧美一二三区| 久久国产免费看| 精品av综合导航| 久久精品国产亚洲5555| 日韩欧美三级在线| 美洲天堂一区二卡三卡四卡视频| 欧美日韩国产影片| 亚洲妇女屁股眼交7| 欧美无乱码久久久免费午夜一区| 亚洲国产精品精华液网站| 在线观看欧美精品| 天天色综合成人网| 欧美一区二区人人喊爽| 久久国内精品视频| 国产偷国产偷亚洲高清人白洁| 国内精品写真在线观看| 久久久.com| 99re亚洲国产精品| 亚洲国产aⅴ天堂久久| 777精品伊人久久久久大香线蕉| 欧美乱妇15p| 日韩午夜电影av| 久久国产夜色精品鲁鲁99| 一本大道av一区二区在线播放| 国产精品剧情在线亚洲| 色综合色综合色综合色综合色综合 | 国产精品一区一区| 国产香蕉久久精品综合网| 成人av中文字幕| 亚洲一区二区三区四区五区黄 | 国产欧美精品一区二区三区四区 | 亚洲色图欧美偷拍| 欧美综合一区二区| 欧美日韩一区二区三区不卡| 波多野结衣在线一区| 国内精品久久久久影院薰衣草 | 91高清在线观看| 日韩精品久久理论片| 久久久国产午夜精品| 91久久精品国产91性色tv| 日韩和欧美的一区| 欧美国产综合色视频| 欧美精三区欧美精三区| 国产精品一区二区在线观看网站| 亚洲欧洲美洲综合色网| 91精品国产黑色紧身裤美女| 国产精品一区在线观看乱码| 亚洲va天堂va国产va久| 日本一区二区三区dvd视频在线| 波多野洁衣一区| 美女脱光内衣内裤视频久久影院| 国产精品丝袜黑色高跟| 日韩一级大片在线观看| 91视频一区二区三区| 夜夜操天天操亚洲| 狠狠网亚洲精品| 777色狠狠一区二区三区| 国产成人精品aa毛片| 日日夜夜精品免费视频| 亚洲欧洲精品天堂一级| 欧美不卡一区二区| 欧美日本在线播放| 99久久婷婷国产| 国产精品影视在线| 五月综合激情网| 一区二区三区在线免费视频| 国产亚洲午夜高清国产拍精品| 欧美日韩精品一区二区在线播放 | 日韩欧美高清一区| 欧美日韩一区二区三区不卡| 91丝袜美腿高跟国产极品老师 | 久久精品夜色噜噜亚洲a∨| 欧美日韩国产三级| 一本到不卡免费一区二区| 在线视频中文字幕一区二区| 久久激情五月激情| 国产精品国产自产拍在线| 亚洲人成网站精品片在线观看| 欧美疯狂做受xxxx富婆| 欧美视频完全免费看| 91蜜桃传媒精品久久久一区二区| 丁香六月综合激情| 高清av一区二区| 成人午夜视频网站| 成人免费视频播放| 成人高清免费观看| 99精品久久免费看蜜臀剧情介绍 | 一区av在线播放| 亚洲手机成人高清视频| 1区2区3区国产精品| 中文字幕精品一区二区三区精品| 国产日韩欧美一区二区三区乱码| 久久色在线视频| 欧美经典一区二区三区| 国产精品免费看片| 亚洲麻豆国产自偷在线| 亚洲国产视频一区二区| 亚洲v精品v日韩v欧美v专区| 日韩精品一二三四| 精品亚洲成a人| 成人国产亚洲欧美成人综合网| 成人午夜av电影| 色欧美88888久久久久久影院| 色视频欧美一区二区三区| 欧美性生活久久| 正在播放一区二区| 欧美精品一区二区三区蜜臀| 中文字幕 久热精品 视频在线| 一区在线观看免费| 亚洲mv在线观看| 精品亚洲免费视频| 99久久99久久综合| 欧美日韩一二三| 精品久久久久一区| 亚洲欧美一区二区三区国产精品| 亚洲一区在线电影| 韩国av一区二区三区在线观看| 高清不卡一区二区在线| 欧美性受xxxx黑人xyx性爽| 欧美一级片免费看| 国产精品欧美一级免费| 亚洲无人区一区| 国产精品99久久久久久有的能看| 色噜噜久久综合| 久久综合色8888| 一区二区三区精品久久久| 久久国产三级精品| 色偷偷久久一区二区三区| 欧美电影免费观看高清完整版在线 | 亚洲国产精品久久久久秋霞影院| 日本亚洲欧美天堂免费| 国产黄色精品网站| 欧美日韩一区成人| 久久综合久久久久88| 亚洲一区二区三区四区五区黄| 国产在线一区二区综合免费视频| 91网上在线视频| 久久久久9999亚洲精品| 亚洲成人午夜影院| 成人av电影在线网| 欧美变态tickle挠乳网站| 亚洲综合一区二区精品导航| 丁香激情综合国产| 日韩免费电影网站| 亚洲高清免费视频| 97国产精品videossex| 精品国产91久久久久久久妲己 | 一区二区三区免费看视频| 国产一区二区三区四区在线观看| 欧美性猛交xxxxxx富婆| 欧美激情一区二区三区在线| 日韩电影在线观看电影| 色婷婷综合久久久久中文一区二区 | 亚洲色图.com| 东方欧美亚洲色图在线| 日韩一区二区中文字幕| 天天色天天操综合| 色婷婷av一区二区| 国产精品久久久久久一区二区三区 | 在线观看欧美黄色| 国产欧美日韩视频一区二区| 精久久久久久久久久久| 日韩欧美高清一区| 青青草伊人久久| 欧美一区二区三区成人| 日韩国产高清影视| 欧美日韩久久久一区| 一区二区三区欧美激情| 在线亚洲一区观看| 亚洲欧美一区二区不卡| k8久久久一区二区三区| 国产精品久久久99| 成人18视频在线播放| 亚洲欧洲日产国码二区|