|
|
1.1 ! root 1: /* Defs for interface to demanglers. ! 2: Copyright 1992 Free Software Foundation, Inc. ! 3: ! 4: This program is free software; you can redistribute it and/or modify ! 5: it under the terms of the GNU General Public License as published by ! 6: the Free Software Foundation; either version 2, or (at your option) ! 7: any later version. ! 8: ! 9: This program is distributed in the hope that it will be useful, ! 10: but WITHOUT ANY WARRANTY; without even the implied warranty of ! 11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! 12: GNU General Public License for more details. ! 13: ! 14: You should have received a copy of the GNU General Public License ! 15: along with this program; if not, write to the Free Software ! 16: Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ ! 17: ! 18: ! 19: #if !defined (DEMANGLE_H) ! 20: #define DEMANGLE_H ! 21: ! 22: #include <ansidecl.h> ! 23: ! 24: /* Options passed to cplus_demangle (in 2nd parameter). */ ! 25: ! 26: #define DMGL_NO_OPTS 0 /* For readability... */ ! 27: #define DMGL_PARAMS (1 << 0) /* Include function args */ ! 28: #define DMGL_ANSI (1 << 1) /* Include const, volatile, etc */ ! 29: ! 30: #define DMGL_AUTO (1 << 8) ! 31: #define DMGL_GNU (1 << 9) ! 32: #define DMGL_LUCID (1 << 10) ! 33: #define DMGL_ARM (1 << 11) ! 34: /* If none of these are set, use 'current_demangling_style' as the default. */ ! 35: #define DMGL_STYLE_MASK (DMGL_AUTO|DMGL_GNU|DMGL_LUCID|DMGL_ARM) ! 36: ! 37: /* Enumeration of possible demangling styles. ! 38: ! 39: Lucid and ARM styles are still kept logically distinct, even though ! 40: they now both behave identically. The resulting style is actual the ! 41: union of both. I.E. either style recognizes both "__pt__" and "__rf__" ! 42: for operator "->", even though the first is lucid style and the second ! 43: is ARM style. (FIXME?) */ ! 44: ! 45: extern enum demangling_styles ! 46: { ! 47: unknown_demangling = 0, ! 48: auto_demangling = DMGL_AUTO, ! 49: gnu_demangling = DMGL_GNU, ! 50: lucid_demangling = DMGL_LUCID, ! 51: arm_demangling = DMGL_ARM ! 52: } current_demangling_style; ! 53: ! 54: /* Define string names for the various demangling styles. */ ! 55: ! 56: #define AUTO_DEMANGLING_STYLE_STRING "auto" ! 57: #define GNU_DEMANGLING_STYLE_STRING "gnu" ! 58: #define LUCID_DEMANGLING_STYLE_STRING "lucid" ! 59: #define ARM_DEMANGLING_STYLE_STRING "arm" ! 60: ! 61: /* Some macros to test what demangling style is active. */ ! 62: ! 63: #define CURRENT_DEMANGLING_STYLE current_demangling_style ! 64: #define AUTO_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_AUTO) ! 65: #define GNU_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_GNU) ! 66: #define LUCID_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_LUCID) ! 67: #define ARM_DEMANGLING (CURRENT_DEMANGLING_STYLE & DMGL_ARM) ! 68: ! 69: extern char * ! 70: cplus_demangle PARAMS ((CONST char *mangled, int options)); ! 71: ! 72: /* Note: This sets global state. FIXME if you care about multi-threading. */ ! 73: ! 74: extern void ! 75: set_cplus_marker_for_demangling PARAMS ((int ch)); ! 76: ! 77: #endif /* DEMANGLE_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.