CVS Repository/ src/ gnu/ usr.bin/ binutils/ include/ demangle.h

Annotated Revision 1.3 Back
1.1  (niklas 08-Jan-96)  1
: /* Defs for interface to demanglers.
1.2  (niklas 10-Jun-96)  2
:    Copyright 1992, 1995, 1996 Free Software Foundation, Inc.
1.1  (niklas 08-Jan-96)  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
1.2  (niklas 10-Jun-96)  16
:    Foundation, Inc., 59 Temple Place - Suite 330,
   17
:    Boston, MA 02111-1307, USA.  */
1.1  (niklas 08-Jan-96)  18
: 
   19
: 
   20
: #if !defined (DEMANGLE_H)
   21
: #define DEMANGLE_H
   22
: 
   23
: #include <ansidecl.h>
   24
: 
   25
: /* Options passed to cplus_demangle (in 2nd parameter). */
   26
: 
   27
: #define DMGL_NO_OPTS	0		/* For readability... */
   28
: #define DMGL_PARAMS	(1 << 0)	/* Include function args */
   29
: #define DMGL_ANSI	(1 << 1)	/* Include const, volatile, etc */
1.3  (espie 12-Sep-00)  30
: #define DMGL_JAVA	(1 << 2)	/* Demangle as Java rather than C++. */
1.1  (niklas 08-Jan-96)  31
: 
   32
: #define DMGL_AUTO	(1 << 8)
   33
: #define DMGL_GNU	(1 << 9)
   34
: #define DMGL_LUCID	(1 << 10)
   35
: #define DMGL_ARM	(1 << 11)
1.3  (espie 12-Sep-00)  36
: #define DMGL_HP 	(1 << 12)       /* For the HP aCC compiler; same as ARM
   37
:                                            except for template arguments, etc. */
   38
: #define DMGL_EDG	(1 << 13)
   39
: 
1.1  (niklas 08-Jan-96)  40
: /* If none of these are set, use 'current_demangling_style' as the default. */
1.3  (espie 12-Sep-00)  41
: #define DMGL_STYLE_MASK (DMGL_AUTO|DMGL_GNU|DMGL_LUCID|DMGL_ARM|DMGL_HP|DMGL_EDG)
1.1  (niklas 08-Jan-96)  42
: 
   43
: /* Enumeration of possible demangling styles.
   44
: 
   45
:    Lucid and ARM styles are still kept logically distinct, even though
   46
:    they now both behave identically.  The resulting style is actual the
   47
:    union of both.  I.E. either style recognizes both "__pt__" and "__rf__"
   48
:    for operator "->", even though the first is lucid style and the second
   49
:    is ARM style. (FIXME?) */
   50
: 
   51
: extern enum demangling_styles
   52
: {
   53
:   unknown_demangling = 0,
   54
:   auto_demangling = DMGL_AUTO,
   55
:   gnu_demangling = DMGL_GNU,
   56
:   lucid_demangling = DMGL_LUCID,
1.3  (espie 12-Sep-00)  57
:   arm_demangling = DMGL_ARM,
   58
:   hp_demangling = DMGL_HP,
   59
:   edg_demangling = DMGL_EDG
1.1  (niklas 08-Jan-96)  60
: } current_demangling_style;
   61
: 
   62
: /* Define string names for the various demangling styles. */
   63
: 
   64
: #define AUTO_DEMANGLING_STYLE_STRING	"auto"
   65
: #define GNU_DEMANGLING_STYLE_STRING	"gnu"
   66
: #define LUCID_DEMANGLING_STYLE_STRING	"lucid"
   67
: #define ARM_DEMANGLING_STYLE_STRING	"arm"
1.3  (espie 12-Sep-00)  68
: #define HP_DEMANGLING_STYLE_STRING	"hp"
   69
: #define EDG_DEMANGLING_STYLE_STRING	"edg"
1.1  (niklas 08-Jan-96)  70
: 
   71
: /* Some macros to test what demangling style is active. */
   72
: 
   73
: #define CURRENT_DEMANGLING_STYLE current_demangling_style
   74
: #define AUTO_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_AUTO)
   75
: #define GNU_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_GNU)
   76
: #define LUCID_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_LUCID)
1.3  (espie 12-Sep-00)  77
: #define ARM_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_ARM)
   78
: #define HP_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_HP)
   79
: #define EDG_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_EDG)
1.1  (niklas 08-Jan-96)  80
: 
   81
: extern char *
   82
: cplus_demangle PARAMS ((const char *mangled, int options));
   83
: 
   84
: extern int
1.2  (niklas 10-Jun-96)  85
: cplus_demangle_opname PARAMS ((const char *opname, char *result, int options));
1.1  (niklas 08-Jan-96)  86
: 
1.2  (niklas 10-Jun-96)  87
: extern const char *
   88
: cplus_mangle_opname PARAMS ((const char *opname, int options));
1.1  (niklas 08-Jan-96)  89
: 
   90
: /* Note: This sets global state.  FIXME if you care about multi-threading. */
   91
: 
   92
: extern void
   93
: set_cplus_marker_for_demangling PARAMS ((int ch));
   94
: 
   95
: #endif	/* DEMANGLE_H */