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

Annotated Revision 1.2 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
: #ifdef IN_GCC
1.2  (niklas 10-Jun-96)  24
: #include "gansidecl.h"
1.1  (niklas 08-Jan-96)  25
: #define PARAMS(ARGS) PROTO(ARGS)
   26
: #else /* ! IN_GCC */
   27
: #include <ansidecl.h>
   28
: #endif /* IN_GCC */
   29
: 
   30
: /* Options passed to cplus_demangle (in 2nd parameter). */
   31
: 
   32
: #define DMGL_NO_OPTS	0		/* For readability... */
   33
: #define DMGL_PARAMS	(1 << 0)	/* Include function args */
   34
: #define DMGL_ANSI	(1 << 1)	/* Include const, volatile, etc */
   35
: 
   36
: #define DMGL_AUTO	(1 << 8)
   37
: #define DMGL_GNU	(1 << 9)
   38
: #define DMGL_LUCID	(1 << 10)
   39
: #define DMGL_ARM	(1 << 11)
   40
: /* If none of these are set, use 'current_demangling_style' as the default. */
   41
: #define DMGL_STYLE_MASK (DMGL_AUTO|DMGL_GNU|DMGL_LUCID|DMGL_ARM)
   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,
   57
:   arm_demangling = DMGL_ARM
   58
: } current_demangling_style;
   59
: 
   60
: /* Define string names for the various demangling styles. */
   61
: 
   62
: #define AUTO_DEMANGLING_STYLE_STRING	"auto"
   63
: #define GNU_DEMANGLING_STYLE_STRING	"gnu"
   64
: #define LUCID_DEMANGLING_STYLE_STRING	"lucid"
   65
: #define ARM_DEMANGLING_STYLE_STRING	"arm"
   66
: 
   67
: /* Some macros to test what demangling style is active. */
   68
: 
   69
: #define CURRENT_DEMANGLING_STYLE current_demangling_style
   70
: #define AUTO_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_AUTO)
   71
: #define GNU_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_GNU)
   72
: #define LUCID_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_LUCID)
   73
: #define ARM_DEMANGLING (CURRENT_DEMANGLING_STYLE & DMGL_ARM)
   74
: 
   75
: extern char *
   76
: cplus_demangle PARAMS ((const char *mangled, int options));
   77
: 
   78
: extern int
1.2  (niklas 10-Jun-96)  79
: cplus_demangle_opname PARAMS ((const char *opname, char *result, int options));
1.1  (niklas 08-Jan-96)  80
: 
1.2  (niklas 10-Jun-96)  81
: extern const char *
   82
: cplus_mangle_opname PARAMS ((const char *opname, int options));
1.1  (niklas 08-Jan-96)  83
: 
   84
: /* Note: This sets global state.  FIXME if you care about multi-threading. */
   85
: 
   86
: extern void
   87
: set_cplus_marker_for_demangling PARAMS ((int ch));
   88
: 
   89
: #endif	/* DEMANGLE_H */