Subversion Repositories tendra.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 7u83 1
/*
2
    		 Crown Copyright (c) 1997
3
 
4
    This TenDRA(r) Computer Program is subject to Copyright
5
    owned by the United Kingdom Secretary of State for Defence
6
    acting through the Defence Evaluation and Research Agency
7
    (DERA).  It is made available to Recipients with a
8
    royalty-free licence for its use, reproduction, transfer
9
    to other parties and amendment for any purpose not excluding
10
    product development provided that any such use et cetera
11
    shall be deemed to be acceptance of the following conditions:-
12
 
13
        (1) Its Recipients shall ensure that this Notice is
14
        reproduced upon any copies or amended versions of it;
15
 
16
        (2) Any amended version of it shall be clearly marked to
17
        show both the nature of and the organisation responsible
18
        for the relevant amendment or amendments;
19
 
20
        (3) Its onward transfer from a recipient to another
21
        party shall be deemed to be that party's acceptance of
22
        these conditions;
23
 
24
        (4) DERA gives no warranty or assurance as to its
25
        quality or suitability for any purpose and DERA accepts
26
        no liability whatsoever in relation to any use to which
27
        it may be put.
28
*/
29
 
30
 
31
#ifndef MANGLE_INCLUDED
32
#define MANGLE_INCLUDED
33
 
34
 
35
/*
36
    NAME MANGLING DECLARATIONS
37
 
38
    The routines in this module are concerned with name mangling.
39
*/
40
 
41
extern string mangle_name PROTO_S ( ( IDENTIFIER, int, int ) ) ;
42
extern string mangle_literal PROTO_S ( ( INT_TYPE ) ) ;
43
extern string mangle_diag PROTO_S ( ( IDENTIFIER, int ) ) ;
44
extern string mangle_common PROTO_S ( ( string, IDENTIFIER ) ) ;
45
extern string mangle_typeid PROTO_S ( ( CONST char *, CLASS_TYPE ) ) ;
46
extern string mangle_tname PROTO_S ( ( CONST char *, TYPE ) ) ;
47
extern string mangle_vtable PROTO_S ( ( CONST char *, GRAPH ) ) ;
48
extern string mangle_anon PROTO_S ( ( void ) ) ;
49
extern string mangle_init PROTO_S ( ( void ) ) ;
50
extern unsigned long mangle_length ;
51
extern char mangle_ntype [] [3] ;
52
extern int mangle_signature ;
53
extern int mangle_objects ;
54
extern BUFFER mangle_buff ;
55
extern ulong common_no ;
56
 
57
 
58
/*
59
    NAME MANGLING CODES
60
 
61
    This macros give the encodings used in the mangling routines.  The
62
    built-in integral and floating-point types are given in the array
63
    mangle_ntype.
64
*/
65
 
66
#define MANGLE_char		'c'
67
#define MANGLE_short		's'
68
#define MANGLE_int		'i'
69
#define MANGLE_long		'l'
70
#define MANGLE_llong		'x'
71
#define MANGLE_float		'f'
72
#define MANGLE_double		'd'
73
#define MANGLE_ldouble		'r'
74
#define MANGLE_void		'v'
75
#define MANGLE_bottom		'u'
76
#define MANGLE_bool		'b'
77
#define MANGLE_ptrdiff_t	'y'
78
#define MANGLE_size_t		'z'
79
#define MANGLE_wchar_t		'w'
80
#define MANGLE_signed		'S'
81
#define MANGLE_unsigned		'U'
82
 
83
#define MANGLE_ptr		'P'
84
#define MANGLE_ref		'R'
85
#define MANGLE_ptr_mem		'M'
86
#define MANGLE_func		'F'
87
#define MANGLE_weak		'W'
88
#define MANGLE_array		'A'
89
#define MANGLE_bitfield		'B'
90
#define MANGLE_arith		'a'
91
#define MANGLE_literal		'n'
92
#define MANGLE_octal		'O'
93
#define MANGLE_hex		'X'
94
#define MANGLE_promote		'p'
95
#define MANGLE_unpromote	'q'
96
 
97
#define MANGLE_const		'C'
98
#define MANGLE_volatile		'V'
99
#define MANGLE_c_lang		'L'
100
 
101
#define MANGLE_nat		'I'
102
#define MANGLE_stmt		'V'
103
#define MANGLE_type		'Z'
104
#define MANGLE_self		'X'
105
#define MANGLE_repeat		'T'
106
#define MANGLE_multi		'N'
107
#define MANGLE_template		't'
108
#define MANGLE_templ_param	'm'
109
#define MANGLE_func_templ	'G'
110
#define MANGLE_ellipsis		'e'
111
#define MANGLE_neg		'h'
112
#define MANGLE_op		'o'
113
#define MANGLE_qual		'Q'
114
#define MANGLE_unicode4		'k'
115
#define MANGLE_unicode8		'K'
116
 
117
#define MANGLE_sep		'_'
118
#define MANGLE_colon		':'
119
#define MANGLE_comma		','
120
#define MANGLE_dot		'.'
121
#define MANGLE_error		'*'
122
 
123
#define MANGLE_WORTH		10
124
 
125
 
126
#endif