Changeset 594
- Timestamp:
- 08/03/10 00:53:04 (14 years ago)
- Files:
-
- branches/dmd-1.x/src/cppmangle.c (modified) (2 diffs)
- trunk/src/cppmangle.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/dmd-1.x/src/cppmangle.c
r428 r594 1 1 2 2 // Compiler implementation of the D programming language 3 // Copyright (c) 1999-20 07by Digital Mars3 // Copyright (c) 1999-2010 by Digital Mars 4 4 // All Rights Reserved 5 5 // written by Walter Bright 6 6 // http://www.digitalmars.com 7 7 // License for redistribution is by either the Artistic License 8 8 // in artistic.txt, or the GNU General Public License in gnu.txt. 9 9 // See the included readme.txt for details. 10 10 11 11 #include <stdio.h> 12 12 #include <assert.h> 13 13 14 14 #include "mars.h" 15 15 #include "dsymbol.h" 16 16 #include "mtype.h" 17 17 #include "scope.h" 18 18 #include "init.h" 19 19 #include "expression.h" 20 20 #include "attrib.h" 21 21 #include "declaration.h" 22 22 #include "template.h" 23 23 #include "id.h" 24 24 #include "enum.h" 25 25 #include "import.h" 26 26 #include "aggregate.h" 27 27 28 #if DMDV228 #if CPP_MANGLE 29 29 30 30 /* Do mangling for C++ linkage. 31 31 * Follows Itanium C++ ABI 1.86 32 32 * No attempt is made to support mangling of templates, operator 33 33 * overloading, or special functions. 34 34 * 35 35 * So why don't we use the C++ ABI for D name mangling? 36 36 * Because D supports a lot of things (like modules) that the C++ 37 37 * ABI has no concept of. These affect every D mangled name, 38 38 * so nothing would be compatible anyway. 39 39 */ 40 40 41 41 struct CppMangleState 42 42 { 43 43 static Array components; 44 44 45 45 int substitute(OutBuffer *buf, void *p); 46 46 }; 47 47 48 48 Array CppMangleState::components; … … 181 181 * a signed char 182 182 * h unsigned char 183 183 * s short 184 184 * t unsigned short 185 185 * i int 186 186 * j unsigned int 187 187 * l long 188 188 * m unsigned long 189 189 * x long long, __int64 190 190 * y unsigned long long, __int64 191 191 * n __int128 192 192 * o unsigned __int128 193 193 * f float 194 194 * d double 195 195 * e long double, __float80 196 196 * g __float128 197 197 * z ellipsis 198 198 * u <source-name> # vendor extended type 199 199 */ 200 200 201 if (isConst()) 202 buf->writeByte('K'); 203 201 204 switch (ty) 202 205 { 203 206 case Tvoid: c = 'v'; break; 204 207 case Tint8: c = 'a'; break; 205 208 case Tuns8: c = 'h'; break; 206 209 case Tint16: c = 's'; break; 207 210 case Tuns16: c = 't'; break; 208 211 case Tint32: c = 'i'; break; 209 212 case Tuns32: c = 'j'; break; 210 213 case Tfloat32: c = 'f'; break; 211 214 case Tint64: c = 'x'; break; 212 215 case Tuns64: c = 'y'; break; 213 216 case Tfloat64: c = 'd'; break; 214 217 case Tfloat80: c = 'e'; break; 215 218 case Tbool: c = 'b'; break; 216 219 case Tchar: c = 'c'; break; 217 220 case Twchar: c = 't'; break; 218 221 case Tdchar: c = 'w'; break; 219 222 220 223 case Timaginary32: p = 'G'; c = 'f'; break; trunk/src/cppmangle.c
r428 r594 1 1 2 2 // Compiler implementation of the D programming language 3 // Copyright (c) 1999-20 09by Digital Mars3 // Copyright (c) 1999-2010 by Digital Mars 4 4 // All Rights Reserved 5 5 // written by Walter Bright 6 6 // http://www.digitalmars.com 7 7 // License for redistribution is by either the Artistic License 8 8 // in artistic.txt, or the GNU General Public License in gnu.txt. 9 9 // See the included readme.txt for details. 10 10 11 11 #include <stdio.h> 12 12 #include <assert.h> 13 13 14 14 #include "mars.h" 15 15 #include "dsymbol.h" 16 16 #include "mtype.h" 17 17 #include "scope.h" 18 18 #include "init.h" 19 19 #include "expression.h" 20 20 #include "attrib.h" 21 21 #include "declaration.h" 22 22 #include "template.h" 23 23 #include "id.h" … … 181 181 * a signed char 182 182 * h unsigned char 183 183 * s short 184 184 * t unsigned short 185 185 * i int 186 186 * j unsigned int 187 187 * l long 188 188 * m unsigned long 189 189 * x long long, __int64 190 190 * y unsigned long long, __int64 191 191 * n __int128 192 192 * o unsigned __int128 193 193 * f float 194 194 * d double 195 195 * e long double, __float80 196 196 * g __float128 197 197 * z ellipsis 198 198 * u <source-name> # vendor extended type 199 199 */ 200 200 201 if (isConst()) 202 buf->writeByte('K'); 203 201 204 switch (ty) 202 205 { 203 206 case Tvoid: c = 'v'; break; 204 207 case Tint8: c = 'a'; break; 205 208 case Tuns8: c = 'h'; break; 206 209 case Tint16: c = 's'; break; 207 210 case Tuns16: c = 't'; break; 208 211 case Tint32: c = 'i'; break; 209 212 case Tuns32: c = 'j'; break; 210 213 case Tfloat32: c = 'f'; break; 211 214 case Tint64: c = 'x'; break; 212 215 case Tuns64: c = 'y'; break; 213 216 case Tfloat64: c = 'd'; break; 214 217 case Tfloat80: c = 'e'; break; 215 218 case Tbool: c = 'b'; break; 216 219 case Tchar: c = 'c'; break; 217 220 case Twchar: c = 't'; break; 218 221 case Tdchar: c = 'w'; break; 219 222 220 223 case Timaginary32: p = 'G'; c = 'f'; break;
