GAS LISTING /tmp/ccJ9xNSW.s page 1 1 .file "hello-exceptions.cc" 2 .file 1 "hello-exceptions.cc" 10 .Ltext0: 11 .file 2 "/usr/include/xlocale.h" 12 .file 3 "/usr/include/gconv.h" 13 .file 4 "/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include/stddef.h" 14 .file 5 "/usr/include/wchar.h" 15 .file 6 "/usr/include/libio.h" 16 .file 7 "/usr/include/_G_config.h" 17 .file 8 "/usr/include/bits/types.h" 18 .file 9 "/usr/include/time.h" 19 .file 10 "/usr/include/bits/sched.h" 20 .file 11 "/usr/include/bits/pthreadtypes.h" 21 .file 12 "/usr/include/pthread.h" 22 .file 13 "/usr/include/c++/3.2.2/i386-redhat-linux/bits/c++io.h" 23 .file 14 "/usr/include/c++/3.2.2/bits/char_traits.h" 24 .file 15 "/usr/include/c++/3.2.2/bits/fpos.h" 25 .file 16 "/usr/include/bits/waitstatus.h" 26 .file 17 "/usr/include/bits/time.h" 27 .file 18 "/usr/include/stdlib.h" 28 .file 19 "/usr/include/sys/types.h" 29 .file 20 "/usr/include/c++/3.2.2/new" 30 .file 21 "/usr/include/c++/3.2.2/bits/type_traits.h" 31 .file 22 "/usr/include/c++/3.2.2/bits/stl_iterator_base_types.h" 32 .file 23 "/usr/include/c++/3.2.2/bits/stl_threads.h" 33 .file 24 "/usr/include/c++/3.2.2/i386-redhat-linux/bits/gthr-default.h" 34 .file 25 "/usr/include/c++/3.2.2/bits/stl_alloc.h" 35 .file 26 "/usr/include/c++/3.2.2/i386-redhat-linux/bits/atomicity.h" 36 .file 27 "/usr/include/c++/3.2.2/bits/stringfwd.h" 37 .file 28 "/usr/include/c++/3.2.2/bits/basic_string.h" 38 .file 29 "/usr/include/c++/3.2.2/bits/basic_string.tcc" 39 .file 30 "/usr/include/locale.h" 40 .file 31 "/usr/include/c++/3.2.2/bits/localefwd.h" 41 .file 32 "/usr/include/c++/3.2.2/bits/ios_base.h" 42 .file 33 "/usr/include/c++/3.2.2/i386-redhat-linux/bits/ctype_base.h" 43 .file 34 "/usr/include/c++/3.2.2/bits/codecvt.h" 44 .file 35 "/usr/include/c++/3.2.2/i386-redhat-linux/bits/codecvt_specializations.h" 45 .file 36 "/usr/include/iconv.h" 46 .file 37 "/usr/include/c++/3.2.2/bits/locale_facets.h" 47 .file 38 "/usr/include/math.h" 48 .file 39 "/usr/include/c++/3.2.2/limits" 49 .file 40 "/usr/include/c++/3.2.2/ostream" 50 .file 41 "/usr/include/c++/3.2.2/bits/ostream.tcc" 51 .file 42 "/usr/include/c++/3.2.2/istream" 52 .file 43 "/usr/include/c++/3.2.2/bits/istream.tcc" 53 .local _ZSt8__ioinit 54 .comm _ZSt8__ioinit,1,1 55 .globl _Unwind_Resume 56 .align 2 57 .globl _ZN11MyExceptionC2ESs 59 _ZN11MyExceptionC2ESs: 60 .LFB1480: 1:hello-exceptions.cc **** #include 2:hello-exceptions.cc **** #include 3:hello-exceptions.cc **** #include 4:hello-exceptions.cc **** 5:hello-exceptions.cc **** using namespace std; GAS LISTING /tmp/ccJ9xNSW.s page 2 6:hello-exceptions.cc **** 7:hello-exceptions.cc **** class MyException : public exception { 8:hello-exceptions.cc **** private: 9:hello-exceptions.cc **** string _what; 10:hello-exceptions.cc **** public: 11:hello-exceptions.cc **** MyException(string what) throw (); 12:hello-exceptions.cc **** ~MyException() throw (); 13:hello-exceptions.cc **** 14:hello-exceptions.cc **** virtual const char *what() const throw (); 15:hello-exceptions.cc **** string as_string() const; 16:hello-exceptions.cc **** }; 17:hello-exceptions.cc **** 18:hello-exceptions.cc **** MyException::MyException(string what) throw (): 61 .loc 1 18 0 62 0000 55 pushl %ebp 63 .LCFI0: 64 0001 89E5 movl %esp, %ebp 65 .LCFI1: 66 0003 56 pushl %esi 67 .LCFI2: 68 0004 53 pushl %ebx 69 .LCFI3: 70 0005 83EC10 subl $16, %esp 71 .LCFI4: 72 0008 8B5D0C movl 12(%ebp), %ebx 73 .LBB2: 19:hello-exceptions.cc **** _what(what) 20:hello-exceptions.cc **** {} 74 .loc 1 20 0 75 000b 83EC0C subl $12, %esp 76 000e FF7508 pushl 8(%ebp) 77 .LCFI5: 78 0011 E8FCFFFF call _ZNSt9exceptionC2Ev 78 FF 79 0016 83C410 addl $16, %esp 80 0019 8B4508 movl 8(%ebp), %eax 81 001c C7000800 movl $_ZTV11MyException+8, (%eax) 81 0000 82 0022 83EC08 subl $8, %esp 83 0025 53 pushl %ebx 84 0026 8B4508 movl 8(%ebp), %eax 85 0029 83C004 addl $4, %eax 86 002c 50 pushl %eax 87 .LEHB0: 88 002d E8FCFFFF call _ZNSsC1ERKSs 88 FF 89 .LEHE0: 90 0032 83C410 addl $16, %esp 91 .LBE2: 92 0035 EB3C jmp .L1 93 .L13: 94 0037 8945F4 movl %eax, -12(%ebp) 95 003a 8955F0 movl %edx, -16(%ebp) 96 003d 8B5DF4 movl -12(%ebp), %ebx 97 0040 8B75F0 movl -16(%ebp), %esi 98 0043 83EC0C subl $12, %esp 99 0046 FF7508 pushl 8(%ebp) GAS LISTING /tmp/ccJ9xNSW.s page 3 100 0049 E8FCFFFF call _ZNSt9exceptionD2Ev 100 FF 101 004e 83C410 addl $16, %esp 102 0051 895DF4 movl %ebx, -12(%ebp) 103 0054 8975F0 movl %esi, -16(%ebp) 104 .L14: 105 0057 837DF0FF cmpl $-1, -16(%ebp) 106 005b 740B je .L10 107 005d 83EC0C subl $12, %esp 108 0060 FF75F4 pushl -12(%ebp) 109 .LEHB1: 110 0063 E8FCFFFF call _Unwind_Resume 110 FF 111 .L10: 112 0068 83EC0C subl $12, %esp 113 006b FF75F4 pushl -12(%ebp) 114 006e E8FCFFFF call __cxa_call_unexpected 114 FF 115 .LEHE1: 116 .L1: 117 0073 8D65F8 leal -8(%ebp), %esp 118 0076 5B popl %ebx 119 0077 5E popl %esi 120 0078 C9 leave 121 0079 C3 ret 122 .LFE1480: 123 .Lfe1: 125 .section .gcc_except_table,"a",@progbits 126 .align 4 127 .LLSDA1480: 128 0000 FF .byte 0xff 129 0001 00 .byte 0x0 130 0002 11 .uleb128 .LLSDATT1480-.LLSDATTD1480 131 .LLSDATTD1480: 132 0003 01 .byte 0x1 133 0004 08 .uleb128 .LLSDACSE1480-.LLSDACSB1480 134 .LLSDACSB1480: 135 0005 2D .uleb128 .LEHB0-.LFB1480 136 0006 05 .uleb128 .LEHE0-.LEHB0 137 0007 37 .uleb128 .L13-.LFB1480 138 0008 03 .uleb128 0x3 139 0009 63 .uleb128 .LEHB1-.LFB1480 140 000a 10 .uleb128 .LEHE1-.LEHB1 141 000b 00 .uleb128 0x0 142 000c 00 .uleb128 0x0 143 .LLSDACSE1480: 144 000d 7F .byte 0x7f 145 000e 00 .byte 0x0 146 000f 00 .byte 0x0 147 0010 7D .byte 0x7d 148 0011 000000 .align 4 149 .LLSDATT1480: 150 0014 00 .byte 0x0 151 .text 152 .align 2 153 .globl _ZN11MyExceptionC1ESs 155 _ZN11MyExceptionC1ESs: GAS LISTING /tmp/ccJ9xNSW.s page 4 156 .LFB1482: 157 .loc 1 18 0 158 007a 55 pushl %ebp 159 .LCFI6: 160 007b 89E5 movl %esp, %ebp 161 .LCFI7: 162 007d 56 pushl %esi 163 .LCFI8: 164 007e 53 pushl %ebx 165 .LCFI9: 166 007f 83EC10 subl $16, %esp 167 .LCFI10: 168 0082 8B5D0C movl 12(%ebp), %ebx 169 .LBB3: 170 .loc 1 20 0 171 0085 83EC0C subl $12, %esp 172 0088 FF7508 pushl 8(%ebp) 173 .LCFI11: 174 008b E8FCFFFF call _ZNSt9exceptionC2Ev 174 FF 175 0090 83C410 addl $16, %esp 176 0093 8B4508 movl 8(%ebp), %eax 177 0096 C7000800 movl $_ZTV11MyException+8, (%eax) 177 0000 178 009c 83EC08 subl $8, %esp 179 009f 53 pushl %ebx 180 00a0 8B4508 movl 8(%ebp), %eax 181 00a3 83C004 addl $4, %eax 182 00a6 50 pushl %eax 183 .LEHB2: 184 00a7 E8FCFFFF call _ZNSsC1ERKSs 184 FF 185 .LEHE2: 186 00ac 83C410 addl $16, %esp 187 .LBE3: 188 00af EB3C jmp .L15 189 .L27: 190 00b1 8945F4 movl %eax, -12(%ebp) 191 00b4 8955F0 movl %edx, -16(%ebp) 192 00b7 8B5DF4 movl -12(%ebp), %ebx 193 00ba 8B75F0 movl -16(%ebp), %esi 194 00bd 83EC0C subl $12, %esp 195 00c0 FF7508 pushl 8(%ebp) 196 00c3 E8FCFFFF call _ZNSt9exceptionD2Ev 196 FF 197 00c8 83C410 addl $16, %esp 198 00cb 895DF4 movl %ebx, -12(%ebp) 199 00ce 8975F0 movl %esi, -16(%ebp) 200 .L28: 201 00d1 837DF0FF cmpl $-1, -16(%ebp) 202 00d5 740B je .L24 203 00d7 83EC0C subl $12, %esp 204 00da FF75F4 pushl -12(%ebp) 205 .LEHB3: 206 00dd E8FCFFFF call _Unwind_Resume 206 FF 207 .L24: GAS LISTING /tmp/ccJ9xNSW.s page 5 208 00e2 83EC0C subl $12, %esp 209 00e5 FF75F4 pushl -12(%ebp) 210 00e8 E8FCFFFF call __cxa_call_unexpected 210 FF 211 .LEHE3: 212 .L15: 213 00ed 8D65F8 leal -8(%ebp), %esp 214 00f0 5B popl %ebx 215 00f1 5E popl %esi 216 00f2 C9 leave 217 00f3 C3 ret 218 .LFE1482: 219 .Lfe2: 221 .section .gcc_except_table 222 0015 000000 .align 4 223 .LLSDA1482: 224 0018 FF .byte 0xff 225 0019 00 .byte 0x0 226 001a 11 .uleb128 .LLSDATT1482-.LLSDATTD1482 227 .LLSDATTD1482: 228 001b 01 .byte 0x1 229 001c 08 .uleb128 .LLSDACSE1482-.LLSDACSB1482 230 .LLSDACSB1482: 231 001d 2D .uleb128 .LEHB2-.LFB1482 232 001e 05 .uleb128 .LEHE2-.LEHB2 233 001f 37 .uleb128 .L27-.LFB1482 234 0020 03 .uleb128 0x3 235 0021 63 .uleb128 .LEHB3-.LFB1482 236 0022 10 .uleb128 .LEHE3-.LEHB3 237 0023 00 .uleb128 0x0 238 0024 00 .uleb128 0x0 239 .LLSDACSE1482: 240 0025 7F .byte 0x7f 241 0026 00 .byte 0x0 242 0027 00 .byte 0x0 243 0028 7D .byte 0x7d 244 0029 000000 .align 4 245 .LLSDATT1482: 246 002c 00 .byte 0x0 247 .text 248 .align 2 249 .globl _ZN11MyExceptionD2Ev 251 _ZN11MyExceptionD2Ev: 252 .LFB1485: 21:hello-exceptions.cc **** 22:hello-exceptions.cc **** MyException::~MyException() throw () { 253 .loc 1 22 0 254 .LBB4: 255 00f4 55 pushl %ebp 256 .LCFI12: 257 00f5 89E5 movl %esp, %ebp 258 .LCFI13: 259 00f7 83EC08 subl $8, %esp 260 .LCFI14: 261 .loc 1 22 0 262 00fa 8B4508 movl 8(%ebp), %eax 263 00fd C7000800 movl $_ZTV11MyException+8, (%eax) GAS LISTING /tmp/ccJ9xNSW.s page 6 263 0000 264 .LBE4: 23:hello-exceptions.cc **** } 265 .loc 1 23 0 266 0103 83EC0C subl $12, %esp 267 0106 8B4508 movl 8(%ebp), %eax 268 0109 83C004 addl $4, %eax 269 010c 50 pushl %eax 270 .LEHB4: 271 .LCFI15: 272 010d E8FCFFFF call _ZNSsD1Ev 272 FF 273 .LEHE4: 274 0112 83C410 addl $16, %esp 275 0115 83EC0C subl $12, %esp 276 0118 FF7508 pushl 8(%ebp) 277 011b E8FCFFFF call _ZNSt9exceptionD2Ev 277 FF 278 0120 83C410 addl $16, %esp 279 0123 B8010000 movl $1, %eax 279 00 280 0128 83E000 andl $0, %eax 281 012b 84C0 testb %al, %al 282 012d 742E je .L29 283 012f 83EC0C subl $12, %esp 284 0132 FF7508 pushl 8(%ebp) 285 0135 E8FCFFFF call _ZdlPv 285 FF 286 013a 83C410 addl $16, %esp 287 013d EB1E jmp .L29 288 .L36: 289 013f 8945FC movl %eax, -4(%ebp) 290 0142 83FAFF cmpl $-1, %edx 291 0145 740B je .L33 292 0147 83EC0C subl $12, %esp 293 014a FF75FC pushl -4(%ebp) 294 .LEHB5: 295 014d E8FCFFFF call _Unwind_Resume 295 FF 296 .L33: 297 0152 83EC0C subl $12, %esp 298 0155 FF75FC pushl -4(%ebp) 299 0158 E8FCFFFF call __cxa_call_unexpected 299 FF 300 .LEHE5: 301 .L29: 302 015d C9 leave 303 015e C3 ret 304 .LFE1485: 305 .Lfe3: 307 .section .gcc_except_table 308 002d 000000 .align 4 309 .LLSDA1485: 310 0030 FF .byte 0xff 311 0031 00 .byte 0x0 312 0032 0D .uleb128 .LLSDATT1485-.LLSDATTD1485 313 .LLSDATTD1485: GAS LISTING /tmp/ccJ9xNSW.s page 7 314 0033 01 .byte 0x1 315 0034 08 .uleb128 .LLSDACSE1485-.LLSDACSB1485 316 .LLSDACSB1485: 317 0035 19 .uleb128 .LEHB4-.LFB1485 318 0036 05 .uleb128 .LEHE4-.LEHB4 319 0037 4B .uleb128 .L36-.LFB1485 320 0038 01 .uleb128 0x1 321 0039 59 .uleb128 .LEHB5-.LFB1485 322 003a 10 .uleb128 .LEHE5-.LEHB5 323 003b 00 .uleb128 0x0 324 003c 00 .uleb128 0x0 325 .LLSDACSE1485: 326 003d 7F .byte 0x7f 327 003e 00 .byte 0x0 328 003f 00 .align 4 329 .LLSDATT1485: 330 0040 00 .byte 0x0 331 .text 332 015f 90 .align 2 333 .globl _ZN11MyExceptionD1Ev 335 _ZN11MyExceptionD1Ev: 336 .LFB1487: 337 .loc 1 22 0 338 .LBB5: 339 0160 55 pushl %ebp 340 .LCFI16: 341 0161 89E5 movl %esp, %ebp 342 .LCFI17: 343 0163 83EC08 subl $8, %esp 344 .LCFI18: 345 .loc 1 22 0 346 0166 8B4508 movl 8(%ebp), %eax 347 0169 C7000800 movl $_ZTV11MyException+8, (%eax) 347 0000 348 .LBE5: 349 .loc 1 23 0 350 016f 83EC0C subl $12, %esp 351 0172 8B4508 movl 8(%ebp), %eax 352 0175 83C004 addl $4, %eax 353 0178 50 pushl %eax 354 .LEHB6: 355 .LCFI19: 356 0179 E8FCFFFF call _ZNSsD1Ev 356 FF 357 .LEHE6: 358 017e 83C410 addl $16, %esp 359 0181 83EC0C subl $12, %esp 360 0184 FF7508 pushl 8(%ebp) 361 0187 E8FCFFFF call _ZNSt9exceptionD2Ev 361 FF 362 018c 83C410 addl $16, %esp 363 018f B8010000 movl $1, %eax 363 00 364 0194 83E002 andl $2, %eax 365 0197 84C0 testb %al, %al 366 0199 742E je .L37 367 019b 83EC0C subl $12, %esp GAS LISTING /tmp/ccJ9xNSW.s page 8 368 019e FF7508 pushl 8(%ebp) 369 01a1 E8FCFFFF call _ZdlPv 369 FF 370 01a6 83C410 addl $16, %esp 371 01a9 EB1E jmp .L37 372 .L44: 373 01ab 8945FC movl %eax, -4(%ebp) 374 01ae 83FAFF cmpl $-1, %edx 375 01b1 740B je .L41 376 01b3 83EC0C subl $12, %esp 377 01b6 FF75FC pushl -4(%ebp) 378 .LEHB7: 379 01b9 E8FCFFFF call _Unwind_Resume 379 FF 380 .L41: 381 01be 83EC0C subl $12, %esp 382 01c1 FF75FC pushl -4(%ebp) 383 01c4 E8FCFFFF call __cxa_call_unexpected 383 FF 384 .LEHE7: 385 .L37: 386 01c9 C9 leave 387 01ca C3 ret 388 .LFE1487: 389 .Lfe4: 391 .section .gcc_except_table 392 0041 000000 .align 4 393 .LLSDA1487: 394 0044 FF .byte 0xff 395 0045 00 .byte 0x0 396 0046 0D .uleb128 .LLSDATT1487-.LLSDATTD1487 397 .LLSDATTD1487: 398 0047 01 .byte 0x1 399 0048 08 .uleb128 .LLSDACSE1487-.LLSDACSB1487 400 .LLSDACSB1487: 401 0049 19 .uleb128 .LEHB6-.LFB1487 402 004a 05 .uleb128 .LEHE6-.LEHB6 403 004b 4B .uleb128 .L44-.LFB1487 404 004c 01 .uleb128 0x1 405 004d 59 .uleb128 .LEHB7-.LFB1487 406 004e 10 .uleb128 .LEHE7-.LEHB7 407 004f 00 .uleb128 0x0 408 0050 00 .uleb128 0x0 409 .LLSDACSE1487: 410 0051 7F .byte 0x7f 411 0052 00 .byte 0x0 412 0053 00 .align 4 413 .LLSDATT1487: 414 0054 00 .byte 0x0 415 .text 416 01cb 90 .align 2 417 .globl _ZN11MyExceptionD0Ev 419 _ZN11MyExceptionD0Ev: 420 .LFB1489: 421 .loc 1 22 0 422 .LBB6: 423 01cc 55 pushl %ebp GAS LISTING /tmp/ccJ9xNSW.s page 9 424 .LCFI20: 425 01cd 89E5 movl %esp, %ebp 426 .LCFI21: 427 01cf 83EC08 subl $8, %esp 428 .LCFI22: 429 .loc 1 22 0 430 01d2 8B4508 movl 8(%ebp), %eax 431 01d5 C7000800 movl $_ZTV11MyException+8, (%eax) 431 0000 432 .LBE6: 433 .loc 1 23 0 434 01db 83EC0C subl $12, %esp 435 01de 8B4508 movl 8(%ebp), %eax 436 01e1 83C004 addl $4, %eax 437 01e4 50 pushl %eax 438 .LEHB8: 439 .LCFI23: 440 01e5 E8FCFFFF call _ZNSsD1Ev 440 FF 441 .LEHE8: 442 01ea 83C410 addl $16, %esp 443 01ed 83EC0C subl $12, %esp 444 01f0 FF7508 pushl 8(%ebp) 445 01f3 E8FCFFFF call _ZNSt9exceptionD2Ev 445 FF 446 01f8 83C410 addl $16, %esp 447 01fb B8010000 movl $1, %eax 447 00 448 0200 83E003 andl $3, %eax 449 0203 84C0 testb %al, %al 450 0205 742E je .L45 451 0207 83EC0C subl $12, %esp 452 020a FF7508 pushl 8(%ebp) 453 020d E8FCFFFF call _ZdlPv 453 FF 454 0212 83C410 addl $16, %esp 455 0215 EB1E jmp .L45 456 .L52: 457 0217 8945FC movl %eax, -4(%ebp) 458 021a 83FAFF cmpl $-1, %edx 459 021d 740B je .L49 460 021f 83EC0C subl $12, %esp 461 0222 FF75FC pushl -4(%ebp) 462 .LEHB9: 463 0225 E8FCFFFF call _Unwind_Resume 463 FF 464 .L49: 465 022a 83EC0C subl $12, %esp 466 022d FF75FC pushl -4(%ebp) 467 0230 E8FCFFFF call __cxa_call_unexpected 467 FF 468 .LEHE9: 469 .L45: 470 0235 C9 leave 471 0236 C3 ret 472 .LFE1489: 473 .Lfe5: GAS LISTING /tmp/ccJ9xNSW.s page 10 475 .section .gcc_except_table 476 0055 000000 .align 4 477 .LLSDA1489: 478 0058 FF .byte 0xff 479 0059 00 .byte 0x0 480 005a 0D .uleb128 .LLSDATT1489-.LLSDATTD1489 481 .LLSDATTD1489: 482 005b 01 .byte 0x1 483 005c 08 .uleb128 .LLSDACSE1489-.LLSDACSB1489 484 .LLSDACSB1489: 485 005d 19 .uleb128 .LEHB8-.LFB1489 486 005e 05 .uleb128 .LEHE8-.LEHB8 487 005f 4B .uleb128 .L52-.LFB1489 488 0060 01 .uleb128 0x1 489 0061 59 .uleb128 .LEHB9-.LFB1489 490 0062 10 .uleb128 .LEHE9-.LEHB9 491 0063 00 .uleb128 0x0 492 0064 00 .uleb128 0x0 493 .LLSDACSE1489: 494 0065 7F .byte 0x7f 495 0066 00 .byte 0x0 496 0067 00 .align 4 497 .LLSDATT1489: 498 0068 00 .byte 0x0 499 .text 500 0237 90 .align 2 501 .globl _ZNK11MyException4whatEv 503 _ZNK11MyException4whatEv: 504 .LFB1491: 24:hello-exceptions.cc **** 25:hello-exceptions.cc **** const char *MyException::what() const throw () { 505 .loc 1 25 0 506 .LBB7: 507 0238 55 pushl %ebp 508 .LCFI24: 509 0239 89E5 movl %esp, %ebp 510 .LCFI25: 511 023b 83EC08 subl $8, %esp 512 .LCFI26: 26:hello-exceptions.cc **** return _what.c_str(); 513 .loc 1 26 0 514 023e 83EC0C subl $12, %esp 515 0241 8B4508 movl 8(%ebp), %eax 516 0244 83C004 addl $4, %eax 517 0247 50 pushl %eax 518 .LEHB10: 519 .LCFI27: 520 0248 E8FCFFFF call _ZNKSs5c_strEv 520 FF 521 .LEHE10: 522 024d 83C410 addl $16, %esp 523 0250 8945FC movl %eax, -4(%ebp) 524 0253 EB1E jmp .L53 525 .LBE7: 526 .L57: 527 0255 8945F8 movl %eax, -8(%ebp) 528 0258 83FAFF cmpl $-1, %edx GAS LISTING /tmp/ccJ9xNSW.s page 11 529 025b 740B je .L54 530 025d 83EC0C subl $12, %esp 531 0260 FF75F8 pushl -8(%ebp) 532 .LEHB11: 533 0263 E8FCFFFF call _Unwind_Resume 533 FF 534 .L54: 535 0268 83EC0C subl $12, %esp 536 026b FF75F8 pushl -8(%ebp) 537 026e E8FCFFFF call __cxa_call_unexpected 537 FF 538 .LEHE11: 27:hello-exceptions.cc **** } 539 .loc 1 27 0 540 .L53: 541 0273 8B45FC movl -4(%ebp), %eax 542 0276 C9 leave 543 0277 C3 ret 544 .LFE1491: 545 .Lfe6: 547 .section .gcc_except_table 548 0069 000000 .align 4 549 .LLSDA1491: 550 006c FF .byte 0xff 551 006d 00 .byte 0x0 552 006e 0D .uleb128 .LLSDATT1491-.LLSDATTD1491 553 .LLSDATTD1491: 554 006f 01 .byte 0x1 555 0070 08 .uleb128 .LLSDACSE1491-.LLSDACSB1491 556 .LLSDACSB1491: 557 0071 10 .uleb128 .LEHB10-.LFB1491 558 0072 05 .uleb128 .LEHE10-.LEHB10 559 0073 1D .uleb128 .L57-.LFB1491 560 0074 01 .uleb128 0x1 561 0075 2B .uleb128 .LEHB11-.LFB1491 562 0076 10 .uleb128 .LEHE11-.LEHB11 563 0077 00 .uleb128 0x0 564 0078 00 .uleb128 0x0 565 .LLSDACSE1491: 566 0079 7F .byte 0x7f 567 007a 00 .byte 0x0 568 007b 00 .align 4 569 .LLSDATT1491: 570 007c 00 .byte 0x0 571 .text 572 .section .rodata 573 .LC0: 574 0000 2900 .string ")" 575 .LC1: 576 0002 4D794578 .string "MyException(" 576 63657074 576 696F6E28 576 00 577 .text 578 .align 2 579 .globl _ZNK11MyException9as_stringEv 581 _ZNK11MyException9as_stringEv: GAS LISTING /tmp/ccJ9xNSW.s page 12 582 .LFB1493: 28:hello-exceptions.cc **** 29:hello-exceptions.cc **** string MyException::as_string() const { 583 .loc 1 29 0 584 0278 55 pushl %ebp 585 .LCFI28: 586 0279 89E5 movl %esp, %ebp 587 .LCFI29: 588 027b 53 pushl %ebx 589 .LCFI30: 590 027c 83EC24 subl $36, %esp 591 .LCFI31: 592 .LBB8: 30:hello-exceptions.cc **** return "MyException(" + _what + ")"; 593 .loc 1 30 0 594 027f 83EC04 subl $4, %esp 595 0282 68000000 pushl $.LC0 595 00 596 0287 8D45E8 leal -24(%ebp), %eax 597 028a 83EC0C subl $12, %esp 598 028d 8B550C movl 12(%ebp), %edx 599 0290 83C204 addl $4, %edx 600 0293 52 pushl %edx 601 0294 68020000 pushl $.LC1 601 00 602 0299 50 pushl %eax 603 .LEHB12: 604 .LCFI32: 605 029a E8FCFFFF call _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ 605 FF 606 .LEHE12: 607 029f 83C414 addl $20, %esp 608 02a2 8D45E8 leal -24(%ebp), %eax 609 02a5 50 pushl %eax 610 02a6 FF7508 pushl 8(%ebp) 611 .LEHB13: 612 .LCFI33: 613 02a9 E8FCFFFF call _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_ 613 FF 614 .LEHE13: 615 02ae 83C40C addl $12, %esp 616 .LBB9: 617 02b1 83EC0C subl $12, %esp 618 02b4 8D45E8 leal -24(%ebp), %eax 619 02b7 50 pushl %eax 620 .LEHB14: 621 02b8 E8FCFFFF call _ZNSsD1Ev 621 FF 622 .LEHE14: 623 02bd 83C410 addl $16, %esp 624 .LBE9: 625 02c0 EB23 jmp .L58 626 .L63: 627 02c2 8945E4 movl %eax, -28(%ebp) 628 02c5 8B5DE4 movl -28(%ebp), %ebx 629 02c8 83EC0C subl $12, %esp 630 02cb 8D45E8 leal -24(%ebp), %eax GAS LISTING /tmp/ccJ9xNSW.s page 13 631 02ce 50 pushl %eax 632 02cf E8FCFFFF call _ZNSsD1Ev 632 FF 633 02d4 83C410 addl $16, %esp 634 02d7 895DE4 movl %ebx, -28(%ebp) 635 02da 83EC0C subl $12, %esp 636 02dd FF75E4 pushl -28(%ebp) 637 .LEHB15: 638 02e0 E8FCFFFF call _Unwind_Resume 638 FF 639 .LEHE15: 640 .LBE8: 31:hello-exceptions.cc **** } 641 .loc 1 31 0 642 .L58: 643 02e5 8B4508 movl 8(%ebp), %eax 644 02e8 8B5DFC movl -4(%ebp), %ebx 645 02eb C9 leave 646 02ec C20400 ret $4 647 .LFE1493: 648 .Lfe7: 650 .section .gcc_except_table 651 .LLSDA1493: 652 007d FF .byte 0xff 653 007e FF .byte 0xff 654 007f 01 .byte 0x1 655 0080 10 .uleb128 .LLSDACSE1493-.LLSDACSB1493 656 .LLSDACSB1493: 657 0081 22 .uleb128 .LEHB12-.LFB1493 658 0082 05 .uleb128 .LEHE12-.LEHB12 659 0083 00 .uleb128 0x0 660 0084 00 .uleb128 0x0 661 0085 31 .uleb128 .LEHB13-.LFB1493 662 0086 05 .uleb128 .LEHE13-.LEHB13 663 0087 4A .uleb128 .L63-.LFB1493 664 0088 00 .uleb128 0x0 665 0089 40 .uleb128 .LEHB14-.LFB1493 666 008a 05 .uleb128 .LEHE14-.LEHB14 667 008b 00 .uleb128 0x0 668 008c 00 .uleb128 0x0 669 008d 68 .uleb128 .LEHB15-.LFB1493 670 008e 05 .uleb128 .LEHE15-.LEHB15 671 008f 00 .uleb128 0x0 672 0090 00 .uleb128 0x0 673 .LLSDACSE1493: 674 .text 675 .section .rodata 676 .LC2: 677 000f 61726720 .string "arg is not greater than 0." 677 6973206E 677 6F742067 677 72656174 677 65722074 678 .text 679 02ef 90 .align 2 680 .globl _Z9take_halfi 682 _Z9take_halfi: GAS LISTING /tmp/ccJ9xNSW.s page 14 683 .LFB1501: 32:hello-exceptions.cc **** 33:hello-exceptions.cc **** 34:hello-exceptions.cc **** // arg must be greater than 0. Returns half arg, rounded down. 35:hello-exceptions.cc **** int take_half(int arg) throw (MyException) { 684 .loc 1 35 0 685 .LBB10: 686 02f0 55 pushl %ebp 687 .LCFI34: 688 02f1 89E5 movl %esp, %ebp 689 .LCFI35: 690 02f3 56 pushl %esi 691 .LCFI36: 692 02f4 53 pushl %ebx 693 .LCFI37: 694 02f5 83EC40 subl $64, %esp 695 .LCFI38: 36:hello-exceptions.cc **** if (arg <= 0) { 696 .loc 1 36 0 697 02f8 837D0800 cmpl $0, 8(%ebp) 698 02fc 0F8FD200 jg .L65 698 0000 37:hello-exceptions.cc **** throw MyException("arg is not greater than 0."); 699 .loc 1 37 0 700 0302 83EC08 subl $8, %esp 701 0305 83EC0C subl $12, %esp 702 0308 83EC08 subl $8, %esp 703 030b 8D45C8 leal -56(%ebp), %eax 704 030e 50 pushl %eax 705 .LCFI39: 706 030f E8FCFFFF call _ZNSaIcEC1Ev 706 FF 707 0314 83C40C addl $12, %esp 708 0317 8D45C8 leal -56(%ebp), %eax 709 031a 50 pushl %eax 710 031b 680F0000 pushl $.LC2 710 00 711 0320 8D45D8 leal -40(%ebp), %eax 712 0323 50 pushl %eax 713 .LEHB16: 714 .LCFI40: 715 0324 E8FCFFFF call _ZNSsC1EPKcRKSaIcE 715 FF 716 0329 83C418 addl $24, %esp 717 032c 8D45D8 leal -40(%ebp), %eax 718 032f 50 pushl %eax 719 0330 8D45E8 leal -24(%ebp), %eax 720 0333 50 pushl %eax 721 .LCFI41: 722 0334 E8FCFFFF call _ZN11MyExceptionC1ESs 722 FF 723 0339 83C410 addl $16, %esp 724 033c 83EC0C subl $12, %esp 725 033f 8D45D8 leal -40(%ebp), %eax 726 0342 50 pushl %eax 727 0343 E8FCFFFF call _ZNSsD1Ev 727 FF GAS LISTING /tmp/ccJ9xNSW.s page 15 728 .LEHE16: 729 0348 83C410 addl $16, %esp 730 034b EB23 jmp .L71 731 .L84: 732 034d 8945C0 movl %eax, -64(%ebp) 733 0350 8955BC movl %edx, -68(%ebp) 734 0353 8B5DC0 movl -64(%ebp), %ebx 735 0356 8B75BC movl -68(%ebp), %esi 736 0359 83EC0C subl $12, %esp 737 035c 8D45C8 leal -56(%ebp), %eax 738 035f 50 pushl %eax 739 0360 E8FCFFFF call _ZNSaIcED1Ev 739 FF 740 0365 83C410 addl $16, %esp 741 0368 895DC0 movl %ebx, -64(%ebp) 742 036b 8975BC movl %esi, -68(%ebp) 743 036e EB79 jmp .L82 744 .L71: 745 0370 83EC0C subl $12, %esp 746 0373 8D45C8 leal -56(%ebp), %eax 747 0376 50 pushl %eax 748 0377 E8FCFFFF call _ZNSaIcED1Ev 748 FF 749 037c 83C410 addl $16, %esp 750 037f 83EC0C subl $12, %esp 751 0382 6A08 pushl $8 752 0384 E8FCFFFF call __cxa_allocate_exception 752 FF 753 0389 83C410 addl $16, %esp 754 038c 89C3 movl %eax, %ebx 755 038e 83EC08 subl $8, %esp 756 0391 8D45E8 leal -24(%ebp), %eax 757 0394 50 pushl %eax 758 0395 53 pushl %ebx 759 0396 E8FCFFFF call _ZN11MyExceptionC1ERKS_ 759 FF 760 039b 83C410 addl $16, %esp 761 039e 83EC04 subl $4, %esp 762 03a1 68000000 pushl $_ZN11MyExceptionD1Ev 762 00 763 03a6 68000000 pushl $_ZTI11MyException 763 00 764 03ab 53 pushl %ebx 765 .LEHB17: 766 03ac E8FCFFFF call __cxa_throw 766 FF 767 .LEHE17: 768 .L83: 769 03b1 8945C0 movl %eax, -64(%ebp) 770 03b4 8955BC movl %edx, -68(%ebp) 771 03b7 8B5DC0 movl -64(%ebp), %ebx 772 03ba 8B75BC movl -68(%ebp), %esi 773 03bd 83EC0C subl $12, %esp 774 03c0 8D45E8 leal -24(%ebp), %eax 775 03c3 50 pushl %eax 776 03c4 E8FCFFFF call _ZN11MyExceptionD1Ev 776 FF GAS LISTING /tmp/ccJ9xNSW.s page 16 777 03c9 83C410 addl $16, %esp 778 03cc 895DC0 movl %ebx, -64(%ebp) 779 03cf 8975BC movl %esi, -68(%ebp) 780 03d2 EB15 jmp .L82 781 .L65: 38:hello-exceptions.cc **** } 39:hello-exceptions.cc **** return arg / 2; 782 .loc 1 39 0 783 03d4 8B5508 movl 8(%ebp), %edx 784 03d7 89D0 movl %edx, %eax 785 03d9 C1F81F sarl $31, %eax 786 03dc C1E81F shrl $31, %eax 787 03df 8D0410 leal (%eax,%edx), %eax 788 03e2 D1F8 sarl $1, %eax 789 03e4 8945C4 movl %eax, -60(%ebp) 790 03e7 EB1C jmp .L64 791 .LBE10: 792 .L85: 793 .L82: 794 03e9 837DBCFF cmpl $-1, -68(%ebp) 795 03ed 740B je .L80 796 03ef 83EC0C subl $12, %esp 797 03f2 FF75C0 pushl -64(%ebp) 798 .LEHB18: 799 03f5 E8FCFFFF call _Unwind_Resume 799 FF 800 .L80: 801 03fa 83EC0C subl $12, %esp 802 03fd FF75C0 pushl -64(%ebp) 803 0400 E8FCFFFF call __cxa_call_unexpected 803 FF 804 .LEHE18: 40:hello-exceptions.cc **** } 805 .loc 1 40 0 806 .L64: 807 0405 8B45C4 movl -60(%ebp), %eax 808 0408 8D65F8 leal -8(%ebp), %esp 809 040b 5B popl %ebx 810 040c 5E popl %esi 811 040d C9 leave 812 040e C3 ret 813 .LFE1501: 814 .Lfe8: 816 .section .gcc_except_table 817 0091 000000 .align 4 818 .LLSDA1501: 819 0094 FF .byte 0xff 820 0095 00 .byte 0x0 821 0096 19 .uleb128 .LLSDATT1501-.LLSDATTD1501 822 .LLSDATTD1501: 823 0097 01 .byte 0x1 824 0098 0F .uleb128 .LLSDACSE1501-.LLSDACSB1501 825 .LLSDACSB1501: 826 0099 34 .uleb128 .LEHB16-.LFB1501 827 009a 24 .uleb128 .LEHE16-.LEHB16 828 009b 5D .uleb128 .L84-.LFB1501 829 009c 03 .uleb128 0x3 GAS LISTING /tmp/ccJ9xNSW.s page 17 830 009d BC01 .uleb128 .LEHB17-.LFB1501 831 009f 05 .uleb128 .LEHE17-.LEHB17 832 00a0 C101 .uleb128 .L83-.LFB1501 833 00a2 03 .uleb128 0x3 834 00a3 8502 .uleb128 .LEHB18-.LFB1501 835 00a5 10 .uleb128 .LEHE18-.LEHB18 836 00a6 00 .uleb128 0x0 837 00a7 00 .uleb128 0x0 838 .LLSDACSE1501: 839 00a8 7F .byte 0x7f 840 00a9 00 .byte 0x0 841 00aa 00 .byte 0x0 842 00ab 7D .byte 0x7d 843 .align 4 844 00ac 00000000 .long _ZTI11MyException 845 .LLSDATT1501: 846 00b0 01 .byte 0x1 847 00b1 00 .byte 0x0 848 .text 849 .section .rodata 850 .LC3: 851 002a 476F7420 .string "Got exception: " 851 65786365 851 7074696F 851 6E3A2000 852 .text 853 040f 90 .align 2 854 .globl main 856 main: 857 .LFB1503: 41:hello-exceptions.cc **** 42:hello-exceptions.cc **** int main(int argc, char **argv) { 858 .loc 1 42 0 859 0410 55 pushl %ebp 860 .LCFI42: 861 0411 89E5 movl %esp, %ebp 862 .LCFI43: 863 0413 53 pushl %ebx 864 .LCFI44: 865 0414 83EC34 subl $52, %esp 866 .LCFI45: 867 0417 83E4F0 andl $-16, %esp 868 041a B8000000 movl $0, %eax 868 00 869 041f 29C4 subl %eax, %esp 870 .LBB11: 43:hello-exceptions.cc **** try { 871 .loc 1 43 0 872 .LBB12: 44:hello-exceptions.cc **** int i = take_half(-2); 873 .loc 1 44 0 874 0421 83EC0C subl $12, %esp 875 0424 6AFE pushl $-2 876 .LEHB19: 877 .LCFI46: 878 0426 E8FCFFFF call _Z9take_halfi 878 FF GAS LISTING /tmp/ccJ9xNSW.s page 18 879 .LEHE19: 880 042b 83C410 addl $16, %esp 881 042e 8945F4 movl %eax, -12(%ebp) 882 .LBE12: 883 0431 E9B40000 jmp .L87 883 00 45:hello-exceptions.cc **** } catch (MyException &e) { 884 .loc 1 45 0 885 .L100: 886 0436 8945D4 movl %eax, -44(%ebp) 887 0439 83FA01 cmpl $1, %edx 888 043c 740B je .L88 889 043e 83EC0C subl $12, %esp 890 0441 FF75D4 pushl -44(%ebp) 891 .LEHB20: 892 0444 E8FCFFFF call _Unwind_Resume 892 FF 893 .LEHE20: 894 .L88: 895 .LBB13: 896 0449 83EC0C subl $12, %esp 897 044c FF75D4 pushl -44(%ebp) 898 044f E8FCFFFF call __cxa_begin_catch 898 FF 899 0454 83C410 addl $16, %esp 900 0457 8945F4 movl %eax, -12(%ebp) 46:hello-exceptions.cc **** cout << "Got exception: " << e.as_string() << endl; 901 .loc 1 46 0 902 045a 83EC08 subl $8, %esp 903 045d 68000000 pushl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_ 903 00 904 0462 83EC0C subl $12, %esp 905 0465 8D45D8 leal -40(%ebp), %eax 906 0468 FF75F4 pushl -12(%ebp) 907 046b 50 pushl %eax 908 .LEHB21: 909 .LCFI47: 910 046c E8FCFFFF call _ZNK11MyException9as_stringEv 910 FF 911 .LEHE21: 912 0471 83C404 addl $4, %esp 913 0474 8D45D8 leal -40(%ebp), %eax 914 0477 50 pushl %eax 915 0478 83EC0C subl $12, %esp 916 047b 682A0000 pushl $.LC3 916 00 917 0480 68000000 pushl $_ZSt4cout 917 00 918 .LEHB22: 919 .LCFI48: 920 0485 E8FCFFFF call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 920 FF 921 048a 83C414 addl $20, %esp 922 048d 50 pushl %eax 923 048e E8FCFFFF call _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E 923 FF 924 0493 83C414 addl $20, %esp GAS LISTING /tmp/ccJ9xNSW.s page 19 925 0496 50 pushl %eax 926 .LCFI49: 927 0497 E8FCFFFF call _ZNSolsEPFRSoS_E 927 FF 928 .LEHE22: 929 049c 83C410 addl $16, %esp 930 049f EB1A jmp .L90 931 .L98: 932 04a1 8945D4 movl %eax, -44(%ebp) 933 04a4 8B5DD4 movl -44(%ebp), %ebx 934 04a7 83EC0C subl $12, %esp 935 04aa 8D45D8 leal -40(%ebp), %eax 936 04ad 50 pushl %eax 937 04ae E8FCFFFF call _ZNSsD1Ev 937 FF 938 04b3 83C410 addl $16, %esp 939 04b6 895DD4 movl %ebx, -44(%ebp) 940 04b9 EB14 jmp .L93 941 .L90: 942 04bb 83EC0C subl $12, %esp 943 04be 8D45D8 leal -40(%ebp), %eax 944 04c1 50 pushl %eax 945 .LEHB23: 946 04c2 E8FCFFFF call _ZNSsD1Ev 946 FF 947 .LEHE23: 948 04c7 83C410 addl $16, %esp 949 04ca EB19 jmp .L94 950 .L99: 951 04cc 8945D4 movl %eax, -44(%ebp) 952 .L93: 953 04cf 8B5DD4 movl -44(%ebp), %ebx 954 .LCFI50: 955 04d2 E8FCFFFF call __cxa_end_catch 955 FF 956 04d7 895DD4 movl %ebx, -44(%ebp) 957 04da 83EC0C subl $12, %esp 958 04dd FF75D4 pushl -44(%ebp) 959 .LEHB24: 960 .LCFI51: 961 04e0 E8FCFFFF call _Unwind_Resume 961 FF 962 .LEHE24: 963 .L94: 964 .LCFI52: 965 04e5 E8FCFFFF call __cxa_end_catch 965 FF 966 .LBE13: 967 .L87: 968 .LBE11: 47:hello-exceptions.cc **** } 48:hello-exceptions.cc **** } 969 .loc 1 48 0 970 04ea B8000000 movl $0, %eax 970 00 971 04ef 8B5DFC movl -4(%ebp), %ebx 972 04f2 C9 leave GAS LISTING /tmp/ccJ9xNSW.s page 20 973 04f3 C3 ret 974 .LFE1503: 975 .Lfe9: 977 .section .gcc_except_table 978 00b2 0000 .align 4 979 .LLSDA1503: 980 00b4 FF .byte 0xff 981 00b5 00 .byte 0x0 982 00b6 25 .uleb128 .LLSDATT1503-.LLSDATTD1503 983 .LLSDATTD1503: 984 00b7 01 .byte 0x1 985 00b8 1D .uleb128 .LLSDACSE1503-.LLSDACSB1503 986 .LLSDACSB1503: 987 00b9 16 .uleb128 .LEHB19-.LFB1503 988 00ba 05 .uleb128 .LEHE19-.LEHB19 989 00bb 26 .uleb128 .L100-.LFB1503 990 00bc 01 .uleb128 0x1 991 00bd 34 .uleb128 .LEHB20-.LFB1503 992 00be 05 .uleb128 .LEHE20-.LEHB20 993 00bf 00 .uleb128 0x0 994 00c0 00 .uleb128 0x0 995 00c1 5C .uleb128 .LEHB21-.LFB1503 996 00c2 05 .uleb128 .LEHE21-.LEHB21 997 00c3 BC01 .uleb128 .L99-.LFB1503 998 00c5 00 .uleb128 0x0 999 00c6 75 .uleb128 .LEHB22-.LFB1503 1000 00c7 17 .uleb128 .LEHE22-.LEHB22 1001 00c8 9101 .uleb128 .L98-.LFB1503 1002 00ca 00 .uleb128 0x0 1003 00cb B201 .uleb128 .LEHB23-.LFB1503 1004 00cd 05 .uleb128 .LEHE23-.LEHB23 1005 00ce BC01 .uleb128 .L99-.LFB1503 1006 00d0 00 .uleb128 0x0 1007 00d1 D001 .uleb128 .LEHB24-.LFB1503 1008 00d3 05 .uleb128 .LEHE24-.LEHB24 1009 00d4 00 .uleb128 0x0 1010 00d5 00 .uleb128 0x0 1011 .LLSDACSE1503: 1012 00d6 01 .byte 0x1 1013 00d7 00 .byte 0x0 1014 .align 4 1015 00d8 00000000 .long _ZTI11MyException 1016 .LLSDATT1503: 1017 .text 1018 .section .gnu.linkonce.t._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_,"ax",@progbits 1019 .align 2 1020 .weak _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ 1022 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_: 1023 .LFB1517: 1:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Components for manipulating sequences of characters -*- C++ -*- 2:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 3:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 4:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Free Software Foundation, Inc. 5:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // 6:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // This file is part of the GNU ISO C++ Library. This library is free 7:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // software; you can redistribute it and/or modify it under the 8:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // terms of the GNU General Public License as published by the GAS LISTING /tmp/ccJ9xNSW.s page 21 9:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Free Software Foundation; either version 2, or (at your option) 10:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // any later version. 11:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 12:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // This library is distributed in the hope that it will be useful, 13:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 14:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // GNU General Public License for more details. 16:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 17:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // You should have received a copy of the GNU General Public License along 18:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // with this library; see the file COPYING. If not, write to the Free 19:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 20:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // USA. 21:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 22:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // As a special exception, you may use this file as part of a free software 23:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // library without restriction. Specifically, if other files instantiate 24:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // templates or use macros or inline functions from this file, or you compile 25:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // this file and link it with other files to produce an executable, this 26:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // file does not by itself cause the resulting executable to be covered by 27:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // the GNU General Public License. This exception does not however 28:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // invalidate any other reasons why the executable file might be covered by 29:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // the GNU General Public License. 30:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 31:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // 32:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // ISO C++ 14882: 21 Strings library 33:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // 34:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 35:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // This file is included by . It is not meant to be included 36:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // separately. 37:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 38:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Written by Jason Merrill based upon the specification by Takanori Adachi 39:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // in ANSI X3J16/94-0013R2. Rewritten by Nathan Myers to ISO-14882. 40:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 41:/usr/include/c++/3.2.2/bits/basic_string.tcc **** #ifndef _CPP_BITS_STRING_TCC 42:/usr/include/c++/3.2.2/bits/basic_string.tcc **** #define _CPP_BITS_STRING_TCC 1 43:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 44:/usr/include/c++/3.2.2/bits/basic_string.tcc **** #pragma GCC system_header 45:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 46:/usr/include/c++/3.2.2/bits/basic_string.tcc **** namespace std 47:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 48:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 49:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const typename basic_string<_CharT, _Traits, _Alloc>::size_type 50:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 51:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep::_S_max_size = (((npos - sizeof(_Rep))/sizeof(_CharT)) - 1) / 4; 52:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 53:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 54:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const _CharT 55:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 56:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep::_S_terminal = _CharT(); 57:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 58:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 59:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const typename basic_string<_CharT, _Traits, _Alloc>::size_type 60:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::npos; 61:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 62:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Linker sets _S_empty_rep_storage to all 0s (one reference, empty string) 63:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // at static init time (before static ctors are run). 64:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 65:/usr/include/c++/3.2.2/bits/basic_string.tcc **** typename basic_string<_CharT, _Traits, _Alloc>::size_type GAS LISTING /tmp/ccJ9xNSW.s page 22 66:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::_S_empty_rep_storage[ 67:/usr/include/c++/3.2.2/bits/basic_string.tcc **** (sizeof(_Rep) + sizeof(_CharT) + sizeof(size_type) - 1)/sizeof(size_type)]; 68:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 69:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // NB: This is the special case for Input Iterators, used in 70:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // istreambuf_iterators, etc. 71:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Input Iterators have a cost structure very different from 72:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // pointers, calling for a different coding style. 73:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 74:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 75:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* 76:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 77:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _S_construct(_InIter __beg, _InIter __end, const _Alloc& __a, 78:/usr/include/c++/3.2.2/bits/basic_string.tcc **** input_iterator_tag) 79:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 80:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__beg == __end && __a == _Alloc()) 81:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return _S_empty_rep()._M_refcopy(); 82:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Avoid reallocation for common case. 83:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT __buf[100]; 84:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __i = 0; 85:/usr/include/c++/3.2.2/bits/basic_string.tcc **** while (__beg != __end && __i < sizeof(__buf) / sizeof(_CharT)) 86:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 87:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __buf[__i++] = *__beg; 88:/usr/include/c++/3.2.2/bits/basic_string.tcc **** ++__beg; 89:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 90:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep* __r = _Rep::_S_create(__i, __a); 91:/usr/include/c++/3.2.2/bits/basic_string.tcc **** traits_type::copy(__r->_M_refdata(), __buf, __i); 92:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_length = __i; 93:/usr/include/c++/3.2.2/bits/basic_string.tcc **** try 94:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 95:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // NB: this loop looks precisely this way because 96:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // it avoids comparing __beg != __end any more 97:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // than strictly necessary; != might be expensive! 98:/usr/include/c++/3.2.2/bits/basic_string.tcc **** for (;;) 99:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 100:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* __p = __r->_M_refdata() + __r->_M_length; 101:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* __last = __r->_M_refdata() + __r->_M_capacity; 102:/usr/include/c++/3.2.2/bits/basic_string.tcc **** for (;;) 103:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 104:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__beg == __end) 105:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 106:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_length = __p - __r->_M_refdata(); 107:/usr/include/c++/3.2.2/bits/basic_string.tcc **** *__p = _Rep::_S_terminal; // grrr. 108:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return __r->_M_refdata(); 109:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 110:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__p == __last) 111:/usr/include/c++/3.2.2/bits/basic_string.tcc **** break; 112:/usr/include/c++/3.2.2/bits/basic_string.tcc **** *__p++ = *__beg; 113:/usr/include/c++/3.2.2/bits/basic_string.tcc **** ++__beg; 114:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 115:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Allocate more space. 116:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __len = __p - __r->_M_refdata(); 117:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep* __another = _Rep::_S_create(__len + 1, __a); 118:/usr/include/c++/3.2.2/bits/basic_string.tcc **** traits_type::copy(__another->_M_refdata(), 119:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_refdata(), __len); 120:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_destroy(__a); 121:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r = __another; 122:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_length = __len; GAS LISTING /tmp/ccJ9xNSW.s page 23 123:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 124:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 125:/usr/include/c++/3.2.2/bits/basic_string.tcc **** catch(...) 126:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 127:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_destroy(__a); 128:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_exception_again; 129:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 130:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return 0; 131:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 132:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 133:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 134:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 135:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* 136:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 137:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _S_construct(_InIter __beg, _InIter __end, const _Alloc& __a, 138:/usr/include/c++/3.2.2/bits/basic_string.tcc **** forward_iterator_tag) 139:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 140:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __dnew = static_cast(distance(__beg, __end)); 141:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 142:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__beg == __end && __a == _Alloc()) 143:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return _S_empty_rep()._M_refcopy(); 144:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 145:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // NB: Not required, but considered best practice. 146:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__builtin_expect(__beg == _InIter(), 0)) 147:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_logic_error("attempt to create string with null pointer"); 148:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 149:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Check for out_of_range and length_error exceptions. 150:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep* __r = _Rep::_S_create(__dnew, __a); 151:/usr/include/c++/3.2.2/bits/basic_string.tcc **** try 152:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { _S_copy_chars(__r->_M_refdata(), __beg, __end); } 153:/usr/include/c++/3.2.2/bits/basic_string.tcc **** catch(...) 154:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 155:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_destroy(__a); 156:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_exception_again; 157:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 158:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_length = __dnew; 159:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 160:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_refdata()[__dnew] = _Rep::_S_terminal; // grrr. 161:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return __r->_M_refdata(); 162:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 163:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 164:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 165:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* 166:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 167:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _S_construct(size_type __n, _CharT __c, const _Alloc& __a) 168:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 169:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__n == 0 && __a == _Alloc()) 170:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return _S_empty_rep()._M_refcopy(); 171:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 172:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Check for out_of_range and length_error exceptions. 173:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep* __r = _Rep::_S_create(__n, __a); 174:/usr/include/c++/3.2.2/bits/basic_string.tcc **** try 175:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 176:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__n) 177:/usr/include/c++/3.2.2/bits/basic_string.tcc **** traits_type::assign(__r->_M_refdata(), __n, __c); 178:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 179:/usr/include/c++/3.2.2/bits/basic_string.tcc **** catch(...) GAS LISTING /tmp/ccJ9xNSW.s page 24 180:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 181:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_destroy(__a); 182:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_exception_again; 183:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 184:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_length = __n; 185:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_refdata()[__n] = _Rep::_S_terminal; // grrr 186:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return __r->_M_refdata(); 187:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 188:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 189:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 190:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 191:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string(const basic_string& __str) 192:/usr/include/c++/3.2.2/bits/basic_string.tcc **** : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(), __str.get_allocator()), 193:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str.get_allocator()) 194:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { } 195:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 196:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 197:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 198:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string(const _Alloc& __a) 199:/usr/include/c++/3.2.2/bits/basic_string.tcc **** : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a) 200:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { } 201:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 202:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 203:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 204:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string(const basic_string& __str, size_type __pos, size_type __n) 205:/usr/include/c++/3.2.2/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__str._M_check(__pos), 206:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str._M_fold(__pos, __n), _Alloc()), _Alloc()) 207:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { } 208:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 209:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 210:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 211:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string(const basic_string& __str, size_type __pos, 212:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __n, const _Alloc& __a) 213:/usr/include/c++/3.2.2/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__str._M_check(__pos), 214:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str._M_fold(__pos, __n), __a), __a) 215:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { } 216:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 217:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 218:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 219:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string(const _CharT* __s, size_type __n, const _Alloc& __a) 220:/usr/include/c++/3.2.2/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__s, __s + __n, __a), __a) 221:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { } 222:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 223:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 224:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 225:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string(const _CharT* __s, const _Alloc& __a) 226:/usr/include/c++/3.2.2/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) : 227:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __s + npos, __a), __a) 228:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { } 229:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 230:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 231:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 232:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string(size_type __n, _CharT __c, const _Alloc& __a) 233:/usr/include/c++/3.2.2/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__n, __c, __a), __a) 234:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { } 235:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 236:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template GAS LISTING /tmp/ccJ9xNSW.s page 25 237:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 238:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 239:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string(_InputIter __beg, _InputIter __end, const _Alloc& __a) 240:/usr/include/c++/3.2.2/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__beg, __end, __a), __a) 241:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { } 242:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 243:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 244:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 245:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::assign(const basic_string& __str) 246:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 247:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (_M_rep() != __str._M_rep()) 248:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 249:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // XXX MT 250:/usr/include/c++/3.2.2/bits/basic_string.tcc **** allocator_type __a = this->get_allocator(); 251:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator()); 252:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_rep()->_M_dispose(__a); 253:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_data(__tmp); 254:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 255:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return *this; 256:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 257:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 258:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 259:/usr/include/c++/3.2.2/bits/basic_string.tcc **** void 260:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::_Rep:: 261:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_destroy(const _Alloc& __a) throw () 262:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 263:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __size = sizeof(_Rep) + (_M_capacity + 1) * sizeof(_CharT); 264:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Raw_bytes_alloc(__a).deallocate(reinterpret_cast(this), __size); 265:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 266:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 267:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 268:/usr/include/c++/3.2.2/bits/basic_string.tcc **** void 269:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::_M_leak_hard() 270:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 271:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (_M_rep()->_M_is_shared()) 272:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_mutate(0, 0, 0); 273:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_rep()->_M_set_leaked(); 274:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 275:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 276:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // _M_mutate and, below, _M_clone, include, in the same form, an exponential 277:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // growth policy, necessary to meet amortized linear time requirements of 278:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // the library: see http://gcc.gnu.org/ml/libstdc++/2001-07/msg00085.html. 279:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // The policy is active for allocations requiring an amount of memory above 280:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // system pagesize. This is consistent with the requirements of the standard: 281:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // see, f.i., http://gcc.gnu.org/ml/libstdc++/2001-07/msg00130.html 282:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 283:/usr/include/c++/3.2.2/bits/basic_string.tcc **** void 284:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 285:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_mutate(size_type __pos, size_type __len1, size_type __len2) 286:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 287:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __old_size = this->size(); 288:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __new_size = __old_size + __len2 - __len1; 289:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const _CharT* __src = _M_data() + __pos + __len1; 290:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __how_much = __old_size - __pos - __len1; 291:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 292:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (_M_rep()->_M_is_shared() || __new_size > capacity()) 293:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { GAS LISTING /tmp/ccJ9xNSW.s page 26 294:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Must reallocate. 295:/usr/include/c++/3.2.2/bits/basic_string.tcc **** allocator_type __a = get_allocator(); 296:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // See below (_S_create) for the meaning and value of these 297:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // constants. 298:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __pagesize = 4096; 299:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __malloc_header_size = 4 * sizeof (void*); 300:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // The biggest string which fits in a memory page 301:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __page_capacity = (__pagesize - __malloc_header_size 302:/usr/include/c++/3.2.2/bits/basic_string.tcc **** - sizeof(_Rep) - sizeof(_CharT)) 303:/usr/include/c++/3.2.2/bits/basic_string.tcc **** / sizeof(_CharT); 304:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep* __r; 305:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__new_size > capacity() && __new_size > __page_capacity) 306:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Growing exponentially. 307:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r = _Rep::_S_create(__new_size > 2*capacity() ? 308:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __new_size : 2*capacity(), __a); 309:/usr/include/c++/3.2.2/bits/basic_string.tcc **** else 310:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r = _Rep::_S_create(__new_size, __a); 311:/usr/include/c++/3.2.2/bits/basic_string.tcc **** try 312:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 313:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__pos) 314:/usr/include/c++/3.2.2/bits/basic_string.tcc **** traits_type::copy(__r->_M_refdata(), _M_data(), __pos); 315:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__how_much) 316:/usr/include/c++/3.2.2/bits/basic_string.tcc **** traits_type::copy(__r->_M_refdata() + __pos + __len2, 317:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __src, __how_much); 318:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 319:/usr/include/c++/3.2.2/bits/basic_string.tcc **** catch(...) 320:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 321:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_dispose(get_allocator()); 322:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_exception_again; 323:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 324:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_rep()->_M_dispose(__a); 325:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_data(__r->_M_refdata()); 326:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 327:/usr/include/c++/3.2.2/bits/basic_string.tcc **** else if (__how_much && __len1 != __len2) 328:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 329:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Work in-place 330:/usr/include/c++/3.2.2/bits/basic_string.tcc **** traits_type::move(_M_data() + __pos + __len2, __src, __how_much); 331:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 332:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_rep()->_M_set_sharable(); 333:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_rep()->_M_length = __new_size; 334:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_data()[__new_size] = _Rep::_S_terminal; // grrr. (per 21.3.4) 335:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // You cannot leave those LWG people alone for a second. 336:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 337:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 338:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 339:/usr/include/c++/3.2.2/bits/basic_string.tcc **** void 340:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::reserve(size_type __res) 341:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 342:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__res > this->capacity() || _M_rep()->_M_is_shared()) 343:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 344:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__res > this->max_size()) 345:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_length_error("basic_string::reserve"); 346:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Make sure we don't shrink below the current size 347:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__res < this->size()) 348:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __res = this->size(); 349:/usr/include/c++/3.2.2/bits/basic_string.tcc **** allocator_type __a = get_allocator(); 350:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size()); GAS LISTING /tmp/ccJ9xNSW.s page 27 351:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_rep()->_M_dispose(__a); 352:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_data(__tmp); 353:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 354:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 355:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 356:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 357:/usr/include/c++/3.2.2/bits/basic_string.tcc **** void basic_string<_CharT, _Traits, _Alloc>::swap(basic_string& __s) 358:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 359:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (_M_rep()->_M_is_leaked()) 360:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_rep()->_M_set_sharable(); 361:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__s._M_rep()->_M_is_leaked()) 362:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __s._M_rep()->_M_set_sharable(); 363:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (this->get_allocator() == __s.get_allocator()) 364:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 365:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* __tmp = _M_data(); 366:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_data(__s._M_data()); 367:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __s._M_data(__tmp); 368:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 369:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // The code below can usually be optimized away. 370:/usr/include/c++/3.2.2/bits/basic_string.tcc **** else 371:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 372:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string __tmp1(_M_ibegin(), _M_iend(), __s.get_allocator()); 373:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string __tmp2(__s._M_ibegin(), __s._M_iend(), 374:/usr/include/c++/3.2.2/bits/basic_string.tcc **** this->get_allocator()); 375:/usr/include/c++/3.2.2/bits/basic_string.tcc **** *this = __tmp2; 376:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __s = __tmp1; 377:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 378:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 379:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 380:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 381:/usr/include/c++/3.2.2/bits/basic_string.tcc **** typename basic_string<_CharT, _Traits, _Alloc>::_Rep* 382:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::_Rep:: 383:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _S_create(size_t __capacity, const _Alloc& __alloc) 384:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 385:/usr/include/c++/3.2.2/bits/basic_string.tcc **** typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 386:/usr/include/c++/3.2.2/bits/basic_string.tcc **** #ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS 387:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // 83. String::npos vs. string::max_size() 388:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__capacity > _S_max_size) 389:/usr/include/c++/3.2.2/bits/basic_string.tcc **** #else 390:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__capacity == npos) 391:/usr/include/c++/3.2.2/bits/basic_string.tcc **** #endif 392:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_length_error("basic_string::_S_create"); 393:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 394:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // NB: Need an array of char_type[__capacity], plus a 395:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // terminating null char_type() element, plus enough for the 396:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // _Rep data structure. Whew. Seemingly so needy, yet so elemental. 397:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_t __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); 398:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 399:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // The standard places no restriction on allocating more memory 400:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // than is strictly needed within this layer at the moment or as 401:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // requested by an explicit application call to reserve(). Many 402:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // malloc implementations perform quite poorly when an 403:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // application attempts to allocate memory in a stepwise fashion 404:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // growing each allocation size by only 1 char. Additionally, 405:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // it makes little sense to allocate less linear memory than the 406:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // natural blocking size of the malloc implementation. 407:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Unfortunately, we would need a somewhat low-level calculation GAS LISTING /tmp/ccJ9xNSW.s page 28 408:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // with tuned parameters to get this perfect for any particular 409:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // malloc implementation. Fortunately, generalizations about 410:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // common features seen among implementations seems to suffice. 411:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 412:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // __pagesize need not match the actual VM page size for good 413:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // results in practice, thus we pick a common value on the low 414:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // side. __malloc_header_size is an estimate of the amount of 415:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // overhead per memory allocation (in practice seen N * sizeof 416:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // (void*) where N is 0, 2 or 4). According to folklore, 417:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // picking this value on the high side is better than 418:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // low-balling it (especially when this algorithm is used with 419:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // malloc implementations that allocate memory blocks rounded up 420:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // to a size which is a power of 2). 421:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_t __pagesize = 4096; // must be 2^i * __subpagesize 422:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_t __subpagesize = 128; // should be >> __malloc_header_size 423:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_t __malloc_header_size = 4 * sizeof (void*); 424:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if ((__size + __malloc_header_size) > __pagesize) 425:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 426:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_t __extra = 427:/usr/include/c++/3.2.2/bits/basic_string.tcc **** (__pagesize - ((__size + __malloc_header_size) % __pagesize)) 428:/usr/include/c++/3.2.2/bits/basic_string.tcc **** % __pagesize; 429:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __capacity += __extra / sizeof(_CharT); 430:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); 431:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 432:/usr/include/c++/3.2.2/bits/basic_string.tcc **** else if (__size > __subpagesize) 433:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 434:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_t __extra = 435:/usr/include/c++/3.2.2/bits/basic_string.tcc **** (__subpagesize - ((__size + __malloc_header_size) % __subpagesize)) 436:/usr/include/c++/3.2.2/bits/basic_string.tcc **** % __subpagesize; 437:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __capacity += __extra / sizeof(_CharT); 438:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); 439:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 440:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 441:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // NB: Might throw, but no worries about a leak, mate: _Rep() 442:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // does not throw. 443:/usr/include/c++/3.2.2/bits/basic_string.tcc **** void* __place = _Raw_bytes_alloc(__alloc).allocate(__size); 444:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep *__p = new (__place) _Rep; 445:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __p->_M_capacity = __capacity; 446:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __p->_M_set_sharable(); // One reference. 447:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __p->_M_length = 0; 448:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return __p; 449:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 450:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 451:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 452:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* 453:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::_Rep:: 454:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_clone(const _Alloc& __alloc, size_type __res) 455:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 456:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Requested capacity of the clone. 457:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __requested_cap = _M_length + __res; 458:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // See above (_S_create) for the meaning and value of these constants. 459:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __pagesize = 4096; 460:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __malloc_header_size = 4 * sizeof (void*); 461:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // The biggest string which fits in a memory page. 462:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __page_capacity = 463:/usr/include/c++/3.2.2/bits/basic_string.tcc **** (__pagesize - __malloc_header_size - sizeof(_Rep) - sizeof(_CharT)) 464:/usr/include/c++/3.2.2/bits/basic_string.tcc **** / sizeof(_CharT); GAS LISTING /tmp/ccJ9xNSW.s page 29 465:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep* __r; 466:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__requested_cap > _M_capacity && __requested_cap > __page_capacity) 467:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Growing exponentially. 468:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r = _Rep::_S_create(__requested_cap > 2*_M_capacity ? 469:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __requested_cap : 2*_M_capacity, __alloc); 470:/usr/include/c++/3.2.2/bits/basic_string.tcc **** else 471:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r = _Rep::_S_create(__requested_cap, __alloc); 472:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 473:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (_M_length) 474:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 475:/usr/include/c++/3.2.2/bits/basic_string.tcc **** try 476:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { traits_type::copy(__r->_M_refdata(), _M_refdata(), _M_length); } 477:/usr/include/c++/3.2.2/bits/basic_string.tcc **** catch(...) 478:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 479:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_destroy(__alloc); 480:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_exception_again; 481:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 482:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 483:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_length = _M_length; 484:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return __r->_M_refdata(); 485:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 486:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 487:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 488:/usr/include/c++/3.2.2/bits/basic_string.tcc **** void 489:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::resize(size_type __n, _CharT __c) 490:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 491:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__n > max_size()) 492:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_length_error("basic_string::resize"); 493:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __size = this->size(); 494:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__size < __n) 495:/usr/include/c++/3.2.2/bits/basic_string.tcc **** this->append(__n - __size, __c); 496:/usr/include/c++/3.2.2/bits/basic_string.tcc **** else if (__n < __size) 497:/usr/include/c++/3.2.2/bits/basic_string.tcc **** this->erase(__n); 498:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // else nothing (in particular, avoid calling _M_mutate() unnecessarily.) 499:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 500:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 501:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // This is the general replace helper, which currently gets instantiated both 502:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // for input iterators and reverse iterators. It buffers internally and then 503:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // calls _M_replace_safe. 504:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 505:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 506:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 507:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 508:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_replace(iterator __i1, iterator __i2, _InputIter __k1, 509:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _InputIter __k2, input_iterator_tag) 510:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 511:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Save concerned source string data in a temporary. 512:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string __s(__k1, __k2); 513:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return _M_replace_safe(__i1, __i2, __s._M_ibegin(), __s._M_iend()); 514:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 515:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 516:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // This is a special replace helper, which does not buffer internally 517:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // and can be used in "safe" situations involving forward iterators, 518:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // i.e., when source and destination ranges are known to not overlap. 519:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 520:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 521:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& GAS LISTING /tmp/ccJ9xNSW.s page 30 522:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 523:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_replace_safe(iterator __i1, iterator __i2, _ForwardIter __k1, 524:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _ForwardIter __k2) 525:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 526:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __dnew = static_cast(distance(__k1, __k2)); 527:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __dold = __i2 - __i1; 528:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __dmax = this->max_size(); 529:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 530:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__dmax <= __dnew) 531:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_length_error("basic_string::_M_replace"); 532:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __off = __i1 - _M_ibegin(); 533:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_mutate(__off, __dold, __dnew); 534:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 535:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Invalidated __i1, __i2 536:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__dnew) 537:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _S_copy_chars(_M_data() + __off, __k1, __k2); 538:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 539:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return *this; 540:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 541:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 542:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 543:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 544:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 545:/usr/include/c++/3.2.2/bits/basic_string.tcc **** replace(size_type __pos1, size_type __n1, const basic_string& __str, 546:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __pos2, size_type __n2) 547:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 548:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __strsize = __str.size(); 549:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__pos2 > __strsize) 550:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_out_of_range("basic_string::replace"); 551:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const bool __testn2 = __n2 < __strsize - __pos2; 552:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __foldn2 = __testn2 ? __n2 : __strsize - __pos2; 553:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return this->replace(__pos1, __n1, 554:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str._M_data() + __pos2, __foldn2); 555:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 556:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 557:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 558:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 559:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 560:/usr/include/c++/3.2.2/bits/basic_string.tcc **** append(const basic_string& __str) 561:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 562:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Iff appending itself, string needs to pre-reserve the 563:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // correct size so that _M_mutate does not clobber the 564:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // iterators formed here. 565:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __size = __str.size(); 566:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __len = __size + this->size(); 567:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__len > this->capacity()) 568:/usr/include/c++/3.2.2/bits/basic_string.tcc **** this->reserve(__len); 569:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return _M_replace_safe(_M_iend(), _M_iend(), __str._M_ibegin(), 570:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str._M_iend()); 571:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 572:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 573:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 574:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 575:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 576:/usr/include/c++/3.2.2/bits/basic_string.tcc **** append(const basic_string& __str, size_type __pos, size_type __n) 577:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 578:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Iff appending itself, string needs to pre-reserve the GAS LISTING /tmp/ccJ9xNSW.s page 31 579:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // correct size so that _M_mutate does not clobber the 580:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // iterators formed here. 581:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __len = min(__str.size() - __pos, __n) + this->size(); 582:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__len > this->capacity()) 583:/usr/include/c++/3.2.2/bits/basic_string.tcc **** this->reserve(__len); 584:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return _M_replace_safe(_M_iend(), _M_iend(), __str._M_check(__pos), 585:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str._M_fold(__pos, __n)); 586:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 587:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 588:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 589:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 590:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 591:/usr/include/c++/3.2.2/bits/basic_string.tcc **** append(const _CharT* __s, size_type __n) 592:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 593:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __len = __n + this->size(); 594:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__len > this->capacity()) 595:/usr/include/c++/3.2.2/bits/basic_string.tcc **** this->reserve(__len); 596:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return _M_replace_safe(_M_iend(), _M_iend(), __s, __s + __n); 597:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 598:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 599:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 600:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 601:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 602:/usr/include/c++/3.2.2/bits/basic_string.tcc **** append(size_type __n, _CharT __c) 603:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 604:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __len = __n + this->size(); 605:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__len > this->capacity()) 606:/usr/include/c++/3.2.2/bits/basic_string.tcc **** this->reserve(__len); 607:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return this->replace(_M_iend(), _M_iend(), __n, __c); 608:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 609:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 610:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 611:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc> 612:/usr/include/c++/3.2.2/bits/basic_string.tcc **** operator+(const _CharT* __lhs, 613:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const basic_string<_CharT, _Traits, _Alloc>& __rhs) 614:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 1024 .loc 29 614 0 1025 0000 55 pushl %ebp 1026 .LCFI53: 1027 0001 89E5 movl %esp, %ebp 1028 .LCFI54: 1029 0003 53 pushl %ebx 1030 .LCFI55: 1031 0004 83EC14 subl $20, %esp 1032 .LCFI56: 1033 .LBB14: 615:/usr/include/c++/3.2.2/bits/basic_string.tcc **** typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 616:/usr/include/c++/3.2.2/bits/basic_string.tcc **** typedef typename __string_type::size_type __size_type; 617:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __size_type __len = _Traits::length(__lhs); 1034 .loc 29 617 0 1035 0007 83EC0C subl $12, %esp 1036 000a FF750C pushl 12(%ebp) 1037 .LEHB25: 1038 .LCFI57: 1039 000d E8FCFFFF call _ZNSt11char_traitsIcE6lengthEPKc 1039 FF 1040 0012 83C410 addl $16, %esp GAS LISTING /tmp/ccJ9xNSW.s page 32 1041 0015 8945F8 movl %eax, -8(%ebp) 618:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __string_type __str; 1042 .loc 29 618 0 1043 0018 83EC0C subl $12, %esp 1044 001b FF7508 pushl 8(%ebp) 1045 001e E8FCFFFF call _ZNSsC1Ev 1045 FF 1046 .LEHE25: 1047 0023 83C410 addl $16, %esp 619:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str.reserve(__len + __rhs.size()); 1048 .loc 29 619 0 1049 0026 83EC08 subl $8, %esp 1050 0029 83EC04 subl $4, %esp 1051 002c FF7510 pushl 16(%ebp) 1052 .LEHB26: 1053 .LCFI58: 1054 002f E8FCFFFF call _ZNKSs4sizeEv 1054 FF 1055 0034 83C408 addl $8, %esp 1056 0037 0345F8 addl -8(%ebp), %eax 1057 003a 50 pushl %eax 1058 003b FF7508 pushl 8(%ebp) 1059 .LCFI59: 1060 003e E8FCFFFF call _ZNSs7reserveEj 1060 FF 1061 0043 83C410 addl $16, %esp 620:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str.append(__lhs, __lhs + __len); 1062 .loc 29 620 0 1063 0046 83EC04 subl $4, %esp 1064 0049 8B45F8 movl -8(%ebp), %eax 1065 004c 03450C addl 12(%ebp), %eax 1066 004f 50 pushl %eax 1067 0050 FF750C pushl 12(%ebp) 1068 0053 FF7508 pushl 8(%ebp) 1069 0056 E8FCFFFF call _ZNSs6appendIPKcEERSsT_S3_ 1069 FF 1070 005b 83C410 addl $16, %esp 621:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str.append(__rhs); 1071 .loc 29 621 0 1072 005e 83EC08 subl $8, %esp 1073 0061 FF7510 pushl 16(%ebp) 1074 0064 FF7508 pushl 8(%ebp) 1075 0067 E8FCFFFF call _ZNSs6appendERKSs 1075 FF 1076 .LEHE26: 1077 006c 83C410 addl $16, %esp 622:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return __str; 1078 .loc 29 622 0 1079 006f EB22 jmp .L101 1080 .L106: 1081 0071 8945F4 movl %eax, -12(%ebp) 1082 0074 8B5DF4 movl -12(%ebp), %ebx 1083 0077 83EC0C subl $12, %esp 1084 007a FF7508 pushl 8(%ebp) 1085 007d E8FCFFFF call _ZNSsD1Ev 1085 FF 1086 0082 83C410 addl $16, %esp GAS LISTING /tmp/ccJ9xNSW.s page 33 1087 0085 895DF4 movl %ebx, -12(%ebp) 1088 0088 83EC0C subl $12, %esp 1089 008b FF75F4 pushl -12(%ebp) 1090 .LEHB27: 1091 008e E8FCFFFF call _Unwind_Resume 1091 FF 1092 .LEHE27: 1093 .LBE14: 1094 .L101: 1095 0093 8B4508 movl 8(%ebp), %eax 1096 0096 8B5DFC movl -4(%ebp), %ebx 1097 0099 C9 leave 1098 009a C20400 ret $4 1099 .LFE1517: 1100 .Lfe10: 1102 .section .gcc_except_table 1103 .LLSDA1517: 1104 00dc FF .byte 0xff 1105 00dd FF .byte 0xff 1106 00de 01 .byte 0x1 1107 00df 0D .uleb128 .LLSDACSE1517-.LLSDACSB1517 1108 .LLSDACSB1517: 1109 00e0 0D .uleb128 .LEHB25-.LFB1517 1110 00e1 16 .uleb128 .LEHE25-.LEHB25 1111 00e2 00 .uleb128 0x0 1112 00e3 00 .uleb128 0x0 1113 00e4 2F .uleb128 .LEHB26-.LFB1517 1114 00e5 3D .uleb128 .LEHE26-.LEHB26 1115 00e6 71 .uleb128 .L106-.LFB1517 1116 00e7 00 .uleb128 0x0 1117 00e8 8E01 .uleb128 .LEHB27-.LFB1517 1118 00ea 05 .uleb128 .LEHE27-.LEHB27 1119 00eb 00 .uleb128 0x0 1120 00ec 00 .uleb128 0x0 1121 .LLSDACSE1517: 1122 .section .gnu.linkonce.t._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ 1123 .section .gnu.linkonce.t._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_,"ax",@progbits 1124 .align 2 1125 .weak _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_ 1127 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_: 1128 .LFB1519: 1:/usr/include/c++/3.2.2/bits/basic_string.h **** // Components for manipulating sequences of characters -*- C++ -*- 2:/usr/include/c++/3.2.2/bits/basic_string.h **** 3:/usr/include/c++/3.2.2/bits/basic_string.h **** // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 4:/usr/include/c++/3.2.2/bits/basic_string.h **** // Free Software Foundation, Inc. 5:/usr/include/c++/3.2.2/bits/basic_string.h **** // 6:/usr/include/c++/3.2.2/bits/basic_string.h **** // This file is part of the GNU ISO C++ Library. This library is free 7:/usr/include/c++/3.2.2/bits/basic_string.h **** // software; you can redistribute it and/or modify it under the 8:/usr/include/c++/3.2.2/bits/basic_string.h **** // terms of the GNU General Public License as published by the 9:/usr/include/c++/3.2.2/bits/basic_string.h **** // Free Software Foundation; either version 2, or (at your option) 10:/usr/include/c++/3.2.2/bits/basic_string.h **** // any later version. 11:/usr/include/c++/3.2.2/bits/basic_string.h **** 12:/usr/include/c++/3.2.2/bits/basic_string.h **** // This library is distributed in the hope that it will be useful, 13:/usr/include/c++/3.2.2/bits/basic_string.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 14:/usr/include/c++/3.2.2/bits/basic_string.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15:/usr/include/c++/3.2.2/bits/basic_string.h **** // GNU General Public License for more details. 16:/usr/include/c++/3.2.2/bits/basic_string.h **** GAS LISTING /tmp/ccJ9xNSW.s page 34 17:/usr/include/c++/3.2.2/bits/basic_string.h **** // You should have received a copy of the GNU General Public License along 18:/usr/include/c++/3.2.2/bits/basic_string.h **** // with this library; see the file COPYING. If not, write to the Free 19:/usr/include/c++/3.2.2/bits/basic_string.h **** // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 20:/usr/include/c++/3.2.2/bits/basic_string.h **** // USA. 21:/usr/include/c++/3.2.2/bits/basic_string.h **** 22:/usr/include/c++/3.2.2/bits/basic_string.h **** // As a special exception, you may use this file as part of a free software 23:/usr/include/c++/3.2.2/bits/basic_string.h **** // library without restriction. Specifically, if other files instantiate 24:/usr/include/c++/3.2.2/bits/basic_string.h **** // templates or use macros or inline functions from this file, or you compile 25:/usr/include/c++/3.2.2/bits/basic_string.h **** // this file and link it with other files to produce an executable, this 26:/usr/include/c++/3.2.2/bits/basic_string.h **** // file does not by itself cause the resulting executable to be covered by 27:/usr/include/c++/3.2.2/bits/basic_string.h **** // the GNU General Public License. This exception does not however 28:/usr/include/c++/3.2.2/bits/basic_string.h **** // invalidate any other reasons why the executable file might be covered by 29:/usr/include/c++/3.2.2/bits/basic_string.h **** // the GNU General Public License. 30:/usr/include/c++/3.2.2/bits/basic_string.h **** 31:/usr/include/c++/3.2.2/bits/basic_string.h **** // 32:/usr/include/c++/3.2.2/bits/basic_string.h **** // ISO C++ 14882: 21 Strings library 33:/usr/include/c++/3.2.2/bits/basic_string.h **** // 34:/usr/include/c++/3.2.2/bits/basic_string.h **** 35:/usr/include/c++/3.2.2/bits/basic_string.h **** /** @file basic_string.h 36:/usr/include/c++/3.2.2/bits/basic_string.h **** * This is an internal header file, included by other library headers. 37:/usr/include/c++/3.2.2/bits/basic_string.h **** * You should not attempt to use it directly. 38:/usr/include/c++/3.2.2/bits/basic_string.h **** */ 39:/usr/include/c++/3.2.2/bits/basic_string.h **** 40:/usr/include/c++/3.2.2/bits/basic_string.h **** #ifndef _CPP_BITS_STRING_H 41:/usr/include/c++/3.2.2/bits/basic_string.h **** #define _CPP_BITS_STRING_H 1 42:/usr/include/c++/3.2.2/bits/basic_string.h **** 43:/usr/include/c++/3.2.2/bits/basic_string.h **** #pragma GCC system_header 44:/usr/include/c++/3.2.2/bits/basic_string.h **** 45:/usr/include/c++/3.2.2/bits/basic_string.h **** #include 46:/usr/include/c++/3.2.2/bits/basic_string.h **** 47:/usr/include/c++/3.2.2/bits/basic_string.h **** namespace std 48:/usr/include/c++/3.2.2/bits/basic_string.h **** { 49:/usr/include/c++/3.2.2/bits/basic_string.h **** // Documentation? What's that? 50:/usr/include/c++/3.2.2/bits/basic_string.h **** // Nathan Myers . 51:/usr/include/c++/3.2.2/bits/basic_string.h **** // 52:/usr/include/c++/3.2.2/bits/basic_string.h **** // A string looks like this: 53:/usr/include/c++/3.2.2/bits/basic_string.h **** // 54:/usr/include/c++/3.2.2/bits/basic_string.h **** // [_Rep] 55:/usr/include/c++/3.2.2/bits/basic_string.h **** // _M_length 56:/usr/include/c++/3.2.2/bits/basic_string.h **** // [basic_string] _M_capacity 57:/usr/include/c++/3.2.2/bits/basic_string.h **** // _M_dataplus _M_state 58:/usr/include/c++/3.2.2/bits/basic_string.h **** // _M_p ----------------> unnamed array of char_type 59:/usr/include/c++/3.2.2/bits/basic_string.h **** 60:/usr/include/c++/3.2.2/bits/basic_string.h **** // Where the _M_p points to the first character in the string, and 61:/usr/include/c++/3.2.2/bits/basic_string.h **** // you cast it to a pointer-to-_Rep and subtract 1 to get a 62:/usr/include/c++/3.2.2/bits/basic_string.h **** // pointer to the header. 63:/usr/include/c++/3.2.2/bits/basic_string.h **** 64:/usr/include/c++/3.2.2/bits/basic_string.h **** // This approach has the enormous advantage that a string object 65:/usr/include/c++/3.2.2/bits/basic_string.h **** // requires only one allocation. All the ugliness is confined 66:/usr/include/c++/3.2.2/bits/basic_string.h **** // within a single pair of inline functions, which each compile to 67:/usr/include/c++/3.2.2/bits/basic_string.h **** // a single "add" instruction: _Rep::_M_data(), and 68:/usr/include/c++/3.2.2/bits/basic_string.h **** // string::_M_rep(); and the allocation function which gets a 69:/usr/include/c++/3.2.2/bits/basic_string.h **** // block of raw bytes and with room enough and constructs a _Rep 70:/usr/include/c++/3.2.2/bits/basic_string.h **** // object at the front. 71:/usr/include/c++/3.2.2/bits/basic_string.h **** 72:/usr/include/c++/3.2.2/bits/basic_string.h **** // The reason you want _M_data pointing to the character array and 73:/usr/include/c++/3.2.2/bits/basic_string.h **** // not the _Rep is so that the debugger can see the string GAS LISTING /tmp/ccJ9xNSW.s page 35 74:/usr/include/c++/3.2.2/bits/basic_string.h **** // contents. (Probably we should add a non-inline member to get 75:/usr/include/c++/3.2.2/bits/basic_string.h **** // the _Rep for the debugger to use, so users can check the actual 76:/usr/include/c++/3.2.2/bits/basic_string.h **** // string length.) 77:/usr/include/c++/3.2.2/bits/basic_string.h **** 78:/usr/include/c++/3.2.2/bits/basic_string.h **** // Note that the _Rep object is a POD so that you can have a 79:/usr/include/c++/3.2.2/bits/basic_string.h **** // static "empty string" _Rep object already "constructed" before 80:/usr/include/c++/3.2.2/bits/basic_string.h **** // static constructors have run. The reference-count encoding is 81:/usr/include/c++/3.2.2/bits/basic_string.h **** // chosen so that a 0 indicates one reference, so you never try to 82:/usr/include/c++/3.2.2/bits/basic_string.h **** // destroy the empty-string _Rep object. 83:/usr/include/c++/3.2.2/bits/basic_string.h **** 84:/usr/include/c++/3.2.2/bits/basic_string.h **** // All but the last paragraph is considered pretty conventional 85:/usr/include/c++/3.2.2/bits/basic_string.h **** // for a C++ string implementation. 86:/usr/include/c++/3.2.2/bits/basic_string.h **** 87:/usr/include/c++/3.2.2/bits/basic_string.h **** // 21.3 Template class basic_string 88:/usr/include/c++/3.2.2/bits/basic_string.h **** template 89:/usr/include/c++/3.2.2/bits/basic_string.h **** class basic_string 90:/usr/include/c++/3.2.2/bits/basic_string.h **** { 91:/usr/include/c++/3.2.2/bits/basic_string.h **** // Types: 92:/usr/include/c++/3.2.2/bits/basic_string.h **** public: 93:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef _Traits traits_type; 94:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Traits::char_type value_type; 95:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef _Alloc allocator_type; 96:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Alloc::size_type size_type; 97:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Alloc::difference_type difference_type; 98:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Alloc::reference reference; 99:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Alloc::const_reference const_reference; 100:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Alloc::pointer pointer; 101:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Alloc::const_pointer const_pointer; 102:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef __gnu_cxx::__normal_iterator iterator; 103:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef __gnu_cxx::__normal_iterator 104:/usr/include/c++/3.2.2/bits/basic_string.h **** const_iterator; 105:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef reverse_iterator const_reverse_iterator; 106:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef reverse_iterator reverse_iterator; 107:/usr/include/c++/3.2.2/bits/basic_string.h **** 108:/usr/include/c++/3.2.2/bits/basic_string.h **** private: 109:/usr/include/c++/3.2.2/bits/basic_string.h **** // _Rep: string representation 110:/usr/include/c++/3.2.2/bits/basic_string.h **** // Invariants: 111:/usr/include/c++/3.2.2/bits/basic_string.h **** // 1. String really contains _M_length + 1 characters; last is set 112:/usr/include/c++/3.2.2/bits/basic_string.h **** // to 0 only on call to c_str(). We avoid instantiating 113:/usr/include/c++/3.2.2/bits/basic_string.h **** // _CharT() where the interface does not require it. 114:/usr/include/c++/3.2.2/bits/basic_string.h **** // 2. _M_capacity >= _M_length 115:/usr/include/c++/3.2.2/bits/basic_string.h **** // Allocated memory is always _M_capacity + (1 * sizeof(_CharT)). 116:/usr/include/c++/3.2.2/bits/basic_string.h **** // 3. _M_references has three states: 117:/usr/include/c++/3.2.2/bits/basic_string.h **** // -1: leaked, one reference, no ref-copies allowed, non-const. 118:/usr/include/c++/3.2.2/bits/basic_string.h **** // 0: one reference, non-const. 119:/usr/include/c++/3.2.2/bits/basic_string.h **** // n>0: n + 1 references, operations require a lock, const. 120:/usr/include/c++/3.2.2/bits/basic_string.h **** // 4. All fields==0 is an empty string, given the extra storage 121:/usr/include/c++/3.2.2/bits/basic_string.h **** // beyond-the-end for a null terminator; thus, the shared 122:/usr/include/c++/3.2.2/bits/basic_string.h **** // empty string representation needs no constructor. 123:/usr/include/c++/3.2.2/bits/basic_string.h **** struct _Rep 124:/usr/include/c++/3.2.2/bits/basic_string.h **** { 125:/usr/include/c++/3.2.2/bits/basic_string.h **** // Types: 126:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Alloc::template rebind::other _Raw_bytes_alloc; 127:/usr/include/c++/3.2.2/bits/basic_string.h **** 128:/usr/include/c++/3.2.2/bits/basic_string.h **** // (Public) Data members: 129:/usr/include/c++/3.2.2/bits/basic_string.h **** 130:/usr/include/c++/3.2.2/bits/basic_string.h **** // The maximum number of individual char_type elements of an GAS LISTING /tmp/ccJ9xNSW.s page 36 131:/usr/include/c++/3.2.2/bits/basic_string.h **** // individual string is determined by _S_max_size. This is the 132:/usr/include/c++/3.2.2/bits/basic_string.h **** // value that will be returned by max_size(). (Whereas npos 133:/usr/include/c++/3.2.2/bits/basic_string.h **** // is the maximum number of bytes the allocator can allocate.) 134:/usr/include/c++/3.2.2/bits/basic_string.h **** // If one was to divvy up the theoretical largest size string, 135:/usr/include/c++/3.2.2/bits/basic_string.h **** // with a terminating character and m _CharT elements, it'd 136:/usr/include/c++/3.2.2/bits/basic_string.h **** // look like this: 137:/usr/include/c++/3.2.2/bits/basic_string.h **** // npos = sizeof(_Rep) + (m * sizeof(_CharT)) + sizeof(_CharT) 138:/usr/include/c++/3.2.2/bits/basic_string.h **** // Solving for m: 139:/usr/include/c++/3.2.2/bits/basic_string.h **** // m = ((npos - sizeof(_Rep))/sizeof(CharT)) - 1 140:/usr/include/c++/3.2.2/bits/basic_string.h **** // In addition, this implementation quarters this ammount. 141:/usr/include/c++/3.2.2/bits/basic_string.h **** static const size_type _S_max_size; 142:/usr/include/c++/3.2.2/bits/basic_string.h **** static const _CharT _S_terminal; 143:/usr/include/c++/3.2.2/bits/basic_string.h **** 144:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type _M_length; 145:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type _M_capacity; 146:/usr/include/c++/3.2.2/bits/basic_string.h **** _Atomic_word _M_references; 147:/usr/include/c++/3.2.2/bits/basic_string.h **** 148:/usr/include/c++/3.2.2/bits/basic_string.h **** bool 149:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_is_leaked() const 150:/usr/include/c++/3.2.2/bits/basic_string.h **** { return _M_references < 0; } 151:/usr/include/c++/3.2.2/bits/basic_string.h **** 152:/usr/include/c++/3.2.2/bits/basic_string.h **** bool 153:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_is_shared() const 154:/usr/include/c++/3.2.2/bits/basic_string.h **** { return _M_references > 0; } 155:/usr/include/c++/3.2.2/bits/basic_string.h **** 156:/usr/include/c++/3.2.2/bits/basic_string.h **** void 157:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_set_leaked() 158:/usr/include/c++/3.2.2/bits/basic_string.h **** { _M_references = -1; } 159:/usr/include/c++/3.2.2/bits/basic_string.h **** 160:/usr/include/c++/3.2.2/bits/basic_string.h **** void 161:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_set_sharable() 162:/usr/include/c++/3.2.2/bits/basic_string.h **** { _M_references = 0; } 163:/usr/include/c++/3.2.2/bits/basic_string.h **** 164:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT* 165:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_refdata() throw() 166:/usr/include/c++/3.2.2/bits/basic_string.h **** { return reinterpret_cast<_CharT*>(this + 1); } 167:/usr/include/c++/3.2.2/bits/basic_string.h **** 168:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT& 169:/usr/include/c++/3.2.2/bits/basic_string.h **** operator[](size_t __s) throw() 170:/usr/include/c++/3.2.2/bits/basic_string.h **** { return _M_refdata() [__s]; } 171:/usr/include/c++/3.2.2/bits/basic_string.h **** 172:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT* 173:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2) 174:/usr/include/c++/3.2.2/bits/basic_string.h **** { 175:/usr/include/c++/3.2.2/bits/basic_string.h **** return (!_M_is_leaked() && __alloc1 == __alloc2) 176:/usr/include/c++/3.2.2/bits/basic_string.h **** ? _M_refcopy() : _M_clone(__alloc1); 177:/usr/include/c++/3.2.2/bits/basic_string.h **** } 178:/usr/include/c++/3.2.2/bits/basic_string.h **** 179:/usr/include/c++/3.2.2/bits/basic_string.h **** // Create & Destroy 180:/usr/include/c++/3.2.2/bits/basic_string.h **** static _Rep* 181:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_create(size_t, const _Alloc&); 182:/usr/include/c++/3.2.2/bits/basic_string.h **** 183:/usr/include/c++/3.2.2/bits/basic_string.h **** void 184:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_dispose(const _Alloc& __a) 185:/usr/include/c++/3.2.2/bits/basic_string.h **** { 186:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__exchange_and_add(&_M_references, -1) <= 0) 187:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_destroy(__a); GAS LISTING /tmp/ccJ9xNSW.s page 37 188:/usr/include/c++/3.2.2/bits/basic_string.h **** } // XXX MT 189:/usr/include/c++/3.2.2/bits/basic_string.h **** 190:/usr/include/c++/3.2.2/bits/basic_string.h **** void 191:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_destroy(const _Alloc&) throw(); 192:/usr/include/c++/3.2.2/bits/basic_string.h **** 193:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT* 194:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_refcopy() throw() 195:/usr/include/c++/3.2.2/bits/basic_string.h **** { 196:/usr/include/c++/3.2.2/bits/basic_string.h **** __atomic_add(&_M_references, 1); 197:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_refdata(); 198:/usr/include/c++/3.2.2/bits/basic_string.h **** } // XXX MT 199:/usr/include/c++/3.2.2/bits/basic_string.h **** 200:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT* 201:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_clone(const _Alloc&, size_type __res = 0); 202:/usr/include/c++/3.2.2/bits/basic_string.h **** }; 203:/usr/include/c++/3.2.2/bits/basic_string.h **** 204:/usr/include/c++/3.2.2/bits/basic_string.h **** // Use empty-base optimization: http://www.cantrip.org/emptyopt.html 205:/usr/include/c++/3.2.2/bits/basic_string.h **** struct _Alloc_hider : _Alloc 206:/usr/include/c++/3.2.2/bits/basic_string.h **** { 207:/usr/include/c++/3.2.2/bits/basic_string.h **** _Alloc_hider(_CharT* __dat, const _Alloc& __a) 208:/usr/include/c++/3.2.2/bits/basic_string.h **** : _Alloc(__a), _M_p(__dat) { } 209:/usr/include/c++/3.2.2/bits/basic_string.h **** 210:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT* _M_p; // The actual data. 211:/usr/include/c++/3.2.2/bits/basic_string.h **** }; 212:/usr/include/c++/3.2.2/bits/basic_string.h **** 213:/usr/include/c++/3.2.2/bits/basic_string.h **** public: 214:/usr/include/c++/3.2.2/bits/basic_string.h **** // Data Members (public): 215:/usr/include/c++/3.2.2/bits/basic_string.h **** // NB: This is an unsigned type, and thus represents the maximum 216:/usr/include/c++/3.2.2/bits/basic_string.h **** // size that the allocator can hold. 217:/usr/include/c++/3.2.2/bits/basic_string.h **** static const size_type npos = static_cast(-1); 218:/usr/include/c++/3.2.2/bits/basic_string.h **** 219:/usr/include/c++/3.2.2/bits/basic_string.h **** private: 220:/usr/include/c++/3.2.2/bits/basic_string.h **** // Data Members (private): 221:/usr/include/c++/3.2.2/bits/basic_string.h **** mutable _Alloc_hider _M_dataplus; 222:/usr/include/c++/3.2.2/bits/basic_string.h **** 223:/usr/include/c++/3.2.2/bits/basic_string.h **** // The following storage is init'd to 0 by the linker, resulting 224:/usr/include/c++/3.2.2/bits/basic_string.h **** // (carefully) in an empty string with one reference. 225:/usr/include/c++/3.2.2/bits/basic_string.h **** static size_type _S_empty_rep_storage[(sizeof(_Rep) + sizeof(_CharT) + sizeof(size_type) - 1) 226:/usr/include/c++/3.2.2/bits/basic_string.h **** 227:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT* 228:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_data() const 229:/usr/include/c++/3.2.2/bits/basic_string.h **** { return _M_dataplus._M_p; } 230:/usr/include/c++/3.2.2/bits/basic_string.h **** 231:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT* 232:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_data(_CharT* __p) 233:/usr/include/c++/3.2.2/bits/basic_string.h **** { return (_M_dataplus._M_p = __p); } 234:/usr/include/c++/3.2.2/bits/basic_string.h **** 235:/usr/include/c++/3.2.2/bits/basic_string.h **** _Rep* 236:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_rep() const 237:/usr/include/c++/3.2.2/bits/basic_string.h **** { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); } 238:/usr/include/c++/3.2.2/bits/basic_string.h **** 239:/usr/include/c++/3.2.2/bits/basic_string.h **** // For the internal use we have functions similar to `begin'/`end' 240:/usr/include/c++/3.2.2/bits/basic_string.h **** // but they do not call _M_leak. 241:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator 242:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_ibegin() const { return iterator(_M_data()); } 243:/usr/include/c++/3.2.2/bits/basic_string.h **** 244:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator GAS LISTING /tmp/ccJ9xNSW.s page 38 245:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_iend() const { return iterator(_M_data() + this->size()); } 246:/usr/include/c++/3.2.2/bits/basic_string.h **** 247:/usr/include/c++/3.2.2/bits/basic_string.h **** void 248:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_leak() // for use in begin() & non-const op[] 249:/usr/include/c++/3.2.2/bits/basic_string.h **** { 250:/usr/include/c++/3.2.2/bits/basic_string.h **** if (!_M_rep()->_M_is_leaked()) 251:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_leak_hard(); 252:/usr/include/c++/3.2.2/bits/basic_string.h **** } 253:/usr/include/c++/3.2.2/bits/basic_string.h **** 254:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator 255:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_check(size_type __pos) const 256:/usr/include/c++/3.2.2/bits/basic_string.h **** { 257:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__pos > this->size()) 258:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_out_of_range("basic_string::_M_check"); 259:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_ibegin() + __pos; 260:/usr/include/c++/3.2.2/bits/basic_string.h **** } 261:/usr/include/c++/3.2.2/bits/basic_string.h **** 262:/usr/include/c++/3.2.2/bits/basic_string.h **** // NB: _M_fold doesn't check for a bad __pos1 value. 263:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator 264:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_fold(size_type __pos, size_type __off) const 265:/usr/include/c++/3.2.2/bits/basic_string.h **** { 266:/usr/include/c++/3.2.2/bits/basic_string.h **** bool __testoff = __off < this->size() - __pos; 267:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __newoff = __testoff ? __off : this->size() - __pos; 268:/usr/include/c++/3.2.2/bits/basic_string.h **** return (_M_ibegin() + __pos + __newoff); 269:/usr/include/c++/3.2.2/bits/basic_string.h **** } 270:/usr/include/c++/3.2.2/bits/basic_string.h **** 271:/usr/include/c++/3.2.2/bits/basic_string.h **** // _S_copy_chars is a separate template to permit specialization 272:/usr/include/c++/3.2.2/bits/basic_string.h **** // to optimize for the common case of pointers as iterators. 273:/usr/include/c++/3.2.2/bits/basic_string.h **** template 274:/usr/include/c++/3.2.2/bits/basic_string.h **** static void 275:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) 276:/usr/include/c++/3.2.2/bits/basic_string.h **** { 277:/usr/include/c++/3.2.2/bits/basic_string.h **** for (; __k1 != __k2; ++__k1, ++__p) 278:/usr/include/c++/3.2.2/bits/basic_string.h **** traits_type::assign(*__p, *__k1); // These types are off. 279:/usr/include/c++/3.2.2/bits/basic_string.h **** } 280:/usr/include/c++/3.2.2/bits/basic_string.h **** 281:/usr/include/c++/3.2.2/bits/basic_string.h **** static void 282:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2) 283:/usr/include/c++/3.2.2/bits/basic_string.h **** { _S_copy_chars(__p, __k1.base(), __k2.base()); } 284:/usr/include/c++/3.2.2/bits/basic_string.h **** 285:/usr/include/c++/3.2.2/bits/basic_string.h **** static void 286:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2) 287:/usr/include/c++/3.2.2/bits/basic_string.h **** { _S_copy_chars(__p, __k1.base(), __k2.base()); } 288:/usr/include/c++/3.2.2/bits/basic_string.h **** 289:/usr/include/c++/3.2.2/bits/basic_string.h **** static void 290:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) 291:/usr/include/c++/3.2.2/bits/basic_string.h **** { traits_type::copy(__p, __k1, __k2 - __k1); } 292:/usr/include/c++/3.2.2/bits/basic_string.h **** 293:/usr/include/c++/3.2.2/bits/basic_string.h **** static void 294:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2) 295:/usr/include/c++/3.2.2/bits/basic_string.h **** { traits_type::copy(__p, __k1, __k2 - __k1); } 296:/usr/include/c++/3.2.2/bits/basic_string.h **** 297:/usr/include/c++/3.2.2/bits/basic_string.h **** void 298:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_mutate(size_type __pos, size_type __len1, size_type __len2); 299:/usr/include/c++/3.2.2/bits/basic_string.h **** 300:/usr/include/c++/3.2.2/bits/basic_string.h **** void 301:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_leak_hard(); GAS LISTING /tmp/ccJ9xNSW.s page 39 302:/usr/include/c++/3.2.2/bits/basic_string.h **** 303:/usr/include/c++/3.2.2/bits/basic_string.h **** static _Rep& 304:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_empty_rep() 305:/usr/include/c++/3.2.2/bits/basic_string.h **** { return *reinterpret_cast<_Rep*>(&_S_empty_rep_storage); } 306:/usr/include/c++/3.2.2/bits/basic_string.h **** 307:/usr/include/c++/3.2.2/bits/basic_string.h **** public: 308:/usr/include/c++/3.2.2/bits/basic_string.h **** // Construct/copy/destroy: 309:/usr/include/c++/3.2.2/bits/basic_string.h **** // NB: We overload ctors in some cases instead of using default 310:/usr/include/c++/3.2.2/bits/basic_string.h **** // arguments, per 17.4.4.4 para. 2 item 2. 311:/usr/include/c++/3.2.2/bits/basic_string.h **** 312:/usr/include/c++/3.2.2/bits/basic_string.h **** inline 313:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(); 314:/usr/include/c++/3.2.2/bits/basic_string.h **** 315:/usr/include/c++/3.2.2/bits/basic_string.h **** explicit 316:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(const _Alloc& __a); 317:/usr/include/c++/3.2.2/bits/basic_string.h **** 318:/usr/include/c++/3.2.2/bits/basic_string.h **** // NB: per LWG issue 42, semantics different from IS: 319:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(const basic_string& __str); 320:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(const basic_string& __str, size_type __pos, 321:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __n = npos); 322:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(const basic_string& __str, size_type __pos, 323:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __n, const _Alloc& __a); 324:/usr/include/c++/3.2.2/bits/basic_string.h **** 325:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(const _CharT* __s, size_type __n, 326:/usr/include/c++/3.2.2/bits/basic_string.h **** const _Alloc& __a = _Alloc()); 327:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()); 328:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()); 329:/usr/include/c++/3.2.2/bits/basic_string.h **** 330:/usr/include/c++/3.2.2/bits/basic_string.h **** template 331:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(_InputIterator __beg, _InputIterator __end, 332:/usr/include/c++/3.2.2/bits/basic_string.h **** const _Alloc& __a = _Alloc()); 333:/usr/include/c++/3.2.2/bits/basic_string.h **** 334:/usr/include/c++/3.2.2/bits/basic_string.h **** ~basic_string() 335:/usr/include/c++/3.2.2/bits/basic_string.h **** { _M_rep()->_M_dispose(this->get_allocator()); } 336:/usr/include/c++/3.2.2/bits/basic_string.h **** 337:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 338:/usr/include/c++/3.2.2/bits/basic_string.h **** operator=(const basic_string& __str) { return this->assign(__str); } 339:/usr/include/c++/3.2.2/bits/basic_string.h **** 340:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 341:/usr/include/c++/3.2.2/bits/basic_string.h **** operator=(const _CharT* __s) { return this->assign(__s); } 342:/usr/include/c++/3.2.2/bits/basic_string.h **** 343:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 344:/usr/include/c++/3.2.2/bits/basic_string.h **** operator=(_CharT __c) { return this->assign(1, __c); } 345:/usr/include/c++/3.2.2/bits/basic_string.h **** 346:/usr/include/c++/3.2.2/bits/basic_string.h **** // Iterators: 347:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator 348:/usr/include/c++/3.2.2/bits/basic_string.h **** begin() 349:/usr/include/c++/3.2.2/bits/basic_string.h **** { 350:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_leak(); 351:/usr/include/c++/3.2.2/bits/basic_string.h **** return iterator(_M_data()); 352:/usr/include/c++/3.2.2/bits/basic_string.h **** } 353:/usr/include/c++/3.2.2/bits/basic_string.h **** 354:/usr/include/c++/3.2.2/bits/basic_string.h **** const_iterator 355:/usr/include/c++/3.2.2/bits/basic_string.h **** begin() const 356:/usr/include/c++/3.2.2/bits/basic_string.h **** { return const_iterator(_M_data()); } 357:/usr/include/c++/3.2.2/bits/basic_string.h **** 358:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator GAS LISTING /tmp/ccJ9xNSW.s page 40 359:/usr/include/c++/3.2.2/bits/basic_string.h **** end() 360:/usr/include/c++/3.2.2/bits/basic_string.h **** { 361:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_leak(); 362:/usr/include/c++/3.2.2/bits/basic_string.h **** return iterator(_M_data() + this->size()); 363:/usr/include/c++/3.2.2/bits/basic_string.h **** } 364:/usr/include/c++/3.2.2/bits/basic_string.h **** 365:/usr/include/c++/3.2.2/bits/basic_string.h **** const_iterator 366:/usr/include/c++/3.2.2/bits/basic_string.h **** end() const 367:/usr/include/c++/3.2.2/bits/basic_string.h **** { return const_iterator(_M_data() + this->size()); } 368:/usr/include/c++/3.2.2/bits/basic_string.h **** 369:/usr/include/c++/3.2.2/bits/basic_string.h **** reverse_iterator 370:/usr/include/c++/3.2.2/bits/basic_string.h **** rbegin() 371:/usr/include/c++/3.2.2/bits/basic_string.h **** { return reverse_iterator(this->end()); } 372:/usr/include/c++/3.2.2/bits/basic_string.h **** 373:/usr/include/c++/3.2.2/bits/basic_string.h **** const_reverse_iterator 374:/usr/include/c++/3.2.2/bits/basic_string.h **** rbegin() const 375:/usr/include/c++/3.2.2/bits/basic_string.h **** { return const_reverse_iterator(this->end()); } 376:/usr/include/c++/3.2.2/bits/basic_string.h **** 377:/usr/include/c++/3.2.2/bits/basic_string.h **** reverse_iterator 378:/usr/include/c++/3.2.2/bits/basic_string.h **** rend() 379:/usr/include/c++/3.2.2/bits/basic_string.h **** { return reverse_iterator(this->begin()); } 380:/usr/include/c++/3.2.2/bits/basic_string.h **** 381:/usr/include/c++/3.2.2/bits/basic_string.h **** const_reverse_iterator 382:/usr/include/c++/3.2.2/bits/basic_string.h **** rend() const 383:/usr/include/c++/3.2.2/bits/basic_string.h **** { return const_reverse_iterator(this->begin()); } 384:/usr/include/c++/3.2.2/bits/basic_string.h **** 385:/usr/include/c++/3.2.2/bits/basic_string.h **** public: 386:/usr/include/c++/3.2.2/bits/basic_string.h **** // Capacity: 387:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 388:/usr/include/c++/3.2.2/bits/basic_string.h **** size() const { return _M_rep()->_M_length; } 389:/usr/include/c++/3.2.2/bits/basic_string.h **** 390:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 391:/usr/include/c++/3.2.2/bits/basic_string.h **** length() const { return _M_rep()->_M_length; } 392:/usr/include/c++/3.2.2/bits/basic_string.h **** 393:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 394:/usr/include/c++/3.2.2/bits/basic_string.h **** max_size() const { return _Rep::_S_max_size; } 395:/usr/include/c++/3.2.2/bits/basic_string.h **** 396:/usr/include/c++/3.2.2/bits/basic_string.h **** void 397:/usr/include/c++/3.2.2/bits/basic_string.h **** resize(size_type __n, _CharT __c); 398:/usr/include/c++/3.2.2/bits/basic_string.h **** 399:/usr/include/c++/3.2.2/bits/basic_string.h **** void 400:/usr/include/c++/3.2.2/bits/basic_string.h **** resize(size_type __n) { this->resize(__n, _CharT()); } 401:/usr/include/c++/3.2.2/bits/basic_string.h **** 402:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 403:/usr/include/c++/3.2.2/bits/basic_string.h **** capacity() const { return _M_rep()->_M_capacity; } 404:/usr/include/c++/3.2.2/bits/basic_string.h **** 405:/usr/include/c++/3.2.2/bits/basic_string.h **** void 406:/usr/include/c++/3.2.2/bits/basic_string.h **** reserve(size_type __res_arg = 0); 407:/usr/include/c++/3.2.2/bits/basic_string.h **** 408:/usr/include/c++/3.2.2/bits/basic_string.h **** void 409:/usr/include/c++/3.2.2/bits/basic_string.h **** clear() { _M_mutate(0, this->size(), 0); } 410:/usr/include/c++/3.2.2/bits/basic_string.h **** 411:/usr/include/c++/3.2.2/bits/basic_string.h **** bool 412:/usr/include/c++/3.2.2/bits/basic_string.h **** empty() const { return this->size() == 0; } 413:/usr/include/c++/3.2.2/bits/basic_string.h **** 414:/usr/include/c++/3.2.2/bits/basic_string.h **** // Element access: 415:/usr/include/c++/3.2.2/bits/basic_string.h **** const_reference GAS LISTING /tmp/ccJ9xNSW.s page 41 416:/usr/include/c++/3.2.2/bits/basic_string.h **** operator[] (size_type __pos) const 417:/usr/include/c++/3.2.2/bits/basic_string.h **** { return _M_data()[__pos]; } 418:/usr/include/c++/3.2.2/bits/basic_string.h **** 419:/usr/include/c++/3.2.2/bits/basic_string.h **** reference 420:/usr/include/c++/3.2.2/bits/basic_string.h **** operator[](size_type __pos) 421:/usr/include/c++/3.2.2/bits/basic_string.h **** { 422:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_leak(); 423:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_data()[__pos]; 424:/usr/include/c++/3.2.2/bits/basic_string.h **** } 425:/usr/include/c++/3.2.2/bits/basic_string.h **** 426:/usr/include/c++/3.2.2/bits/basic_string.h **** const_reference 427:/usr/include/c++/3.2.2/bits/basic_string.h **** at(size_type __n) const 428:/usr/include/c++/3.2.2/bits/basic_string.h **** { 429:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__n >= this->size()) 430:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_out_of_range("basic_string::at"); 431:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_data()[__n]; 432:/usr/include/c++/3.2.2/bits/basic_string.h **** } 433:/usr/include/c++/3.2.2/bits/basic_string.h **** 434:/usr/include/c++/3.2.2/bits/basic_string.h **** reference 435:/usr/include/c++/3.2.2/bits/basic_string.h **** at(size_type __n) 436:/usr/include/c++/3.2.2/bits/basic_string.h **** { 437:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__n >= size()) 438:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_out_of_range("basic_string::at"); 439:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_leak(); 440:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_data()[__n]; 441:/usr/include/c++/3.2.2/bits/basic_string.h **** } 442:/usr/include/c++/3.2.2/bits/basic_string.h **** 443:/usr/include/c++/3.2.2/bits/basic_string.h **** // Modifiers: 444:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 445:/usr/include/c++/3.2.2/bits/basic_string.h **** operator+=(const basic_string& __str) { return this->append(__str); } 446:/usr/include/c++/3.2.2/bits/basic_string.h **** 447:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 448:/usr/include/c++/3.2.2/bits/basic_string.h **** operator+=(const _CharT* __s) { return this->append(__s); } 449:/usr/include/c++/3.2.2/bits/basic_string.h **** 450:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 451:/usr/include/c++/3.2.2/bits/basic_string.h **** operator+=(_CharT __c) { return this->append(size_type(1), __c); } 452:/usr/include/c++/3.2.2/bits/basic_string.h **** 453:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 454:/usr/include/c++/3.2.2/bits/basic_string.h **** append(const basic_string& __str); 455:/usr/include/c++/3.2.2/bits/basic_string.h **** 456:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 457:/usr/include/c++/3.2.2/bits/basic_string.h **** append(const basic_string& __str, size_type __pos, size_type __n); 458:/usr/include/c++/3.2.2/bits/basic_string.h **** 459:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 460:/usr/include/c++/3.2.2/bits/basic_string.h **** append(const _CharT* __s, size_type __n); 461:/usr/include/c++/3.2.2/bits/basic_string.h **** 462:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 463:/usr/include/c++/3.2.2/bits/basic_string.h **** append(const _CharT* __s) 464:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->append(__s, traits_type::length(__s)); } 465:/usr/include/c++/3.2.2/bits/basic_string.h **** 466:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 467:/usr/include/c++/3.2.2/bits/basic_string.h **** append(size_type __n, _CharT __c); 468:/usr/include/c++/3.2.2/bits/basic_string.h **** 469:/usr/include/c++/3.2.2/bits/basic_string.h **** template 470:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 471:/usr/include/c++/3.2.2/bits/basic_string.h **** append(_InputIterator __first, _InputIterator __last) 472:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(_M_iend(), _M_iend(), __first, __last); } GAS LISTING /tmp/ccJ9xNSW.s page 42 473:/usr/include/c++/3.2.2/bits/basic_string.h **** 474:/usr/include/c++/3.2.2/bits/basic_string.h **** void 475:/usr/include/c++/3.2.2/bits/basic_string.h **** push_back(_CharT __c) 476:/usr/include/c++/3.2.2/bits/basic_string.h **** { this->replace(_M_iend(), _M_iend(), 1, __c); } 477:/usr/include/c++/3.2.2/bits/basic_string.h **** 478:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 479:/usr/include/c++/3.2.2/bits/basic_string.h **** assign(const basic_string& __str); 480:/usr/include/c++/3.2.2/bits/basic_string.h **** 481:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 482:/usr/include/c++/3.2.2/bits/basic_string.h **** assign(const basic_string& __str, size_type __pos, size_type __n) 483:/usr/include/c++/3.2.2/bits/basic_string.h **** { 484:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __strsize = __str.size(); 485:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__pos > __strsize) 486:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_out_of_range("basic_string::assign"); 487:/usr/include/c++/3.2.2/bits/basic_string.h **** const bool __testn = __n < __strsize - __pos; 488:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __newsize = __testn ? __n : __strsize - __pos; 489:/usr/include/c++/3.2.2/bits/basic_string.h **** return this->assign(__str._M_data() + __pos, __newsize); 490:/usr/include/c++/3.2.2/bits/basic_string.h **** } 491:/usr/include/c++/3.2.2/bits/basic_string.h **** 492:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 493:/usr/include/c++/3.2.2/bits/basic_string.h **** assign(const _CharT* __s, size_type __n) 494:/usr/include/c++/3.2.2/bits/basic_string.h **** { 495:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__n > this->max_size()) 496:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_length_error("basic_string::assign"); 497:/usr/include/c++/3.2.2/bits/basic_string.h **** if (_M_rep()->_M_is_shared() || less()(__s, _M_data()) 498:/usr/include/c++/3.2.2/bits/basic_string.h **** || less()(_M_data() + this->size(), __s)) 499:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_replace_safe(_M_ibegin(), _M_iend(), __s, __s + __n); 500:/usr/include/c++/3.2.2/bits/basic_string.h **** else 501:/usr/include/c++/3.2.2/bits/basic_string.h **** { 502:/usr/include/c++/3.2.2/bits/basic_string.h **** // Work in-place 503:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __pos = __s - _M_data(); 504:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__pos >= __n) 505:/usr/include/c++/3.2.2/bits/basic_string.h **** traits_type::copy(_M_data(), __s, __n); 506:/usr/include/c++/3.2.2/bits/basic_string.h **** else if (__pos) 507:/usr/include/c++/3.2.2/bits/basic_string.h **** traits_type::move(_M_data(), __s, __n); 508:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_rep()->_M_length = __n; 509:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_data()[__n] = _Rep::_S_terminal; 510:/usr/include/c++/3.2.2/bits/basic_string.h **** return *this; 511:/usr/include/c++/3.2.2/bits/basic_string.h **** } 512:/usr/include/c++/3.2.2/bits/basic_string.h **** } 513:/usr/include/c++/3.2.2/bits/basic_string.h **** 514:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 515:/usr/include/c++/3.2.2/bits/basic_string.h **** assign(const _CharT* __s) 516:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->assign(__s, traits_type::length(__s)); } 517:/usr/include/c++/3.2.2/bits/basic_string.h **** 518:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 519:/usr/include/c++/3.2.2/bits/basic_string.h **** assign(size_type __n, _CharT __c) 520:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(_M_ibegin(), _M_iend(), __n, __c); } 521:/usr/include/c++/3.2.2/bits/basic_string.h **** 522:/usr/include/c++/3.2.2/bits/basic_string.h **** template 523:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 524:/usr/include/c++/3.2.2/bits/basic_string.h **** assign(_InputIterator __first, _InputIterator __last) 525:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(_M_ibegin(), _M_iend(), __first, __last); } 526:/usr/include/c++/3.2.2/bits/basic_string.h **** 527:/usr/include/c++/3.2.2/bits/basic_string.h **** void 528:/usr/include/c++/3.2.2/bits/basic_string.h **** insert(iterator __p, size_type __n, _CharT __c) 529:/usr/include/c++/3.2.2/bits/basic_string.h **** { this->replace(__p, __p, __n, __c); } GAS LISTING /tmp/ccJ9xNSW.s page 43 530:/usr/include/c++/3.2.2/bits/basic_string.h **** 531:/usr/include/c++/3.2.2/bits/basic_string.h **** template 532:/usr/include/c++/3.2.2/bits/basic_string.h **** void insert(iterator __p, _InputIterator __beg, _InputIterator __end) 533:/usr/include/c++/3.2.2/bits/basic_string.h **** { this->replace(__p, __p, __beg, __end); } 534:/usr/include/c++/3.2.2/bits/basic_string.h **** 535:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 536:/usr/include/c++/3.2.2/bits/basic_string.h **** insert(size_type __pos1, const basic_string& __str) 537:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->insert(__pos1, __str, 0, __str.size()); } 538:/usr/include/c++/3.2.2/bits/basic_string.h **** 539:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 540:/usr/include/c++/3.2.2/bits/basic_string.h **** insert(size_type __pos1, const basic_string& __str, 541:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __pos2, size_type __n) 542:/usr/include/c++/3.2.2/bits/basic_string.h **** { 543:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __strsize = __str.size(); 544:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__pos2 > __strsize) 545:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_out_of_range("basic_string::insert"); 546:/usr/include/c++/3.2.2/bits/basic_string.h **** const bool __testn = __n < __strsize - __pos2; 547:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __newsize = __testn ? __n : __strsize - __pos2; 548:/usr/include/c++/3.2.2/bits/basic_string.h **** return this->insert(__pos1, __str._M_data() + __pos2, __newsize); 549:/usr/include/c++/3.2.2/bits/basic_string.h **** } 550:/usr/include/c++/3.2.2/bits/basic_string.h **** 551:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 552:/usr/include/c++/3.2.2/bits/basic_string.h **** insert(size_type __pos, const _CharT* __s, size_type __n) 553:/usr/include/c++/3.2.2/bits/basic_string.h **** { 554:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __size = this->size(); 555:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__pos > __size) 556:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_out_of_range("basic_string::insert"); 557:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__size > this->max_size() - __n) 558:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_length_error("basic_string::insert"); 559:/usr/include/c++/3.2.2/bits/basic_string.h **** if (_M_rep()->_M_is_shared() || less()(__s, _M_data()) 560:/usr/include/c++/3.2.2/bits/basic_string.h **** || less()(_M_data() + __size, __s)) 561:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_replace_safe(_M_ibegin() + __pos, _M_ibegin() + __pos, 562:/usr/include/c++/3.2.2/bits/basic_string.h **** __s, __s + __n); 563:/usr/include/c++/3.2.2/bits/basic_string.h **** else 564:/usr/include/c++/3.2.2/bits/basic_string.h **** { 565:/usr/include/c++/3.2.2/bits/basic_string.h **** // Work in-place. If _M_mutate reallocates the string, __s 566:/usr/include/c++/3.2.2/bits/basic_string.h **** // does not point anymore to valid data, therefore we save its 567:/usr/include/c++/3.2.2/bits/basic_string.h **** // offset, then we restore it. 568:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __off = __s - _M_data(); 569:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_mutate(__pos, 0, __n); 570:/usr/include/c++/3.2.2/bits/basic_string.h **** __s = _M_data() + __off; 571:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT* __p = _M_data() + __pos; 572:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__s + __n <= __p) 573:/usr/include/c++/3.2.2/bits/basic_string.h **** traits_type::copy(__p, __s, __n); 574:/usr/include/c++/3.2.2/bits/basic_string.h **** else if (__s >= __p) 575:/usr/include/c++/3.2.2/bits/basic_string.h **** traits_type::copy(__p, __s + __n, __n); 576:/usr/include/c++/3.2.2/bits/basic_string.h **** else 577:/usr/include/c++/3.2.2/bits/basic_string.h **** { 578:/usr/include/c++/3.2.2/bits/basic_string.h **** traits_type::copy(__p, __s, __p - __s); 579:/usr/include/c++/3.2.2/bits/basic_string.h **** traits_type::copy(__p + (__p - __s), __p + __n, __n - (__p - __s)); 580:/usr/include/c++/3.2.2/bits/basic_string.h **** } 581:/usr/include/c++/3.2.2/bits/basic_string.h **** return *this; 582:/usr/include/c++/3.2.2/bits/basic_string.h **** } 583:/usr/include/c++/3.2.2/bits/basic_string.h **** } 584:/usr/include/c++/3.2.2/bits/basic_string.h **** 585:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 586:/usr/include/c++/3.2.2/bits/basic_string.h **** insert(size_type __pos, const _CharT* __s) GAS LISTING /tmp/ccJ9xNSW.s page 44 587:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->insert(__pos, __s, traits_type::length(__s)); } 588:/usr/include/c++/3.2.2/bits/basic_string.h **** 589:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 590:/usr/include/c++/3.2.2/bits/basic_string.h **** insert(size_type __pos, size_type __n, _CharT __c) 591:/usr/include/c++/3.2.2/bits/basic_string.h **** { 592:/usr/include/c++/3.2.2/bits/basic_string.h **** this->insert(_M_check(__pos), __n, __c); 593:/usr/include/c++/3.2.2/bits/basic_string.h **** return *this; 594:/usr/include/c++/3.2.2/bits/basic_string.h **** } 595:/usr/include/c++/3.2.2/bits/basic_string.h **** 596:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator 597:/usr/include/c++/3.2.2/bits/basic_string.h **** insert(iterator __p, _CharT __c = _CharT()) 598:/usr/include/c++/3.2.2/bits/basic_string.h **** { 599:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __pos = __p - _M_ibegin(); 600:/usr/include/c++/3.2.2/bits/basic_string.h **** this->insert(_M_check(__pos), size_type(1), __c); 601:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_rep()->_M_set_leaked(); 602:/usr/include/c++/3.2.2/bits/basic_string.h **** return this->_M_ibegin() + __pos; 603:/usr/include/c++/3.2.2/bits/basic_string.h **** } 604:/usr/include/c++/3.2.2/bits/basic_string.h **** 605:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 606:/usr/include/c++/3.2.2/bits/basic_string.h **** erase(size_type __pos = 0, size_type __n = npos) 607:/usr/include/c++/3.2.2/bits/basic_string.h **** { 608:/usr/include/c++/3.2.2/bits/basic_string.h **** return this->replace(_M_check(__pos), _M_fold(__pos, __n), 609:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_data(), _M_data()); 610:/usr/include/c++/3.2.2/bits/basic_string.h **** } 611:/usr/include/c++/3.2.2/bits/basic_string.h **** 612:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator 613:/usr/include/c++/3.2.2/bits/basic_string.h **** erase(iterator __position) 614:/usr/include/c++/3.2.2/bits/basic_string.h **** { 615:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __i = __position - _M_ibegin(); 616:/usr/include/c++/3.2.2/bits/basic_string.h **** this->replace(__position, __position + 1, _M_data(), _M_data()); 617:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_rep()->_M_set_leaked(); 618:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_ibegin() + __i; 619:/usr/include/c++/3.2.2/bits/basic_string.h **** } 620:/usr/include/c++/3.2.2/bits/basic_string.h **** 621:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator 622:/usr/include/c++/3.2.2/bits/basic_string.h **** erase(iterator __first, iterator __last) 623:/usr/include/c++/3.2.2/bits/basic_string.h **** { 624:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __i = __first - _M_ibegin(); 625:/usr/include/c++/3.2.2/bits/basic_string.h **** this->replace(__first, __last, _M_data(), _M_data()); 626:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_rep()->_M_set_leaked(); 627:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_ibegin() + __i; 628:/usr/include/c++/3.2.2/bits/basic_string.h **** } 629:/usr/include/c++/3.2.2/bits/basic_string.h **** 630:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 631:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(size_type __pos, size_type __n, const basic_string& __str) 632:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__pos, __n, __str._M_data(), __str.size()); } 633:/usr/include/c++/3.2.2/bits/basic_string.h **** 634:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 635:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(size_type __pos1, size_type __n1, const basic_string& __str, 636:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __pos2, size_type __n2); 637:/usr/include/c++/3.2.2/bits/basic_string.h **** 638:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 639:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(size_type __pos, size_type __n1, const _CharT* __s, 640:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __n2) 641:/usr/include/c++/3.2.2/bits/basic_string.h **** { 642:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __size = this->size(); 643:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__pos > __size) GAS LISTING /tmp/ccJ9xNSW.s page 45 644:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_out_of_range("basic_string::replace"); 645:/usr/include/c++/3.2.2/bits/basic_string.h **** const bool __testn1 = __n1 < __size - __pos; 646:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __foldn1 = __testn1 ? __n1 : __size - __pos; 647:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__size - __foldn1 > this->max_size() - __n2) 648:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_length_error("basic_string::replace"); 649:/usr/include/c++/3.2.2/bits/basic_string.h **** if (_M_rep()->_M_is_shared() || less()(__s, _M_data()) 650:/usr/include/c++/3.2.2/bits/basic_string.h **** || less()(_M_data() + __size, __s)) 651:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_replace_safe(_M_ibegin() + __pos, 652:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_ibegin() + __pos + __foldn1, __s, __s + __n2); 653:/usr/include/c++/3.2.2/bits/basic_string.h **** // Todo: optimized in-place replace. 654:/usr/include/c++/3.2.2/bits/basic_string.h **** else return 655:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_replace(_M_ibegin() + __pos, _M_ibegin() + __pos + __foldn1, 656:/usr/include/c++/3.2.2/bits/basic_string.h **** __s, __s + __n2, 657:/usr/include/c++/3.2.2/bits/basic_string.h **** typename iterator_traits::iterator_category()); 658:/usr/include/c++/3.2.2/bits/basic_string.h **** } 659:/usr/include/c++/3.2.2/bits/basic_string.h **** 660:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 661:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(size_type __pos, size_type __n1, const _CharT* __s) 662:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__pos, __n1, __s, traits_type::length(__s)); } 663:/usr/include/c++/3.2.2/bits/basic_string.h **** 664:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 665:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) 666:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(_M_check(__pos), _M_fold(__pos, __n1), __n2, __c); } 667:/usr/include/c++/3.2.2/bits/basic_string.h **** 668:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 669:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, const basic_string& __str) 670:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } 671:/usr/include/c++/3.2.2/bits/basic_string.h **** 672:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 673:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, 674:/usr/include/c++/3.2.2/bits/basic_string.h **** const _CharT* __s, size_type __n) 675:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n); } 676:/usr/include/c++/3.2.2/bits/basic_string.h **** 677:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 678:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, const _CharT* __s) 679:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__i1, __i2, __s, traits_type::length(__s)); } 680:/usr/include/c++/3.2.2/bits/basic_string.h **** 681:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 682:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, size_type __n, _CharT __c); 683:/usr/include/c++/3.2.2/bits/basic_string.h **** 684:/usr/include/c++/3.2.2/bits/basic_string.h **** template 685:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 686:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, 687:/usr/include/c++/3.2.2/bits/basic_string.h **** _InputIterator __k1, _InputIterator __k2) 688:/usr/include/c++/3.2.2/bits/basic_string.h **** { return _M_replace(__i1, __i2, __k1, __k2, 689:/usr/include/c++/3.2.2/bits/basic_string.h **** typename iterator_traits<_InputIterator>::iterator_category()); } 690:/usr/include/c++/3.2.2/bits/basic_string.h **** 691:/usr/include/c++/3.2.2/bits/basic_string.h **** // Specializations for the common case of pointer and iterator: 692:/usr/include/c++/3.2.2/bits/basic_string.h **** // useful to avoid the overhead of temporary buffering in _M_replace. 693:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 694:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2) 695:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__i1 - _M_ibegin(), __i2 - __i1, 696:/usr/include/c++/3.2.2/bits/basic_string.h **** __k1, __k2 - __k1); } 697:/usr/include/c++/3.2.2/bits/basic_string.h **** 698:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 699:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, const _CharT* __k1, const _CharT* __k2) 700:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__i1 - _M_ibegin(), __i2 - __i1, GAS LISTING /tmp/ccJ9xNSW.s page 46 701:/usr/include/c++/3.2.2/bits/basic_string.h **** __k1, __k2 - __k1); } 702:/usr/include/c++/3.2.2/bits/basic_string.h **** 703:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 704:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2) 705:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__i1 - _M_ibegin(), __i2 - __i1, 706:/usr/include/c++/3.2.2/bits/basic_string.h **** __k1.base(), __k2 - __k1); 707:/usr/include/c++/3.2.2/bits/basic_string.h **** } 708:/usr/include/c++/3.2.2/bits/basic_string.h **** 709:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 710:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, const_iterator __k1, const_iterator __k2) 711:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__i1 - _M_ibegin(), __i2 - __i1, 712:/usr/include/c++/3.2.2/bits/basic_string.h **** __k1.base(), __k2 - __k1); 713:/usr/include/c++/3.2.2/bits/basic_string.h **** } 714:/usr/include/c++/3.2.2/bits/basic_string.h **** 715:/usr/include/c++/3.2.2/bits/basic_string.h **** private: 716:/usr/include/c++/3.2.2/bits/basic_string.h **** template 717:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 718:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_replace(iterator __i1, iterator __i2, _InputIterator __k1, 719:/usr/include/c++/3.2.2/bits/basic_string.h **** _InputIterator __k2, input_iterator_tag); 720:/usr/include/c++/3.2.2/bits/basic_string.h **** 721:/usr/include/c++/3.2.2/bits/basic_string.h **** template 722:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 723:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_replace_safe(iterator __i1, iterator __i2, _ForwardIterator __k1, 724:/usr/include/c++/3.2.2/bits/basic_string.h **** _ForwardIterator __k2); 725:/usr/include/c++/3.2.2/bits/basic_string.h **** 726:/usr/include/c++/3.2.2/bits/basic_string.h **** // _S_construct_aux is used to implement the 21.3.1 para 15 which 727:/usr/include/c++/3.2.2/bits/basic_string.h **** // requires special behaviour if _InIter is an integral type 728:/usr/include/c++/3.2.2/bits/basic_string.h **** template 729:/usr/include/c++/3.2.2/bits/basic_string.h **** static _CharT* 730:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_construct_aux(_InIter __beg, _InIter __end, const _Alloc& __a, 731:/usr/include/c++/3.2.2/bits/basic_string.h **** __false_type) 732:/usr/include/c++/3.2.2/bits/basic_string.h **** { 733:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename iterator_traits<_InIter>::iterator_category _Tag; 734:/usr/include/c++/3.2.2/bits/basic_string.h **** return _S_construct(__beg, __end, __a, _Tag()); 735:/usr/include/c++/3.2.2/bits/basic_string.h **** } 736:/usr/include/c++/3.2.2/bits/basic_string.h **** 737:/usr/include/c++/3.2.2/bits/basic_string.h **** template 738:/usr/include/c++/3.2.2/bits/basic_string.h **** static _CharT* 739:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_construct_aux(_InIter __beg, _InIter __end, const _Alloc& __a, 740:/usr/include/c++/3.2.2/bits/basic_string.h **** __true_type) 741:/usr/include/c++/3.2.2/bits/basic_string.h **** { 742:/usr/include/c++/3.2.2/bits/basic_string.h **** return _S_construct(static_cast(__beg), 743:/usr/include/c++/3.2.2/bits/basic_string.h **** static_cast(__end), __a); 744:/usr/include/c++/3.2.2/bits/basic_string.h **** } 745:/usr/include/c++/3.2.2/bits/basic_string.h **** 746:/usr/include/c++/3.2.2/bits/basic_string.h **** template 747:/usr/include/c++/3.2.2/bits/basic_string.h **** static _CharT* 748:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_construct(_InIter __beg, _InIter __end, const _Alloc& __a) 749:/usr/include/c++/3.2.2/bits/basic_string.h **** { 750:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Is_integer<_InIter>::_Integral _Integral; 751:/usr/include/c++/3.2.2/bits/basic_string.h **** return _S_construct_aux(__beg, __end, __a, _Integral()); 752:/usr/include/c++/3.2.2/bits/basic_string.h **** } 753:/usr/include/c++/3.2.2/bits/basic_string.h **** 754:/usr/include/c++/3.2.2/bits/basic_string.h **** // For Input Iterators, used in istreambuf_iterators, etc. 755:/usr/include/c++/3.2.2/bits/basic_string.h **** template 756:/usr/include/c++/3.2.2/bits/basic_string.h **** static _CharT* 757:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_construct(_InIter __beg, _InIter __end, const _Alloc& __a, GAS LISTING /tmp/ccJ9xNSW.s page 47 758:/usr/include/c++/3.2.2/bits/basic_string.h **** input_iterator_tag); 759:/usr/include/c++/3.2.2/bits/basic_string.h **** 760:/usr/include/c++/3.2.2/bits/basic_string.h **** // For forward_iterators up to random_access_iterators, used for 761:/usr/include/c++/3.2.2/bits/basic_string.h **** // string::iterator, _CharT*, etc. 762:/usr/include/c++/3.2.2/bits/basic_string.h **** template 763:/usr/include/c++/3.2.2/bits/basic_string.h **** static _CharT* 764:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_construct(_FwdIter __beg, _FwdIter __end, const _Alloc& __a, 765:/usr/include/c++/3.2.2/bits/basic_string.h **** forward_iterator_tag); 766:/usr/include/c++/3.2.2/bits/basic_string.h **** 767:/usr/include/c++/3.2.2/bits/basic_string.h **** static _CharT* 768:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_construct(size_type __req, _CharT __c, const _Alloc& __a); 769:/usr/include/c++/3.2.2/bits/basic_string.h **** 770:/usr/include/c++/3.2.2/bits/basic_string.h **** public: 771:/usr/include/c++/3.2.2/bits/basic_string.h **** 772:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 773:/usr/include/c++/3.2.2/bits/basic_string.h **** copy(_CharT* __s, size_type __n, size_type __pos = 0) const; 774:/usr/include/c++/3.2.2/bits/basic_string.h **** 775:/usr/include/c++/3.2.2/bits/basic_string.h **** void 776:/usr/include/c++/3.2.2/bits/basic_string.h **** swap(basic_string<_CharT, _Traits, _Alloc>& __s); 777:/usr/include/c++/3.2.2/bits/basic_string.h **** 778:/usr/include/c++/3.2.2/bits/basic_string.h **** // String operations: 779:/usr/include/c++/3.2.2/bits/basic_string.h **** const _CharT* 780:/usr/include/c++/3.2.2/bits/basic_string.h **** c_str() const 781:/usr/include/c++/3.2.2/bits/basic_string.h **** { 782:/usr/include/c++/3.2.2/bits/basic_string.h **** // MT: This assumes concurrent writes are OK. 783:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __n = this->size(); 784:/usr/include/c++/3.2.2/bits/basic_string.h **** traits_type::assign(_M_data()[__n], _Rep::_S_terminal); 785:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_data(); 786:/usr/include/c++/3.2.2/bits/basic_string.h **** } 787:/usr/include/c++/3.2.2/bits/basic_string.h **** 788:/usr/include/c++/3.2.2/bits/basic_string.h **** const _CharT* 789:/usr/include/c++/3.2.2/bits/basic_string.h **** data() const { return _M_data(); } 790:/usr/include/c++/3.2.2/bits/basic_string.h **** 791:/usr/include/c++/3.2.2/bits/basic_string.h **** allocator_type 792:/usr/include/c++/3.2.2/bits/basic_string.h **** get_allocator() const { return _M_dataplus; } 793:/usr/include/c++/3.2.2/bits/basic_string.h **** 794:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 795:/usr/include/c++/3.2.2/bits/basic_string.h **** find(const _CharT* __s, size_type __pos, size_type __n) const; 796:/usr/include/c++/3.2.2/bits/basic_string.h **** 797:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 798:/usr/include/c++/3.2.2/bits/basic_string.h **** find(const basic_string& __str, size_type __pos = 0) const 799:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find(__str.data(), __pos, __str.size()); } 800:/usr/include/c++/3.2.2/bits/basic_string.h **** 801:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 802:/usr/include/c++/3.2.2/bits/basic_string.h **** find(const _CharT* __s, size_type __pos = 0) const 803:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find(__s, __pos, traits_type::length(__s)); } 804:/usr/include/c++/3.2.2/bits/basic_string.h **** 805:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 806:/usr/include/c++/3.2.2/bits/basic_string.h **** find(_CharT __c, size_type __pos = 0) const; 807:/usr/include/c++/3.2.2/bits/basic_string.h **** 808:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 809:/usr/include/c++/3.2.2/bits/basic_string.h **** rfind(const basic_string& __str, size_type __pos = npos) const 810:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->rfind(__str.data(), __pos, __str.size()); } 811:/usr/include/c++/3.2.2/bits/basic_string.h **** 812:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 813:/usr/include/c++/3.2.2/bits/basic_string.h **** rfind(const _CharT* __s, size_type __pos, size_type __n) const; 814:/usr/include/c++/3.2.2/bits/basic_string.h **** GAS LISTING /tmp/ccJ9xNSW.s page 48 815:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 816:/usr/include/c++/3.2.2/bits/basic_string.h **** rfind(const _CharT* __s, size_type __pos = npos) const 817:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->rfind(__s, __pos, traits_type::length(__s)); } 818:/usr/include/c++/3.2.2/bits/basic_string.h **** 819:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 820:/usr/include/c++/3.2.2/bits/basic_string.h **** rfind(_CharT __c, size_type __pos = npos) const; 821:/usr/include/c++/3.2.2/bits/basic_string.h **** 822:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 823:/usr/include/c++/3.2.2/bits/basic_string.h **** find_first_of(const basic_string& __str, size_type __pos = 0) const 824:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find_first_of(__str.data(), __pos, __str.size()); } 825:/usr/include/c++/3.2.2/bits/basic_string.h **** 826:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 827:/usr/include/c++/3.2.2/bits/basic_string.h **** find_first_of(const _CharT* __s, size_type __pos, size_type __n) const; 828:/usr/include/c++/3.2.2/bits/basic_string.h **** 829:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 830:/usr/include/c++/3.2.2/bits/basic_string.h **** find_first_of(const _CharT* __s, size_type __pos = 0) const 831:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find_first_of(__s, __pos, traits_type::length(__s)); } 832:/usr/include/c++/3.2.2/bits/basic_string.h **** 833:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 834:/usr/include/c++/3.2.2/bits/basic_string.h **** find_first_of(_CharT __c, size_type __pos = 0) const 835:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find(__c, __pos); } 836:/usr/include/c++/3.2.2/bits/basic_string.h **** 837:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 838:/usr/include/c++/3.2.2/bits/basic_string.h **** find_last_of(const basic_string& __str, size_type __pos = npos) const 839:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find_last_of(__str.data(), __pos, __str.size()); } 840:/usr/include/c++/3.2.2/bits/basic_string.h **** 841:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 842:/usr/include/c++/3.2.2/bits/basic_string.h **** find_last_of(const _CharT* __s, size_type __pos, size_type __n) const; 843:/usr/include/c++/3.2.2/bits/basic_string.h **** 844:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 845:/usr/include/c++/3.2.2/bits/basic_string.h **** find_last_of(const _CharT* __s, size_type __pos = npos) const 846:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find_last_of(__s, __pos, traits_type::length(__s)); } 847:/usr/include/c++/3.2.2/bits/basic_string.h **** 848:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 849:/usr/include/c++/3.2.2/bits/basic_string.h **** find_last_of(_CharT __c, size_type __pos = npos) const 850:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->rfind(__c, __pos); } 851:/usr/include/c++/3.2.2/bits/basic_string.h **** 852:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 853:/usr/include/c++/3.2.2/bits/basic_string.h **** find_first_not_of(const basic_string& __str, size_type __pos = 0) const 854:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find_first_not_of(__str.data(), __pos, __str.size()); } 855:/usr/include/c++/3.2.2/bits/basic_string.h **** 856:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 857:/usr/include/c++/3.2.2/bits/basic_string.h **** find_first_not_of(const _CharT* __s, size_type __pos, 858:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __n) const; 859:/usr/include/c++/3.2.2/bits/basic_string.h **** 860:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 861:/usr/include/c++/3.2.2/bits/basic_string.h **** find_first_not_of(const _CharT* __s, size_type __pos = 0) const 862:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find_first_not_of(__s, __pos, traits_type::length(__s)); } 863:/usr/include/c++/3.2.2/bits/basic_string.h **** 864:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 865:/usr/include/c++/3.2.2/bits/basic_string.h **** find_first_not_of(_CharT __c, size_type __pos = 0) const; 866:/usr/include/c++/3.2.2/bits/basic_string.h **** 867:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 868:/usr/include/c++/3.2.2/bits/basic_string.h **** find_last_not_of(const basic_string& __str, size_type __pos = npos) const 869:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find_last_not_of(__str.data(), __pos, __str.size()); } 870:/usr/include/c++/3.2.2/bits/basic_string.h **** 871:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type GAS LISTING /tmp/ccJ9xNSW.s page 49 872:/usr/include/c++/3.2.2/bits/basic_string.h **** find_last_not_of(const _CharT* __s, size_type __pos, 873:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __n) const; 874:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 875:/usr/include/c++/3.2.2/bits/basic_string.h **** find_last_not_of(const _CharT* __s, size_type __pos = npos) const 876:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find_last_not_of(__s, __pos, traits_type::length(__s)); } 877:/usr/include/c++/3.2.2/bits/basic_string.h **** 878:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 879:/usr/include/c++/3.2.2/bits/basic_string.h **** find_last_not_of(_CharT __c, size_type __pos = npos) const; 880:/usr/include/c++/3.2.2/bits/basic_string.h **** 881:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string 882:/usr/include/c++/3.2.2/bits/basic_string.h **** substr(size_type __pos = 0, size_type __n = npos) const 883:/usr/include/c++/3.2.2/bits/basic_string.h **** { 884:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__pos > this->size()) 885:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_out_of_range("basic_string::substr"); 886:/usr/include/c++/3.2.2/bits/basic_string.h **** return basic_string(*this, __pos, __n); 887:/usr/include/c++/3.2.2/bits/basic_string.h **** } 888:/usr/include/c++/3.2.2/bits/basic_string.h **** 889:/usr/include/c++/3.2.2/bits/basic_string.h **** int 890:/usr/include/c++/3.2.2/bits/basic_string.h **** compare(const basic_string& __str) const 891:/usr/include/c++/3.2.2/bits/basic_string.h **** { 892:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __size = this->size(); 893:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __osize = __str.size(); 894:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __len = min(__size, __osize); 895:/usr/include/c++/3.2.2/bits/basic_string.h **** 896:/usr/include/c++/3.2.2/bits/basic_string.h **** int __r = traits_type::compare(_M_data(), __str.data(), __len); 897:/usr/include/c++/3.2.2/bits/basic_string.h **** if (!__r) 898:/usr/include/c++/3.2.2/bits/basic_string.h **** __r = __size - __osize; 899:/usr/include/c++/3.2.2/bits/basic_string.h **** return __r; 900:/usr/include/c++/3.2.2/bits/basic_string.h **** } 901:/usr/include/c++/3.2.2/bits/basic_string.h **** 902:/usr/include/c++/3.2.2/bits/basic_string.h **** int 903:/usr/include/c++/3.2.2/bits/basic_string.h **** compare(size_type __pos, size_type __n, const basic_string& __str) const; 904:/usr/include/c++/3.2.2/bits/basic_string.h **** 905:/usr/include/c++/3.2.2/bits/basic_string.h **** int 906:/usr/include/c++/3.2.2/bits/basic_string.h **** compare(size_type __pos1, size_type __n1, const basic_string& __str, 907:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __pos2, size_type __n2) const; 908:/usr/include/c++/3.2.2/bits/basic_string.h **** 909:/usr/include/c++/3.2.2/bits/basic_string.h **** int 910:/usr/include/c++/3.2.2/bits/basic_string.h **** compare(const _CharT* __s) const; 911:/usr/include/c++/3.2.2/bits/basic_string.h **** 912:/usr/include/c++/3.2.2/bits/basic_string.h **** // _GLIBCPP_RESOLVE_LIB_DEFECTS 913:/usr/include/c++/3.2.2/bits/basic_string.h **** // 5. String::compare specification questionable 914:/usr/include/c++/3.2.2/bits/basic_string.h **** int 915:/usr/include/c++/3.2.2/bits/basic_string.h **** compare(size_type __pos, size_type __n1, const _CharT* __s) const; 916:/usr/include/c++/3.2.2/bits/basic_string.h **** 917:/usr/include/c++/3.2.2/bits/basic_string.h **** int 918:/usr/include/c++/3.2.2/bits/basic_string.h **** compare(size_type __pos, size_type __n1, const _CharT* __s, 919:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __n2) const; 920:/usr/include/c++/3.2.2/bits/basic_string.h **** }; 921:/usr/include/c++/3.2.2/bits/basic_string.h **** 922:/usr/include/c++/3.2.2/bits/basic_string.h **** 923:/usr/include/c++/3.2.2/bits/basic_string.h **** template 924:/usr/include/c++/3.2.2/bits/basic_string.h **** inline basic_string<_CharT, _Traits, _Alloc>:: 925:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string() 926:/usr/include/c++/3.2.2/bits/basic_string.h **** : _M_dataplus(_S_empty_rep()._M_refcopy(), _Alloc()) { } 927:/usr/include/c++/3.2.2/bits/basic_string.h **** 928:/usr/include/c++/3.2.2/bits/basic_string.h **** // operator+ GAS LISTING /tmp/ccJ9xNSW.s page 50 929:/usr/include/c++/3.2.2/bits/basic_string.h **** template 930:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string<_CharT, _Traits, _Alloc> 931:/usr/include/c++/3.2.2/bits/basic_string.h **** operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 932:/usr/include/c++/3.2.2/bits/basic_string.h **** const basic_string<_CharT, _Traits, _Alloc>& __rhs) 933:/usr/include/c++/3.2.2/bits/basic_string.h **** { 934:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string<_CharT, _Traits, _Alloc> __str(__lhs); 935:/usr/include/c++/3.2.2/bits/basic_string.h **** __str.append(__rhs); 936:/usr/include/c++/3.2.2/bits/basic_string.h **** return __str; 937:/usr/include/c++/3.2.2/bits/basic_string.h **** } 938:/usr/include/c++/3.2.2/bits/basic_string.h **** 939:/usr/include/c++/3.2.2/bits/basic_string.h **** template 940:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string<_CharT,_Traits,_Alloc> 941:/usr/include/c++/3.2.2/bits/basic_string.h **** operator+(const _CharT* __lhs, 942:/usr/include/c++/3.2.2/bits/basic_string.h **** const basic_string<_CharT,_Traits,_Alloc>& __rhs); 943:/usr/include/c++/3.2.2/bits/basic_string.h **** 944:/usr/include/c++/3.2.2/bits/basic_string.h **** template 945:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string<_CharT,_Traits,_Alloc> 946:/usr/include/c++/3.2.2/bits/basic_string.h **** operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); 947:/usr/include/c++/3.2.2/bits/basic_string.h **** 948:/usr/include/c++/3.2.2/bits/basic_string.h **** template 949:/usr/include/c++/3.2.2/bits/basic_string.h **** inline basic_string<_CharT, _Traits, _Alloc> 950:/usr/include/c++/3.2.2/bits/basic_string.h **** operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 951:/usr/include/c++/3.2.2/bits/basic_string.h **** const _CharT* __rhs) 952:/usr/include/c++/3.2.2/bits/basic_string.h **** { 1129 .loc 28 952 0 1130 0000 55 pushl %ebp 1131 .LCFI60: 1132 0001 89E5 movl %esp, %ebp 1133 .LCFI61: 1134 0003 53 pushl %ebx 1135 .LCFI62: 1136 0004 83EC04 subl $4, %esp 1137 .LCFI63: 1138 .LBB15: 953:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string<_CharT, _Traits, _Alloc> __str(__lhs); 1139 .loc 28 953 0 1140 0007 83EC08 subl $8, %esp 1141 000a FF750C pushl 12(%ebp) 1142 000d FF7508 pushl 8(%ebp) 1143 .LEHB28: 1144 .LCFI64: 1145 0010 E8FCFFFF call _ZNSsC1ERKSs 1145 FF 1146 .LEHE28: 1147 0015 83C410 addl $16, %esp 954:/usr/include/c++/3.2.2/bits/basic_string.h **** __str.append(__rhs); 1148 .loc 28 954 0 1149 0018 83EC08 subl $8, %esp 1150 001b FF7510 pushl 16(%ebp) 1151 001e FF7508 pushl 8(%ebp) 1152 .LEHB29: 1153 0021 E8FCFFFF call _ZNSs6appendEPKc 1153 FF 1154 .LEHE29: 1155 0026 83C410 addl $16, %esp 955:/usr/include/c++/3.2.2/bits/basic_string.h **** return __str; 1156 .loc 28 955 0 GAS LISTING /tmp/ccJ9xNSW.s page 51 1157 0029 EB22 jmp .L107 1158 .L112: 1159 002b 8945F8 movl %eax, -8(%ebp) 1160 002e 8B5DF8 movl -8(%ebp), %ebx 1161 0031 83EC0C subl $12, %esp 1162 0034 FF7508 pushl 8(%ebp) 1163 0037 E8FCFFFF call _ZNSsD1Ev 1163 FF 1164 003c 83C410 addl $16, %esp 1165 003f 895DF8 movl %ebx, -8(%ebp) 1166 0042 83EC0C subl $12, %esp 1167 0045 FF75F8 pushl -8(%ebp) 1168 .LEHB30: 1169 0048 E8FCFFFF call _Unwind_Resume 1169 FF 1170 .LEHE30: 1171 .LBE15: 1172 .L107: 1173 004d 8B4508 movl 8(%ebp), %eax 1174 0050 8B5DFC movl -4(%ebp), %ebx 1175 0053 C9 leave 1176 0054 C20400 ret $4 1177 .LFE1519: 1178 .Lfe11: 1180 .section .gcc_except_table 1181 .LLSDA1519: 1182 00ed FF .byte 0xff 1183 00ee FF .byte 0xff 1184 00ef 01 .byte 0x1 1185 00f0 0C .uleb128 .LLSDACSE1519-.LLSDACSB1519 1186 .LLSDACSB1519: 1187 00f1 10 .uleb128 .LEHB28-.LFB1519 1188 00f2 05 .uleb128 .LEHE28-.LEHB28 1189 00f3 00 .uleb128 0x0 1190 00f4 00 .uleb128 0x0 1191 00f5 21 .uleb128 .LEHB29-.LFB1519 1192 00f6 05 .uleb128 .LEHE29-.LEHB29 1193 00f7 2B .uleb128 .L112-.LFB1519 1194 00f8 00 .uleb128 0x0 1195 00f9 48 .uleb128 .LEHB30-.LFB1519 1196 00fa 05 .uleb128 .LEHE30-.LEHB30 1197 00fb 00 .uleb128 0x0 1198 00fc 00 .uleb128 0x0 1199 .LLSDACSE1519: 1200 .section .gnu.linkonce.t._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_ 1201 .file 44 "/usr/include/c++/3.2.2/bits/stl_iterator.h" 1202 .section .gnu.linkonce.t._ZNSs6appendIPKcEERSsT_S3_,"ax",@progbits 1203 .align 2 1204 .weak _ZNSs6appendIPKcEERSsT_S3_ 1206 _ZNSs6appendIPKcEERSsT_S3_: 1207 .LFB1538: 1208 .loc 28 472 0 1209 .LBB16: 1210 0000 55 pushl %ebp 1211 .LCFI65: 1212 0001 89E5 movl %esp, %ebp 1213 .LCFI66: GAS LISTING /tmp/ccJ9xNSW.s page 52 1214 0003 83EC08 subl $8, %esp 1215 .LCFI67: 1216 .loc 28 472 0 1217 0006 83EC0C subl $12, %esp 1218 0009 FF7510 pushl 16(%ebp) 1219 000c FF750C pushl 12(%ebp) 1220 000f 8D45FC leal -4(%ebp), %eax 1221 0012 83EC04 subl $4, %esp 1222 0015 FF7508 pushl 8(%ebp) 1223 0018 50 pushl %eax 1224 .LCFI68: 1225 0019 E8FCFFFF call _ZNKSs7_M_iendEv 1225 FF 1226 001e 83C408 addl $8, %esp 1227 0021 FF75FC pushl -4(%ebp) 1228 0024 8D45F8 leal -8(%ebp), %eax 1229 0027 FF7508 pushl 8(%ebp) 1230 002a 50 pushl %eax 1231 .LCFI69: 1232 002b E8FCFFFF call _ZNKSs7_M_iendEv 1232 FF 1233 0030 83C404 addl $4, %esp 1234 0033 FF75F8 pushl -8(%ebp) 1235 0036 FF7508 pushl 8(%ebp) 1236 .LCFI70: 1237 0039 E8FCFFFF call _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_ 1237 FF 1238 003e 83C420 addl $32, %esp 1239 .LBE16: 1240 0041 C9 leave 1241 0042 C3 ret 1242 .LFE1538: 1243 .Lfe12: 1245 .file 45 "/usr/include/c++/3.2.2/bits/stl_function.h" 1246 .weak _ZTV11MyException 1247 .section .gnu.linkonce.d._ZTV11MyException,"aw",@progbits 1248 .align 8 1251 _ZTV11MyException: 1252 0000 00000000 .long 0 1253 0004 00000000 .long _ZTI11MyException 1254 0008 00000000 .long _ZN11MyExceptionD1Ev 1255 000c 00000000 .long _ZN11MyExceptionD0Ev 1256 0010 00000000 .long _ZNK11MyException4whatEv 1257 .text 1258 .align 2 1260 _Z41__static_initialization_and_destruction_0ii: 1261 .LFB1583: 1262 .file 46 "/usr/include/c++/3.2.2/streambuf" 1:/usr/include/c++/3.2.2/streambuf **** // Stream buffer classes -*- C++ -*- 2:/usr/include/c++/3.2.2/streambuf **** 3:/usr/include/c++/3.2.2/streambuf **** // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 4:/usr/include/c++/3.2.2/streambuf **** // Free Software Foundation, Inc. 5:/usr/include/c++/3.2.2/streambuf **** // 6:/usr/include/c++/3.2.2/streambuf **** // This file is part of the GNU ISO C++ Library. This library is free 7:/usr/include/c++/3.2.2/streambuf **** // software; you can redistribute it and/or modify it under the 8:/usr/include/c++/3.2.2/streambuf **** // terms of the GNU General Public License as published by the 9:/usr/include/c++/3.2.2/streambuf **** // Free Software Foundation; either version 2, or (at your option) GAS LISTING /tmp/ccJ9xNSW.s page 53 10:/usr/include/c++/3.2.2/streambuf **** // any later version. 11:/usr/include/c++/3.2.2/streambuf **** 12:/usr/include/c++/3.2.2/streambuf **** // This library is distributed in the hope that it will be useful, 13:/usr/include/c++/3.2.2/streambuf **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 14:/usr/include/c++/3.2.2/streambuf **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15:/usr/include/c++/3.2.2/streambuf **** // GNU General Public License for more details. 16:/usr/include/c++/3.2.2/streambuf **** 17:/usr/include/c++/3.2.2/streambuf **** // You should have received a copy of the GNU General Public License along 18:/usr/include/c++/3.2.2/streambuf **** // with this library; see the file COPYING. If not, write to the Free 19:/usr/include/c++/3.2.2/streambuf **** // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 20:/usr/include/c++/3.2.2/streambuf **** // USA. 21:/usr/include/c++/3.2.2/streambuf **** 22:/usr/include/c++/3.2.2/streambuf **** // As a special exception, you may use this file as part of a free software 23:/usr/include/c++/3.2.2/streambuf **** // library without restriction. Specifically, if other files instantiate 24:/usr/include/c++/3.2.2/streambuf **** // templates or use macros or inline functions from this file, or you compile 25:/usr/include/c++/3.2.2/streambuf **** // this file and link it with other files to produce an executable, this 26:/usr/include/c++/3.2.2/streambuf **** // file does not by itself cause the resulting executable to be covered by 27:/usr/include/c++/3.2.2/streambuf **** // the GNU General Public License. This exception does not however 28:/usr/include/c++/3.2.2/streambuf **** // invalidate any other reasons why the executable file might be covered by 29:/usr/include/c++/3.2.2/streambuf **** // the GNU General Public License. 30:/usr/include/c++/3.2.2/streambuf **** 31:/usr/include/c++/3.2.2/streambuf **** // 32:/usr/include/c++/3.2.2/streambuf **** // ISO C++ 14882: 27.5 Stream buffers 33:/usr/include/c++/3.2.2/streambuf **** // 34:/usr/include/c++/3.2.2/streambuf **** 35:/usr/include/c++/3.2.2/streambuf **** /** @file streambuf 36:/usr/include/c++/3.2.2/streambuf **** * This is a Standard C++ Library header. You should @c #include this header 37:/usr/include/c++/3.2.2/streambuf **** * in your programs, rather than any of the "st[dl]_*.h" implementation files. 38:/usr/include/c++/3.2.2/streambuf **** */ 39:/usr/include/c++/3.2.2/streambuf **** 40:/usr/include/c++/3.2.2/streambuf **** #ifndef _CPP_STREAMBUF 41:/usr/include/c++/3.2.2/streambuf **** #define _CPP_STREAMBUF 1 42:/usr/include/c++/3.2.2/streambuf **** 43:/usr/include/c++/3.2.2/streambuf **** #pragma GCC system_header 44:/usr/include/c++/3.2.2/streambuf **** 45:/usr/include/c++/3.2.2/streambuf **** #include 46:/usr/include/c++/3.2.2/streambuf **** #include 47:/usr/include/c++/3.2.2/streambuf **** #include // For SEEK_SET, SEEK_CUR, SEEK_END 48:/usr/include/c++/3.2.2/streambuf **** #include 49:/usr/include/c++/3.2.2/streambuf **** #include 50:/usr/include/c++/3.2.2/streambuf **** 51:/usr/include/c++/3.2.2/streambuf **** namespace std 52:/usr/include/c++/3.2.2/streambuf **** { 53:/usr/include/c++/3.2.2/streambuf **** template 54:/usr/include/c++/3.2.2/streambuf **** streamsize 55:/usr/include/c++/3.2.2/streambuf **** __copy_streambufs(basic_ios<_CharT, _Traits>& _ios, 56:/usr/include/c++/3.2.2/streambuf **** basic_streambuf<_CharT, _Traits>* __sbin, 57:/usr/include/c++/3.2.2/streambuf **** basic_streambuf<_CharT, _Traits>* __sbout); 58:/usr/include/c++/3.2.2/streambuf **** 59:/usr/include/c++/3.2.2/streambuf **** // 27.5.2 Template class basic_streambuf<_CharT, _Traits> 60:/usr/include/c++/3.2.2/streambuf **** template 61:/usr/include/c++/3.2.2/streambuf **** class basic_streambuf 62:/usr/include/c++/3.2.2/streambuf **** { 63:/usr/include/c++/3.2.2/streambuf **** public: 64:/usr/include/c++/3.2.2/streambuf **** // Types: 65:/usr/include/c++/3.2.2/streambuf **** typedef _CharT char_type; 66:/usr/include/c++/3.2.2/streambuf **** typedef _Traits traits_type; GAS LISTING /tmp/ccJ9xNSW.s page 54 67:/usr/include/c++/3.2.2/streambuf **** typedef typename traits_type::int_type int_type; 68:/usr/include/c++/3.2.2/streambuf **** typedef typename traits_type::pos_type pos_type; 69:/usr/include/c++/3.2.2/streambuf **** typedef typename traits_type::off_type off_type; 70:/usr/include/c++/3.2.2/streambuf **** 71:/usr/include/c++/3.2.2/streambuf **** // Non-standard Types: 72:/usr/include/c++/3.2.2/streambuf **** typedef ctype __ctype_type; 73:/usr/include/c++/3.2.2/streambuf **** typedef basic_streambuf __streambuf_type; 74:/usr/include/c++/3.2.2/streambuf **** typedef typename traits_type::state_type __state_type; 75:/usr/include/c++/3.2.2/streambuf **** 76:/usr/include/c++/3.2.2/streambuf **** friend class basic_ios; 77:/usr/include/c++/3.2.2/streambuf **** friend class basic_istream; 78:/usr/include/c++/3.2.2/streambuf **** friend class basic_ostream; 79:/usr/include/c++/3.2.2/streambuf **** friend class istreambuf_iterator; 80:/usr/include/c++/3.2.2/streambuf **** friend class ostreambuf_iterator; 81:/usr/include/c++/3.2.2/streambuf **** 82:/usr/include/c++/3.2.2/streambuf **** friend streamsize 83:/usr/include/c++/3.2.2/streambuf **** __copy_streambufs<>(basic_ios& __ios, 84:/usr/include/c++/3.2.2/streambuf **** __streambuf_type* __sbin,__streambuf_type* __sbout); 85:/usr/include/c++/3.2.2/streambuf **** 86:/usr/include/c++/3.2.2/streambuf **** protected: 87:/usr/include/c++/3.2.2/streambuf **** // Pointer to the beginning of internally-allocated 88:/usr/include/c++/3.2.2/streambuf **** // space. Filebuf manually allocates/deallocates this, whereas 89:/usr/include/c++/3.2.2/streambuf **** // stringstreams attempt to use the built-in intelligence of the 90:/usr/include/c++/3.2.2/streambuf **** // string class. If you are managing memory, set this. If not, 91:/usr/include/c++/3.2.2/streambuf **** // leave it NULL. 92:/usr/include/c++/3.2.2/streambuf **** char_type* _M_buf; 93:/usr/include/c++/3.2.2/streambuf **** 94:/usr/include/c++/3.2.2/streambuf **** // Actual size of allocated internal buffer, in bytes. 95:/usr/include/c++/3.2.2/streambuf **** size_t _M_buf_size; 96:/usr/include/c++/3.2.2/streambuf **** 97:/usr/include/c++/3.2.2/streambuf **** // Optimal or preferred size of internal buffer, in bytes. 98:/usr/include/c++/3.2.2/streambuf **** size_t _M_buf_size_opt; 99:/usr/include/c++/3.2.2/streambuf **** 100:/usr/include/c++/3.2.2/streambuf **** // True iff _M_in_* and _M_out_* buffers should always point to 101:/usr/include/c++/3.2.2/streambuf **** // the same place. True for fstreams, false for sstreams. 102:/usr/include/c++/3.2.2/streambuf **** bool _M_buf_unified; 103:/usr/include/c++/3.2.2/streambuf **** 104:/usr/include/c++/3.2.2/streambuf **** // This is based on _IO_FILE, just reordered to be more 105:/usr/include/c++/3.2.2/streambuf **** // consistent, and is intended to be the most minimal abstraction 106:/usr/include/c++/3.2.2/streambuf **** // for an internal buffer. 107:/usr/include/c++/3.2.2/streambuf **** // get == input == read 108:/usr/include/c++/3.2.2/streambuf **** // put == output == write 109:/usr/include/c++/3.2.2/streambuf **** char_type* _M_in_beg; // Start of get area. 110:/usr/include/c++/3.2.2/streambuf **** char_type* _M_in_cur; // Current read area. 111:/usr/include/c++/3.2.2/streambuf **** char_type* _M_in_end; // End of get area. 112:/usr/include/c++/3.2.2/streambuf **** char_type* _M_out_beg; // Start of put area. 113:/usr/include/c++/3.2.2/streambuf **** char_type* _M_out_cur; // Current put area. 114:/usr/include/c++/3.2.2/streambuf **** char_type* _M_out_end; // End of put area. 115:/usr/include/c++/3.2.2/streambuf **** 116:/usr/include/c++/3.2.2/streambuf **** // Place to stash in || out || in | out settings for current streambuf. 117:/usr/include/c++/3.2.2/streambuf **** ios_base::openmode _M_mode; 118:/usr/include/c++/3.2.2/streambuf **** 119:/usr/include/c++/3.2.2/streambuf **** // Current locale setting. 120:/usr/include/c++/3.2.2/streambuf **** locale _M_buf_locale; 121:/usr/include/c++/3.2.2/streambuf **** 122:/usr/include/c++/3.2.2/streambuf **** // True iff locale is initialized. 123:/usr/include/c++/3.2.2/streambuf **** bool _M_buf_locale_init; GAS LISTING /tmp/ccJ9xNSW.s page 55 124:/usr/include/c++/3.2.2/streambuf **** 125:/usr/include/c++/3.2.2/streambuf **** // Necessary bits for putback buffer management. Only used in 126:/usr/include/c++/3.2.2/streambuf **** // the basic_filebuf class, as necessary for the standard 127:/usr/include/c++/3.2.2/streambuf **** // requirements. The only basic_streambuf member function that 128:/usr/include/c++/3.2.2/streambuf **** // needs access to these data members is in_avail... 129:/usr/include/c++/3.2.2/streambuf **** // NB: pbacks of over one character are not currently supported. 130:/usr/include/c++/3.2.2/streambuf **** static const size_t _S_pback_size = 1; 131:/usr/include/c++/3.2.2/streambuf **** char_type _M_pback[_S_pback_size]; 1263 .loc 46 131 0 1264 04f4 55 pushl %ebp 1265 .LCFI71: 1266 04f5 89E5 movl %esp, %ebp 1267 .LCFI72: 1268 04f7 83EC08 subl $8, %esp 1269 .LCFI73: 1270 .file 47 "/usr/include/c++/3.2.2/iostream" 1:/usr/include/c++/3.2.2/iostream **** // Standard iostream objects -*- C++ -*- 2:/usr/include/c++/3.2.2/iostream **** 3:/usr/include/c++/3.2.2/iostream **** // Copyright (C) 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc. 4:/usr/include/c++/3.2.2/iostream **** // 5:/usr/include/c++/3.2.2/iostream **** // This file is part of the GNU ISO C++ Library. This library is free 6:/usr/include/c++/3.2.2/iostream **** // software; you can redistribute it and/or modify it under the 7:/usr/include/c++/3.2.2/iostream **** // terms of the GNU General Public License as published by the 8:/usr/include/c++/3.2.2/iostream **** // Free Software Foundation; either version 2, or (at your option) 9:/usr/include/c++/3.2.2/iostream **** // any later version. 10:/usr/include/c++/3.2.2/iostream **** 11:/usr/include/c++/3.2.2/iostream **** // This library is distributed in the hope that it will be useful, 12:/usr/include/c++/3.2.2/iostream **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 13:/usr/include/c++/3.2.2/iostream **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14:/usr/include/c++/3.2.2/iostream **** // GNU General Public License for more details. 15:/usr/include/c++/3.2.2/iostream **** 16:/usr/include/c++/3.2.2/iostream **** // You should have received a copy of the GNU General Public License along 17:/usr/include/c++/3.2.2/iostream **** // with this library; see the file COPYING. If not, write to the Free 18:/usr/include/c++/3.2.2/iostream **** // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 19:/usr/include/c++/3.2.2/iostream **** // USA. 20:/usr/include/c++/3.2.2/iostream **** 21:/usr/include/c++/3.2.2/iostream **** // As a special exception, you may use this file as part of a free software 22:/usr/include/c++/3.2.2/iostream **** // library without restriction. Specifically, if other files instantiate 23:/usr/include/c++/3.2.2/iostream **** // templates or use macros or inline functions from this file, or you compile 24:/usr/include/c++/3.2.2/iostream **** // this file and link it with other files to produce an executable, this 25:/usr/include/c++/3.2.2/iostream **** // file does not by itself cause the resulting executable to be covered by 26:/usr/include/c++/3.2.2/iostream **** // the GNU General Public License. This exception does not however 27:/usr/include/c++/3.2.2/iostream **** // invalidate any other reasons why the executable file might be covered by 28:/usr/include/c++/3.2.2/iostream **** // the GNU General Public License. 29:/usr/include/c++/3.2.2/iostream **** 30:/usr/include/c++/3.2.2/iostream **** // 31:/usr/include/c++/3.2.2/iostream **** // ISO C++ 14882: 27.3 Standard iostream objects 32:/usr/include/c++/3.2.2/iostream **** // 33:/usr/include/c++/3.2.2/iostream **** 34:/usr/include/c++/3.2.2/iostream **** /** @file iostream 35:/usr/include/c++/3.2.2/iostream **** * This is a Standard C++ Library header. You should @c #include this header 36:/usr/include/c++/3.2.2/iostream **** * in your programs, rather than any of the "st[dl]_*.h" implementation files. 37:/usr/include/c++/3.2.2/iostream **** */ 38:/usr/include/c++/3.2.2/iostream **** 39:/usr/include/c++/3.2.2/iostream **** #ifndef _CPP_IOSTREAM 40:/usr/include/c++/3.2.2/iostream **** #define _CPP_IOSTREAM 1 41:/usr/include/c++/3.2.2/iostream **** GAS LISTING /tmp/ccJ9xNSW.s page 56 42:/usr/include/c++/3.2.2/iostream **** #pragma GCC system_header 43:/usr/include/c++/3.2.2/iostream **** 44:/usr/include/c++/3.2.2/iostream **** #include 45:/usr/include/c++/3.2.2/iostream **** #include 46:/usr/include/c++/3.2.2/iostream **** #include 47:/usr/include/c++/3.2.2/iostream **** 48:/usr/include/c++/3.2.2/iostream **** namespace std 49:/usr/include/c++/3.2.2/iostream **** { 50:/usr/include/c++/3.2.2/iostream **** extern istream cin; 51:/usr/include/c++/3.2.2/iostream **** extern ostream cout; 52:/usr/include/c++/3.2.2/iostream **** extern ostream cerr; 53:/usr/include/c++/3.2.2/iostream **** extern ostream clog; 54:/usr/include/c++/3.2.2/iostream **** 55:/usr/include/c++/3.2.2/iostream **** #ifdef _GLIBCPP_USE_WCHAR_T 56:/usr/include/c++/3.2.2/iostream **** extern wistream wcin; 57:/usr/include/c++/3.2.2/iostream **** extern wostream wcout; 58:/usr/include/c++/3.2.2/iostream **** extern wostream wcerr; 59:/usr/include/c++/3.2.2/iostream **** extern wostream wclog; 60:/usr/include/c++/3.2.2/iostream **** #endif 61:/usr/include/c++/3.2.2/iostream **** 62:/usr/include/c++/3.2.2/iostream **** // For construction of filebuffers for cout, cin, cerr, clog et. al. 63:/usr/include/c++/3.2.2/iostream **** static ios_base::Init __ioinit; 1271 .loc 47 63 0 1272 04fa 817D0CFF cmpl $65535, 12(%ebp) 1272 FF0000 1273 0501 752D jne .L114 1274 0503 837D0801 cmpl $1, 8(%ebp) 1275 0507 7527 jne .L114 1276 0509 83EC0C subl $12, %esp 1277 050c 68000000 pushl $_ZSt8__ioinit 1277 00 1278 .LCFI74: 1279 0511 E8FCFFFF call _ZNSt8ios_base4InitC1Ev 1279 FF 1280 0516 83C410 addl $16, %esp 1281 0519 83EC04 subl $4, %esp 1282 051c 68000000 pushl $__dso_handle 1282 00 1283 0521 6A00 pushl $0 1284 0523 68320500 pushl $__tcf_0 1284 00 1285 0528 E8FCFFFF call __cxa_atexit 1285 FF 1286 052d 83C410 addl $16, %esp 1287 .L114: 1288 0530 C9 leave 1289 0531 C3 ret 1290 .LFE1583: 1291 .Lfe13: 1293 .file 48 "/usr/include/c++/3.2.2/exception" 1294 .section .gnu.linkonce.t._ZNSt9exceptionC2Ev,"ax",@progbits 1295 .align 2 1296 .weak _ZNSt9exceptionC2Ev 1298 _ZNSt9exceptionC2Ev: 1299 .LFB1584: 1:/usr/include/c++/3.2.2/exception **** // Exception Handling support header for -*- C++ -*- 2:/usr/include/c++/3.2.2/exception **** GAS LISTING /tmp/ccJ9xNSW.s page 57 3:/usr/include/c++/3.2.2/exception **** // Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002 4:/usr/include/c++/3.2.2/exception **** // Free Software Foundation 5:/usr/include/c++/3.2.2/exception **** // 6:/usr/include/c++/3.2.2/exception **** // This file is part of GNU CC. 7:/usr/include/c++/3.2.2/exception **** // 8:/usr/include/c++/3.2.2/exception **** // GNU CC is free software; you can redistribute it and/or modify 9:/usr/include/c++/3.2.2/exception **** // it under the terms of the GNU General Public License as published by 10:/usr/include/c++/3.2.2/exception **** // the Free Software Foundation; either version 2, or (at your option) 11:/usr/include/c++/3.2.2/exception **** // any later version. 12:/usr/include/c++/3.2.2/exception **** // 13:/usr/include/c++/3.2.2/exception **** // GNU CC is distributed in the hope that it will be useful, 14:/usr/include/c++/3.2.2/exception **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 15:/usr/include/c++/3.2.2/exception **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16:/usr/include/c++/3.2.2/exception **** // GNU General Public License for more details. 17:/usr/include/c++/3.2.2/exception **** // 18:/usr/include/c++/3.2.2/exception **** // You should have received a copy of the GNU General Public License 19:/usr/include/c++/3.2.2/exception **** // along with GNU CC; see the file COPYING. If not, write to 20:/usr/include/c++/3.2.2/exception **** // the Free Software Foundation, 59 Temple Place - Suite 330, 21:/usr/include/c++/3.2.2/exception **** // Boston, MA 02111-1307, USA. 22:/usr/include/c++/3.2.2/exception **** 23:/usr/include/c++/3.2.2/exception **** // As a special exception, you may use this file as part of a free software 24:/usr/include/c++/3.2.2/exception **** // library without restriction. Specifically, if other files instantiate 25:/usr/include/c++/3.2.2/exception **** // templates or use macros or inline functions from this file, or you compile 26:/usr/include/c++/3.2.2/exception **** // this file and link it with other files to produce an executable, this 27:/usr/include/c++/3.2.2/exception **** // file does not by itself cause the resulting executable to be covered by 28:/usr/include/c++/3.2.2/exception **** // the GNU General Public License. This exception does not however 29:/usr/include/c++/3.2.2/exception **** // invalidate any other reasons why the executable file might be covered by 30:/usr/include/c++/3.2.2/exception **** // the GNU General Public License. 31:/usr/include/c++/3.2.2/exception **** 32:/usr/include/c++/3.2.2/exception **** /** @file exception 33:/usr/include/c++/3.2.2/exception **** * This header defines several types and functions relating to the 34:/usr/include/c++/3.2.2/exception **** * handling of exceptions in a C++ program. 35:/usr/include/c++/3.2.2/exception **** */ 36:/usr/include/c++/3.2.2/exception **** 37:/usr/include/c++/3.2.2/exception **** #ifndef __EXCEPTION__ 38:/usr/include/c++/3.2.2/exception **** #define __EXCEPTION__ 39:/usr/include/c++/3.2.2/exception **** 40:/usr/include/c++/3.2.2/exception **** extern "C++" { 41:/usr/include/c++/3.2.2/exception **** 42:/usr/include/c++/3.2.2/exception **** namespace std 43:/usr/include/c++/3.2.2/exception **** { 44:/usr/include/c++/3.2.2/exception **** /** This is the base class for all exceptions thrown by the standard 45:/usr/include/c++/3.2.2/exception **** * library, and by certain language expressions. You are free to derive 46:/usr/include/c++/3.2.2/exception **** * your own %exception classes, or use a different hierarchy, or to 47:/usr/include/c++/3.2.2/exception **** * throw non-class data (e.g., fundamental types). 48:/usr/include/c++/3.2.2/exception **** * @brief Base class for all library exceptions. 49:/usr/include/c++/3.2.2/exception **** */ 50:/usr/include/c++/3.2.2/exception **** class exception 51:/usr/include/c++/3.2.2/exception **** { 52:/usr/include/c++/3.2.2/exception **** public: 53:/usr/include/c++/3.2.2/exception **** exception() throw() { } 1300 .loc 48 53 0 1301 .LBB17: 1302 0000 55 pushl %ebp 1303 .LCFI75: 1304 0001 89E5 movl %esp, %ebp 1305 .LCFI76: GAS LISTING /tmp/ccJ9xNSW.s page 58 1306 .loc 48 53 0 1307 0003 8B4508 movl 8(%ebp), %eax 1308 0006 C7000800 movl $_ZTVSt9exception+8, (%eax) 1308 0000 1309 000c C9 leave 1310 000d C3 ret 1311 .LBE17: 1312 .LFE1584: 1313 .Lfe14: 1315 .section .gnu.linkonce.t._ZNSt11char_traitsIcE6lengthEPKc,"ax",@progbits 1316 .align 2 1317 .weak _ZNSt11char_traitsIcE6lengthEPKc 1319 _ZNSt11char_traitsIcE6lengthEPKc: 1320 .LFB1585: 1:/usr/include/c++/3.2.2/bits/char_traits.h **** // Character Traits for use by standard string and iostream -*- C++ -*- 2:/usr/include/c++/3.2.2/bits/char_traits.h **** 3:/usr/include/c++/3.2.2/bits/char_traits.h **** // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 4:/usr/include/c++/3.2.2/bits/char_traits.h **** // Free Software Foundation, Inc. 5:/usr/include/c++/3.2.2/bits/char_traits.h **** // 6:/usr/include/c++/3.2.2/bits/char_traits.h **** // This file is part of the GNU ISO C++ Library. This library is free 7:/usr/include/c++/3.2.2/bits/char_traits.h **** // software; you can redistribute it and/or modify it under the 8:/usr/include/c++/3.2.2/bits/char_traits.h **** // terms of the GNU General Public License as published by the 9:/usr/include/c++/3.2.2/bits/char_traits.h **** // Free Software Foundation; either version 2, or (at your option) 10:/usr/include/c++/3.2.2/bits/char_traits.h **** // any later version. 11:/usr/include/c++/3.2.2/bits/char_traits.h **** 12:/usr/include/c++/3.2.2/bits/char_traits.h **** // This library is distributed in the hope that it will be useful, 13:/usr/include/c++/3.2.2/bits/char_traits.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 14:/usr/include/c++/3.2.2/bits/char_traits.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15:/usr/include/c++/3.2.2/bits/char_traits.h **** // GNU General Public License for more details. 16:/usr/include/c++/3.2.2/bits/char_traits.h **** 17:/usr/include/c++/3.2.2/bits/char_traits.h **** // You should have received a copy of the GNU General Public License along 18:/usr/include/c++/3.2.2/bits/char_traits.h **** // with this library; see the file COPYING. If not, write to the Free 19:/usr/include/c++/3.2.2/bits/char_traits.h **** // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 20:/usr/include/c++/3.2.2/bits/char_traits.h **** // USA. 21:/usr/include/c++/3.2.2/bits/char_traits.h **** 22:/usr/include/c++/3.2.2/bits/char_traits.h **** // As a special exception, you may use this file as part of a free software 23:/usr/include/c++/3.2.2/bits/char_traits.h **** // library without restriction. Specifically, if other files instantiate 24:/usr/include/c++/3.2.2/bits/char_traits.h **** // templates or use macros or inline functions from this file, or you compile 25:/usr/include/c++/3.2.2/bits/char_traits.h **** // this file and link it with other files to produce an executable, this 26:/usr/include/c++/3.2.2/bits/char_traits.h **** // file does not by itself cause the resulting executable to be covered by 27:/usr/include/c++/3.2.2/bits/char_traits.h **** // the GNU General Public License. This exception does not however 28:/usr/include/c++/3.2.2/bits/char_traits.h **** // invalidate any other reasons why the executable file might be covered by 29:/usr/include/c++/3.2.2/bits/char_traits.h **** // the GNU General Public License. 30:/usr/include/c++/3.2.2/bits/char_traits.h **** 31:/usr/include/c++/3.2.2/bits/char_traits.h **** // 32:/usr/include/c++/3.2.2/bits/char_traits.h **** // ISO C++ 14882: 21 Strings library 33:/usr/include/c++/3.2.2/bits/char_traits.h **** // 34:/usr/include/c++/3.2.2/bits/char_traits.h **** 35:/usr/include/c++/3.2.2/bits/char_traits.h **** /** @file char_traits.h 36:/usr/include/c++/3.2.2/bits/char_traits.h **** * This is an internal header file, included by other library headers. 37:/usr/include/c++/3.2.2/bits/char_traits.h **** * You should not attempt to use it directly. 38:/usr/include/c++/3.2.2/bits/char_traits.h **** */ 39:/usr/include/c++/3.2.2/bits/char_traits.h **** 40:/usr/include/c++/3.2.2/bits/char_traits.h **** #ifndef _CPP_BITS_CHAR_TRAITS_H 41:/usr/include/c++/3.2.2/bits/char_traits.h **** #define _CPP_BITS_CHAR_TRAITS_H 1 42:/usr/include/c++/3.2.2/bits/char_traits.h **** 43:/usr/include/c++/3.2.2/bits/char_traits.h **** #pragma GCC system_header GAS LISTING /tmp/ccJ9xNSW.s page 59 44:/usr/include/c++/3.2.2/bits/char_traits.h **** 45:/usr/include/c++/3.2.2/bits/char_traits.h **** #include // For memmove, memset, memchr 46:/usr/include/c++/3.2.2/bits/char_traits.h **** #include // For streampos 47:/usr/include/c++/3.2.2/bits/char_traits.h **** 48:/usr/include/c++/3.2.2/bits/char_traits.h **** namespace std 49:/usr/include/c++/3.2.2/bits/char_traits.h **** { 50:/usr/include/c++/3.2.2/bits/char_traits.h **** /// 21.1.2 Basis for explicit _Traits specialization 51:/usr/include/c++/3.2.2/bits/char_traits.h **** /// NB: That for any given actual character type this definition is 52:/usr/include/c++/3.2.2/bits/char_traits.h **** /// probably wrong. 53:/usr/include/c++/3.2.2/bits/char_traits.h **** template 54:/usr/include/c++/3.2.2/bits/char_traits.h **** struct char_traits 55:/usr/include/c++/3.2.2/bits/char_traits.h **** { 56:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef _CharT char_type; 57:/usr/include/c++/3.2.2/bits/char_traits.h **** // Unsigned as wint_t is unsigned. 58:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef unsigned long int_type; 59:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef streampos pos_type; 60:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef streamoff off_type; 61:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef mbstate_t state_type; 62:/usr/include/c++/3.2.2/bits/char_traits.h **** 63:/usr/include/c++/3.2.2/bits/char_traits.h **** static void 64:/usr/include/c++/3.2.2/bits/char_traits.h **** assign(char_type& __c1, const char_type& __c2); 65:/usr/include/c++/3.2.2/bits/char_traits.h **** 66:/usr/include/c++/3.2.2/bits/char_traits.h **** static bool 67:/usr/include/c++/3.2.2/bits/char_traits.h **** eq(const char_type& __c1, const char_type& __c2); 68:/usr/include/c++/3.2.2/bits/char_traits.h **** 69:/usr/include/c++/3.2.2/bits/char_traits.h **** static bool 70:/usr/include/c++/3.2.2/bits/char_traits.h **** lt(const char_type& __c1, const char_type& __c2); 71:/usr/include/c++/3.2.2/bits/char_traits.h **** 72:/usr/include/c++/3.2.2/bits/char_traits.h **** static int 73:/usr/include/c++/3.2.2/bits/char_traits.h **** compare(const char_type* __s1, const char_type* __s2, size_t __n); 74:/usr/include/c++/3.2.2/bits/char_traits.h **** 75:/usr/include/c++/3.2.2/bits/char_traits.h **** static size_t 76:/usr/include/c++/3.2.2/bits/char_traits.h **** length(const char_type* __s); 77:/usr/include/c++/3.2.2/bits/char_traits.h **** 78:/usr/include/c++/3.2.2/bits/char_traits.h **** static const char_type* 79:/usr/include/c++/3.2.2/bits/char_traits.h **** find(const char_type* __s, size_t __n, const char_type& __a); 80:/usr/include/c++/3.2.2/bits/char_traits.h **** 81:/usr/include/c++/3.2.2/bits/char_traits.h **** static char_type* 82:/usr/include/c++/3.2.2/bits/char_traits.h **** move(char_type* __s1, const char_type* __s2, size_t __n); 83:/usr/include/c++/3.2.2/bits/char_traits.h **** 84:/usr/include/c++/3.2.2/bits/char_traits.h **** static char_type* 85:/usr/include/c++/3.2.2/bits/char_traits.h **** copy(char_type* __s1, const char_type* __s2, size_t __n); 86:/usr/include/c++/3.2.2/bits/char_traits.h **** 87:/usr/include/c++/3.2.2/bits/char_traits.h **** static char_type* 88:/usr/include/c++/3.2.2/bits/char_traits.h **** assign(char_type* __s, size_t __n, char_type __a); 89:/usr/include/c++/3.2.2/bits/char_traits.h **** 90:/usr/include/c++/3.2.2/bits/char_traits.h **** static char_type 91:/usr/include/c++/3.2.2/bits/char_traits.h **** to_char_type(const int_type& __c); 92:/usr/include/c++/3.2.2/bits/char_traits.h **** 93:/usr/include/c++/3.2.2/bits/char_traits.h **** static int_type 94:/usr/include/c++/3.2.2/bits/char_traits.h **** to_int_type(const char_type& __c); 95:/usr/include/c++/3.2.2/bits/char_traits.h **** 96:/usr/include/c++/3.2.2/bits/char_traits.h **** static bool 97:/usr/include/c++/3.2.2/bits/char_traits.h **** eq_int_type(const int_type& __c1, const int_type& __c2); 98:/usr/include/c++/3.2.2/bits/char_traits.h **** 99:/usr/include/c++/3.2.2/bits/char_traits.h **** static int_type 100:/usr/include/c++/3.2.2/bits/char_traits.h **** eof(); GAS LISTING /tmp/ccJ9xNSW.s page 60 101:/usr/include/c++/3.2.2/bits/char_traits.h **** 102:/usr/include/c++/3.2.2/bits/char_traits.h **** static int_type 103:/usr/include/c++/3.2.2/bits/char_traits.h **** not_eof(const int_type& __c); 104:/usr/include/c++/3.2.2/bits/char_traits.h **** }; 105:/usr/include/c++/3.2.2/bits/char_traits.h **** 106:/usr/include/c++/3.2.2/bits/char_traits.h **** 107:/usr/include/c++/3.2.2/bits/char_traits.h **** /// 21.1.4 char_traits specializations 108:/usr/include/c++/3.2.2/bits/char_traits.h **** template<> 109:/usr/include/c++/3.2.2/bits/char_traits.h **** struct char_traits 110:/usr/include/c++/3.2.2/bits/char_traits.h **** { 111:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef char char_type; 112:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef int int_type; 113:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef streampos pos_type; 114:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef streamoff off_type; 115:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef mbstate_t state_type; 116:/usr/include/c++/3.2.2/bits/char_traits.h **** 117:/usr/include/c++/3.2.2/bits/char_traits.h **** static void 118:/usr/include/c++/3.2.2/bits/char_traits.h **** assign(char_type& __c1, const char_type& __c2) 119:/usr/include/c++/3.2.2/bits/char_traits.h **** { __c1 = __c2; } 120:/usr/include/c++/3.2.2/bits/char_traits.h **** 121:/usr/include/c++/3.2.2/bits/char_traits.h **** static bool 122:/usr/include/c++/3.2.2/bits/char_traits.h **** eq(const char_type& __c1, const char_type& __c2) 123:/usr/include/c++/3.2.2/bits/char_traits.h **** { return __c1 == __c2; } 124:/usr/include/c++/3.2.2/bits/char_traits.h **** 125:/usr/include/c++/3.2.2/bits/char_traits.h **** static bool 126:/usr/include/c++/3.2.2/bits/char_traits.h **** lt(const char_type& __c1, const char_type& __c2) 127:/usr/include/c++/3.2.2/bits/char_traits.h **** { return __c1 < __c2; } 128:/usr/include/c++/3.2.2/bits/char_traits.h **** 129:/usr/include/c++/3.2.2/bits/char_traits.h **** static int 130:/usr/include/c++/3.2.2/bits/char_traits.h **** compare(const char_type* __s1, const char_type* __s2, size_t __n) 131:/usr/include/c++/3.2.2/bits/char_traits.h **** { return memcmp(__s1, __s2, __n); } 132:/usr/include/c++/3.2.2/bits/char_traits.h **** 133:/usr/include/c++/3.2.2/bits/char_traits.h **** static size_t 134:/usr/include/c++/3.2.2/bits/char_traits.h **** length(const char_type* __s) 135:/usr/include/c++/3.2.2/bits/char_traits.h **** { return strlen(__s); } 1321 .loc 14 135 0 1322 .LBB18: 1323 0000 55 pushl %ebp 1324 .LCFI77: 1325 0001 89E5 movl %esp, %ebp 1326 .LCFI78: 1327 0003 83EC08 subl $8, %esp 1328 .LCFI79: 1329 .loc 14 135 0 1330 0006 83EC0C subl $12, %esp 1331 0009 FF7508 pushl 8(%ebp) 1332 .LCFI80: 1333 000c E8FCFFFF call strlen 1333 FF 1334 0011 83C410 addl $16, %esp 1335 .LBE18: 1336 0014 C9 leave 1337 0015 C3 ret 1338 .LFE1585: 1339 .Lfe15: 1341 .section .gnu.linkonce.t._ZN11MyExceptionC1ERKS_,"ax",@progbits 1342 .align 2 GAS LISTING /tmp/ccJ9xNSW.s page 61 1343 .weak _ZN11MyExceptionC1ERKS_ 1345 _ZN11MyExceptionC1ERKS_: 1346 .LFB1586: 1347 .loc 1 37 0 1348 .LBB19: 1349 0000 55 pushl %ebp 1350 .LCFI81: 1351 0001 89E5 movl %esp, %ebp 1352 .LCFI82: 1353 0003 53 pushl %ebx 1354 .LCFI83: 1355 0004 83EC04 subl $4, %esp 1356 .LCFI84: 1357 .loc 1 37 0 1358 0007 83EC08 subl $8, %esp 1359 000a FF750C pushl 12(%ebp) 1360 000d FF7508 pushl 8(%ebp) 1361 .LCFI85: 1362 0010 E8FCFFFF call _ZNSt9exceptionC2ERKS_ 1362 FF 1363 0015 83C410 addl $16, %esp 1364 0018 8B4508 movl 8(%ebp), %eax 1365 001b C7000800 movl $_ZTV11MyException+8, (%eax) 1365 0000 1366 0021 83EC08 subl $8, %esp 1367 0024 8B450C movl 12(%ebp), %eax 1368 0027 83C004 addl $4, %eax 1369 002a 50 pushl %eax 1370 002b 8B4508 movl 8(%ebp), %eax 1371 002e 83C004 addl $4, %eax 1372 0031 50 pushl %eax 1373 .LEHB31: 1374 0032 E8FCFFFF call _ZNSsC1ERKSs 1374 FF 1375 .LEHE31: 1376 0037 83C410 addl $16, %esp 1377 .LBE19: 1378 003a EB22 jmp .L120 1379 .L129: 1380 003c 8945F8 movl %eax, -8(%ebp) 1381 003f 8B5DF8 movl -8(%ebp), %ebx 1382 0042 83EC0C subl $12, %esp 1383 0045 FF7508 pushl 8(%ebp) 1384 0048 E8FCFFFF call _ZNSt9exceptionD2Ev 1384 FF 1385 004d 83C410 addl $16, %esp 1386 0050 895DF8 movl %ebx, -8(%ebp) 1387 0053 83EC0C subl $12, %esp 1388 0056 FF75F8 pushl -8(%ebp) 1389 .LEHB32: 1390 0059 E8FCFFFF call _Unwind_Resume 1390 FF 1391 .LEHE32: 1392 .L120: 1393 005e 8B5DFC movl -4(%ebp), %ebx 1394 0061 C9 leave 1395 0062 C3 ret GAS LISTING /tmp/ccJ9xNSW.s page 62 1396 .LFE1586: 1397 .Lfe16: 1399 .section .gcc_except_table 1400 .LLSDA1586: 1401 00fd FF .byte 0xff 1402 00fe FF .byte 0xff 1403 00ff 01 .byte 0x1 1404 0100 08 .uleb128 .LLSDACSE1586-.LLSDACSB1586 1405 .LLSDACSB1586: 1406 0101 32 .uleb128 .LEHB31-.LFB1586 1407 0102 05 .uleb128 .LEHE31-.LEHB31 1408 0103 3C .uleb128 .L129-.LFB1586 1409 0104 00 .uleb128 0x0 1410 0105 59 .uleb128 .LEHB32-.LFB1586 1411 0106 05 .uleb128 .LEHE32-.LEHB32 1412 0107 00 .uleb128 0x0 1413 0108 00 .uleb128 0x0 1414 .LLSDACSE1586: 1415 .section .gnu.linkonce.t._ZN11MyExceptionC1ERKS_ 1416 .text 1417 .align 2 1419 __tcf_0: 1420 .LFB1587: 1421 .loc 47 63 0 1422 0532 55 pushl %ebp 1423 .LCFI86: 1424 0533 89E5 movl %esp, %ebp 1425 .LCFI87: 1426 0535 83EC08 subl $8, %esp 1427 .LCFI88: 1428 .loc 47 63 0 1429 0538 83EC0C subl $12, %esp 1430 053b 68000000 pushl $_ZSt8__ioinit 1430 00 1431 .LCFI89: 1432 0540 E8FCFFFF call _ZNSt8ios_base4InitD1Ev 1432 FF 1433 0545 83C410 addl $16, %esp 1434 0548 C9 leave 1435 0549 C3 ret 1436 .LFE1587: 1437 .Lfe17: 1439 .weak _ZTI11MyException 1440 .section .gnu.linkonce.d._ZTI11MyException,"aw",@progbits 1441 .align 4 1444 _ZTI11MyException: 1445 0000 08000000 .long _ZTVN10__cxxabiv120__si_class_type_infoE+8 1446 0004 00000000 .long _ZTS11MyException 1447 0008 00000000 .long _ZTISt9exception 1448 .weak _ZTS11MyException 1449 .section .gnu.linkonce.r._ZTS11MyException,"a",@progbits 1452 _ZTS11MyException: 1453 0000 31314D79 .string "11MyException" 1453 45786365 1453 7074696F 1453 6E00 1454 .section .gnu.linkonce.t._ZNSt9exceptionC2ERKS_,"ax",@progbits GAS LISTING /tmp/ccJ9xNSW.s page 63 1455 .align 2 1456 .weak _ZNSt9exceptionC2ERKS_ 1458 _ZNSt9exceptionC2ERKS_: 1459 .LFB1588: 1460 .loc 1 37 0 1461 .LBB20: 1462 0000 55 pushl %ebp 1463 .LCFI90: 1464 0001 89E5 movl %esp, %ebp 1465 .LCFI91: 1466 .loc 1 37 0 1467 0003 8B4508 movl 8(%ebp), %eax 1468 0006 C7000800 movl $_ZTVSt9exception+8, (%eax) 1468 0000 1469 000c C9 leave 1470 000d C3 ret 1471 .LBE20: 1472 .LFE1588: 1473 .Lfe18: 1475 .text 1476 .align 2 1478 _GLOBAL__I__ZN11MyExceptionC2ESs: 1479 .LFB1590: 1480 .loc 46 131 0 1481 054a 55 pushl %ebp 1482 .LCFI92: 1483 054b 89E5 movl %esp, %ebp 1484 .LCFI93: 1485 054d 83EC08 subl $8, %esp 1486 .LCFI94: 1487 .loc 46 131 0 1488 0550 83EC08 subl $8, %esp 1489 0553 68FFFF00 pushl $65535 1489 00 1490 0558 6A01 pushl $1 1491 .LCFI95: 1492 055a E895FFFF call _Z41__static_initialization_and_destruction_0ii 1492 FF 1493 055f 83C410 addl $16, %esp 1494 0562 C9 leave 1495 0563 C3 ret 1496 .LFE1590: 1497 .Lfe19: 1499 .section .ctors,"aw",@progbits 1500 .align 4 1501 0000 4A050000 .long _GLOBAL__I__ZN11MyExceptionC2ESs 1502 .file 49 "/usr/include/stdio.h" 1503 .file 50 "/usr/include/c++/3.2.2/iosfwd" 1504 .file 51 "/usr/include/c++/3.2.2/i386-redhat-linux/bits/c++locale.h" 1505 .file 52 "/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include/stdarg.h" 1506 .file 53 "/usr/include/bits/sigset.h" 1507 .file 54 "/usr/include/signal.h" 1508 .file 55 "/usr/include/sys/select.h" 1509 .file 56 "/usr/include/nl_types.h" 1510 .file 57 "/usr/include/wctype.h" 1511 .file 58 "/usr/include/errno.h" 1512 .file 59 "/usr/include/bits/mathdef.h" GAS LISTING /tmp/ccJ9xNSW.s page 64 1513 .weak pthread_mutex_unlock 1514 .weak pthread_mutex_trylock 1515 .weak pthread_mutex_lock 1516 .weak pthread_create 1517 .weak pthread_setspecific 1518 .weak pthread_getspecific 1519 .weak pthread_key_delete 1520 .weak pthread_key_create 1521 .weak pthread_once 2040 .Lframe1: 2041 0000 18000000 .long .LECIE1-.LSCIE1 2042 .LSCIE1: 2043 0004 00000000 .long 0x0 2044 0008 01 .byte 0x1 2045 0009 7A504C00 .string "zPL" 2046 000d 01 .uleb128 0x1 2047 000e 7C .sleb128 -4 2048 000f 08 .byte 0x8 2049 0010 06 .uleb128 0x6 2050 0011 00 .byte 0x0 2051 0012 00000000 .long __gxx_personality_v0 2052 0016 00 .byte 0x0 2053 0017 0C .byte 0xc 2054 0018 04 .uleb128 0x4 2055 0019 04 .uleb128 0x4 2056 001a 88 .byte 0x88 2057 001b 01 .uleb128 0x1 2058 .align 4 2059 .LECIE1: 2060 .LSFDE1: 2061 001c 24000000 .long .LEFDE1-.LASFDE1 2062 .LASFDE1: 2063 0020 20000000 .long .LASFDE1-.Lframe1 2064 0024 00000000 .long .LFB1480 2065 0028 7A000000 .long .LFE1480-.LFB1480 2066 002c 04 .uleb128 0x4 2067 002d 00000000 .long .LLSDA1480 2068 0031 41 .byte 0x4 2069 .long .LCFI0-.LFB1480 2070 0032 0E .byte 0xe 2071 0033 08 .uleb128 0x8 2072 0034 85 .byte 0x85 2073 0035 02 .uleb128 0x2 2074 0036 42 .byte 0x4 2075 .long .LCFI1-.LCFI0 2076 0037 0D .byte 0xd 2077 0038 05 .uleb128 0x5 2078 0039 45 .byte 0x4 2079 .long .LCFI4-.LCFI1 2080 003a 83 .byte 0x83 2081 003b 04 .uleb128 0x4 2082 003c 86 .byte 0x86 2083 003d 03 .uleb128 0x3 2084 003e 49 .byte 0x4 2085 .long .LCFI5-.LCFI4 2086 003f 2E .byte 0x2e 2087 0040 10 .uleb128 0x10 GAS LISTING /tmp/ccJ9xNSW.s page 65 2088 0041 000000 .align 4 2089 .LEFDE1: 2090 .LSFDE3: 2091 0044 24000000 .long .LEFDE3-.LASFDE3 2092 .LASFDE3: 2093 0048 48000000 .long .LASFDE3-.Lframe1 2094 004c 7A000000 .long .LFB1482 2095 0050 7A000000 .long .LFE1482-.LFB1482 2096 0054 04 .uleb128 0x4 2097 0055 18000000 .long .LLSDA1482 2098 0059 41 .byte 0x4 2099 .long .LCFI6-.LFB1482 2100 005a 0E .byte 0xe 2101 005b 08 .uleb128 0x8 2102 005c 85 .byte 0x85 2103 005d 02 .uleb128 0x2 2104 005e 42 .byte 0x4 2105 .long .LCFI7-.LCFI6 2106 005f 0D .byte 0xd 2107 0060 05 .uleb128 0x5 2108 0061 45 .byte 0x4 2109 .long .LCFI10-.LCFI7 2110 0062 83 .byte 0x83 2111 0063 04 .uleb128 0x4 2112 0064 86 .byte 0x86 2113 0065 03 .uleb128 0x3 2114 0066 49 .byte 0x4 2115 .long .LCFI11-.LCFI10 2116 0067 2E .byte 0x2e 2117 0068 10 .uleb128 0x10 2118 0069 000000 .align 4 2119 .LEFDE3: 2120 .LSFDE5: 2121 006c 1C000000 .long .LEFDE5-.LASFDE5 2122 .LASFDE5: 2123 0070 70000000 .long .LASFDE5-.Lframe1 2124 0074 F4000000 .long .LFB1485 2125 0078 6B000000 .long .LFE1485-.LFB1485 2126 007c 04 .uleb128 0x4 2127 007d 30000000 .long .LLSDA1485 2128 0081 41 .byte 0x4 2129 .long .LCFI12-.LFB1485 2130 0082 0E .byte 0xe 2131 0083 08 .uleb128 0x8 2132 0084 85 .byte 0x85 2133 0085 02 .uleb128 0x2 2134 0086 42 .byte 0x4 2135 .long .LCFI13-.LCFI12 2136 0087 0D .byte 0xd 2137 0088 05 .uleb128 0x5 2138 0089 56 .byte 0x4 2139 .long .LCFI15-.LCFI13 2140 008a 2E .byte 0x2e 2141 008b 10 .uleb128 0x10 2142 .align 4 2143 .LEFDE5: 2144 .LSFDE7: GAS LISTING /tmp/ccJ9xNSW.s page 66 2145 008c 1C000000 .long .LEFDE7-.LASFDE7 2146 .LASFDE7: 2147 0090 90000000 .long .LASFDE7-.Lframe1 2148 0094 60010000 .long .LFB1487 2149 0098 6B000000 .long .LFE1487-.LFB1487 2150 009c 04 .uleb128 0x4 2151 009d 44000000 .long .LLSDA1487 2152 00a1 41 .byte 0x4 2153 .long .LCFI16-.LFB1487 2154 00a2 0E .byte 0xe 2155 00a3 08 .uleb128 0x8 2156 00a4 85 .byte 0x85 2157 00a5 02 .uleb128 0x2 2158 00a6 42 .byte 0x4 2159 .long .LCFI17-.LCFI16 2160 00a7 0D .byte 0xd 2161 00a8 05 .uleb128 0x5 2162 00a9 56 .byte 0x4 2163 .long .LCFI19-.LCFI17 2164 00aa 2E .byte 0x2e 2165 00ab 10 .uleb128 0x10 2166 .align 4 2167 .LEFDE7: 2168 .LSFDE9: 2169 00ac 1C000000 .long .LEFDE9-.LASFDE9 2170 .LASFDE9: 2171 00b0 B0000000 .long .LASFDE9-.Lframe1 2172 00b4 CC010000 .long .LFB1489 2173 00b8 6B000000 .long .LFE1489-.LFB1489 2174 00bc 04 .uleb128 0x4 2175 00bd 58000000 .long .LLSDA1489 2176 00c1 41 .byte 0x4 2177 .long .LCFI20-.LFB1489 2178 00c2 0E .byte 0xe 2179 00c3 08 .uleb128 0x8 2180 00c4 85 .byte 0x85 2181 00c5 02 .uleb128 0x2 2182 00c6 42 .byte 0x4 2183 .long .LCFI21-.LCFI20 2184 00c7 0D .byte 0xd 2185 00c8 05 .uleb128 0x5 2186 00c9 56 .byte 0x4 2187 .long .LCFI23-.LCFI21 2188 00ca 2E .byte 0x2e 2189 00cb 10 .uleb128 0x10 2190 .align 4 2191 .LEFDE9: 2192 .LSFDE11: 2193 00cc 1C000000 .long .LEFDE11-.LASFDE11 2194 .LASFDE11: 2195 00d0 D0000000 .long .LASFDE11-.Lframe1 2196 00d4 38020000 .long .LFB1491 2197 00d8 40000000 .long .LFE1491-.LFB1491 2198 00dc 04 .uleb128 0x4 2199 00dd 6C000000 .long .LLSDA1491 2200 00e1 41 .byte 0x4 2201 .long .LCFI24-.LFB1491 GAS LISTING /tmp/ccJ9xNSW.s page 67 2202 00e2 0E .byte 0xe 2203 00e3 08 .uleb128 0x8 2204 00e4 85 .byte 0x85 2205 00e5 02 .uleb128 0x2 2206 00e6 42 .byte 0x4 2207 .long .LCFI25-.LCFI24 2208 00e7 0D .byte 0xd 2209 00e8 05 .uleb128 0x5 2210 00e9 4D .byte 0x4 2211 .long .LCFI27-.LCFI25 2212 00ea 2E .byte 0x2e 2213 00eb 10 .uleb128 0x10 2214 .align 4 2215 .LEFDE11: 2216 .LSFDE13: 2217 00ec 24000000 .long .LEFDE13-.LASFDE13 2218 .LASFDE13: 2219 00f0 F0000000 .long .LASFDE13-.Lframe1 2220 00f4 78020000 .long .LFB1493 2221 00f8 77000000 .long .LFE1493-.LFB1493 2222 00fc 04 .uleb128 0x4 2223 00fd 7D000000 .long .LLSDA1493 2224 0101 41 .byte 0x4 2225 .long .LCFI28-.LFB1493 2226 0102 0E .byte 0xe 2227 0103 08 .uleb128 0x8 2228 0104 85 .byte 0x85 2229 0105 02 .uleb128 0x2 2230 0106 42 .byte 0x4 2231 .long .LCFI29-.LCFI28 2232 0107 0D .byte 0xd 2233 0108 05 .uleb128 0x5 2234 0109 44 .byte 0x4 2235 .long .LCFI31-.LCFI29 2236 010a 83 .byte 0x83 2237 010b 03 .uleb128 0x3 2238 010c 5B .byte 0x4 2239 .long .LCFI32-.LCFI31 2240 010d 2E .byte 0x2e 2241 010e 18 .uleb128 0x18 2242 010f 4F .byte 0x4 2243 .long .LCFI33-.LCFI32 2244 0110 2E .byte 0x2e 2245 0111 10 .uleb128 0x10 2246 0112 0000 .align 4 2247 .LEFDE13: 2248 .LSFDE15: 2249 0114 28000000 .long .LEFDE15-.LASFDE15 2250 .LASFDE15: 2251 0118 18010000 .long .LASFDE15-.Lframe1 2252 011c F0020000 .long .LFB1501 2253 0120 1F010000 .long .LFE1501-.LFB1501 2254 0124 04 .uleb128 0x4 2255 0125 94000000 .long .LLSDA1501 2256 0129 41 .byte 0x4 2257 .long .LCFI34-.LFB1501 2258 012a 0E .byte 0xe GAS LISTING /tmp/ccJ9xNSW.s page 68 2259 012b 08 .uleb128 0x8 2260 012c 85 .byte 0x85 2261 012d 02 .uleb128 0x2 2262 012e 42 .byte 0x4 2263 .long .LCFI35-.LCFI34 2264 012f 0D .byte 0xd 2265 0130 05 .uleb128 0x5 2266 0131 45 .byte 0x4 2267 .long .LCFI38-.LCFI35 2268 0132 83 .byte 0x83 2269 0133 04 .uleb128 0x4 2270 0134 86 .byte 0x86 2271 0135 03 .uleb128 0x3 2272 0136 57 .byte 0x4 2273 .long .LCFI39-.LCFI38 2274 0137 2E .byte 0x2e 2275 0138 0C .uleb128 0xc 2276 0139 55 .byte 0x4 2277 .long .LCFI40-.LCFI39 2278 013a 2E .byte 0x2e 2279 013b 18 .uleb128 0x18 2280 013c 50 .byte 0x4 2281 .long .LCFI41-.LCFI40 2282 013d 2E .byte 0x2e 2283 013e 10 .uleb128 0x10 2284 013f 00 .align 4 2285 .LEFDE15: 2286 .LSFDE17: 2287 0140 34000000 .long .LEFDE17-.LASFDE17 2288 .LASFDE17: 2289 0144 44010000 .long .LASFDE17-.Lframe1 2290 0148 10040000 .long .LFB1503 2291 014c E4000000 .long .LFE1503-.LFB1503 2292 0150 04 .uleb128 0x4 2293 0151 B4000000 .long .LLSDA1503 2294 0155 41 .byte 0x4 2295 .long .LCFI42-.LFB1503 2296 0156 0E .byte 0xe 2297 0157 08 .uleb128 0x8 2298 0158 85 .byte 0x85 2299 0159 02 .uleb128 0x2 2300 015a 42 .byte 0x4 2301 .long .LCFI43-.LCFI42 2302 015b 0D .byte 0xd 2303 015c 05 .uleb128 0x5 2304 015d 44 .byte 0x4 2305 .long .LCFI45-.LCFI43 2306 015e 83 .byte 0x83 2307 015f 03 .uleb128 0x3 2308 0160 4F .byte 0x4 2309 .long .LCFI46-.LCFI45 2310 0161 2E .byte 0x2e 2311 0162 10 .uleb128 0x10 2312 0163 02 .byte 0x4 2313 0164 46 .long .LCFI47-.LCFI46 2314 0165 2E .byte 0x2e 2315 0166 08 .uleb128 0x8 GAS LISTING /tmp/ccJ9xNSW.s page 69 2316 0167 59 .byte 0x4 2317 .long .LCFI48-.LCFI47 2318 0168 2E .byte 0x2e 2319 0169 14 .uleb128 0x14 2320 016a 52 .byte 0x4 2321 .long .LCFI49-.LCFI48 2322 016b 2E .byte 0x2e 2323 016c 10 .uleb128 0x10 2324 016d 7B .byte 0x4 2325 .long .LCFI50-.LCFI49 2326 016e 2E .byte 0x2e 2327 016f 00 .uleb128 0x0 2328 0170 4E .byte 0x4 2329 .long .LCFI51-.LCFI50 2330 0171 2E .byte 0x2e 2331 0172 10 .uleb128 0x10 2332 0173 45 .byte 0x4 2333 .long .LCFI52-.LCFI51 2334 0174 2E .byte 0x2e 2335 0175 00 .uleb128 0x0 2336 0176 0000 .align 4 2337 .LEFDE17: 2338 .LSFDE19: 2339 0178 28000000 .long .LEFDE19-.LASFDE19 2340 .LASFDE19: 2341 017c 7C010000 .long .LASFDE19-.Lframe1 2342 0180 00000000 .long .LFB1517 2343 0184 9D000000 .long .LFE1517-.LFB1517 2344 0188 04 .uleb128 0x4 2345 0189 DC000000 .long .LLSDA1517 2346 018d 41 .byte 0x4 2347 .long .LCFI53-.LFB1517 2348 018e 0E .byte 0xe 2349 018f 08 .uleb128 0x8 2350 0190 85 .byte 0x85 2351 0191 02 .uleb128 0x2 2352 0192 42 .byte 0x4 2353 .long .LCFI54-.LCFI53 2354 0193 0D .byte 0xd 2355 0194 05 .uleb128 0x5 2356 0195 44 .byte 0x4 2357 .long .LCFI56-.LCFI54 2358 0196 83 .byte 0x83 2359 0197 03 .uleb128 0x3 2360 0198 46 .byte 0x4 2361 .long .LCFI57-.LCFI56 2362 0199 2E .byte 0x2e 2363 019a 10 .uleb128 0x10 2364 019b 62 .byte 0x4 2365 .long .LCFI58-.LCFI57 2366 019c 2E .byte 0x2e 2367 019d 08 .uleb128 0x8 2368 019e 4F .byte 0x4 2369 .long .LCFI59-.LCFI58 2370 019f 2E .byte 0x2e 2371 01a0 10 .uleb128 0x10 2372 01a1 000000 .align 4 GAS LISTING /tmp/ccJ9xNSW.s page 70 2373 .LEFDE19: 2374 .LSFDE21: 2375 01a4 20000000 .long .LEFDE21-.LASFDE21 2376 .LASFDE21: 2377 01a8 A8010000 .long .LASFDE21-.Lframe1 2378 01ac 00000000 .long .LFB1519 2379 01b0 57000000 .long .LFE1519-.LFB1519 2380 01b4 04 .uleb128 0x4 2381 01b5 ED000000 .long .LLSDA1519 2382 01b9 41 .byte 0x4 2383 .long .LCFI60-.LFB1519 2384 01ba 0E .byte 0xe 2385 01bb 08 .uleb128 0x8 2386 01bc 85 .byte 0x85 2387 01bd 02 .uleb128 0x2 2388 01be 42 .byte 0x4 2389 .long .LCFI61-.LCFI60 2390 01bf 0D .byte 0xd 2391 01c0 05 .uleb128 0x5 2392 01c1 44 .byte 0x4 2393 .long .LCFI63-.LCFI61 2394 01c2 83 .byte 0x83 2395 01c3 03 .uleb128 0x3 2396 01c4 49 .byte 0x4 2397 .long .LCFI64-.LCFI63 2398 01c5 2E .byte 0x2e 2399 01c6 10 .uleb128 0x10 2400 01c7 00 .align 4 2401 .LEFDE21: 2402 .LSFDE23: 2403 01c8 24000000 .long .LEFDE23-.LASFDE23 2404 .LASFDE23: 2405 01cc CC010000 .long .LASFDE23-.Lframe1 2406 01d0 00000000 .long .LFB1538 2407 01d4 43000000 .long .LFE1538-.LFB1538 2408 01d8 04 .uleb128 0x4 2409 01d9 00000000 .long 0x0 2410 01dd 41 .byte 0x4 2411 .long .LCFI65-.LFB1538 2412 01de 0E .byte 0xe 2413 01df 08 .uleb128 0x8 2414 01e0 85 .byte 0x85 2415 01e1 02 .uleb128 0x2 2416 01e2 42 .byte 0x4 2417 .long .LCFI66-.LCFI65 2418 01e3 0D .byte 0xd 2419 01e4 05 .uleb128 0x5 2420 01e5 56 .byte 0x4 2421 .long .LCFI68-.LCFI66 2422 01e6 2E .byte 0x2e 2423 01e7 0C .uleb128 0xc 2424 01e8 52 .byte 0x4 2425 .long .LCFI69-.LCFI68 2426 01e9 2E .byte 0x2e 2427 01ea 08 .uleb128 0x8 2428 01eb 4E .byte 0x4 2429 .long .LCFI70-.LCFI69 GAS LISTING /tmp/ccJ9xNSW.s page 71 2430 01ec 2E .byte 0x2e 2431 01ed 20 .uleb128 0x20 2432 01ee 0000 .align 4 2433 .LEFDE23: 2434 .LSFDE25: 2435 01f0 1C000000 .long .LEFDE25-.LASFDE25 2436 .LASFDE25: 2437 01f4 F4010000 .long .LASFDE25-.Lframe1 2438 01f8 F4040000 .long .LFB1583 2439 01fc 3E000000 .long .LFE1583-.LFB1583 2440 0200 04 .uleb128 0x4 2441 0201 00000000 .long 0x0 2442 0205 41 .byte 0x4 2443 .long .LCFI71-.LFB1583 2444 0206 0E .byte 0xe 2445 0207 08 .uleb128 0x8 2446 0208 85 .byte 0x85 2447 0209 02 .uleb128 0x2 2448 020a 42 .byte 0x4 2449 .long .LCFI72-.LCFI71 2450 020b 0D .byte 0xd 2451 020c 05 .uleb128 0x5 2452 020d 5A .byte 0x4 2453 .long .LCFI74-.LCFI72 2454 020e 2E .byte 0x2e 2455 020f 10 .uleb128 0x10 2456 .align 4 2457 .LEFDE25: 2458 .LSFDE31: 2459 0210 20000000 .long .LEFDE31-.LASFDE31 2460 .LASFDE31: 2461 0214 14020000 .long .LASFDE31-.Lframe1 2462 0218 00000000 .long .LFB1586 2463 021c 63000000 .long .LFE1586-.LFB1586 2464 0220 04 .uleb128 0x4 2465 0221 FD000000 .long .LLSDA1586 2466 0225 41 .byte 0x4 2467 .long .LCFI81-.LFB1586 2468 0226 0E .byte 0xe 2469 0227 08 .uleb128 0x8 2470 0228 85 .byte 0x85 2471 0229 02 .uleb128 0x2 2472 022a 42 .byte 0x4 2473 .long .LCFI82-.LCFI81 2474 022b 0D .byte 0xd 2475 022c 05 .uleb128 0x5 2476 022d 44 .byte 0x4 2477 .long .LCFI84-.LCFI82 2478 022e 83 .byte 0x83 2479 022f 03 .uleb128 0x3 2480 0230 49 .byte 0x4 2481 .long .LCFI85-.LCFI84 2482 0231 2E .byte 0x2e 2483 0232 10 .uleb128 0x10 2484 0233 00 .align 4 2485 .LEFDE31: 2486 .LSFDE33: GAS LISTING /tmp/ccJ9xNSW.s page 72 2487 0234 1C000000 .long .LEFDE33-.LASFDE33 2488 .LASFDE33: 2489 0238 38020000 .long .LASFDE33-.Lframe1 2490 023c 32050000 .long .LFB1587 2491 0240 18000000 .long .LFE1587-.LFB1587 2492 0244 04 .uleb128 0x4 2493 0245 00000000 .long 0x0 2494 0249 41 .byte 0x4 2495 .long .LCFI86-.LFB1587 2496 024a 0E .byte 0xe 2497 024b 08 .uleb128 0x8 2498 024c 85 .byte 0x85 2499 024d 02 .uleb128 0x2 2500 024e 42 .byte 0x4 2501 .long .LCFI87-.LCFI86 2502 024f 0D .byte 0xd 2503 0250 05 .uleb128 0x5 2504 0251 4B .byte 0x4 2505 .long .LCFI89-.LCFI87 2506 0252 2E .byte 0x2e 2507 0253 10 .uleb128 0x10 2508 .align 4 2509 .LEFDE33: 2510 .LSFDE37: 2511 0254 1C000000 .long .LEFDE37-.LASFDE37 2512 .LASFDE37: 2513 0258 58020000 .long .LASFDE37-.Lframe1 2514 025c 4A050000 .long .LFB1590 2515 0260 1A000000 .long .LFE1590-.LFB1590 2516 0264 04 .uleb128 0x4 2517 0265 00000000 .long 0x0 2518 0269 41 .byte 0x4 2519 .long .LCFI92-.LFB1590 2520 026a 0E .byte 0xe 2521 026b 08 .uleb128 0x8 2522 026c 85 .byte 0x85 2523 026d 02 .uleb128 0x2 2524 026e 42 .byte 0x4 2525 .long .LCFI93-.LCFI92 2526 026f 0D .byte 0xd 2527 0270 05 .uleb128 0x5 2528 0271 4D .byte 0x4 2529 .long .LCFI95-.LCFI93 2530 0272 2E .byte 0x2e 2531 0273 10 .uleb128 0x10 2532 .align 4 2533 .LEFDE37: 2534 .text 2535 .Letext0: GAS LISTING /tmp/ccJ9xNSW.s page 73 DEFINED SYMBOLS *ABS*:00000000 hello-exceptions.cc .bss:00000000 _ZSt8__ioinit /tmp/ccJ9xNSW.s:59 .text:00000000 _ZN11MyExceptionC2ESs /tmp/ccJ9xNSW.s:1298 .gnu.linkonce.t._ZNSt9exceptionC2Ev:00000000 _ZNSt9exceptionC2Ev /tmp/ccJ9xNSW.s:1251 .gnu.linkonce.d._ZTV11MyException:00000000 _ZTV11MyException /tmp/ccJ9xNSW.s:155 .text:0000007a _ZN11MyExceptionC1ESs /tmp/ccJ9xNSW.s:251 .text:000000f4 _ZN11MyExceptionD2Ev /tmp/ccJ9xNSW.s:335 .text:00000160 _ZN11MyExceptionD1Ev /tmp/ccJ9xNSW.s:419 .text:000001cc _ZN11MyExceptionD0Ev /tmp/ccJ9xNSW.s:503 .text:00000238 _ZNK11MyException4whatEv /tmp/ccJ9xNSW.s:581 .text:00000278 _ZNK11MyException9as_stringEv /tmp/ccJ9xNSW.s:1022 .gnu.linkonce.t._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_:00000000 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ /tmp/ccJ9xNSW.s:1127 .gnu.linkonce.t._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_:00000000 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_ /tmp/ccJ9xNSW.s:682 .text:000002f0 _Z9take_halfi /tmp/ccJ9xNSW.s:1345 .gnu.linkonce.t._ZN11MyExceptionC1ERKS_:00000000 _ZN11MyExceptionC1ERKS_ /tmp/ccJ9xNSW.s:1444 .gnu.linkonce.d._ZTI11MyException:00000000 _ZTI11MyException /tmp/ccJ9xNSW.s:856 .text:00000410 main /tmp/ccJ9xNSW.s:1319 .gnu.linkonce.t._ZNSt11char_traitsIcE6lengthEPKc:00000000 _ZNSt11char_traitsIcE6lengthEPKc /tmp/ccJ9xNSW.s:1206 .gnu.linkonce.t._ZNSs6appendIPKcEERSsT_S3_:00000000 _ZNSs6appendIPKcEERSsT_S3_ /tmp/ccJ9xNSW.s:1260 .text:000004f4 _Z41__static_initialization_and_destruction_0ii /tmp/ccJ9xNSW.s:1419 .text:00000532 __tcf_0 /tmp/ccJ9xNSW.s:1458 .gnu.linkonce.t._ZNSt9exceptionC2ERKS_:00000000 _ZNSt9exceptionC2ERKS_ /tmp/ccJ9xNSW.s:1452 .gnu.linkonce.r._ZTS11MyException:00000000 _ZTS11MyException /tmp/ccJ9xNSW.s:1478 .text:0000054a _GLOBAL__I__ZN11MyExceptionC2ESs UNDEFINED SYMBOLS _Unwind_Resume _ZNSsC1ERKSs _ZNSt9exceptionD2Ev __cxa_call_unexpected _ZNSsD1Ev _ZdlPv _ZNKSs5c_strEv _ZNSaIcEC1Ev _ZNSsC1EPKcRKSaIcE _ZNSaIcED1Ev __cxa_allocate_exception __cxa_throw __cxa_begin_catch _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_ _ZSt4cout _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E _ZNSolsEPFRSoS_E __cxa_end_catch _ZNSsC1Ev _ZNKSs4sizeEv _ZNSs7reserveEj _ZNSs6appendERKSs _ZNSs6appendEPKc _ZNKSs7_M_iendEv _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_ _ZNSt8ios_base4InitC1Ev __dso_handle __cxa_atexit _ZTVSt9exception GAS LISTING /tmp/ccJ9xNSW.s page 74 strlen _ZNSt8ios_base4InitD1Ev _ZTVN10__cxxabiv120__si_class_type_infoE _ZTISt9exception __gxx_personality_v0