GAS LISTING /tmp/ccrG9BDx.s page 1 1 .file "rethrow.cpp" 2 .text 3 .Ltext0: 4 .align 2 5 .globl _ZNK12MyExceptionB4whatEv 7 _ZNK12MyExceptionB4whatEv: 8 .LFB1250: 9 .file 1 "rethrow.cpp" 1:rethrow.cpp **** #include 2:rethrow.cpp **** #include 3:rethrow.cpp **** #include 4:rethrow.cpp **** 5:rethrow.cpp **** using namespace std; 6:rethrow.cpp **** 7:rethrow.cpp **** class MyExceptionB : public exception { 8:rethrow.cpp **** private: 9:rethrow.cpp **** string _what; 10:rethrow.cpp **** public: 11:rethrow.cpp **** MyExceptionB(string what) throw (); 12:rethrow.cpp **** ~MyExceptionB() throw (); 13:rethrow.cpp **** 14:rethrow.cpp **** virtual const char *what() const throw (); 15:rethrow.cpp **** string as_string() const; 16:rethrow.cpp **** }; 17:rethrow.cpp **** 18:rethrow.cpp **** MyExceptionB::MyExceptionB(string what) throw (): 19:rethrow.cpp **** _what(what) 20:rethrow.cpp **** {} 21:rethrow.cpp **** 22:rethrow.cpp **** MyExceptionB::~MyExceptionB() throw () { 23:rethrow.cpp **** } 24:rethrow.cpp **** 25:rethrow.cpp **** const char *MyExceptionB::what() const throw () { 10 .loc 1 25 0 11 .cfi_startproc 12 .LVL0: 13 0000 4883EC08 subq $8, %rsp 14 .cfi_def_cfa_offset 16 26:rethrow.cpp **** return _what.c_str(); 15 .loc 1 26 0 16 0004 4883C708 addq $8, %rdi 17 .LVL1: 18 0008 E8000000 call _ZNKSs5c_strEv 18 00 19 .LVL2: 27:rethrow.cpp **** } 20 .loc 1 27 0 21 000d 4883C408 addq $8, %rsp 22 .cfi_def_cfa_offset 8 23 0011 C3 ret 24 .cfi_endproc 25 .LFE1250: 27 .align 2 28 .globl _ZN12MyExceptionBD2Ev 30 _ZN12MyExceptionBD2Ev: 31 .LFB1247: 22:rethrow.cpp **** } GAS LISTING /tmp/ccrG9BDx.s page 2 32 .loc 1 22 0 33 .cfi_startproc 34 .LVL3: 35 0012 53 pushq %rbx 36 .cfi_def_cfa_offset 16 37 .cfi_offset 3, -16 38 0013 4889FB movq %rdi, %rbx 39 .LBB2: 22:rethrow.cpp **** } 40 .loc 1 22 0 41 0016 48C70700 movq $_ZTV12MyExceptionB+16, (%rdi) 41 000000 42 001d 488D7F08 leaq 8(%rdi), %rdi 43 .LVL4: 44 0021 E8000000 call _ZNSsD1Ev 44 00 45 .LVL5: 46 0026 4889DF movq %rbx, %rdi 47 0029 E8000000 call _ZNSt9exceptionD2Ev 47 00 48 .LVL6: 49 .LBE2: 23:rethrow.cpp **** 50 .loc 1 23 0 51 002e 5B popq %rbx 52 .cfi_def_cfa_offset 8 53 .LVL7: 54 002f C3 ret 55 .cfi_endproc 56 .LFE1247: 58 .globl _ZN12MyExceptionBD1Ev 59 .set _ZN12MyExceptionBD1Ev,_ZN12MyExceptionBD2Ev 60 .align 2 61 .globl _ZN12MyExceptionBD0Ev 63 _ZN12MyExceptionBD0Ev: 64 .LFB1249: 22:rethrow.cpp **** } 65 .loc 1 22 0 66 .cfi_startproc 67 .LVL8: 68 0030 53 pushq %rbx 69 .cfi_def_cfa_offset 16 70 .cfi_offset 3, -16 71 0031 4889FB movq %rdi, %rbx 23:rethrow.cpp **** 72 .loc 1 23 0 73 0034 E8000000 call _ZN12MyExceptionBD1Ev 73 00 74 .LVL9: 75 0039 4889DF movq %rbx, %rdi 76 003c E8000000 call _ZdlPv 76 00 77 .LVL10: 78 0041 5B popq %rbx 79 .cfi_def_cfa_offset 8 80 .LVL11: 81 0042 C3 ret GAS LISTING /tmp/ccrG9BDx.s page 3 82 .cfi_endproc 83 .LFE1249: 86 _Z41__static_initialization_and_destruction_0ii: 87 .LFB1426: 28:rethrow.cpp **** 29:rethrow.cpp **** string MyExceptionB::as_string() const { 30:rethrow.cpp **** return "MyExceptionB(" + _what + ")"; 31:rethrow.cpp **** } 32:rethrow.cpp **** 33:rethrow.cpp **** 34:rethrow.cpp **** void throw_MyExceptionB(string message) throw (MyExceptionB) { 35:rethrow.cpp **** throw MyExceptionB(message); 36:rethrow.cpp **** } 37:rethrow.cpp **** 38:rethrow.cpp **** void catch_and_rethrow() throw (MyExceptionB) { 39:rethrow.cpp **** try { 40:rethrow.cpp **** throw_MyExceptionB("Foo"); 41:rethrow.cpp **** } catch (MyExceptionB &e) { 42:rethrow.cpp **** cout << "Got exception:" << e.as_string() << " rethrowing..." << endl; 43:rethrow.cpp **** throw; 44:rethrow.cpp **** } 45:rethrow.cpp **** } 46:rethrow.cpp **** 47:rethrow.cpp **** void catch_and_throw_another() throw (MyExceptionB) { 48:rethrow.cpp **** try { 49:rethrow.cpp **** throw_MyExceptionB("Baz"); 50:rethrow.cpp **** } catch (MyExceptionB &e) { 51:rethrow.cpp **** cout << "Got exception:" << e.as_string() << " throwing another..." << endl; 52:rethrow.cpp **** throw MyExceptionB(e.as_string()); 53:rethrow.cpp **** } 54:rethrow.cpp **** } 55:rethrow.cpp **** 56:rethrow.cpp **** void doesnt_throw() throw () { 57:rethrow.cpp **** throw_MyExceptionB("Bar"); 58:rethrow.cpp **** } 59:rethrow.cpp **** 60:rethrow.cpp **** void doRethrow() { 61:rethrow.cpp **** try { 62:rethrow.cpp **** catch_and_rethrow(); 63:rethrow.cpp **** } catch (MyExceptionB &e) { 64:rethrow.cpp **** cout << "Main got exception: " << e.as_string() << endl; 65:rethrow.cpp **** } 66:rethrow.cpp **** 67:rethrow.cpp **** try { 68:rethrow.cpp **** catch_and_throw_another(); 69:rethrow.cpp **** } catch (MyExceptionB &e) { 70:rethrow.cpp **** cout << "Main got exception: " << e.as_string() << endl; 71:rethrow.cpp **** } 72:rethrow.cpp **** 73:rethrow.cpp **** try { 74:rethrow.cpp **** doesnt_throw(); 75:rethrow.cpp **** } catch (MyExceptionB &e) { 76:rethrow.cpp **** cout << "Main got exception: " << e.as_string() << endl; 77:rethrow.cpp **** } 78:rethrow.cpp **** } 88 .loc 1 78 0 89 .cfi_startproc GAS LISTING /tmp/ccrG9BDx.s page 4 90 .LVL12: 91 0043 83FF01 cmpl $1, %edi 92 0046 752E jne .L11 93 .loc 1 78 0 discriminator 1 94 0048 81FEFFFF cmpl $65535, %esi 94 0000 95 004e 7526 jne .L11 96 .loc 1 78 0 is_stmt 0 97 0050 4883EC08 subq $8, %rsp 98 .cfi_def_cfa_offset 16 99 .file 2 "/usr/include/c++/4.8/iostream" 1:/usr/include/c++/4.8/iostream **** // Standard iostream objects -*- C++ -*- 2:/usr/include/c++/4.8/iostream **** 3:/usr/include/c++/4.8/iostream **** // Copyright (C) 1997-2013 Free Software Foundation, Inc. 4:/usr/include/c++/4.8/iostream **** // 5:/usr/include/c++/4.8/iostream **** // This file is part of the GNU ISO C++ Library. This library is free 6:/usr/include/c++/4.8/iostream **** // software; you can redistribute it and/or modify it under the 7:/usr/include/c++/4.8/iostream **** // terms of the GNU General Public License as published by the 8:/usr/include/c++/4.8/iostream **** // Free Software Foundation; either version 3, or (at your option) 9:/usr/include/c++/4.8/iostream **** // any later version. 10:/usr/include/c++/4.8/iostream **** 11:/usr/include/c++/4.8/iostream **** // This library is distributed in the hope that it will be useful, 12:/usr/include/c++/4.8/iostream **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 13:/usr/include/c++/4.8/iostream **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14:/usr/include/c++/4.8/iostream **** // GNU General Public License for more details. 15:/usr/include/c++/4.8/iostream **** 16:/usr/include/c++/4.8/iostream **** // Under Section 7 of GPL version 3, you are granted additional 17:/usr/include/c++/4.8/iostream **** // permissions described in the GCC Runtime Library Exception, version 18:/usr/include/c++/4.8/iostream **** // 3.1, as published by the Free Software Foundation. 19:/usr/include/c++/4.8/iostream **** 20:/usr/include/c++/4.8/iostream **** // You should have received a copy of the GNU General Public License and 21:/usr/include/c++/4.8/iostream **** // a copy of the GCC Runtime Library Exception along with this program; 22:/usr/include/c++/4.8/iostream **** // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23:/usr/include/c++/4.8/iostream **** // . 24:/usr/include/c++/4.8/iostream **** 25:/usr/include/c++/4.8/iostream **** /** @file include/iostream 26:/usr/include/c++/4.8/iostream **** * This is a Standard C++ Library header. 27:/usr/include/c++/4.8/iostream **** */ 28:/usr/include/c++/4.8/iostream **** 29:/usr/include/c++/4.8/iostream **** // 30:/usr/include/c++/4.8/iostream **** // ISO C++ 14882: 27.3 Standard iostream objects 31:/usr/include/c++/4.8/iostream **** // 32:/usr/include/c++/4.8/iostream **** 33:/usr/include/c++/4.8/iostream **** #ifndef _GLIBCXX_IOSTREAM 34:/usr/include/c++/4.8/iostream **** #define _GLIBCXX_IOSTREAM 1 35:/usr/include/c++/4.8/iostream **** 36:/usr/include/c++/4.8/iostream **** #pragma GCC system_header 37:/usr/include/c++/4.8/iostream **** 38:/usr/include/c++/4.8/iostream **** #include 39:/usr/include/c++/4.8/iostream **** #include 40:/usr/include/c++/4.8/iostream **** #include 41:/usr/include/c++/4.8/iostream **** 42:/usr/include/c++/4.8/iostream **** namespace std _GLIBCXX_VISIBILITY(default) 43:/usr/include/c++/4.8/iostream **** { 44:/usr/include/c++/4.8/iostream **** _GLIBCXX_BEGIN_NAMESPACE_VERSION 45:/usr/include/c++/4.8/iostream **** 46:/usr/include/c++/4.8/iostream **** /** GAS LISTING /tmp/ccrG9BDx.s page 5 47:/usr/include/c++/4.8/iostream **** * @name Standard Stream Objects 48:/usr/include/c++/4.8/iostream **** * 49:/usr/include/c++/4.8/iostream **** * The <iostream> header declares the eight standard stream 50:/usr/include/c++/4.8/iostream **** * objects. For other declarations, see 51:/usr/include/c++/4.8/iostream **** * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch24.html 52:/usr/include/c++/4.8/iostream **** * and the @link iosfwd I/O forward declarations @endlink 53:/usr/include/c++/4.8/iostream **** * 54:/usr/include/c++/4.8/iostream **** * They are required by default to cooperate with the global C 55:/usr/include/c++/4.8/iostream **** * library's @c FILE streams, and to be available during program 56:/usr/include/c++/4.8/iostream **** * startup and termination. For more information, see the HOWTO 57:/usr/include/c++/4.8/iostream **** * linked to above. 58:/usr/include/c++/4.8/iostream **** */ 59:/usr/include/c++/4.8/iostream **** //@{ 60:/usr/include/c++/4.8/iostream **** extern istream cin; /// Linked to standard input 61:/usr/include/c++/4.8/iostream **** extern ostream cout; /// Linked to standard output 62:/usr/include/c++/4.8/iostream **** extern ostream cerr; /// Linked to standard error (unbuffered) 63:/usr/include/c++/4.8/iostream **** extern ostream clog; /// Linked to standard error (buffered) 64:/usr/include/c++/4.8/iostream **** 65:/usr/include/c++/4.8/iostream **** #ifdef _GLIBCXX_USE_WCHAR_T 66:/usr/include/c++/4.8/iostream **** extern wistream wcin; /// Linked to standard input 67:/usr/include/c++/4.8/iostream **** extern wostream wcout; /// Linked to standard output 68:/usr/include/c++/4.8/iostream **** extern wostream wcerr; /// Linked to standard error (unbuffered) 69:/usr/include/c++/4.8/iostream **** extern wostream wclog; /// Linked to standard error (buffered) 70:/usr/include/c++/4.8/iostream **** #endif 71:/usr/include/c++/4.8/iostream **** //@} 72:/usr/include/c++/4.8/iostream **** 73:/usr/include/c++/4.8/iostream **** // For construction of filebuffers for cout, cin, cerr, clog et. al. 74:/usr/include/c++/4.8/iostream **** static ios_base::Init __ioinit; 100 .loc 2 74 0 is_stmt 1 101 0054 BF000000 movl $_ZStL8__ioinit, %edi 101 00 102 .LVL13: 103 0059 E8000000 call _ZNSt8ios_base4InitC1Ev 103 00 104 .LVL14: 105 005e BA000000 movl $__dso_handle, %edx 105 00 106 0063 BE000000 movl $_ZStL8__ioinit, %esi 106 00 107 0068 BF000000 movl $_ZNSt8ios_base4InitD1Ev, %edi 107 00 108 006d E8000000 call __cxa_atexit 108 00 109 .LVL15: 110 .loc 1 78 0 111 0072 4883C408 addq $8, %rsp 112 .cfi_def_cfa_offset 8 113 .L11: 114 0076 C3 ret 115 .cfi_endproc 116 .LFE1426: 118 .section .text._ZNSt9exceptionC2Ev,"axG",@progbits,_ZNSt9exceptionC5Ev,comdat 119 .align 2 120 .weak _ZNSt9exceptionC2Ev 122 _ZNSt9exceptionC2Ev: 123 .LFB1: 124 .file 3 "/usr/include/c++/4.8/exception" GAS LISTING /tmp/ccrG9BDx.s page 6 1:/usr/include/c++/4.8/exception **** // Exception Handling support header for -*- C++ -*- 2:/usr/include/c++/4.8/exception **** 3:/usr/include/c++/4.8/exception **** // Copyright (C) 1995-2013 Free Software Foundation, Inc. 4:/usr/include/c++/4.8/exception **** // 5:/usr/include/c++/4.8/exception **** // This file is part of GCC. 6:/usr/include/c++/4.8/exception **** // 7:/usr/include/c++/4.8/exception **** // GCC is free software; you can redistribute it and/or modify 8:/usr/include/c++/4.8/exception **** // it under the terms of the GNU General Public License as published by 9:/usr/include/c++/4.8/exception **** // the Free Software Foundation; either version 3, or (at your option) 10:/usr/include/c++/4.8/exception **** // any later version. 11:/usr/include/c++/4.8/exception **** // 12:/usr/include/c++/4.8/exception **** // GCC is distributed in the hope that it will be useful, 13:/usr/include/c++/4.8/exception **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 14:/usr/include/c++/4.8/exception **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15:/usr/include/c++/4.8/exception **** // GNU General Public License for more details. 16:/usr/include/c++/4.8/exception **** // 17:/usr/include/c++/4.8/exception **** // Under Section 7 of GPL version 3, you are granted additional 18:/usr/include/c++/4.8/exception **** // permissions described in the GCC Runtime Library Exception, version 19:/usr/include/c++/4.8/exception **** // 3.1, as published by the Free Software Foundation. 20:/usr/include/c++/4.8/exception **** 21:/usr/include/c++/4.8/exception **** // You should have received a copy of the GNU General Public License and 22:/usr/include/c++/4.8/exception **** // a copy of the GCC Runtime Library Exception along with this program; 23:/usr/include/c++/4.8/exception **** // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 24:/usr/include/c++/4.8/exception **** // . 25:/usr/include/c++/4.8/exception **** 26:/usr/include/c++/4.8/exception **** /** @file exception 27:/usr/include/c++/4.8/exception **** * This is a Standard C++ Library header. 28:/usr/include/c++/4.8/exception **** */ 29:/usr/include/c++/4.8/exception **** 30:/usr/include/c++/4.8/exception **** #ifndef __EXCEPTION__ 31:/usr/include/c++/4.8/exception **** #define __EXCEPTION__ 32:/usr/include/c++/4.8/exception **** 33:/usr/include/c++/4.8/exception **** #pragma GCC system_header 34:/usr/include/c++/4.8/exception **** 35:/usr/include/c++/4.8/exception **** #pragma GCC visibility push(default) 36:/usr/include/c++/4.8/exception **** 37:/usr/include/c++/4.8/exception **** #include 38:/usr/include/c++/4.8/exception **** #include 39:/usr/include/c++/4.8/exception **** 40:/usr/include/c++/4.8/exception **** extern "C++" { 41:/usr/include/c++/4.8/exception **** 42:/usr/include/c++/4.8/exception **** namespace std 43:/usr/include/c++/4.8/exception **** { 44:/usr/include/c++/4.8/exception **** /** 45:/usr/include/c++/4.8/exception **** * @defgroup exceptions Exceptions 46:/usr/include/c++/4.8/exception **** * @ingroup diagnostics 47:/usr/include/c++/4.8/exception **** * 48:/usr/include/c++/4.8/exception **** * Classes and functions for reporting errors via exception classes. 49:/usr/include/c++/4.8/exception **** * @{ 50:/usr/include/c++/4.8/exception **** */ 51:/usr/include/c++/4.8/exception **** 52:/usr/include/c++/4.8/exception **** /** 53:/usr/include/c++/4.8/exception **** * @brief Base class for all library exceptions. 54:/usr/include/c++/4.8/exception **** * 55:/usr/include/c++/4.8/exception **** * This is the base class for all exceptions thrown by the standard 56:/usr/include/c++/4.8/exception **** * library, and by certain language expressions. You are free to derive 57:/usr/include/c++/4.8/exception **** * your own %exception classes, or use a different hierarchy, or to GAS LISTING /tmp/ccrG9BDx.s page 7 58:/usr/include/c++/4.8/exception **** * throw non-class data (e.g., fundamental types). 59:/usr/include/c++/4.8/exception **** */ 60:/usr/include/c++/4.8/exception **** class exception 61:/usr/include/c++/4.8/exception **** { 62:/usr/include/c++/4.8/exception **** public: 63:/usr/include/c++/4.8/exception **** exception() _GLIBCXX_USE_NOEXCEPT { } 125 .loc 3 63 0 126 .cfi_startproc 127 .LVL16: 128 .LBB3: 129 .loc 3 63 0 130 0000 48C70700 movq $_ZTVSt9exception+16, (%rdi) 130 000000 131 0007 C3 ret 132 .LBE3: 133 .cfi_endproc 134 .LFE1: 136 .weak _ZNSt9exceptionC1Ev 137 .set _ZNSt9exceptionC1Ev,_ZNSt9exceptionC2Ev 138 .section .text._ZNSt11char_traitsIcE6lengthEPKc,"axG",@progbits,_ZNSt11char_traitsIcE6lengthEPKc,c 139 .weak _ZNSt11char_traitsIcE6lengthEPKc 141 _ZNSt11char_traitsIcE6lengthEPKc: 142 .LFB299: 143 .file 4 "/usr/include/c++/4.8/bits/char_traits.h" 1:/usr/include/c++/4.8/bits/char_traits.h **** // Character Traits for use by standard string and iostream -*- C++ -*- 2:/usr/include/c++/4.8/bits/char_traits.h **** 3:/usr/include/c++/4.8/bits/char_traits.h **** // Copyright (C) 1997-2013 Free Software Foundation, Inc. 4:/usr/include/c++/4.8/bits/char_traits.h **** // 5:/usr/include/c++/4.8/bits/char_traits.h **** // This file is part of the GNU ISO C++ Library. This library is free 6:/usr/include/c++/4.8/bits/char_traits.h **** // software; you can redistribute it and/or modify it under the 7:/usr/include/c++/4.8/bits/char_traits.h **** // terms of the GNU General Public License as published by the 8:/usr/include/c++/4.8/bits/char_traits.h **** // Free Software Foundation; either version 3, or (at your option) 9:/usr/include/c++/4.8/bits/char_traits.h **** // any later version. 10:/usr/include/c++/4.8/bits/char_traits.h **** 11:/usr/include/c++/4.8/bits/char_traits.h **** // This library is distributed in the hope that it will be useful, 12:/usr/include/c++/4.8/bits/char_traits.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 13:/usr/include/c++/4.8/bits/char_traits.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14:/usr/include/c++/4.8/bits/char_traits.h **** // GNU General Public License for more details. 15:/usr/include/c++/4.8/bits/char_traits.h **** 16:/usr/include/c++/4.8/bits/char_traits.h **** // Under Section 7 of GPL version 3, you are granted additional 17:/usr/include/c++/4.8/bits/char_traits.h **** // permissions described in the GCC Runtime Library Exception, version 18:/usr/include/c++/4.8/bits/char_traits.h **** // 3.1, as published by the Free Software Foundation. 19:/usr/include/c++/4.8/bits/char_traits.h **** 20:/usr/include/c++/4.8/bits/char_traits.h **** // You should have received a copy of the GNU General Public License and 21:/usr/include/c++/4.8/bits/char_traits.h **** // a copy of the GCC Runtime Library Exception along with this program; 22:/usr/include/c++/4.8/bits/char_traits.h **** // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23:/usr/include/c++/4.8/bits/char_traits.h **** // . 24:/usr/include/c++/4.8/bits/char_traits.h **** 25:/usr/include/c++/4.8/bits/char_traits.h **** /** @file bits/char_traits.h 26:/usr/include/c++/4.8/bits/char_traits.h **** * This is an internal header file, included by other library headers. 27:/usr/include/c++/4.8/bits/char_traits.h **** * Do not attempt to use it directly. @headername{string} 28:/usr/include/c++/4.8/bits/char_traits.h **** */ 29:/usr/include/c++/4.8/bits/char_traits.h **** 30:/usr/include/c++/4.8/bits/char_traits.h **** // 31:/usr/include/c++/4.8/bits/char_traits.h **** // ISO C++ 14882: 21 Strings library 32:/usr/include/c++/4.8/bits/char_traits.h **** // 33:/usr/include/c++/4.8/bits/char_traits.h **** GAS LISTING /tmp/ccrG9BDx.s page 8 34:/usr/include/c++/4.8/bits/char_traits.h **** #ifndef _CHAR_TRAITS_H 35:/usr/include/c++/4.8/bits/char_traits.h **** #define _CHAR_TRAITS_H 1 36:/usr/include/c++/4.8/bits/char_traits.h **** 37:/usr/include/c++/4.8/bits/char_traits.h **** #pragma GCC system_header 38:/usr/include/c++/4.8/bits/char_traits.h **** 39:/usr/include/c++/4.8/bits/char_traits.h **** #include // std::copy, std::fill_n 40:/usr/include/c++/4.8/bits/char_traits.h **** #include // For streampos 41:/usr/include/c++/4.8/bits/char_traits.h **** #include // For WEOF, wmemmove, wmemset, etc. 42:/usr/include/c++/4.8/bits/char_traits.h **** 43:/usr/include/c++/4.8/bits/char_traits.h **** namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) 44:/usr/include/c++/4.8/bits/char_traits.h **** { 45:/usr/include/c++/4.8/bits/char_traits.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION 46:/usr/include/c++/4.8/bits/char_traits.h **** 47:/usr/include/c++/4.8/bits/char_traits.h **** /** 48:/usr/include/c++/4.8/bits/char_traits.h **** * @brief Mapping from character type to associated types. 49:/usr/include/c++/4.8/bits/char_traits.h **** * 50:/usr/include/c++/4.8/bits/char_traits.h **** * @note This is an implementation class for the generic version 51:/usr/include/c++/4.8/bits/char_traits.h **** * of char_traits. It defines int_type, off_type, pos_type, and 52:/usr/include/c++/4.8/bits/char_traits.h **** * state_type. By default these are unsigned long, streamoff, 53:/usr/include/c++/4.8/bits/char_traits.h **** * streampos, and mbstate_t. Users who need a different set of 54:/usr/include/c++/4.8/bits/char_traits.h **** * types, but who don't need to change the definitions of any function 55:/usr/include/c++/4.8/bits/char_traits.h **** * defined in char_traits, can specialize __gnu_cxx::_Char_types 56:/usr/include/c++/4.8/bits/char_traits.h **** * while leaving __gnu_cxx::char_traits alone. */ 57:/usr/include/c++/4.8/bits/char_traits.h **** template 58:/usr/include/c++/4.8/bits/char_traits.h **** struct _Char_types 59:/usr/include/c++/4.8/bits/char_traits.h **** { 60:/usr/include/c++/4.8/bits/char_traits.h **** typedef unsigned long int_type; 61:/usr/include/c++/4.8/bits/char_traits.h **** typedef std::streampos pos_type; 62:/usr/include/c++/4.8/bits/char_traits.h **** typedef std::streamoff off_type; 63:/usr/include/c++/4.8/bits/char_traits.h **** typedef std::mbstate_t state_type; 64:/usr/include/c++/4.8/bits/char_traits.h **** }; 65:/usr/include/c++/4.8/bits/char_traits.h **** 66:/usr/include/c++/4.8/bits/char_traits.h **** 67:/usr/include/c++/4.8/bits/char_traits.h **** /** 68:/usr/include/c++/4.8/bits/char_traits.h **** * @brief Base class used to implement std::char_traits. 69:/usr/include/c++/4.8/bits/char_traits.h **** * 70:/usr/include/c++/4.8/bits/char_traits.h **** * @note For any given actual character type, this definition is 71:/usr/include/c++/4.8/bits/char_traits.h **** * probably wrong. (Most of the member functions are likely to be 72:/usr/include/c++/4.8/bits/char_traits.h **** * right, but the int_type and state_type typedefs, and the eof() 73:/usr/include/c++/4.8/bits/char_traits.h **** * member function, are likely to be wrong.) The reason this class 74:/usr/include/c++/4.8/bits/char_traits.h **** * exists is so users can specialize it. Classes in namespace std 75:/usr/include/c++/4.8/bits/char_traits.h **** * may not be specialized for fundamental types, but classes in 76:/usr/include/c++/4.8/bits/char_traits.h **** * namespace __gnu_cxx may be. 77:/usr/include/c++/4.8/bits/char_traits.h **** * 78:/usr/include/c++/4.8/bits/char_traits.h **** * See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt05ch13s03.html 79:/usr/include/c++/4.8/bits/char_traits.h **** * for advice on how to make use of this class for @a unusual character 80:/usr/include/c++/4.8/bits/char_traits.h **** * types. Also, check out include/ext/pod_char_traits.h. 81:/usr/include/c++/4.8/bits/char_traits.h **** */ 82:/usr/include/c++/4.8/bits/char_traits.h **** template 83:/usr/include/c++/4.8/bits/char_traits.h **** struct char_traits 84:/usr/include/c++/4.8/bits/char_traits.h **** { 85:/usr/include/c++/4.8/bits/char_traits.h **** typedef _CharT char_type; 86:/usr/include/c++/4.8/bits/char_traits.h **** typedef typename _Char_types<_CharT>::int_type int_type; 87:/usr/include/c++/4.8/bits/char_traits.h **** typedef typename _Char_types<_CharT>::pos_type pos_type; 88:/usr/include/c++/4.8/bits/char_traits.h **** typedef typename _Char_types<_CharT>::off_type off_type; 89:/usr/include/c++/4.8/bits/char_traits.h **** typedef typename _Char_types<_CharT>::state_type state_type; 90:/usr/include/c++/4.8/bits/char_traits.h **** GAS LISTING /tmp/ccrG9BDx.s page 9 91:/usr/include/c++/4.8/bits/char_traits.h **** static void 92:/usr/include/c++/4.8/bits/char_traits.h **** assign(char_type& __c1, const char_type& __c2) 93:/usr/include/c++/4.8/bits/char_traits.h **** { __c1 = __c2; } 94:/usr/include/c++/4.8/bits/char_traits.h **** 95:/usr/include/c++/4.8/bits/char_traits.h **** static _GLIBCXX_CONSTEXPR bool 96:/usr/include/c++/4.8/bits/char_traits.h **** eq(const char_type& __c1, const char_type& __c2) 97:/usr/include/c++/4.8/bits/char_traits.h **** { return __c1 == __c2; } 98:/usr/include/c++/4.8/bits/char_traits.h **** 99:/usr/include/c++/4.8/bits/char_traits.h **** static _GLIBCXX_CONSTEXPR bool 100:/usr/include/c++/4.8/bits/char_traits.h **** lt(const char_type& __c1, const char_type& __c2) 101:/usr/include/c++/4.8/bits/char_traits.h **** { return __c1 < __c2; } 102:/usr/include/c++/4.8/bits/char_traits.h **** 103:/usr/include/c++/4.8/bits/char_traits.h **** static int 104:/usr/include/c++/4.8/bits/char_traits.h **** compare(const char_type* __s1, const char_type* __s2, std::size_t __n); 105:/usr/include/c++/4.8/bits/char_traits.h **** 106:/usr/include/c++/4.8/bits/char_traits.h **** static std::size_t 107:/usr/include/c++/4.8/bits/char_traits.h **** length(const char_type* __s); 108:/usr/include/c++/4.8/bits/char_traits.h **** 109:/usr/include/c++/4.8/bits/char_traits.h **** static const char_type* 110:/usr/include/c++/4.8/bits/char_traits.h **** find(const char_type* __s, std::size_t __n, const char_type& __a); 111:/usr/include/c++/4.8/bits/char_traits.h **** 112:/usr/include/c++/4.8/bits/char_traits.h **** static char_type* 113:/usr/include/c++/4.8/bits/char_traits.h **** move(char_type* __s1, const char_type* __s2, std::size_t __n); 114:/usr/include/c++/4.8/bits/char_traits.h **** 115:/usr/include/c++/4.8/bits/char_traits.h **** static char_type* 116:/usr/include/c++/4.8/bits/char_traits.h **** copy(char_type* __s1, const char_type* __s2, std::size_t __n); 117:/usr/include/c++/4.8/bits/char_traits.h **** 118:/usr/include/c++/4.8/bits/char_traits.h **** static char_type* 119:/usr/include/c++/4.8/bits/char_traits.h **** assign(char_type* __s, std::size_t __n, char_type __a); 120:/usr/include/c++/4.8/bits/char_traits.h **** 121:/usr/include/c++/4.8/bits/char_traits.h **** static _GLIBCXX_CONSTEXPR char_type 122:/usr/include/c++/4.8/bits/char_traits.h **** to_char_type(const int_type& __c) 123:/usr/include/c++/4.8/bits/char_traits.h **** { return static_cast(__c); } 124:/usr/include/c++/4.8/bits/char_traits.h **** 125:/usr/include/c++/4.8/bits/char_traits.h **** static _GLIBCXX_CONSTEXPR int_type 126:/usr/include/c++/4.8/bits/char_traits.h **** to_int_type(const char_type& __c) 127:/usr/include/c++/4.8/bits/char_traits.h **** { return static_cast(__c); } 128:/usr/include/c++/4.8/bits/char_traits.h **** 129:/usr/include/c++/4.8/bits/char_traits.h **** static _GLIBCXX_CONSTEXPR bool 130:/usr/include/c++/4.8/bits/char_traits.h **** eq_int_type(const int_type& __c1, const int_type& __c2) 131:/usr/include/c++/4.8/bits/char_traits.h **** { return __c1 == __c2; } 132:/usr/include/c++/4.8/bits/char_traits.h **** 133:/usr/include/c++/4.8/bits/char_traits.h **** static _GLIBCXX_CONSTEXPR int_type 134:/usr/include/c++/4.8/bits/char_traits.h **** eof() 135:/usr/include/c++/4.8/bits/char_traits.h **** { return static_cast(_GLIBCXX_STDIO_EOF); } 136:/usr/include/c++/4.8/bits/char_traits.h **** 137:/usr/include/c++/4.8/bits/char_traits.h **** static _GLIBCXX_CONSTEXPR int_type 138:/usr/include/c++/4.8/bits/char_traits.h **** not_eof(const int_type& __c) 139:/usr/include/c++/4.8/bits/char_traits.h **** { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } 140:/usr/include/c++/4.8/bits/char_traits.h **** }; 141:/usr/include/c++/4.8/bits/char_traits.h **** 142:/usr/include/c++/4.8/bits/char_traits.h **** template 143:/usr/include/c++/4.8/bits/char_traits.h **** int 144:/usr/include/c++/4.8/bits/char_traits.h **** char_traits<_CharT>:: 145:/usr/include/c++/4.8/bits/char_traits.h **** compare(const char_type* __s1, const char_type* __s2, std::size_t __n) 146:/usr/include/c++/4.8/bits/char_traits.h **** { 147:/usr/include/c++/4.8/bits/char_traits.h **** for (std::size_t __i = 0; __i < __n; ++__i) GAS LISTING /tmp/ccrG9BDx.s page 10 148:/usr/include/c++/4.8/bits/char_traits.h **** if (lt(__s1[__i], __s2[__i])) 149:/usr/include/c++/4.8/bits/char_traits.h **** return -1; 150:/usr/include/c++/4.8/bits/char_traits.h **** else if (lt(__s2[__i], __s1[__i])) 151:/usr/include/c++/4.8/bits/char_traits.h **** return 1; 152:/usr/include/c++/4.8/bits/char_traits.h **** return 0; 153:/usr/include/c++/4.8/bits/char_traits.h **** } 154:/usr/include/c++/4.8/bits/char_traits.h **** 155:/usr/include/c++/4.8/bits/char_traits.h **** template 156:/usr/include/c++/4.8/bits/char_traits.h **** std::size_t 157:/usr/include/c++/4.8/bits/char_traits.h **** char_traits<_CharT>:: 158:/usr/include/c++/4.8/bits/char_traits.h **** length(const char_type* __p) 159:/usr/include/c++/4.8/bits/char_traits.h **** { 160:/usr/include/c++/4.8/bits/char_traits.h **** std::size_t __i = 0; 161:/usr/include/c++/4.8/bits/char_traits.h **** while (!eq(__p[__i], char_type())) 162:/usr/include/c++/4.8/bits/char_traits.h **** ++__i; 163:/usr/include/c++/4.8/bits/char_traits.h **** return __i; 164:/usr/include/c++/4.8/bits/char_traits.h **** } 165:/usr/include/c++/4.8/bits/char_traits.h **** 166:/usr/include/c++/4.8/bits/char_traits.h **** template 167:/usr/include/c++/4.8/bits/char_traits.h **** const typename char_traits<_CharT>::char_type* 168:/usr/include/c++/4.8/bits/char_traits.h **** char_traits<_CharT>:: 169:/usr/include/c++/4.8/bits/char_traits.h **** find(const char_type* __s, std::size_t __n, const char_type& __a) 170:/usr/include/c++/4.8/bits/char_traits.h **** { 171:/usr/include/c++/4.8/bits/char_traits.h **** for (std::size_t __i = 0; __i < __n; ++__i) 172:/usr/include/c++/4.8/bits/char_traits.h **** if (eq(__s[__i], __a)) 173:/usr/include/c++/4.8/bits/char_traits.h **** return __s + __i; 174:/usr/include/c++/4.8/bits/char_traits.h **** return 0; 175:/usr/include/c++/4.8/bits/char_traits.h **** } 176:/usr/include/c++/4.8/bits/char_traits.h **** 177:/usr/include/c++/4.8/bits/char_traits.h **** template 178:/usr/include/c++/4.8/bits/char_traits.h **** typename char_traits<_CharT>::char_type* 179:/usr/include/c++/4.8/bits/char_traits.h **** char_traits<_CharT>:: 180:/usr/include/c++/4.8/bits/char_traits.h **** move(char_type* __s1, const char_type* __s2, std::size_t __n) 181:/usr/include/c++/4.8/bits/char_traits.h **** { 182:/usr/include/c++/4.8/bits/char_traits.h **** return static_cast<_CharT*>(__builtin_memmove(__s1, __s2, 183:/usr/include/c++/4.8/bits/char_traits.h **** __n * sizeof(char_type))); 184:/usr/include/c++/4.8/bits/char_traits.h **** } 185:/usr/include/c++/4.8/bits/char_traits.h **** 186:/usr/include/c++/4.8/bits/char_traits.h **** template 187:/usr/include/c++/4.8/bits/char_traits.h **** typename char_traits<_CharT>::char_type* 188:/usr/include/c++/4.8/bits/char_traits.h **** char_traits<_CharT>:: 189:/usr/include/c++/4.8/bits/char_traits.h **** copy(char_type* __s1, const char_type* __s2, std::size_t __n) 190:/usr/include/c++/4.8/bits/char_traits.h **** { 191:/usr/include/c++/4.8/bits/char_traits.h **** // NB: Inline std::copy so no recursive dependencies. 192:/usr/include/c++/4.8/bits/char_traits.h **** std::copy(__s2, __s2 + __n, __s1); 193:/usr/include/c++/4.8/bits/char_traits.h **** return __s1; 194:/usr/include/c++/4.8/bits/char_traits.h **** } 195:/usr/include/c++/4.8/bits/char_traits.h **** 196:/usr/include/c++/4.8/bits/char_traits.h **** template 197:/usr/include/c++/4.8/bits/char_traits.h **** typename char_traits<_CharT>::char_type* 198:/usr/include/c++/4.8/bits/char_traits.h **** char_traits<_CharT>:: 199:/usr/include/c++/4.8/bits/char_traits.h **** assign(char_type* __s, std::size_t __n, char_type __a) 200:/usr/include/c++/4.8/bits/char_traits.h **** { 201:/usr/include/c++/4.8/bits/char_traits.h **** // NB: Inline std::fill_n so no recursive dependencies. 202:/usr/include/c++/4.8/bits/char_traits.h **** std::fill_n(__s, __n, __a); 203:/usr/include/c++/4.8/bits/char_traits.h **** return __s; 204:/usr/include/c++/4.8/bits/char_traits.h **** } GAS LISTING /tmp/ccrG9BDx.s page 11 205:/usr/include/c++/4.8/bits/char_traits.h **** 206:/usr/include/c++/4.8/bits/char_traits.h **** _GLIBCXX_END_NAMESPACE_VERSION 207:/usr/include/c++/4.8/bits/char_traits.h **** } // namespace 208:/usr/include/c++/4.8/bits/char_traits.h **** 209:/usr/include/c++/4.8/bits/char_traits.h **** namespace std _GLIBCXX_VISIBILITY(default) 210:/usr/include/c++/4.8/bits/char_traits.h **** { 211:/usr/include/c++/4.8/bits/char_traits.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION 212:/usr/include/c++/4.8/bits/char_traits.h **** 213:/usr/include/c++/4.8/bits/char_traits.h **** // 21.1 214:/usr/include/c++/4.8/bits/char_traits.h **** /** 215:/usr/include/c++/4.8/bits/char_traits.h **** * @brief Basis for explicit traits specializations. 216:/usr/include/c++/4.8/bits/char_traits.h **** * 217:/usr/include/c++/4.8/bits/char_traits.h **** * @note For any given actual character type, this definition is 218:/usr/include/c++/4.8/bits/char_traits.h **** * probably wrong. Since this is just a thin wrapper around 219:/usr/include/c++/4.8/bits/char_traits.h **** * __gnu_cxx::char_traits, it is possible to achieve a more 220:/usr/include/c++/4.8/bits/char_traits.h **** * appropriate definition by specializing __gnu_cxx::char_traits. 221:/usr/include/c++/4.8/bits/char_traits.h **** * 222:/usr/include/c++/4.8/bits/char_traits.h **** * See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt05ch13s03.html 223:/usr/include/c++/4.8/bits/char_traits.h **** * for advice on how to make use of this class for @a unusual character 224:/usr/include/c++/4.8/bits/char_traits.h **** * types. Also, check out include/ext/pod_char_traits.h. 225:/usr/include/c++/4.8/bits/char_traits.h **** */ 226:/usr/include/c++/4.8/bits/char_traits.h **** template 227:/usr/include/c++/4.8/bits/char_traits.h **** struct char_traits : public __gnu_cxx::char_traits<_CharT> 228:/usr/include/c++/4.8/bits/char_traits.h **** { }; 229:/usr/include/c++/4.8/bits/char_traits.h **** 230:/usr/include/c++/4.8/bits/char_traits.h **** 231:/usr/include/c++/4.8/bits/char_traits.h **** /// 21.1.3.1 char_traits specializations 232:/usr/include/c++/4.8/bits/char_traits.h **** template<> 233:/usr/include/c++/4.8/bits/char_traits.h **** struct char_traits 234:/usr/include/c++/4.8/bits/char_traits.h **** { 235:/usr/include/c++/4.8/bits/char_traits.h **** typedef char char_type; 236:/usr/include/c++/4.8/bits/char_traits.h **** typedef int int_type; 237:/usr/include/c++/4.8/bits/char_traits.h **** typedef streampos pos_type; 238:/usr/include/c++/4.8/bits/char_traits.h **** typedef streamoff off_type; 239:/usr/include/c++/4.8/bits/char_traits.h **** typedef mbstate_t state_type; 240:/usr/include/c++/4.8/bits/char_traits.h **** 241:/usr/include/c++/4.8/bits/char_traits.h **** static void 242:/usr/include/c++/4.8/bits/char_traits.h **** assign(char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT 243:/usr/include/c++/4.8/bits/char_traits.h **** { __c1 = __c2; } 244:/usr/include/c++/4.8/bits/char_traits.h **** 245:/usr/include/c++/4.8/bits/char_traits.h **** static _GLIBCXX_CONSTEXPR bool 246:/usr/include/c++/4.8/bits/char_traits.h **** eq(const char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT 247:/usr/include/c++/4.8/bits/char_traits.h **** { return __c1 == __c2; } 248:/usr/include/c++/4.8/bits/char_traits.h **** 249:/usr/include/c++/4.8/bits/char_traits.h **** static _GLIBCXX_CONSTEXPR bool 250:/usr/include/c++/4.8/bits/char_traits.h **** lt(const char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT 251:/usr/include/c++/4.8/bits/char_traits.h **** { return __c1 < __c2; } 252:/usr/include/c++/4.8/bits/char_traits.h **** 253:/usr/include/c++/4.8/bits/char_traits.h **** static int 254:/usr/include/c++/4.8/bits/char_traits.h **** compare(const char_type* __s1, const char_type* __s2, size_t __n) 255:/usr/include/c++/4.8/bits/char_traits.h **** { return __builtin_memcmp(__s1, __s2, __n); } 256:/usr/include/c++/4.8/bits/char_traits.h **** 257:/usr/include/c++/4.8/bits/char_traits.h **** static size_t 258:/usr/include/c++/4.8/bits/char_traits.h **** length(const char_type* __s) 144 .loc 4 258 0 145 .cfi_startproc 146 .LVL17: GAS LISTING /tmp/ccrG9BDx.s page 12 259:/usr/include/c++/4.8/bits/char_traits.h **** { return __builtin_strlen(__s); } 147 .loc 4 259 0 148 0000 B8000000 movl $0, %eax 148 00 149 0005 48C7C1FF movq $-1, %rcx 149 FFFFFF 150 000c F2AE repnz scasb 151 .LVL18: 152 000e 48F7D1 notq %rcx 153 0011 488D41FF leaq -1(%rcx), %rax 154 0015 C3 ret 155 .cfi_endproc 156 .LFE299: 158 .text 159 0077 90 .align 2 160 .globl _ZN12MyExceptionBC2ESs 162 _ZN12MyExceptionBC2ESs: 163 .LFB1244: 18:rethrow.cpp **** _what(what) 164 .loc 1 18 0 165 .cfi_startproc 166 .cfi_personality 0x3,__gxx_personality_v0 167 .cfi_lsda 0x3,.LLSDA1244 168 .LVL19: 169 0078 4154 pushq %r12 170 .cfi_def_cfa_offset 16 171 .cfi_offset 12, -16 172 007a 55 pushq %rbp 173 .cfi_def_cfa_offset 24 174 .cfi_offset 6, -24 175 007b 53 pushq %rbx 176 .cfi_def_cfa_offset 32 177 .cfi_offset 3, -32 178 007c 4889FB movq %rdi, %rbx 179 007f 4889F5 movq %rsi, %rbp 180 .LBB4: 19:rethrow.cpp **** {} 181 .loc 1 19 0 182 0082 E8000000 call _ZNSt9exceptionC2Ev 182 00 183 .LVL20: 184 0087 48C70300 movq $_ZTV12MyExceptionB+16, (%rbx) 184 000000 185 008e 488D7B08 leaq 8(%rbx), %rdi 186 0092 4889EE movq %rbp, %rsi 187 .LEHB0: 188 0095 E8000000 call _ZNSsC1ERKSs 188 00 189 .LEHE0: 190 .LVL21: 191 009a EB24 jmp .L18 192 .L17: 193 009c 4889C5 movq %rax, %rbp 194 .LVL22: 195 009f 4989D4 movq %rdx, %r12 196 00a2 4889DF movq %rbx, %rdi 197 00a5 E8000000 call _ZNSt9exceptionD2Ev GAS LISTING /tmp/ccrG9BDx.s page 13 197 00 198 .LVL23: 199 00aa 4983FCFF cmpq $-1, %r12 200 00ae 7408 je .L16 201 00b0 4889EF movq %rbp, %rdi 202 .LEHB1: 203 00b3 E8000000 call _Unwind_Resume 203 00 204 .LVL24: 205 .L16: 206 .LBE4: 18:rethrow.cpp **** _what(what) 207 .loc 1 18 0 208 00b8 4889EF movq %rbp, %rdi 209 00bb E8000000 call __cxa_call_unexpected 209 00 210 .LEHE1: 211 .LVL25: 212 .L18: 20:rethrow.cpp **** 213 .loc 1 20 0 214 00c0 5B popq %rbx 215 .cfi_def_cfa_offset 24 216 .LVL26: 217 00c1 5D popq %rbp 218 .cfi_def_cfa_offset 16 219 .LVL27: 220 00c2 415C popq %r12 221 .cfi_def_cfa_offset 8 222 00c4 C3 ret 223 .cfi_endproc 224 .LFE1244: 225 .globl __gxx_personality_v0 226 .section .gcc_except_table,"a",@progbits 227 .align 4 228 .LLSDA1244: 229 0000 FF .byte 0xff 230 0001 03 .byte 0x3 231 0002 11 .uleb128 .LLSDATT1244-.LLSDATTD1244 232 .LLSDATTD1244: 233 0003 01 .byte 0x1 234 0004 08 .uleb128 .LLSDACSE1244-.LLSDACSB1244 235 .LLSDACSB1244: 236 0005 1D .uleb128 .LEHB0-.LFB1244 237 0006 05 .uleb128 .LEHE0-.LEHB0 238 0007 24 .uleb128 .L17-.LFB1244 239 0008 03 .uleb128 0x3 240 0009 3B .uleb128 .LEHB1-.LFB1244 241 000a 0D .uleb128 .LEHE1-.LEHB1 242 000b 00 .uleb128 0 243 000c 00 .uleb128 0 244 .LLSDACSE1244: 245 000d 7F .byte 0x7f 246 000e 00 .byte 0 247 000f 00 .byte 0 248 0010 7D .byte 0x7d 249 0011 000000 .align 4 GAS LISTING /tmp/ccrG9BDx.s page 14 250 .LLSDATT1244: 251 0014 00 .byte 0 252 .text 254 .globl _ZN12MyExceptionBC1ESs 255 .set _ZN12MyExceptionBC1ESs,_ZN12MyExceptionBC2ESs 256 .globl _Z18throw_MyExceptionBSs 258 _Z18throw_MyExceptionBSs: 259 .LFB1252: 34:rethrow.cpp **** throw MyExceptionB(message); 260 .loc 1 34 0 261 .cfi_startproc 262 .cfi_personality 0x3,__gxx_personality_v0 263 .cfi_lsda 0x3,.LLSDA1252 264 .LVL28: 265 00c5 4154 pushq %r12 266 .cfi_def_cfa_offset 16 267 .cfi_offset 12, -16 268 00c7 55 pushq %rbp 269 .cfi_def_cfa_offset 24 270 .cfi_offset 6, -24 271 00c8 53 pushq %rbx 272 .cfi_def_cfa_offset 32 273 .cfi_offset 3, -32 274 00c9 4883EC10 subq $16, %rsp 275 .cfi_def_cfa_offset 48 276 00cd 4889FD movq %rdi, %rbp 35:rethrow.cpp **** } 277 .loc 1 35 0 278 00d0 BF100000 movl $16, %edi 278 00 279 .LVL29: 280 00d5 E8000000 call __cxa_allocate_exception 280 00 281 .LVL30: 282 00da 4889C3 movq %rax, %rbx 283 00dd 4889EE movq %rbp, %rsi 284 00e0 4889E7 movq %rsp, %rdi 285 .LEHB2: 286 00e3 E8000000 call _ZNSsC1ERKSs 286 00 287 .LEHE2: 288 .LVL31: 35:rethrow.cpp **** } 289 .loc 1 35 0 is_stmt 0 discriminator 1 290 00e8 4889E6 movq %rsp, %rsi 291 00eb 4889DF movq %rbx, %rdi 292 00ee E8000000 call _ZN12MyExceptionBC1ESs 292 00 293 .LVL32: 294 00f3 4889E7 movq %rsp, %rdi 295 00f6 E8000000 call _ZNSsD1Ev 295 00 296 .LVL33: 297 00fb BA000000 movl $_ZN12MyExceptionBD1Ev, %edx 297 00 298 0100 BE000000 movl $_ZTI12MyExceptionB, %esi 298 00 GAS LISTING /tmp/ccrG9BDx.s page 15 299 0105 4889DF movq %rbx, %rdi 300 .LEHB3: 301 0108 E8000000 call __cxa_throw 301 00 302 .LEHE3: 303 .LVL34: 304 .L24: 305 010d 4989C4 movq %rax, %r12 306 0110 4889D5 movq %rdx, %rbp 307 .LVL35: 35:rethrow.cpp **** } 308 .loc 1 35 0 309 0113 4889DF movq %rbx, %rdi 310 0116 E8000000 call __cxa_free_exception 310 00 311 .LVL36: 312 011b 4C89E7 movq %r12, %rdi 313 011e 4889EA movq %rbp, %rdx 314 0121 EB03 jmp .L22 315 .LVL37: 316 .L25: 317 0123 4889C7 movq %rax, %rdi 318 .LVL38: 319 .L22: 320 0126 4883FAFF cmpq $-1, %rdx 321 012a 7405 je .L23 322 .LEHB4: 323 012c E8000000 call _Unwind_Resume 323 00 324 .LVL39: 325 .L23: 34:rethrow.cpp **** throw MyExceptionB(message); 326 .loc 1 34 0 is_stmt 1 327 0131 E8000000 call __cxa_call_unexpected 327 00 328 .LEHE4: 329 .LVL40: 330 .cfi_endproc 331 .LFE1252: 332 .section .gcc_except_table 333 0015 000000 .align 4 334 .LLSDA1252: 335 0018 FF .byte 0xff 336 0019 03 .byte 0x3 337 001a 19 .uleb128 .LLSDATT1252-.LLSDATTD1252 338 .LLSDATTD1252: 339 001b 01 .byte 0x1 340 001c 0C .uleb128 .LLSDACSE1252-.LLSDACSB1252 341 .LLSDACSB1252: 342 001d 1E .uleb128 .LEHB2-.LFB1252 343 001e 05 .uleb128 .LEHE2-.LEHB2 344 001f 48 .uleb128 .L24-.LFB1252 345 0020 03 .uleb128 0x3 346 0021 43 .uleb128 .LEHB3-.LFB1252 347 0022 05 .uleb128 .LEHE3-.LEHB3 348 0023 5E .uleb128 .L25-.LFB1252 349 0024 01 .uleb128 0x1 GAS LISTING /tmp/ccrG9BDx.s page 16 350 0025 67 .uleb128 .LEHB4-.LFB1252 351 0026 0A .uleb128 .LEHE4-.LEHB4 352 0027 00 .uleb128 0 353 0028 00 .uleb128 0 354 .LLSDACSE1252: 355 0029 7F .byte 0x7f 356 002a 00 .byte 0 357 002b 00 .byte 0 358 002c 7D .byte 0x7d 359 002d 000000 .align 4 360 0030 00000000 .long _ZTI12MyExceptionB 361 .LLSDATT1252: 362 0034 01 .byte 0x1 363 0035 00 .byte 0 364 .text 366 .section .rodata.str1.1,"aMS",@progbits,1 367 .LC0: 368 0000 42617200 .string "Bar" 369 .text 370 .globl _Z12doesnt_throwv 372 _Z12doesnt_throwv: 373 .LFB1261: 56:rethrow.cpp **** throw_MyExceptionB("Bar"); 374 .loc 1 56 0 375 .cfi_startproc 376 .cfi_personality 0x3,__gxx_personality_v0 377 .cfi_lsda 0x3,.LLSDA1261 378 0136 55 pushq %rbp 379 .cfi_def_cfa_offset 16 380 .cfi_offset 6, -16 381 0137 53 pushq %rbx 382 .cfi_def_cfa_offset 24 383 .cfi_offset 3, -24 384 0138 4883EC28 subq $40, %rsp 385 .cfi_def_cfa_offset 64 57:rethrow.cpp **** } 386 .loc 1 57 0 387 013c 488D5424 leaq 15(%rsp), %rdx 387 0F 388 0141 BE000000 movl $.LC0, %esi 388 00 389 0146 488D7C24 leaq 16(%rsp), %rdi 389 10 390 .LEHB5: 391 014b E8000000 call _ZNSsC1EPKcRKSaIcE 391 00 392 .LEHE5: 393 .LVL41: 57:rethrow.cpp **** } 394 .loc 1 57 0 is_stmt 0 discriminator 1 395 0150 488D7C24 leaq 16(%rsp), %rdi 395 10 396 .LEHB6: 397 0155 E8000000 call _Z18throw_MyExceptionBSs 397 00 398 .LEHE6: 399 .LVL42: GAS LISTING /tmp/ccrG9BDx.s page 17 400 .L32: 401 015a 4889C5 movq %rax, %rbp 402 015d 4889D3 movq %rdx, %rbx 57:rethrow.cpp **** } 403 .loc 1 57 0 404 0160 488D7C24 leaq 16(%rsp), %rdi 404 10 405 0165 E8000000 call _ZNSsD1Ev 405 00 406 .LVL43: 407 016a 4889EF movq %rbp, %rdi 408 016d 4889DA movq %rbx, %rdx 409 0170 EB03 jmp .L29 410 .L31: 411 0172 4889C7 movq %rax, %rdi 412 .L29: 413 0175 4883FAFF cmpq $-1, %rdx 414 0179 7405 je .L30 415 .LEHB7: 416 017b E8000000 call _Unwind_Resume 416 00 417 .LVL44: 418 .L30: 56:rethrow.cpp **** throw_MyExceptionB("Bar"); 419 .loc 1 56 0 is_stmt 1 420 0180 E8000000 call __cxa_call_unexpected 420 00 421 .LEHE7: 422 .LVL45: 423 .cfi_endproc 424 .LFE1261: 425 .section .gcc_except_table 426 0036 0000 .align 4 427 .LLSDA1261: 428 0038 FF .byte 0xff 429 0039 03 .byte 0x3 430 003a 15 .uleb128 .LLSDATT1261-.LLSDATTD1261 431 .LLSDATTD1261: 432 003b 01 .byte 0x1 433 003c 0C .uleb128 .LLSDACSE1261-.LLSDACSB1261 434 .LLSDACSB1261: 435 003d 15 .uleb128 .LEHB5-.LFB1261 436 003e 05 .uleb128 .LEHE5-.LEHB5 437 003f 3C .uleb128 .L31-.LFB1261 438 0040 01 .uleb128 0x1 439 0041 1F .uleb128 .LEHB6-.LFB1261 440 0042 05 .uleb128 .LEHE6-.LEHB6 441 0043 24 .uleb128 .L32-.LFB1261 442 0044 03 .uleb128 0x3 443 0045 45 .uleb128 .LEHB7-.LFB1261 444 0046 0A .uleb128 .LEHE7-.LEHB7 445 0047 00 .uleb128 0 446 0048 00 .uleb128 0 447 .LLSDACSE1261: 448 0049 7F .byte 0x7f 449 004a 00 .byte 0 450 004b 00 .byte 0 GAS LISTING /tmp/ccrG9BDx.s page 18 451 004c 7D .byte 0x7d 452 004d 000000 .align 4 453 .LLSDATT1261: 454 0050 00 .byte 0 455 .text 457 .section .text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_,"axG",@progbits,_ZStplIcSt11 458 .weak _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ 460 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_: 461 .LFB1317: 462 .file 5 "/usr/include/c++/4.8/bits/basic_string.tcc" 1:/usr/include/c++/4.8/bits/basic_string.tcc **** // Components for manipulating sequences of characters -*- C++ -*- 2:/usr/include/c++/4.8/bits/basic_string.tcc **** 3:/usr/include/c++/4.8/bits/basic_string.tcc **** // Copyright (C) 1997-2013 Free Software Foundation, Inc. 4:/usr/include/c++/4.8/bits/basic_string.tcc **** // 5:/usr/include/c++/4.8/bits/basic_string.tcc **** // This file is part of the GNU ISO C++ Library. This library is free 6:/usr/include/c++/4.8/bits/basic_string.tcc **** // software; you can redistribute it and/or modify it under the 7:/usr/include/c++/4.8/bits/basic_string.tcc **** // terms of the GNU General Public License as published by the 8:/usr/include/c++/4.8/bits/basic_string.tcc **** // Free Software Foundation; either version 3, or (at your option) 9:/usr/include/c++/4.8/bits/basic_string.tcc **** // any later version. 10:/usr/include/c++/4.8/bits/basic_string.tcc **** 11:/usr/include/c++/4.8/bits/basic_string.tcc **** // This library is distributed in the hope that it will be useful, 12:/usr/include/c++/4.8/bits/basic_string.tcc **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 13:/usr/include/c++/4.8/bits/basic_string.tcc **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14:/usr/include/c++/4.8/bits/basic_string.tcc **** // GNU General Public License for more details. 15:/usr/include/c++/4.8/bits/basic_string.tcc **** 16:/usr/include/c++/4.8/bits/basic_string.tcc **** // Under Section 7 of GPL version 3, you are granted additional 17:/usr/include/c++/4.8/bits/basic_string.tcc **** // permissions described in the GCC Runtime Library Exception, version 18:/usr/include/c++/4.8/bits/basic_string.tcc **** // 3.1, as published by the Free Software Foundation. 19:/usr/include/c++/4.8/bits/basic_string.tcc **** 20:/usr/include/c++/4.8/bits/basic_string.tcc **** // You should have received a copy of the GNU General Public License and 21:/usr/include/c++/4.8/bits/basic_string.tcc **** // a copy of the GCC Runtime Library Exception along with this program; 22:/usr/include/c++/4.8/bits/basic_string.tcc **** // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23:/usr/include/c++/4.8/bits/basic_string.tcc **** // . 24:/usr/include/c++/4.8/bits/basic_string.tcc **** 25:/usr/include/c++/4.8/bits/basic_string.tcc **** /** @file bits/basic_string.tcc 26:/usr/include/c++/4.8/bits/basic_string.tcc **** * This is an internal header file, included by other library headers. 27:/usr/include/c++/4.8/bits/basic_string.tcc **** * Do not attempt to use it directly. @headername{string} 28:/usr/include/c++/4.8/bits/basic_string.tcc **** */ 29:/usr/include/c++/4.8/bits/basic_string.tcc **** 30:/usr/include/c++/4.8/bits/basic_string.tcc **** // 31:/usr/include/c++/4.8/bits/basic_string.tcc **** // ISO C++ 14882: 21 Strings library 32:/usr/include/c++/4.8/bits/basic_string.tcc **** // 33:/usr/include/c++/4.8/bits/basic_string.tcc **** 34:/usr/include/c++/4.8/bits/basic_string.tcc **** // Written by Jason Merrill based upon the specification by Takanori Adachi 35:/usr/include/c++/4.8/bits/basic_string.tcc **** // in ANSI X3J16/94-0013R2. Rewritten by Nathan Myers to ISO-14882. 36:/usr/include/c++/4.8/bits/basic_string.tcc **** 37:/usr/include/c++/4.8/bits/basic_string.tcc **** #ifndef _BASIC_STRING_TCC 38:/usr/include/c++/4.8/bits/basic_string.tcc **** #define _BASIC_STRING_TCC 1 39:/usr/include/c++/4.8/bits/basic_string.tcc **** 40:/usr/include/c++/4.8/bits/basic_string.tcc **** #pragma GCC system_header 41:/usr/include/c++/4.8/bits/basic_string.tcc **** 42:/usr/include/c++/4.8/bits/basic_string.tcc **** #include 43:/usr/include/c++/4.8/bits/basic_string.tcc **** 44:/usr/include/c++/4.8/bits/basic_string.tcc **** namespace std _GLIBCXX_VISIBILITY(default) 45:/usr/include/c++/4.8/bits/basic_string.tcc **** { 46:/usr/include/c++/4.8/bits/basic_string.tcc **** _GLIBCXX_BEGIN_NAMESPACE_VERSION 47:/usr/include/c++/4.8/bits/basic_string.tcc **** GAS LISTING /tmp/ccrG9BDx.s page 19 48:/usr/include/c++/4.8/bits/basic_string.tcc **** template 49:/usr/include/c++/4.8/bits/basic_string.tcc **** const typename basic_string<_CharT, _Traits, _Alloc>::size_type 50:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 51:/usr/include/c++/4.8/bits/basic_string.tcc **** _Rep::_S_max_size = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4; 52:/usr/include/c++/4.8/bits/basic_string.tcc **** 53:/usr/include/c++/4.8/bits/basic_string.tcc **** template 54:/usr/include/c++/4.8/bits/basic_string.tcc **** const _CharT 55:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 56:/usr/include/c++/4.8/bits/basic_string.tcc **** _Rep::_S_terminal = _CharT(); 57:/usr/include/c++/4.8/bits/basic_string.tcc **** 58:/usr/include/c++/4.8/bits/basic_string.tcc **** template 59:/usr/include/c++/4.8/bits/basic_string.tcc **** const typename basic_string<_CharT, _Traits, _Alloc>::size_type 60:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::npos; 61:/usr/include/c++/4.8/bits/basic_string.tcc **** 62:/usr/include/c++/4.8/bits/basic_string.tcc **** // Linker sets _S_empty_rep_storage to all 0s (one reference, empty string) 63:/usr/include/c++/4.8/bits/basic_string.tcc **** // at static init time (before static ctors are run). 64:/usr/include/c++/4.8/bits/basic_string.tcc **** template 65:/usr/include/c++/4.8/bits/basic_string.tcc **** typename basic_string<_CharT, _Traits, _Alloc>::size_type 66:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[ 67:/usr/include/c++/4.8/bits/basic_string.tcc **** (sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1) / 68:/usr/include/c++/4.8/bits/basic_string.tcc **** sizeof(size_type)]; 69:/usr/include/c++/4.8/bits/basic_string.tcc **** 70:/usr/include/c++/4.8/bits/basic_string.tcc **** // NB: This is the special case for Input Iterators, used in 71:/usr/include/c++/4.8/bits/basic_string.tcc **** // istreambuf_iterators, etc. 72:/usr/include/c++/4.8/bits/basic_string.tcc **** // Input Iterators have a cost structure very different from 73:/usr/include/c++/4.8/bits/basic_string.tcc **** // pointers, calling for a different coding style. 74:/usr/include/c++/4.8/bits/basic_string.tcc **** template 75:/usr/include/c++/4.8/bits/basic_string.tcc **** template 76:/usr/include/c++/4.8/bits/basic_string.tcc **** _CharT* 77:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 78:/usr/include/c++/4.8/bits/basic_string.tcc **** _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, 79:/usr/include/c++/4.8/bits/basic_string.tcc **** input_iterator_tag) 80:/usr/include/c++/4.8/bits/basic_string.tcc **** { 81:/usr/include/c++/4.8/bits/basic_string.tcc **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0 82:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__beg == __end && __a == _Alloc()) 83:/usr/include/c++/4.8/bits/basic_string.tcc **** return _S_empty_rep()._M_refdata(); 84:/usr/include/c++/4.8/bits/basic_string.tcc **** #endif 85:/usr/include/c++/4.8/bits/basic_string.tcc **** // Avoid reallocation for common case. 86:/usr/include/c++/4.8/bits/basic_string.tcc **** _CharT __buf[128]; 87:/usr/include/c++/4.8/bits/basic_string.tcc **** size_type __len = 0; 88:/usr/include/c++/4.8/bits/basic_string.tcc **** while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT)) 89:/usr/include/c++/4.8/bits/basic_string.tcc **** { 90:/usr/include/c++/4.8/bits/basic_string.tcc **** __buf[__len++] = *__beg; 91:/usr/include/c++/4.8/bits/basic_string.tcc **** ++__beg; 92:/usr/include/c++/4.8/bits/basic_string.tcc **** } 93:/usr/include/c++/4.8/bits/basic_string.tcc **** _Rep* __r = _Rep::_S_create(__len, size_type(0), __a); 94:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_copy(__r->_M_refdata(), __buf, __len); 95:/usr/include/c++/4.8/bits/basic_string.tcc **** __try 96:/usr/include/c++/4.8/bits/basic_string.tcc **** { 97:/usr/include/c++/4.8/bits/basic_string.tcc **** while (__beg != __end) 98:/usr/include/c++/4.8/bits/basic_string.tcc **** { 99:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__len == __r->_M_capacity) 100:/usr/include/c++/4.8/bits/basic_string.tcc **** { 101:/usr/include/c++/4.8/bits/basic_string.tcc **** // Allocate more space. 102:/usr/include/c++/4.8/bits/basic_string.tcc **** _Rep* __another = _Rep::_S_create(__len + 1, __len, __a); 103:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_copy(__another->_M_refdata(), __r->_M_refdata(), __len); 104:/usr/include/c++/4.8/bits/basic_string.tcc **** __r->_M_destroy(__a); GAS LISTING /tmp/ccrG9BDx.s page 20 105:/usr/include/c++/4.8/bits/basic_string.tcc **** __r = __another; 106:/usr/include/c++/4.8/bits/basic_string.tcc **** } 107:/usr/include/c++/4.8/bits/basic_string.tcc **** __r->_M_refdata()[__len++] = *__beg; 108:/usr/include/c++/4.8/bits/basic_string.tcc **** ++__beg; 109:/usr/include/c++/4.8/bits/basic_string.tcc **** } 110:/usr/include/c++/4.8/bits/basic_string.tcc **** } 111:/usr/include/c++/4.8/bits/basic_string.tcc **** __catch(...) 112:/usr/include/c++/4.8/bits/basic_string.tcc **** { 113:/usr/include/c++/4.8/bits/basic_string.tcc **** __r->_M_destroy(__a); 114:/usr/include/c++/4.8/bits/basic_string.tcc **** __throw_exception_again; 115:/usr/include/c++/4.8/bits/basic_string.tcc **** } 116:/usr/include/c++/4.8/bits/basic_string.tcc **** __r->_M_set_length_and_sharable(__len); 117:/usr/include/c++/4.8/bits/basic_string.tcc **** return __r->_M_refdata(); 118:/usr/include/c++/4.8/bits/basic_string.tcc **** } 119:/usr/include/c++/4.8/bits/basic_string.tcc **** 120:/usr/include/c++/4.8/bits/basic_string.tcc **** template 121:/usr/include/c++/4.8/bits/basic_string.tcc **** template 122:/usr/include/c++/4.8/bits/basic_string.tcc **** _CharT* 123:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 124:/usr/include/c++/4.8/bits/basic_string.tcc **** _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, 125:/usr/include/c++/4.8/bits/basic_string.tcc **** forward_iterator_tag) 126:/usr/include/c++/4.8/bits/basic_string.tcc **** { 127:/usr/include/c++/4.8/bits/basic_string.tcc **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0 128:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__beg == __end && __a == _Alloc()) 129:/usr/include/c++/4.8/bits/basic_string.tcc **** return _S_empty_rep()._M_refdata(); 130:/usr/include/c++/4.8/bits/basic_string.tcc **** #endif 131:/usr/include/c++/4.8/bits/basic_string.tcc **** // NB: Not required, but considered best practice. 132:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end) 133:/usr/include/c++/4.8/bits/basic_string.tcc **** __throw_logic_error(__N("basic_string::_S_construct null not valid")); 134:/usr/include/c++/4.8/bits/basic_string.tcc **** 135:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __dnew = static_cast(std::distance(__beg, 136:/usr/include/c++/4.8/bits/basic_string.tcc **** __end)); 137:/usr/include/c++/4.8/bits/basic_string.tcc **** // Check for out_of_range and length_error exceptions. 138:/usr/include/c++/4.8/bits/basic_string.tcc **** _Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a); 139:/usr/include/c++/4.8/bits/basic_string.tcc **** __try 140:/usr/include/c++/4.8/bits/basic_string.tcc **** { _S_copy_chars(__r->_M_refdata(), __beg, __end); } 141:/usr/include/c++/4.8/bits/basic_string.tcc **** __catch(...) 142:/usr/include/c++/4.8/bits/basic_string.tcc **** { 143:/usr/include/c++/4.8/bits/basic_string.tcc **** __r->_M_destroy(__a); 144:/usr/include/c++/4.8/bits/basic_string.tcc **** __throw_exception_again; 145:/usr/include/c++/4.8/bits/basic_string.tcc **** } 146:/usr/include/c++/4.8/bits/basic_string.tcc **** __r->_M_set_length_and_sharable(__dnew); 147:/usr/include/c++/4.8/bits/basic_string.tcc **** return __r->_M_refdata(); 148:/usr/include/c++/4.8/bits/basic_string.tcc **** } 149:/usr/include/c++/4.8/bits/basic_string.tcc **** 150:/usr/include/c++/4.8/bits/basic_string.tcc **** template 151:/usr/include/c++/4.8/bits/basic_string.tcc **** _CharT* 152:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 153:/usr/include/c++/4.8/bits/basic_string.tcc **** _S_construct(size_type __n, _CharT __c, const _Alloc& __a) 154:/usr/include/c++/4.8/bits/basic_string.tcc **** { 155:/usr/include/c++/4.8/bits/basic_string.tcc **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0 156:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__n == 0 && __a == _Alloc()) 157:/usr/include/c++/4.8/bits/basic_string.tcc **** return _S_empty_rep()._M_refdata(); 158:/usr/include/c++/4.8/bits/basic_string.tcc **** #endif 159:/usr/include/c++/4.8/bits/basic_string.tcc **** // Check for out_of_range and length_error exceptions. 160:/usr/include/c++/4.8/bits/basic_string.tcc **** _Rep* __r = _Rep::_S_create(__n, size_type(0), __a); 161:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__n) GAS LISTING /tmp/ccrG9BDx.s page 21 162:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_assign(__r->_M_refdata(), __n, __c); 163:/usr/include/c++/4.8/bits/basic_string.tcc **** 164:/usr/include/c++/4.8/bits/basic_string.tcc **** __r->_M_set_length_and_sharable(__n); 165:/usr/include/c++/4.8/bits/basic_string.tcc **** return __r->_M_refdata(); 166:/usr/include/c++/4.8/bits/basic_string.tcc **** } 167:/usr/include/c++/4.8/bits/basic_string.tcc **** 168:/usr/include/c++/4.8/bits/basic_string.tcc **** template 169:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 170:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string(const basic_string& __str) 171:/usr/include/c++/4.8/bits/basic_string.tcc **** : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(__str.get_allocator()), 172:/usr/include/c++/4.8/bits/basic_string.tcc **** __str.get_allocator()), 173:/usr/include/c++/4.8/bits/basic_string.tcc **** __str.get_allocator()) 174:/usr/include/c++/4.8/bits/basic_string.tcc **** { } 175:/usr/include/c++/4.8/bits/basic_string.tcc **** 176:/usr/include/c++/4.8/bits/basic_string.tcc **** template 177:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 178:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string(const _Alloc& __a) 179:/usr/include/c++/4.8/bits/basic_string.tcc **** : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a) 180:/usr/include/c++/4.8/bits/basic_string.tcc **** { } 181:/usr/include/c++/4.8/bits/basic_string.tcc **** 182:/usr/include/c++/4.8/bits/basic_string.tcc **** template 183:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 184:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string(const basic_string& __str, size_type __pos, size_type __n) 185:/usr/include/c++/4.8/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__str._M_data() 186:/usr/include/c++/4.8/bits/basic_string.tcc **** + __str._M_check(__pos, 187:/usr/include/c++/4.8/bits/basic_string.tcc **** "basic_string::basic_string"), 188:/usr/include/c++/4.8/bits/basic_string.tcc **** __str._M_data() + __str._M_limit(__pos, __n) 189:/usr/include/c++/4.8/bits/basic_string.tcc **** + __pos, _Alloc()), _Alloc()) 190:/usr/include/c++/4.8/bits/basic_string.tcc **** { } 191:/usr/include/c++/4.8/bits/basic_string.tcc **** 192:/usr/include/c++/4.8/bits/basic_string.tcc **** template 193:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 194:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string(const basic_string& __str, size_type __pos, 195:/usr/include/c++/4.8/bits/basic_string.tcc **** size_type __n, const _Alloc& __a) 196:/usr/include/c++/4.8/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__str._M_data() 197:/usr/include/c++/4.8/bits/basic_string.tcc **** + __str._M_check(__pos, 198:/usr/include/c++/4.8/bits/basic_string.tcc **** "basic_string::basic_string"), 199:/usr/include/c++/4.8/bits/basic_string.tcc **** __str._M_data() + __str._M_limit(__pos, __n) 200:/usr/include/c++/4.8/bits/basic_string.tcc **** + __pos, __a), __a) 201:/usr/include/c++/4.8/bits/basic_string.tcc **** { } 202:/usr/include/c++/4.8/bits/basic_string.tcc **** 203:/usr/include/c++/4.8/bits/basic_string.tcc **** // TBD: DPG annotate 204:/usr/include/c++/4.8/bits/basic_string.tcc **** template 205:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 206:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string(const _CharT* __s, size_type __n, const _Alloc& __a) 207:/usr/include/c++/4.8/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__s, __s + __n, __a), __a) 208:/usr/include/c++/4.8/bits/basic_string.tcc **** { } 209:/usr/include/c++/4.8/bits/basic_string.tcc **** 210:/usr/include/c++/4.8/bits/basic_string.tcc **** // TBD: DPG annotate 211:/usr/include/c++/4.8/bits/basic_string.tcc **** template 212:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 213:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string(const _CharT* __s, const _Alloc& __a) 214:/usr/include/c++/4.8/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) : 215:/usr/include/c++/4.8/bits/basic_string.tcc **** __s + npos, __a), __a) 216:/usr/include/c++/4.8/bits/basic_string.tcc **** { } 217:/usr/include/c++/4.8/bits/basic_string.tcc **** 218:/usr/include/c++/4.8/bits/basic_string.tcc **** template GAS LISTING /tmp/ccrG9BDx.s page 22 219:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 220:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string(size_type __n, _CharT __c, const _Alloc& __a) 221:/usr/include/c++/4.8/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__n, __c, __a), __a) 222:/usr/include/c++/4.8/bits/basic_string.tcc **** { } 223:/usr/include/c++/4.8/bits/basic_string.tcc **** 224:/usr/include/c++/4.8/bits/basic_string.tcc **** // TBD: DPG annotate 225:/usr/include/c++/4.8/bits/basic_string.tcc **** template 226:/usr/include/c++/4.8/bits/basic_string.tcc **** template 227:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 228:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a) 229:/usr/include/c++/4.8/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__beg, __end, __a), __a) 230:/usr/include/c++/4.8/bits/basic_string.tcc **** { } 231:/usr/include/c++/4.8/bits/basic_string.tcc **** 232:/usr/include/c++/4.8/bits/basic_string.tcc **** #if __cplusplus >= 201103L 233:/usr/include/c++/4.8/bits/basic_string.tcc **** template 234:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 235:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string(initializer_list<_CharT> __l, const _Alloc& __a) 236:/usr/include/c++/4.8/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__l.begin(), __l.end(), __a), __a) 237:/usr/include/c++/4.8/bits/basic_string.tcc **** { } 238:/usr/include/c++/4.8/bits/basic_string.tcc **** #endif 239:/usr/include/c++/4.8/bits/basic_string.tcc **** 240:/usr/include/c++/4.8/bits/basic_string.tcc **** template 241:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 242:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 243:/usr/include/c++/4.8/bits/basic_string.tcc **** assign(const basic_string& __str) 244:/usr/include/c++/4.8/bits/basic_string.tcc **** { 245:/usr/include/c++/4.8/bits/basic_string.tcc **** if (_M_rep() != __str._M_rep()) 246:/usr/include/c++/4.8/bits/basic_string.tcc **** { 247:/usr/include/c++/4.8/bits/basic_string.tcc **** // XXX MT 248:/usr/include/c++/4.8/bits/basic_string.tcc **** const allocator_type __a = this->get_allocator(); 249:/usr/include/c++/4.8/bits/basic_string.tcc **** _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator()); 250:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_rep()->_M_dispose(__a); 251:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_data(__tmp); 252:/usr/include/c++/4.8/bits/basic_string.tcc **** } 253:/usr/include/c++/4.8/bits/basic_string.tcc **** return *this; 254:/usr/include/c++/4.8/bits/basic_string.tcc **** } 255:/usr/include/c++/4.8/bits/basic_string.tcc **** 256:/usr/include/c++/4.8/bits/basic_string.tcc **** template 257:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 258:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 259:/usr/include/c++/4.8/bits/basic_string.tcc **** assign(const _CharT* __s, size_type __n) 260:/usr/include/c++/4.8/bits/basic_string.tcc **** { 261:/usr/include/c++/4.8/bits/basic_string.tcc **** __glibcxx_requires_string_len(__s, __n); 262:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_check_length(this->size(), __n, "basic_string::assign"); 263:/usr/include/c++/4.8/bits/basic_string.tcc **** if (_M_disjunct(__s) || _M_rep()->_M_is_shared()) 264:/usr/include/c++/4.8/bits/basic_string.tcc **** return _M_replace_safe(size_type(0), this->size(), __s, __n); 265:/usr/include/c++/4.8/bits/basic_string.tcc **** else 266:/usr/include/c++/4.8/bits/basic_string.tcc **** { 267:/usr/include/c++/4.8/bits/basic_string.tcc **** // Work in-place. 268:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __pos = __s - _M_data(); 269:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__pos >= __n) 270:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_copy(_M_data(), __s, __n); 271:/usr/include/c++/4.8/bits/basic_string.tcc **** else if (__pos) 272:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_move(_M_data(), __s, __n); 273:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_rep()->_M_set_length_and_sharable(__n); 274:/usr/include/c++/4.8/bits/basic_string.tcc **** return *this; 275:/usr/include/c++/4.8/bits/basic_string.tcc **** } GAS LISTING /tmp/ccrG9BDx.s page 23 276:/usr/include/c++/4.8/bits/basic_string.tcc **** } 277:/usr/include/c++/4.8/bits/basic_string.tcc **** 278:/usr/include/c++/4.8/bits/basic_string.tcc **** template 279:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 280:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 281:/usr/include/c++/4.8/bits/basic_string.tcc **** append(size_type __n, _CharT __c) 282:/usr/include/c++/4.8/bits/basic_string.tcc **** { 283:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__n) 284:/usr/include/c++/4.8/bits/basic_string.tcc **** { 285:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_check_length(size_type(0), __n, "basic_string::append"); 286:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __len = __n + this->size(); 287:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__len > this->capacity() || _M_rep()->_M_is_shared()) 288:/usr/include/c++/4.8/bits/basic_string.tcc **** this->reserve(__len); 289:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_assign(_M_data() + this->size(), __n, __c); 290:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_rep()->_M_set_length_and_sharable(__len); 291:/usr/include/c++/4.8/bits/basic_string.tcc **** } 292:/usr/include/c++/4.8/bits/basic_string.tcc **** return *this; 293:/usr/include/c++/4.8/bits/basic_string.tcc **** } 294:/usr/include/c++/4.8/bits/basic_string.tcc **** 295:/usr/include/c++/4.8/bits/basic_string.tcc **** template 296:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 297:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 298:/usr/include/c++/4.8/bits/basic_string.tcc **** append(const _CharT* __s, size_type __n) 299:/usr/include/c++/4.8/bits/basic_string.tcc **** { 300:/usr/include/c++/4.8/bits/basic_string.tcc **** __glibcxx_requires_string_len(__s, __n); 301:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__n) 302:/usr/include/c++/4.8/bits/basic_string.tcc **** { 303:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_check_length(size_type(0), __n, "basic_string::append"); 304:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __len = __n + this->size(); 305:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__len > this->capacity() || _M_rep()->_M_is_shared()) 306:/usr/include/c++/4.8/bits/basic_string.tcc **** { 307:/usr/include/c++/4.8/bits/basic_string.tcc **** if (_M_disjunct(__s)) 308:/usr/include/c++/4.8/bits/basic_string.tcc **** this->reserve(__len); 309:/usr/include/c++/4.8/bits/basic_string.tcc **** else 310:/usr/include/c++/4.8/bits/basic_string.tcc **** { 311:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __off = __s - _M_data(); 312:/usr/include/c++/4.8/bits/basic_string.tcc **** this->reserve(__len); 313:/usr/include/c++/4.8/bits/basic_string.tcc **** __s = _M_data() + __off; 314:/usr/include/c++/4.8/bits/basic_string.tcc **** } 315:/usr/include/c++/4.8/bits/basic_string.tcc **** } 316:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_copy(_M_data() + this->size(), __s, __n); 317:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_rep()->_M_set_length_and_sharable(__len); 318:/usr/include/c++/4.8/bits/basic_string.tcc **** } 319:/usr/include/c++/4.8/bits/basic_string.tcc **** return *this; 320:/usr/include/c++/4.8/bits/basic_string.tcc **** } 321:/usr/include/c++/4.8/bits/basic_string.tcc **** 322:/usr/include/c++/4.8/bits/basic_string.tcc **** template 323:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 324:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 325:/usr/include/c++/4.8/bits/basic_string.tcc **** append(const basic_string& __str) 326:/usr/include/c++/4.8/bits/basic_string.tcc **** { 327:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __size = __str.size(); 328:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__size) 329:/usr/include/c++/4.8/bits/basic_string.tcc **** { 330:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __len = __size + this->size(); 331:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__len > this->capacity() || _M_rep()->_M_is_shared()) 332:/usr/include/c++/4.8/bits/basic_string.tcc **** this->reserve(__len); GAS LISTING /tmp/ccrG9BDx.s page 24 333:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_copy(_M_data() + this->size(), __str._M_data(), __size); 334:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_rep()->_M_set_length_and_sharable(__len); 335:/usr/include/c++/4.8/bits/basic_string.tcc **** } 336:/usr/include/c++/4.8/bits/basic_string.tcc **** return *this; 337:/usr/include/c++/4.8/bits/basic_string.tcc **** } 338:/usr/include/c++/4.8/bits/basic_string.tcc **** 339:/usr/include/c++/4.8/bits/basic_string.tcc **** template 340:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 341:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 342:/usr/include/c++/4.8/bits/basic_string.tcc **** append(const basic_string& __str, size_type __pos, size_type __n) 343:/usr/include/c++/4.8/bits/basic_string.tcc **** { 344:/usr/include/c++/4.8/bits/basic_string.tcc **** __str._M_check(__pos, "basic_string::append"); 345:/usr/include/c++/4.8/bits/basic_string.tcc **** __n = __str._M_limit(__pos, __n); 346:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__n) 347:/usr/include/c++/4.8/bits/basic_string.tcc **** { 348:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __len = __n + this->size(); 349:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__len > this->capacity() || _M_rep()->_M_is_shared()) 350:/usr/include/c++/4.8/bits/basic_string.tcc **** this->reserve(__len); 351:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_copy(_M_data() + this->size(), __str._M_data() + __pos, __n); 352:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_rep()->_M_set_length_and_sharable(__len); 353:/usr/include/c++/4.8/bits/basic_string.tcc **** } 354:/usr/include/c++/4.8/bits/basic_string.tcc **** return *this; 355:/usr/include/c++/4.8/bits/basic_string.tcc **** } 356:/usr/include/c++/4.8/bits/basic_string.tcc **** 357:/usr/include/c++/4.8/bits/basic_string.tcc **** template 358:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 359:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 360:/usr/include/c++/4.8/bits/basic_string.tcc **** insert(size_type __pos, const _CharT* __s, size_type __n) 361:/usr/include/c++/4.8/bits/basic_string.tcc **** { 362:/usr/include/c++/4.8/bits/basic_string.tcc **** __glibcxx_requires_string_len(__s, __n); 363:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_check(__pos, "basic_string::insert"); 364:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_check_length(size_type(0), __n, "basic_string::insert"); 365:/usr/include/c++/4.8/bits/basic_string.tcc **** if (_M_disjunct(__s) || _M_rep()->_M_is_shared()) 366:/usr/include/c++/4.8/bits/basic_string.tcc **** return _M_replace_safe(__pos, size_type(0), __s, __n); 367:/usr/include/c++/4.8/bits/basic_string.tcc **** else 368:/usr/include/c++/4.8/bits/basic_string.tcc **** { 369:/usr/include/c++/4.8/bits/basic_string.tcc **** // Work in-place. 370:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __off = __s - _M_data(); 371:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_mutate(__pos, 0, __n); 372:/usr/include/c++/4.8/bits/basic_string.tcc **** __s = _M_data() + __off; 373:/usr/include/c++/4.8/bits/basic_string.tcc **** _CharT* __p = _M_data() + __pos; 374:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__s + __n <= __p) 375:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_copy(__p, __s, __n); 376:/usr/include/c++/4.8/bits/basic_string.tcc **** else if (__s >= __p) 377:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_copy(__p, __s + __n, __n); 378:/usr/include/c++/4.8/bits/basic_string.tcc **** else 379:/usr/include/c++/4.8/bits/basic_string.tcc **** { 380:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __nleft = __p - __s; 381:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_copy(__p, __s, __nleft); 382:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_copy(__p + __nleft, __p + __n, __n - __nleft); 383:/usr/include/c++/4.8/bits/basic_string.tcc **** } 384:/usr/include/c++/4.8/bits/basic_string.tcc **** return *this; 385:/usr/include/c++/4.8/bits/basic_string.tcc **** } 386:/usr/include/c++/4.8/bits/basic_string.tcc **** } 387:/usr/include/c++/4.8/bits/basic_string.tcc **** 388:/usr/include/c++/4.8/bits/basic_string.tcc **** template 389:/usr/include/c++/4.8/bits/basic_string.tcc **** typename basic_string<_CharT, _Traits, _Alloc>::iterator GAS LISTING /tmp/ccrG9BDx.s page 25 390:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 391:/usr/include/c++/4.8/bits/basic_string.tcc **** erase(iterator __first, iterator __last) 392:/usr/include/c++/4.8/bits/basic_string.tcc **** { 393:/usr/include/c++/4.8/bits/basic_string.tcc **** _GLIBCXX_DEBUG_PEDASSERT(__first >= _M_ibegin() && __first <= __last 394:/usr/include/c++/4.8/bits/basic_string.tcc **** && __last <= _M_iend()); 395:/usr/include/c++/4.8/bits/basic_string.tcc **** 396:/usr/include/c++/4.8/bits/basic_string.tcc **** // NB: This isn't just an optimization (bail out early when 397:/usr/include/c++/4.8/bits/basic_string.tcc **** // there is nothing to do, really), it's also a correctness 398:/usr/include/c++/4.8/bits/basic_string.tcc **** // issue vs MT, see libstdc++/40518. 399:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __size = __last - __first; 400:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__size) 401:/usr/include/c++/4.8/bits/basic_string.tcc **** { 402:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __pos = __first - _M_ibegin(); 403:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_mutate(__pos, __size, size_type(0)); 404:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_rep()->_M_set_leaked(); 405:/usr/include/c++/4.8/bits/basic_string.tcc **** return iterator(_M_data() + __pos); 406:/usr/include/c++/4.8/bits/basic_string.tcc **** } 407:/usr/include/c++/4.8/bits/basic_string.tcc **** else 408:/usr/include/c++/4.8/bits/basic_string.tcc **** return __first; 409:/usr/include/c++/4.8/bits/basic_string.tcc **** } 410:/usr/include/c++/4.8/bits/basic_string.tcc **** 411:/usr/include/c++/4.8/bits/basic_string.tcc **** template 412:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 413:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 414:/usr/include/c++/4.8/bits/basic_string.tcc **** replace(size_type __pos, size_type __n1, const _CharT* __s, 415:/usr/include/c++/4.8/bits/basic_string.tcc **** size_type __n2) 416:/usr/include/c++/4.8/bits/basic_string.tcc **** { 417:/usr/include/c++/4.8/bits/basic_string.tcc **** __glibcxx_requires_string_len(__s, __n2); 418:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_check(__pos, "basic_string::replace"); 419:/usr/include/c++/4.8/bits/basic_string.tcc **** __n1 = _M_limit(__pos, __n1); 420:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_check_length(__n1, __n2, "basic_string::replace"); 421:/usr/include/c++/4.8/bits/basic_string.tcc **** bool __left; 422:/usr/include/c++/4.8/bits/basic_string.tcc **** if (_M_disjunct(__s) || _M_rep()->_M_is_shared()) 423:/usr/include/c++/4.8/bits/basic_string.tcc **** return _M_replace_safe(__pos, __n1, __s, __n2); 424:/usr/include/c++/4.8/bits/basic_string.tcc **** else if ((__left = __s + __n2 <= _M_data() + __pos) 425:/usr/include/c++/4.8/bits/basic_string.tcc **** || _M_data() + __pos + __n1 <= __s) 426:/usr/include/c++/4.8/bits/basic_string.tcc **** { 427:/usr/include/c++/4.8/bits/basic_string.tcc **** // Work in-place: non-overlapping case. 428:/usr/include/c++/4.8/bits/basic_string.tcc **** size_type __off = __s - _M_data(); 429:/usr/include/c++/4.8/bits/basic_string.tcc **** __left ? __off : (__off += __n2 - __n1); 430:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_mutate(__pos, __n1, __n2); 431:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_copy(_M_data() + __pos, _M_data() + __off, __n2); 432:/usr/include/c++/4.8/bits/basic_string.tcc **** return *this; 433:/usr/include/c++/4.8/bits/basic_string.tcc **** } 434:/usr/include/c++/4.8/bits/basic_string.tcc **** else 435:/usr/include/c++/4.8/bits/basic_string.tcc **** { 436:/usr/include/c++/4.8/bits/basic_string.tcc **** // Todo: overlapping case. 437:/usr/include/c++/4.8/bits/basic_string.tcc **** const basic_string __tmp(__s, __n2); 438:/usr/include/c++/4.8/bits/basic_string.tcc **** return _M_replace_safe(__pos, __n1, __tmp._M_data(), __n2); 439:/usr/include/c++/4.8/bits/basic_string.tcc **** } 440:/usr/include/c++/4.8/bits/basic_string.tcc **** } 441:/usr/include/c++/4.8/bits/basic_string.tcc **** 442:/usr/include/c++/4.8/bits/basic_string.tcc **** template 443:/usr/include/c++/4.8/bits/basic_string.tcc **** void 444:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::_Rep:: 445:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_destroy(const _Alloc& __a) throw () 446:/usr/include/c++/4.8/bits/basic_string.tcc **** { GAS LISTING /tmp/ccrG9BDx.s page 26 447:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __size = sizeof(_Rep_base) + 448:/usr/include/c++/4.8/bits/basic_string.tcc **** (this->_M_capacity + 1) * sizeof(_CharT); 449:/usr/include/c++/4.8/bits/basic_string.tcc **** _Raw_bytes_alloc(__a).deallocate(reinterpret_cast(this), __size); 450:/usr/include/c++/4.8/bits/basic_string.tcc **** } 451:/usr/include/c++/4.8/bits/basic_string.tcc **** 452:/usr/include/c++/4.8/bits/basic_string.tcc **** template 453:/usr/include/c++/4.8/bits/basic_string.tcc **** void 454:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 455:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_leak_hard() 456:/usr/include/c++/4.8/bits/basic_string.tcc **** { 457:/usr/include/c++/4.8/bits/basic_string.tcc **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0 458:/usr/include/c++/4.8/bits/basic_string.tcc **** if (_M_rep() == &_S_empty_rep()) 459:/usr/include/c++/4.8/bits/basic_string.tcc **** return; 460:/usr/include/c++/4.8/bits/basic_string.tcc **** #endif 461:/usr/include/c++/4.8/bits/basic_string.tcc **** if (_M_rep()->_M_is_shared()) 462:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_mutate(0, 0, 0); 463:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_rep()->_M_set_leaked(); 464:/usr/include/c++/4.8/bits/basic_string.tcc **** } 465:/usr/include/c++/4.8/bits/basic_string.tcc **** 466:/usr/include/c++/4.8/bits/basic_string.tcc **** template 467:/usr/include/c++/4.8/bits/basic_string.tcc **** void 468:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 469:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_mutate(size_type __pos, size_type __len1, size_type __len2) 470:/usr/include/c++/4.8/bits/basic_string.tcc **** { 471:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __old_size = this->size(); 472:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __new_size = __old_size + __len2 - __len1; 473:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __how_much = __old_size - __pos - __len1; 474:/usr/include/c++/4.8/bits/basic_string.tcc **** 475:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__new_size > this->capacity() || _M_rep()->_M_is_shared()) 476:/usr/include/c++/4.8/bits/basic_string.tcc **** { 477:/usr/include/c++/4.8/bits/basic_string.tcc **** // Must reallocate. 478:/usr/include/c++/4.8/bits/basic_string.tcc **** const allocator_type __a = get_allocator(); 479:/usr/include/c++/4.8/bits/basic_string.tcc **** _Rep* __r = _Rep::_S_create(__new_size, this->capacity(), __a); 480:/usr/include/c++/4.8/bits/basic_string.tcc **** 481:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__pos) 482:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_copy(__r->_M_refdata(), _M_data(), __pos); 483:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__how_much) 484:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_copy(__r->_M_refdata() + __pos + __len2, 485:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_data() + __pos + __len1, __how_much); 486:/usr/include/c++/4.8/bits/basic_string.tcc **** 487:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_rep()->_M_dispose(__a); 488:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_data(__r->_M_refdata()); 489:/usr/include/c++/4.8/bits/basic_string.tcc **** } 490:/usr/include/c++/4.8/bits/basic_string.tcc **** else if (__how_much && __len1 != __len2) 491:/usr/include/c++/4.8/bits/basic_string.tcc **** { 492:/usr/include/c++/4.8/bits/basic_string.tcc **** // Work in-place. 493:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_move(_M_data() + __pos + __len2, 494:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_data() + __pos + __len1, __how_much); 495:/usr/include/c++/4.8/bits/basic_string.tcc **** } 496:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_rep()->_M_set_length_and_sharable(__new_size); 497:/usr/include/c++/4.8/bits/basic_string.tcc **** } 498:/usr/include/c++/4.8/bits/basic_string.tcc **** 499:/usr/include/c++/4.8/bits/basic_string.tcc **** template 500:/usr/include/c++/4.8/bits/basic_string.tcc **** void 501:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 502:/usr/include/c++/4.8/bits/basic_string.tcc **** reserve(size_type __res) 503:/usr/include/c++/4.8/bits/basic_string.tcc **** { GAS LISTING /tmp/ccrG9BDx.s page 27 504:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__res != this->capacity() || _M_rep()->_M_is_shared()) 505:/usr/include/c++/4.8/bits/basic_string.tcc **** { 506:/usr/include/c++/4.8/bits/basic_string.tcc **** // Make sure we don't shrink below the current size 507:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__res < this->size()) 508:/usr/include/c++/4.8/bits/basic_string.tcc **** __res = this->size(); 509:/usr/include/c++/4.8/bits/basic_string.tcc **** const allocator_type __a = get_allocator(); 510:/usr/include/c++/4.8/bits/basic_string.tcc **** _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size()); 511:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_rep()->_M_dispose(__a); 512:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_data(__tmp); 513:/usr/include/c++/4.8/bits/basic_string.tcc **** } 514:/usr/include/c++/4.8/bits/basic_string.tcc **** } 515:/usr/include/c++/4.8/bits/basic_string.tcc **** 516:/usr/include/c++/4.8/bits/basic_string.tcc **** template 517:/usr/include/c++/4.8/bits/basic_string.tcc **** void 518:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 519:/usr/include/c++/4.8/bits/basic_string.tcc **** swap(basic_string& __s) 520:/usr/include/c++/4.8/bits/basic_string.tcc **** { 521:/usr/include/c++/4.8/bits/basic_string.tcc **** if (_M_rep()->_M_is_leaked()) 522:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_rep()->_M_set_sharable(); 523:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__s._M_rep()->_M_is_leaked()) 524:/usr/include/c++/4.8/bits/basic_string.tcc **** __s._M_rep()->_M_set_sharable(); 525:/usr/include/c++/4.8/bits/basic_string.tcc **** if (this->get_allocator() == __s.get_allocator()) 526:/usr/include/c++/4.8/bits/basic_string.tcc **** { 527:/usr/include/c++/4.8/bits/basic_string.tcc **** _CharT* __tmp = _M_data(); 528:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_data(__s._M_data()); 529:/usr/include/c++/4.8/bits/basic_string.tcc **** __s._M_data(__tmp); 530:/usr/include/c++/4.8/bits/basic_string.tcc **** } 531:/usr/include/c++/4.8/bits/basic_string.tcc **** // The code below can usually be optimized away. 532:/usr/include/c++/4.8/bits/basic_string.tcc **** else 533:/usr/include/c++/4.8/bits/basic_string.tcc **** { 534:/usr/include/c++/4.8/bits/basic_string.tcc **** const basic_string __tmp1(_M_ibegin(), _M_iend(), 535:/usr/include/c++/4.8/bits/basic_string.tcc **** __s.get_allocator()); 536:/usr/include/c++/4.8/bits/basic_string.tcc **** const basic_string __tmp2(__s._M_ibegin(), __s._M_iend(), 537:/usr/include/c++/4.8/bits/basic_string.tcc **** this->get_allocator()); 538:/usr/include/c++/4.8/bits/basic_string.tcc **** *this = __tmp2; 539:/usr/include/c++/4.8/bits/basic_string.tcc **** __s = __tmp1; 540:/usr/include/c++/4.8/bits/basic_string.tcc **** } 541:/usr/include/c++/4.8/bits/basic_string.tcc **** } 542:/usr/include/c++/4.8/bits/basic_string.tcc **** 543:/usr/include/c++/4.8/bits/basic_string.tcc **** template 544:/usr/include/c++/4.8/bits/basic_string.tcc **** typename basic_string<_CharT, _Traits, _Alloc>::_Rep* 545:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::_Rep:: 546:/usr/include/c++/4.8/bits/basic_string.tcc **** _S_create(size_type __capacity, size_type __old_capacity, 547:/usr/include/c++/4.8/bits/basic_string.tcc **** const _Alloc& __alloc) 548:/usr/include/c++/4.8/bits/basic_string.tcc **** { 549:/usr/include/c++/4.8/bits/basic_string.tcc **** // _GLIBCXX_RESOLVE_LIB_DEFECTS 550:/usr/include/c++/4.8/bits/basic_string.tcc **** // 83. String::npos vs. string::max_size() 551:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__capacity > _S_max_size) 552:/usr/include/c++/4.8/bits/basic_string.tcc **** __throw_length_error(__N("basic_string::_S_create")); 553:/usr/include/c++/4.8/bits/basic_string.tcc **** 554:/usr/include/c++/4.8/bits/basic_string.tcc **** // The standard places no restriction on allocating more memory 555:/usr/include/c++/4.8/bits/basic_string.tcc **** // than is strictly needed within this layer at the moment or as 556:/usr/include/c++/4.8/bits/basic_string.tcc **** // requested by an explicit application call to reserve(). 557:/usr/include/c++/4.8/bits/basic_string.tcc **** 558:/usr/include/c++/4.8/bits/basic_string.tcc **** // Many malloc implementations perform quite poorly when an 559:/usr/include/c++/4.8/bits/basic_string.tcc **** // application attempts to allocate memory in a stepwise fashion 560:/usr/include/c++/4.8/bits/basic_string.tcc **** // growing each allocation size by only 1 char. Additionally, GAS LISTING /tmp/ccrG9BDx.s page 28 561:/usr/include/c++/4.8/bits/basic_string.tcc **** // it makes little sense to allocate less linear memory than the 562:/usr/include/c++/4.8/bits/basic_string.tcc **** // natural blocking size of the malloc implementation. 563:/usr/include/c++/4.8/bits/basic_string.tcc **** // Unfortunately, we would need a somewhat low-level calculation 564:/usr/include/c++/4.8/bits/basic_string.tcc **** // with tuned parameters to get this perfect for any particular 565:/usr/include/c++/4.8/bits/basic_string.tcc **** // malloc implementation. Fortunately, generalizations about 566:/usr/include/c++/4.8/bits/basic_string.tcc **** // common features seen among implementations seems to suffice. 567:/usr/include/c++/4.8/bits/basic_string.tcc **** 568:/usr/include/c++/4.8/bits/basic_string.tcc **** // __pagesize need not match the actual VM page size for good 569:/usr/include/c++/4.8/bits/basic_string.tcc **** // results in practice, thus we pick a common value on the low 570:/usr/include/c++/4.8/bits/basic_string.tcc **** // side. __malloc_header_size is an estimate of the amount of 571:/usr/include/c++/4.8/bits/basic_string.tcc **** // overhead per memory allocation (in practice seen N * sizeof 572:/usr/include/c++/4.8/bits/basic_string.tcc **** // (void*) where N is 0, 2 or 4). According to folklore, 573:/usr/include/c++/4.8/bits/basic_string.tcc **** // picking this value on the high side is better than 574:/usr/include/c++/4.8/bits/basic_string.tcc **** // low-balling it (especially when this algorithm is used with 575:/usr/include/c++/4.8/bits/basic_string.tcc **** // malloc implementations that allocate memory blocks rounded up 576:/usr/include/c++/4.8/bits/basic_string.tcc **** // to a size which is a power of 2). 577:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __pagesize = 4096; 578:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __malloc_header_size = 4 * sizeof(void*); 579:/usr/include/c++/4.8/bits/basic_string.tcc **** 580:/usr/include/c++/4.8/bits/basic_string.tcc **** // The below implements an exponential growth policy, necessary to 581:/usr/include/c++/4.8/bits/basic_string.tcc **** // meet amortized linear time requirements of the library: see 582:/usr/include/c++/4.8/bits/basic_string.tcc **** // http://gcc.gnu.org/ml/libstdc++/2001-07/msg00085.html. 583:/usr/include/c++/4.8/bits/basic_string.tcc **** // It's active for allocations requiring an amount of memory above 584:/usr/include/c++/4.8/bits/basic_string.tcc **** // system pagesize. This is consistent with the requirements of the 585:/usr/include/c++/4.8/bits/basic_string.tcc **** // standard: http://gcc.gnu.org/ml/libstdc++/2001-07/msg00130.html 586:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__capacity > __old_capacity && __capacity < 2 * __old_capacity) 587:/usr/include/c++/4.8/bits/basic_string.tcc **** __capacity = 2 * __old_capacity; 588:/usr/include/c++/4.8/bits/basic_string.tcc **** 589:/usr/include/c++/4.8/bits/basic_string.tcc **** // NB: Need an array of char_type[__capacity], plus a terminating 590:/usr/include/c++/4.8/bits/basic_string.tcc **** // null char_type() element, plus enough for the _Rep data structure. 591:/usr/include/c++/4.8/bits/basic_string.tcc **** // Whew. Seemingly so needy, yet so elemental. 592:/usr/include/c++/4.8/bits/basic_string.tcc **** size_type __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); 593:/usr/include/c++/4.8/bits/basic_string.tcc **** 594:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __adj_size = __size + __malloc_header_size; 595:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__adj_size > __pagesize && __capacity > __old_capacity) 596:/usr/include/c++/4.8/bits/basic_string.tcc **** { 597:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __extra = __pagesize - __adj_size % __pagesize; 598:/usr/include/c++/4.8/bits/basic_string.tcc **** __capacity += __extra / sizeof(_CharT); 599:/usr/include/c++/4.8/bits/basic_string.tcc **** // Never allocate a string bigger than _S_max_size. 600:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__capacity > _S_max_size) 601:/usr/include/c++/4.8/bits/basic_string.tcc **** __capacity = _S_max_size; 602:/usr/include/c++/4.8/bits/basic_string.tcc **** __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); 603:/usr/include/c++/4.8/bits/basic_string.tcc **** } 604:/usr/include/c++/4.8/bits/basic_string.tcc **** 605:/usr/include/c++/4.8/bits/basic_string.tcc **** // NB: Might throw, but no worries about a leak, mate: _Rep() 606:/usr/include/c++/4.8/bits/basic_string.tcc **** // does not throw. 607:/usr/include/c++/4.8/bits/basic_string.tcc **** void* __place = _Raw_bytes_alloc(__alloc).allocate(__size); 608:/usr/include/c++/4.8/bits/basic_string.tcc **** _Rep *__p = new (__place) _Rep; 609:/usr/include/c++/4.8/bits/basic_string.tcc **** __p->_M_capacity = __capacity; 610:/usr/include/c++/4.8/bits/basic_string.tcc **** // ABI compatibility - 3.4.x set in _S_create both 611:/usr/include/c++/4.8/bits/basic_string.tcc **** // _M_refcount and _M_length. All callers of _S_create 612:/usr/include/c++/4.8/bits/basic_string.tcc **** // in basic_string.tcc then set just _M_length. 613:/usr/include/c++/4.8/bits/basic_string.tcc **** // In 4.0.x and later both _M_refcount and _M_length 614:/usr/include/c++/4.8/bits/basic_string.tcc **** // are initialized in the callers, unfortunately we can 615:/usr/include/c++/4.8/bits/basic_string.tcc **** // have 3.4.x compiled code with _S_create callers inlined 616:/usr/include/c++/4.8/bits/basic_string.tcc **** // calling 4.0.x+ _S_create. 617:/usr/include/c++/4.8/bits/basic_string.tcc **** __p->_M_set_sharable(); GAS LISTING /tmp/ccrG9BDx.s page 29 618:/usr/include/c++/4.8/bits/basic_string.tcc **** return __p; 619:/usr/include/c++/4.8/bits/basic_string.tcc **** } 620:/usr/include/c++/4.8/bits/basic_string.tcc **** 621:/usr/include/c++/4.8/bits/basic_string.tcc **** template 622:/usr/include/c++/4.8/bits/basic_string.tcc **** _CharT* 623:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::_Rep:: 624:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_clone(const _Alloc& __alloc, size_type __res) 625:/usr/include/c++/4.8/bits/basic_string.tcc **** { 626:/usr/include/c++/4.8/bits/basic_string.tcc **** // Requested capacity of the clone. 627:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __requested_cap = this->_M_length + __res; 628:/usr/include/c++/4.8/bits/basic_string.tcc **** _Rep* __r = _Rep::_S_create(__requested_cap, this->_M_capacity, 629:/usr/include/c++/4.8/bits/basic_string.tcc **** __alloc); 630:/usr/include/c++/4.8/bits/basic_string.tcc **** if (this->_M_length) 631:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_copy(__r->_M_refdata(), _M_refdata(), this->_M_length); 632:/usr/include/c++/4.8/bits/basic_string.tcc **** 633:/usr/include/c++/4.8/bits/basic_string.tcc **** __r->_M_set_length_and_sharable(this->_M_length); 634:/usr/include/c++/4.8/bits/basic_string.tcc **** return __r->_M_refdata(); 635:/usr/include/c++/4.8/bits/basic_string.tcc **** } 636:/usr/include/c++/4.8/bits/basic_string.tcc **** 637:/usr/include/c++/4.8/bits/basic_string.tcc **** template 638:/usr/include/c++/4.8/bits/basic_string.tcc **** void 639:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 640:/usr/include/c++/4.8/bits/basic_string.tcc **** resize(size_type __n, _CharT __c) 641:/usr/include/c++/4.8/bits/basic_string.tcc **** { 642:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __size = this->size(); 643:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_check_length(__size, __n, "basic_string::resize"); 644:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__size < __n) 645:/usr/include/c++/4.8/bits/basic_string.tcc **** this->append(__n - __size, __c); 646:/usr/include/c++/4.8/bits/basic_string.tcc **** else if (__n < __size) 647:/usr/include/c++/4.8/bits/basic_string.tcc **** this->erase(__n); 648:/usr/include/c++/4.8/bits/basic_string.tcc **** // else nothing (in particular, avoid calling _M_mutate() unnecessarily.) 649:/usr/include/c++/4.8/bits/basic_string.tcc **** } 650:/usr/include/c++/4.8/bits/basic_string.tcc **** 651:/usr/include/c++/4.8/bits/basic_string.tcc **** template 652:/usr/include/c++/4.8/bits/basic_string.tcc **** template 653:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 654:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 655:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1, 656:/usr/include/c++/4.8/bits/basic_string.tcc **** _InputIterator __k2, __false_type) 657:/usr/include/c++/4.8/bits/basic_string.tcc **** { 658:/usr/include/c++/4.8/bits/basic_string.tcc **** const basic_string __s(__k1, __k2); 659:/usr/include/c++/4.8/bits/basic_string.tcc **** const size_type __n1 = __i2 - __i1; 660:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_check_length(__n1, __s.size(), "basic_string::_M_replace_dispatch"); 661:/usr/include/c++/4.8/bits/basic_string.tcc **** return _M_replace_safe(__i1 - _M_ibegin(), __n1, __s._M_data(), 662:/usr/include/c++/4.8/bits/basic_string.tcc **** __s.size()); 663:/usr/include/c++/4.8/bits/basic_string.tcc **** } 664:/usr/include/c++/4.8/bits/basic_string.tcc **** 665:/usr/include/c++/4.8/bits/basic_string.tcc **** template 666:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 667:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 668:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, 669:/usr/include/c++/4.8/bits/basic_string.tcc **** _CharT __c) 670:/usr/include/c++/4.8/bits/basic_string.tcc **** { 671:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_check_length(__n1, __n2, "basic_string::_M_replace_aux"); 672:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_mutate(__pos1, __n1, __n2); 673:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__n2) 674:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_assign(_M_data() + __pos1, __n2, __c); GAS LISTING /tmp/ccrG9BDx.s page 30 675:/usr/include/c++/4.8/bits/basic_string.tcc **** return *this; 676:/usr/include/c++/4.8/bits/basic_string.tcc **** } 677:/usr/include/c++/4.8/bits/basic_string.tcc **** 678:/usr/include/c++/4.8/bits/basic_string.tcc **** template 679:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 680:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 681:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s, 682:/usr/include/c++/4.8/bits/basic_string.tcc **** size_type __n2) 683:/usr/include/c++/4.8/bits/basic_string.tcc **** { 684:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_mutate(__pos1, __n1, __n2); 685:/usr/include/c++/4.8/bits/basic_string.tcc **** if (__n2) 686:/usr/include/c++/4.8/bits/basic_string.tcc **** _M_copy(_M_data() + __pos1, __s, __n2); 687:/usr/include/c++/4.8/bits/basic_string.tcc **** return *this; 688:/usr/include/c++/4.8/bits/basic_string.tcc **** } 689:/usr/include/c++/4.8/bits/basic_string.tcc **** 690:/usr/include/c++/4.8/bits/basic_string.tcc **** template 691:/usr/include/c++/4.8/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc> 692:/usr/include/c++/4.8/bits/basic_string.tcc **** operator+(const _CharT* __lhs, 463 .loc 5 692 0 464 .cfi_startproc 465 .cfi_personality 0x3,__gxx_personality_v0 466 .cfi_lsda 0x3,.LLSDA1317 467 .LVL46: 468 0000 4155 pushq %r13 469 .cfi_def_cfa_offset 16 470 .cfi_offset 13, -16 471 0002 4154 pushq %r12 472 .cfi_def_cfa_offset 24 473 .cfi_offset 12, -24 474 0004 55 pushq %rbp 475 .cfi_def_cfa_offset 32 476 .cfi_offset 6, -32 477 0005 53 pushq %rbx 478 .cfi_def_cfa_offset 40 479 .cfi_offset 3, -40 480 0006 4883EC08 subq $8, %rsp 481 .cfi_def_cfa_offset 48 482 000a 4889FB movq %rdi, %rbx 483 000d 4989F4 movq %rsi, %r12 484 0010 4889D5 movq %rdx, %rbp 485 .LBB5: 693:/usr/include/c++/4.8/bits/basic_string.tcc **** const basic_string<_CharT, _Traits, _Alloc>& __rhs) 694:/usr/include/c++/4.8/bits/basic_string.tcc **** { 695:/usr/include/c++/4.8/bits/basic_string.tcc **** __glibcxx_requires_string(__lhs); 696:/usr/include/c++/4.8/bits/basic_string.tcc **** typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 697:/usr/include/c++/4.8/bits/basic_string.tcc **** typedef typename __string_type::size_type __size_type; 698:/usr/include/c++/4.8/bits/basic_string.tcc **** const __size_type __len = _Traits::length(__lhs); 486 .loc 5 698 0 487 0013 4889F7 movq %rsi, %rdi 488 .LVL47: 489 0016 E8000000 call _ZNSt11char_traitsIcE6lengthEPKc 489 00 490 .LVL48: 491 001b 4989C5 movq %rax, %r13 492 .LVL49: 699:/usr/include/c++/4.8/bits/basic_string.tcc **** __string_type __str; 493 .loc 5 699 0 GAS LISTING /tmp/ccrG9BDx.s page 31 494 001e 4889DF movq %rbx, %rdi 495 0021 E8000000 call _ZNSsC1Ev 495 00 496 .LVL50: 700:/usr/include/c++/4.8/bits/basic_string.tcc **** __str.reserve(__len + __rhs.size()); 497 .loc 5 700 0 498 0026 4889EF movq %rbp, %rdi 499 0029 E8000000 call _ZNKSs4sizeEv 499 00 500 .LVL51: 501 002e 4A8D3428 leaq (%rax,%r13), %rsi 502 0032 4889DF movq %rbx, %rdi 503 .LEHB8: 504 0035 E8000000 call _ZNSs7reserveEm 504 00 505 .LVL52: 701:/usr/include/c++/4.8/bits/basic_string.tcc **** __str.append(__lhs, __len); 506 .loc 5 701 0 507 003a 4C89EA movq %r13, %rdx 508 003d 4C89E6 movq %r12, %rsi 509 0040 4889DF movq %rbx, %rdi 510 0043 E8000000 call _ZNSs6appendEPKcm 510 00 511 .LVL53: 702:/usr/include/c++/4.8/bits/basic_string.tcc **** __str.append(__rhs); 512 .loc 5 702 0 513 0048 4889EE movq %rbp, %rsi 514 004b 4889DF movq %rbx, %rdi 515 004e E8000000 call _ZNSs6appendERKSs 515 00 516 .LEHE8: 517 .LVL54: 518 0053 EB13 jmp .L37 519 .L36: 520 0055 4889C5 movq %rax, %rbp 521 .LVL55: 522 0058 4889DF movq %rbx, %rdi 523 005b E8000000 call _ZNSsD1Ev 523 00 524 .LVL56: 525 0060 4889EF movq %rbp, %rdi 526 .LEHB9: 527 0063 E8000000 call _Unwind_Resume 527 00 528 .LEHE9: 529 .LVL57: 530 .L37: 531 .LBE5: 703:/usr/include/c++/4.8/bits/basic_string.tcc **** return __str; 704:/usr/include/c++/4.8/bits/basic_string.tcc **** } 532 .loc 5 704 0 533 0068 4889D8 movq %rbx, %rax 534 006b 4883C408 addq $8, %rsp 535 .cfi_def_cfa_offset 40 536 006f 5B popq %rbx 537 .cfi_def_cfa_offset 32 538 .LVL58: GAS LISTING /tmp/ccrG9BDx.s page 32 539 0070 5D popq %rbp 540 .cfi_def_cfa_offset 24 541 .LVL59: 542 0071 415C popq %r12 543 .cfi_def_cfa_offset 16 544 .LVL60: 545 0073 415D popq %r13 546 .cfi_def_cfa_offset 8 547 .LVL61: 548 0075 C3 ret 549 .cfi_endproc 550 .LFE1317: 551 .section .gcc_except_table 552 .LLSDA1317: 553 0051 FF .byte 0xff 554 0052 FF .byte 0xff 555 0053 01 .byte 0x1 556 0054 08 .uleb128 .LLSDACSE1317-.LLSDACSB1317 557 .LLSDACSB1317: 558 0055 35 .uleb128 .LEHB8-.LFB1317 559 0056 1E .uleb128 .LEHE8-.LEHB8 560 0057 55 .uleb128 .L36-.LFB1317 561 0058 00 .uleb128 0 562 0059 63 .uleb128 .LEHB9-.LFB1317 563 005a 05 .uleb128 .LEHE9-.LEHB9 564 005b 00 .uleb128 0 565 005c 00 .uleb128 0 566 .LLSDACSE1317: 567 .section .text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_,"axG",@progbits,_ZStplIcSt11 569 .section .text._ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_,"axG",@progbits,_ZSt4moveIRSsEON 570 .weak _ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_ 572 _ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_: 573 .LFB1319: 574 .file 6 "/usr/include/c++/4.8/bits/move.h" 1:/usr/include/c++/4.8/bits/move.h **** // Move, forward and identity for C++0x + swap -*- C++ -*- 2:/usr/include/c++/4.8/bits/move.h **** 3:/usr/include/c++/4.8/bits/move.h **** // Copyright (C) 2007-2013 Free Software Foundation, Inc. 4:/usr/include/c++/4.8/bits/move.h **** // 5:/usr/include/c++/4.8/bits/move.h **** // This file is part of the GNU ISO C++ Library. This library is free 6:/usr/include/c++/4.8/bits/move.h **** // software; you can redistribute it and/or modify it under the 7:/usr/include/c++/4.8/bits/move.h **** // terms of the GNU General Public License as published by the 8:/usr/include/c++/4.8/bits/move.h **** // Free Software Foundation; either version 3, or (at your option) 9:/usr/include/c++/4.8/bits/move.h **** // any later version. 10:/usr/include/c++/4.8/bits/move.h **** 11:/usr/include/c++/4.8/bits/move.h **** // This library is distributed in the hope that it will be useful, 12:/usr/include/c++/4.8/bits/move.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 13:/usr/include/c++/4.8/bits/move.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14:/usr/include/c++/4.8/bits/move.h **** // GNU General Public License for more details. 15:/usr/include/c++/4.8/bits/move.h **** 16:/usr/include/c++/4.8/bits/move.h **** // Under Section 7 of GPL version 3, you are granted additional 17:/usr/include/c++/4.8/bits/move.h **** // permissions described in the GCC Runtime Library Exception, version 18:/usr/include/c++/4.8/bits/move.h **** // 3.1, as published by the Free Software Foundation. 19:/usr/include/c++/4.8/bits/move.h **** 20:/usr/include/c++/4.8/bits/move.h **** // You should have received a copy of the GNU General Public License and 21:/usr/include/c++/4.8/bits/move.h **** // a copy of the GCC Runtime Library Exception along with this program; 22:/usr/include/c++/4.8/bits/move.h **** // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23:/usr/include/c++/4.8/bits/move.h **** // . GAS LISTING /tmp/ccrG9BDx.s page 33 24:/usr/include/c++/4.8/bits/move.h **** 25:/usr/include/c++/4.8/bits/move.h **** /** @file bits/move.h 26:/usr/include/c++/4.8/bits/move.h **** * This is an internal header file, included by other library headers. 27:/usr/include/c++/4.8/bits/move.h **** * Do not attempt to use it directly. @headername{utility} 28:/usr/include/c++/4.8/bits/move.h **** */ 29:/usr/include/c++/4.8/bits/move.h **** 30:/usr/include/c++/4.8/bits/move.h **** #ifndef _MOVE_H 31:/usr/include/c++/4.8/bits/move.h **** #define _MOVE_H 1 32:/usr/include/c++/4.8/bits/move.h **** 33:/usr/include/c++/4.8/bits/move.h **** #include 34:/usr/include/c++/4.8/bits/move.h **** #include 35:/usr/include/c++/4.8/bits/move.h **** 36:/usr/include/c++/4.8/bits/move.h **** namespace std _GLIBCXX_VISIBILITY(default) 37:/usr/include/c++/4.8/bits/move.h **** { 38:/usr/include/c++/4.8/bits/move.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION 39:/usr/include/c++/4.8/bits/move.h **** 40:/usr/include/c++/4.8/bits/move.h **** // Used, in C++03 mode too, by allocators, etc. 41:/usr/include/c++/4.8/bits/move.h **** /** 42:/usr/include/c++/4.8/bits/move.h **** * @brief Same as C++11 std::addressof 43:/usr/include/c++/4.8/bits/move.h **** * @ingroup utilities 44:/usr/include/c++/4.8/bits/move.h **** */ 45:/usr/include/c++/4.8/bits/move.h **** template 46:/usr/include/c++/4.8/bits/move.h **** inline _Tp* 47:/usr/include/c++/4.8/bits/move.h **** __addressof(_Tp& __r) _GLIBCXX_NOEXCEPT 48:/usr/include/c++/4.8/bits/move.h **** { 49:/usr/include/c++/4.8/bits/move.h **** return reinterpret_cast<_Tp*> 50:/usr/include/c++/4.8/bits/move.h **** (&const_cast(reinterpret_cast(__r))); 51:/usr/include/c++/4.8/bits/move.h **** } 52:/usr/include/c++/4.8/bits/move.h **** 53:/usr/include/c++/4.8/bits/move.h **** _GLIBCXX_END_NAMESPACE_VERSION 54:/usr/include/c++/4.8/bits/move.h **** } // namespace 55:/usr/include/c++/4.8/bits/move.h **** 56:/usr/include/c++/4.8/bits/move.h **** #if __cplusplus >= 201103L 57:/usr/include/c++/4.8/bits/move.h **** #include // Brings in std::declval too. 58:/usr/include/c++/4.8/bits/move.h **** 59:/usr/include/c++/4.8/bits/move.h **** namespace std _GLIBCXX_VISIBILITY(default) 60:/usr/include/c++/4.8/bits/move.h **** { 61:/usr/include/c++/4.8/bits/move.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION 62:/usr/include/c++/4.8/bits/move.h **** 63:/usr/include/c++/4.8/bits/move.h **** /** 64:/usr/include/c++/4.8/bits/move.h **** * @addtogroup utilities 65:/usr/include/c++/4.8/bits/move.h **** * @{ 66:/usr/include/c++/4.8/bits/move.h **** */ 67:/usr/include/c++/4.8/bits/move.h **** 68:/usr/include/c++/4.8/bits/move.h **** /** 69:/usr/include/c++/4.8/bits/move.h **** * @brief Forward an lvalue. 70:/usr/include/c++/4.8/bits/move.h **** * @return The parameter cast to the specified type. 71:/usr/include/c++/4.8/bits/move.h **** * 72:/usr/include/c++/4.8/bits/move.h **** * This function is used to implement "perfect forwarding". 73:/usr/include/c++/4.8/bits/move.h **** */ 74:/usr/include/c++/4.8/bits/move.h **** template 75:/usr/include/c++/4.8/bits/move.h **** constexpr _Tp&& 76:/usr/include/c++/4.8/bits/move.h **** forward(typename std::remove_reference<_Tp>::type& __t) noexcept 77:/usr/include/c++/4.8/bits/move.h **** { return static_cast<_Tp&&>(__t); } 78:/usr/include/c++/4.8/bits/move.h **** 79:/usr/include/c++/4.8/bits/move.h **** /** 80:/usr/include/c++/4.8/bits/move.h **** * @brief Forward an rvalue. GAS LISTING /tmp/ccrG9BDx.s page 34 81:/usr/include/c++/4.8/bits/move.h **** * @return The parameter cast to the specified type. 82:/usr/include/c++/4.8/bits/move.h **** * 83:/usr/include/c++/4.8/bits/move.h **** * This function is used to implement "perfect forwarding". 84:/usr/include/c++/4.8/bits/move.h **** */ 85:/usr/include/c++/4.8/bits/move.h **** template 86:/usr/include/c++/4.8/bits/move.h **** constexpr _Tp&& 87:/usr/include/c++/4.8/bits/move.h **** forward(typename std::remove_reference<_Tp>::type&& __t) noexcept 88:/usr/include/c++/4.8/bits/move.h **** { 89:/usr/include/c++/4.8/bits/move.h **** static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument" 90:/usr/include/c++/4.8/bits/move.h **** " substituting _Tp is an lvalue reference type"); 91:/usr/include/c++/4.8/bits/move.h **** return static_cast<_Tp&&>(__t); 92:/usr/include/c++/4.8/bits/move.h **** } 93:/usr/include/c++/4.8/bits/move.h **** 94:/usr/include/c++/4.8/bits/move.h **** /** 95:/usr/include/c++/4.8/bits/move.h **** * @brief Convert a value to an rvalue. 96:/usr/include/c++/4.8/bits/move.h **** * @param __t A thing of arbitrary type. 97:/usr/include/c++/4.8/bits/move.h **** * @return The parameter cast to an rvalue-reference to allow moving it. 98:/usr/include/c++/4.8/bits/move.h **** */ 99:/usr/include/c++/4.8/bits/move.h **** template 100:/usr/include/c++/4.8/bits/move.h **** constexpr typename std::remove_reference<_Tp>::type&& 101:/usr/include/c++/4.8/bits/move.h **** move(_Tp&& __t) noexcept 575 .loc 6 101 0 576 .cfi_startproc 577 .LVL62: 578 0000 4889F8 movq %rdi, %rax 102:/usr/include/c++/4.8/bits/move.h **** { return static_cast::type&&>(__t); } 579 .loc 6 102 0 580 0003 C3 ret 581 .cfi_endproc 582 .LFE1319: 584 .section .text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_,"axG",@progbits,_ZStplIcSt11c 585 .weak _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_ 587 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_: 588 .LFB1318: 589 .file 7 "/usr/include/c++/4.8/bits/basic_string.h" 1:/usr/include/c++/4.8/bits/basic_string.h **** // Components for manipulating sequences of characters -*- C++ -*- 2:/usr/include/c++/4.8/bits/basic_string.h **** 3:/usr/include/c++/4.8/bits/basic_string.h **** // Copyright (C) 1997-2013 Free Software Foundation, Inc. 4:/usr/include/c++/4.8/bits/basic_string.h **** // 5:/usr/include/c++/4.8/bits/basic_string.h **** // This file is part of the GNU ISO C++ Library. This library is free 6:/usr/include/c++/4.8/bits/basic_string.h **** // software; you can redistribute it and/or modify it under the 7:/usr/include/c++/4.8/bits/basic_string.h **** // terms of the GNU General Public License as published by the 8:/usr/include/c++/4.8/bits/basic_string.h **** // Free Software Foundation; either version 3, or (at your option) 9:/usr/include/c++/4.8/bits/basic_string.h **** // any later version. 10:/usr/include/c++/4.8/bits/basic_string.h **** 11:/usr/include/c++/4.8/bits/basic_string.h **** // This library is distributed in the hope that it will be useful, 12:/usr/include/c++/4.8/bits/basic_string.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 13:/usr/include/c++/4.8/bits/basic_string.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14:/usr/include/c++/4.8/bits/basic_string.h **** // GNU General Public License for more details. 15:/usr/include/c++/4.8/bits/basic_string.h **** 16:/usr/include/c++/4.8/bits/basic_string.h **** // Under Section 7 of GPL version 3, you are granted additional 17:/usr/include/c++/4.8/bits/basic_string.h **** // permissions described in the GCC Runtime Library Exception, version 18:/usr/include/c++/4.8/bits/basic_string.h **** // 3.1, as published by the Free Software Foundation. 19:/usr/include/c++/4.8/bits/basic_string.h **** 20:/usr/include/c++/4.8/bits/basic_string.h **** // You should have received a copy of the GNU General Public License and 21:/usr/include/c++/4.8/bits/basic_string.h **** // a copy of the GCC Runtime Library Exception along with this program; 22:/usr/include/c++/4.8/bits/basic_string.h **** // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see GAS LISTING /tmp/ccrG9BDx.s page 35 23:/usr/include/c++/4.8/bits/basic_string.h **** // . 24:/usr/include/c++/4.8/bits/basic_string.h **** 25:/usr/include/c++/4.8/bits/basic_string.h **** /** @file bits/basic_string.h 26:/usr/include/c++/4.8/bits/basic_string.h **** * This is an internal header file, included by other library headers. 27:/usr/include/c++/4.8/bits/basic_string.h **** * Do not attempt to use it directly. @headername{string} 28:/usr/include/c++/4.8/bits/basic_string.h **** */ 29:/usr/include/c++/4.8/bits/basic_string.h **** 30:/usr/include/c++/4.8/bits/basic_string.h **** // 31:/usr/include/c++/4.8/bits/basic_string.h **** // ISO C++ 14882: 21 Strings library 32:/usr/include/c++/4.8/bits/basic_string.h **** // 33:/usr/include/c++/4.8/bits/basic_string.h **** 34:/usr/include/c++/4.8/bits/basic_string.h **** #ifndef _BASIC_STRING_H 35:/usr/include/c++/4.8/bits/basic_string.h **** #define _BASIC_STRING_H 1 36:/usr/include/c++/4.8/bits/basic_string.h **** 37:/usr/include/c++/4.8/bits/basic_string.h **** #pragma GCC system_header 38:/usr/include/c++/4.8/bits/basic_string.h **** 39:/usr/include/c++/4.8/bits/basic_string.h **** #include 40:/usr/include/c++/4.8/bits/basic_string.h **** #include 41:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L 42:/usr/include/c++/4.8/bits/basic_string.h **** #include 43:/usr/include/c++/4.8/bits/basic_string.h **** #endif 44:/usr/include/c++/4.8/bits/basic_string.h **** 45:/usr/include/c++/4.8/bits/basic_string.h **** namespace std _GLIBCXX_VISIBILITY(default) 46:/usr/include/c++/4.8/bits/basic_string.h **** { 47:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION 48:/usr/include/c++/4.8/bits/basic_string.h **** 49:/usr/include/c++/4.8/bits/basic_string.h **** /** 50:/usr/include/c++/4.8/bits/basic_string.h **** * @class basic_string basic_string.h 51:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Managing sequences of characters and character-like objects. 52:/usr/include/c++/4.8/bits/basic_string.h **** * 53:/usr/include/c++/4.8/bits/basic_string.h **** * @ingroup strings 54:/usr/include/c++/4.8/bits/basic_string.h **** * @ingroup sequences 55:/usr/include/c++/4.8/bits/basic_string.h **** * 56:/usr/include/c++/4.8/bits/basic_string.h **** * @tparam _CharT Type of character 57:/usr/include/c++/4.8/bits/basic_string.h **** * @tparam _Traits Traits for character type, defaults to 58:/usr/include/c++/4.8/bits/basic_string.h **** * char_traits<_CharT>. 59:/usr/include/c++/4.8/bits/basic_string.h **** * @tparam _Alloc Allocator type, defaults to allocator<_CharT>. 60:/usr/include/c++/4.8/bits/basic_string.h **** * 61:/usr/include/c++/4.8/bits/basic_string.h **** * Meets the requirements of a container, a 62:/usr/include/c++/4.8/bits/basic_string.h **** * reversible container, and a 63:/usr/include/c++/4.8/bits/basic_string.h **** * sequence. Of the 64:/usr/include/c++/4.8/bits/basic_string.h **** * optional sequence requirements, only 65:/usr/include/c++/4.8/bits/basic_string.h **** * @c push_back, @c at, and @c %array access are supported. 66:/usr/include/c++/4.8/bits/basic_string.h **** * 67:/usr/include/c++/4.8/bits/basic_string.h **** * @doctodo 68:/usr/include/c++/4.8/bits/basic_string.h **** * 69:/usr/include/c++/4.8/bits/basic_string.h **** * 70:/usr/include/c++/4.8/bits/basic_string.h **** * Documentation? What's that? 71:/usr/include/c++/4.8/bits/basic_string.h **** * Nathan Myers . 72:/usr/include/c++/4.8/bits/basic_string.h **** * 73:/usr/include/c++/4.8/bits/basic_string.h **** * A string looks like this: 74:/usr/include/c++/4.8/bits/basic_string.h **** * 75:/usr/include/c++/4.8/bits/basic_string.h **** * @code 76:/usr/include/c++/4.8/bits/basic_string.h **** * [_Rep] 77:/usr/include/c++/4.8/bits/basic_string.h **** * _M_length 78:/usr/include/c++/4.8/bits/basic_string.h **** * [basic_string] _M_capacity 79:/usr/include/c++/4.8/bits/basic_string.h **** * _M_dataplus _M_refcount GAS LISTING /tmp/ccrG9BDx.s page 36 80:/usr/include/c++/4.8/bits/basic_string.h **** * _M_p ----------------> unnamed array of char_type 81:/usr/include/c++/4.8/bits/basic_string.h **** * @endcode 82:/usr/include/c++/4.8/bits/basic_string.h **** * 83:/usr/include/c++/4.8/bits/basic_string.h **** * Where the _M_p points to the first character in the string, and 84:/usr/include/c++/4.8/bits/basic_string.h **** * you cast it to a pointer-to-_Rep and subtract 1 to get a 85:/usr/include/c++/4.8/bits/basic_string.h **** * pointer to the header. 86:/usr/include/c++/4.8/bits/basic_string.h **** * 87:/usr/include/c++/4.8/bits/basic_string.h **** * This approach has the enormous advantage that a string object 88:/usr/include/c++/4.8/bits/basic_string.h **** * requires only one allocation. All the ugliness is confined 89:/usr/include/c++/4.8/bits/basic_string.h **** * within a single %pair of inline functions, which each compile to 90:/usr/include/c++/4.8/bits/basic_string.h **** * a single @a add instruction: _Rep::_M_data(), and 91:/usr/include/c++/4.8/bits/basic_string.h **** * string::_M_rep(); and the allocation function which gets a 92:/usr/include/c++/4.8/bits/basic_string.h **** * block of raw bytes and with room enough and constructs a _Rep 93:/usr/include/c++/4.8/bits/basic_string.h **** * object at the front. 94:/usr/include/c++/4.8/bits/basic_string.h **** * 95:/usr/include/c++/4.8/bits/basic_string.h **** * The reason you want _M_data pointing to the character %array and 96:/usr/include/c++/4.8/bits/basic_string.h **** * not the _Rep is so that the debugger can see the string 97:/usr/include/c++/4.8/bits/basic_string.h **** * contents. (Probably we should add a non-inline member to get 98:/usr/include/c++/4.8/bits/basic_string.h **** * the _Rep for the debugger to use, so users can check the actual 99:/usr/include/c++/4.8/bits/basic_string.h **** * string length.) 100:/usr/include/c++/4.8/bits/basic_string.h **** * 101:/usr/include/c++/4.8/bits/basic_string.h **** * Note that the _Rep object is a POD so that you can have a 102:/usr/include/c++/4.8/bits/basic_string.h **** * static empty string _Rep object already @a constructed before 103:/usr/include/c++/4.8/bits/basic_string.h **** * static constructors have run. The reference-count encoding is 104:/usr/include/c++/4.8/bits/basic_string.h **** * chosen so that a 0 indicates one reference, so you never try to 105:/usr/include/c++/4.8/bits/basic_string.h **** * destroy the empty-string _Rep object. 106:/usr/include/c++/4.8/bits/basic_string.h **** * 107:/usr/include/c++/4.8/bits/basic_string.h **** * All but the last paragraph is considered pretty conventional 108:/usr/include/c++/4.8/bits/basic_string.h **** * for a C++ string implementation. 109:/usr/include/c++/4.8/bits/basic_string.h **** */ 110:/usr/include/c++/4.8/bits/basic_string.h **** // 21.3 Template class basic_string 111:/usr/include/c++/4.8/bits/basic_string.h **** template 112:/usr/include/c++/4.8/bits/basic_string.h **** class basic_string 113:/usr/include/c++/4.8/bits/basic_string.h **** { 114:/usr/include/c++/4.8/bits/basic_string.h **** typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type; 115:/usr/include/c++/4.8/bits/basic_string.h **** 116:/usr/include/c++/4.8/bits/basic_string.h **** // Types: 117:/usr/include/c++/4.8/bits/basic_string.h **** public: 118:/usr/include/c++/4.8/bits/basic_string.h **** typedef _Traits traits_type; 119:/usr/include/c++/4.8/bits/basic_string.h **** typedef typename _Traits::char_type value_type; 120:/usr/include/c++/4.8/bits/basic_string.h **** typedef _Alloc allocator_type; 121:/usr/include/c++/4.8/bits/basic_string.h **** typedef typename _CharT_alloc_type::size_type size_type; 122:/usr/include/c++/4.8/bits/basic_string.h **** typedef typename _CharT_alloc_type::difference_type difference_type; 123:/usr/include/c++/4.8/bits/basic_string.h **** typedef typename _CharT_alloc_type::reference reference; 124:/usr/include/c++/4.8/bits/basic_string.h **** typedef typename _CharT_alloc_type::const_reference const_reference; 125:/usr/include/c++/4.8/bits/basic_string.h **** typedef typename _CharT_alloc_type::pointer pointer; 126:/usr/include/c++/4.8/bits/basic_string.h **** typedef typename _CharT_alloc_type::const_pointer const_pointer; 127:/usr/include/c++/4.8/bits/basic_string.h **** typedef __gnu_cxx::__normal_iterator iterator; 128:/usr/include/c++/4.8/bits/basic_string.h **** typedef __gnu_cxx::__normal_iterator 129:/usr/include/c++/4.8/bits/basic_string.h **** const_iterator; 130:/usr/include/c++/4.8/bits/basic_string.h **** typedef std::reverse_iterator const_reverse_iterator; 131:/usr/include/c++/4.8/bits/basic_string.h **** typedef std::reverse_iterator reverse_iterator; 132:/usr/include/c++/4.8/bits/basic_string.h **** 133:/usr/include/c++/4.8/bits/basic_string.h **** private: 134:/usr/include/c++/4.8/bits/basic_string.h **** // _Rep: string representation 135:/usr/include/c++/4.8/bits/basic_string.h **** // Invariants: 136:/usr/include/c++/4.8/bits/basic_string.h **** // 1. String really contains _M_length + 1 characters: due to 21.3.4 GAS LISTING /tmp/ccrG9BDx.s page 37 137:/usr/include/c++/4.8/bits/basic_string.h **** // must be kept null-terminated. 138:/usr/include/c++/4.8/bits/basic_string.h **** // 2. _M_capacity >= _M_length 139:/usr/include/c++/4.8/bits/basic_string.h **** // Allocated memory is always (_M_capacity + 1) * sizeof(_CharT). 140:/usr/include/c++/4.8/bits/basic_string.h **** // 3. _M_refcount has three states: 141:/usr/include/c++/4.8/bits/basic_string.h **** // -1: leaked, one reference, no ref-copies allowed, non-const. 142:/usr/include/c++/4.8/bits/basic_string.h **** // 0: one reference, non-const. 143:/usr/include/c++/4.8/bits/basic_string.h **** // n>0: n + 1 references, operations require a lock, const. 144:/usr/include/c++/4.8/bits/basic_string.h **** // 4. All fields==0 is an empty string, given the extra storage 145:/usr/include/c++/4.8/bits/basic_string.h **** // beyond-the-end for a null terminator; thus, the shared 146:/usr/include/c++/4.8/bits/basic_string.h **** // empty string representation needs no constructor. 147:/usr/include/c++/4.8/bits/basic_string.h **** 148:/usr/include/c++/4.8/bits/basic_string.h **** struct _Rep_base 149:/usr/include/c++/4.8/bits/basic_string.h **** { 150:/usr/include/c++/4.8/bits/basic_string.h **** size_type _M_length; 151:/usr/include/c++/4.8/bits/basic_string.h **** size_type _M_capacity; 152:/usr/include/c++/4.8/bits/basic_string.h **** _Atomic_word _M_refcount; 153:/usr/include/c++/4.8/bits/basic_string.h **** }; 154:/usr/include/c++/4.8/bits/basic_string.h **** 155:/usr/include/c++/4.8/bits/basic_string.h **** struct _Rep : _Rep_base 156:/usr/include/c++/4.8/bits/basic_string.h **** { 157:/usr/include/c++/4.8/bits/basic_string.h **** // Types: 158:/usr/include/c++/4.8/bits/basic_string.h **** typedef typename _Alloc::template rebind::other _Raw_bytes_alloc; 159:/usr/include/c++/4.8/bits/basic_string.h **** 160:/usr/include/c++/4.8/bits/basic_string.h **** // (Public) Data members: 161:/usr/include/c++/4.8/bits/basic_string.h **** 162:/usr/include/c++/4.8/bits/basic_string.h **** // The maximum number of individual char_type elements of an 163:/usr/include/c++/4.8/bits/basic_string.h **** // individual string is determined by _S_max_size. This is the 164:/usr/include/c++/4.8/bits/basic_string.h **** // value that will be returned by max_size(). (Whereas npos 165:/usr/include/c++/4.8/bits/basic_string.h **** // is the maximum number of bytes the allocator can allocate.) 166:/usr/include/c++/4.8/bits/basic_string.h **** // If one was to divvy up the theoretical largest size string, 167:/usr/include/c++/4.8/bits/basic_string.h **** // with a terminating character and m _CharT elements, it'd 168:/usr/include/c++/4.8/bits/basic_string.h **** // look like this: 169:/usr/include/c++/4.8/bits/basic_string.h **** // npos = sizeof(_Rep) + (m * sizeof(_CharT)) + sizeof(_CharT) 170:/usr/include/c++/4.8/bits/basic_string.h **** // Solving for m: 171:/usr/include/c++/4.8/bits/basic_string.h **** // m = ((npos - sizeof(_Rep))/sizeof(CharT)) - 1 172:/usr/include/c++/4.8/bits/basic_string.h **** // In addition, this implementation quarters this amount. 173:/usr/include/c++/4.8/bits/basic_string.h **** static const size_type _S_max_size; 174:/usr/include/c++/4.8/bits/basic_string.h **** static const _CharT _S_terminal; 175:/usr/include/c++/4.8/bits/basic_string.h **** 176:/usr/include/c++/4.8/bits/basic_string.h **** // The following storage is init'd to 0 by the linker, resulting 177:/usr/include/c++/4.8/bits/basic_string.h **** // (carefully) in an empty string with one reference. 178:/usr/include/c++/4.8/bits/basic_string.h **** static size_type _S_empty_rep_storage[]; 179:/usr/include/c++/4.8/bits/basic_string.h **** 180:/usr/include/c++/4.8/bits/basic_string.h **** static _Rep& 181:/usr/include/c++/4.8/bits/basic_string.h **** _S_empty_rep() 182:/usr/include/c++/4.8/bits/basic_string.h **** { 183:/usr/include/c++/4.8/bits/basic_string.h **** // NB: Mild hack to avoid strict-aliasing warnings. Note that 184:/usr/include/c++/4.8/bits/basic_string.h **** // _S_empty_rep_storage is never modified and the punning should 185:/usr/include/c++/4.8/bits/basic_string.h **** // be reasonably safe in this case. 186:/usr/include/c++/4.8/bits/basic_string.h **** void* __p = reinterpret_cast(&_S_empty_rep_storage); 187:/usr/include/c++/4.8/bits/basic_string.h **** return *reinterpret_cast<_Rep*>(__p); 188:/usr/include/c++/4.8/bits/basic_string.h **** } 189:/usr/include/c++/4.8/bits/basic_string.h **** 190:/usr/include/c++/4.8/bits/basic_string.h **** bool 191:/usr/include/c++/4.8/bits/basic_string.h **** _M_is_leaked() const 192:/usr/include/c++/4.8/bits/basic_string.h **** { return this->_M_refcount < 0; } 193:/usr/include/c++/4.8/bits/basic_string.h **** GAS LISTING /tmp/ccrG9BDx.s page 38 194:/usr/include/c++/4.8/bits/basic_string.h **** bool 195:/usr/include/c++/4.8/bits/basic_string.h **** _M_is_shared() const 196:/usr/include/c++/4.8/bits/basic_string.h **** { return this->_M_refcount > 0; } 197:/usr/include/c++/4.8/bits/basic_string.h **** 198:/usr/include/c++/4.8/bits/basic_string.h **** void 199:/usr/include/c++/4.8/bits/basic_string.h **** _M_set_leaked() 200:/usr/include/c++/4.8/bits/basic_string.h **** { this->_M_refcount = -1; } 201:/usr/include/c++/4.8/bits/basic_string.h **** 202:/usr/include/c++/4.8/bits/basic_string.h **** void 203:/usr/include/c++/4.8/bits/basic_string.h **** _M_set_sharable() 204:/usr/include/c++/4.8/bits/basic_string.h **** { this->_M_refcount = 0; } 205:/usr/include/c++/4.8/bits/basic_string.h **** 206:/usr/include/c++/4.8/bits/basic_string.h **** void 207:/usr/include/c++/4.8/bits/basic_string.h **** _M_set_length_and_sharable(size_type __n) 208:/usr/include/c++/4.8/bits/basic_string.h **** { 209:/usr/include/c++/4.8/bits/basic_string.h **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0 210:/usr/include/c++/4.8/bits/basic_string.h **** if (__builtin_expect(this != &_S_empty_rep(), false)) 211:/usr/include/c++/4.8/bits/basic_string.h **** #endif 212:/usr/include/c++/4.8/bits/basic_string.h **** { 213:/usr/include/c++/4.8/bits/basic_string.h **** this->_M_set_sharable(); // One reference. 214:/usr/include/c++/4.8/bits/basic_string.h **** this->_M_length = __n; 215:/usr/include/c++/4.8/bits/basic_string.h **** traits_type::assign(this->_M_refdata()[__n], _S_terminal); 216:/usr/include/c++/4.8/bits/basic_string.h **** // grrr. (per 21.3.4) 217:/usr/include/c++/4.8/bits/basic_string.h **** // You cannot leave those LWG people alone for a second. 218:/usr/include/c++/4.8/bits/basic_string.h **** } 219:/usr/include/c++/4.8/bits/basic_string.h **** } 220:/usr/include/c++/4.8/bits/basic_string.h **** 221:/usr/include/c++/4.8/bits/basic_string.h **** _CharT* 222:/usr/include/c++/4.8/bits/basic_string.h **** _M_refdata() throw() 223:/usr/include/c++/4.8/bits/basic_string.h **** { return reinterpret_cast<_CharT*>(this + 1); } 224:/usr/include/c++/4.8/bits/basic_string.h **** 225:/usr/include/c++/4.8/bits/basic_string.h **** _CharT* 226:/usr/include/c++/4.8/bits/basic_string.h **** _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2) 227:/usr/include/c++/4.8/bits/basic_string.h **** { 228:/usr/include/c++/4.8/bits/basic_string.h **** return (!_M_is_leaked() && __alloc1 == __alloc2) 229:/usr/include/c++/4.8/bits/basic_string.h **** ? _M_refcopy() : _M_clone(__alloc1); 230:/usr/include/c++/4.8/bits/basic_string.h **** } 231:/usr/include/c++/4.8/bits/basic_string.h **** 232:/usr/include/c++/4.8/bits/basic_string.h **** // Create & Destroy 233:/usr/include/c++/4.8/bits/basic_string.h **** static _Rep* 234:/usr/include/c++/4.8/bits/basic_string.h **** _S_create(size_type, size_type, const _Alloc&); 235:/usr/include/c++/4.8/bits/basic_string.h **** 236:/usr/include/c++/4.8/bits/basic_string.h **** void 237:/usr/include/c++/4.8/bits/basic_string.h **** _M_dispose(const _Alloc& __a) 238:/usr/include/c++/4.8/bits/basic_string.h **** { 239:/usr/include/c++/4.8/bits/basic_string.h **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0 240:/usr/include/c++/4.8/bits/basic_string.h **** if (__builtin_expect(this != &_S_empty_rep(), false)) 241:/usr/include/c++/4.8/bits/basic_string.h **** #endif 242:/usr/include/c++/4.8/bits/basic_string.h **** { 243:/usr/include/c++/4.8/bits/basic_string.h **** // Be race-detector-friendly. For more info see bits/c++config. 244:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount); 245:/usr/include/c++/4.8/bits/basic_string.h **** if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, 246:/usr/include/c++/4.8/bits/basic_string.h **** -1) <= 0) 247:/usr/include/c++/4.8/bits/basic_string.h **** { 248:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount); 249:/usr/include/c++/4.8/bits/basic_string.h **** _M_destroy(__a); 250:/usr/include/c++/4.8/bits/basic_string.h **** } GAS LISTING /tmp/ccrG9BDx.s page 39 251:/usr/include/c++/4.8/bits/basic_string.h **** } 252:/usr/include/c++/4.8/bits/basic_string.h **** } // XXX MT 253:/usr/include/c++/4.8/bits/basic_string.h **** 254:/usr/include/c++/4.8/bits/basic_string.h **** void 255:/usr/include/c++/4.8/bits/basic_string.h **** _M_destroy(const _Alloc&) throw(); 256:/usr/include/c++/4.8/bits/basic_string.h **** 257:/usr/include/c++/4.8/bits/basic_string.h **** _CharT* 258:/usr/include/c++/4.8/bits/basic_string.h **** _M_refcopy() throw() 259:/usr/include/c++/4.8/bits/basic_string.h **** { 260:/usr/include/c++/4.8/bits/basic_string.h **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0 261:/usr/include/c++/4.8/bits/basic_string.h **** if (__builtin_expect(this != &_S_empty_rep(), false)) 262:/usr/include/c++/4.8/bits/basic_string.h **** #endif 263:/usr/include/c++/4.8/bits/basic_string.h **** __gnu_cxx::__atomic_add_dispatch(&this->_M_refcount, 1); 264:/usr/include/c++/4.8/bits/basic_string.h **** return _M_refdata(); 265:/usr/include/c++/4.8/bits/basic_string.h **** } // XXX MT 266:/usr/include/c++/4.8/bits/basic_string.h **** 267:/usr/include/c++/4.8/bits/basic_string.h **** _CharT* 268:/usr/include/c++/4.8/bits/basic_string.h **** _M_clone(const _Alloc&, size_type __res = 0); 269:/usr/include/c++/4.8/bits/basic_string.h **** }; 270:/usr/include/c++/4.8/bits/basic_string.h **** 271:/usr/include/c++/4.8/bits/basic_string.h **** // Use empty-base optimization: http://www.cantrip.org/emptyopt.html 272:/usr/include/c++/4.8/bits/basic_string.h **** struct _Alloc_hider : _Alloc 273:/usr/include/c++/4.8/bits/basic_string.h **** { 274:/usr/include/c++/4.8/bits/basic_string.h **** _Alloc_hider(_CharT* __dat, const _Alloc& __a) 275:/usr/include/c++/4.8/bits/basic_string.h **** : _Alloc(__a), _M_p(__dat) { } 276:/usr/include/c++/4.8/bits/basic_string.h **** 277:/usr/include/c++/4.8/bits/basic_string.h **** _CharT* _M_p; // The actual data. 278:/usr/include/c++/4.8/bits/basic_string.h **** }; 279:/usr/include/c++/4.8/bits/basic_string.h **** 280:/usr/include/c++/4.8/bits/basic_string.h **** public: 281:/usr/include/c++/4.8/bits/basic_string.h **** // Data Members (public): 282:/usr/include/c++/4.8/bits/basic_string.h **** // NB: This is an unsigned type, and thus represents the maximum 283:/usr/include/c++/4.8/bits/basic_string.h **** // size that the allocator can hold. 284:/usr/include/c++/4.8/bits/basic_string.h **** /// Value returned by various member functions when they fail. 285:/usr/include/c++/4.8/bits/basic_string.h **** static const size_type npos = static_cast(-1); 286:/usr/include/c++/4.8/bits/basic_string.h **** 287:/usr/include/c++/4.8/bits/basic_string.h **** private: 288:/usr/include/c++/4.8/bits/basic_string.h **** // Data Members (private): 289:/usr/include/c++/4.8/bits/basic_string.h **** mutable _Alloc_hider _M_dataplus; 290:/usr/include/c++/4.8/bits/basic_string.h **** 291:/usr/include/c++/4.8/bits/basic_string.h **** _CharT* 292:/usr/include/c++/4.8/bits/basic_string.h **** _M_data() const 293:/usr/include/c++/4.8/bits/basic_string.h **** { return _M_dataplus._M_p; } 294:/usr/include/c++/4.8/bits/basic_string.h **** 295:/usr/include/c++/4.8/bits/basic_string.h **** _CharT* 296:/usr/include/c++/4.8/bits/basic_string.h **** _M_data(_CharT* __p) 297:/usr/include/c++/4.8/bits/basic_string.h **** { return (_M_dataplus._M_p = __p); } 298:/usr/include/c++/4.8/bits/basic_string.h **** 299:/usr/include/c++/4.8/bits/basic_string.h **** _Rep* 300:/usr/include/c++/4.8/bits/basic_string.h **** _M_rep() const 301:/usr/include/c++/4.8/bits/basic_string.h **** { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); } 302:/usr/include/c++/4.8/bits/basic_string.h **** 303:/usr/include/c++/4.8/bits/basic_string.h **** // For the internal use we have functions similar to `begin'/`end' 304:/usr/include/c++/4.8/bits/basic_string.h **** // but they do not call _M_leak. 305:/usr/include/c++/4.8/bits/basic_string.h **** iterator 306:/usr/include/c++/4.8/bits/basic_string.h **** _M_ibegin() const 307:/usr/include/c++/4.8/bits/basic_string.h **** { return iterator(_M_data()); } GAS LISTING /tmp/ccrG9BDx.s page 40 308:/usr/include/c++/4.8/bits/basic_string.h **** 309:/usr/include/c++/4.8/bits/basic_string.h **** iterator 310:/usr/include/c++/4.8/bits/basic_string.h **** _M_iend() const 311:/usr/include/c++/4.8/bits/basic_string.h **** { return iterator(_M_data() + this->size()); } 312:/usr/include/c++/4.8/bits/basic_string.h **** 313:/usr/include/c++/4.8/bits/basic_string.h **** void 314:/usr/include/c++/4.8/bits/basic_string.h **** _M_leak() // for use in begin() & non-const op[] 315:/usr/include/c++/4.8/bits/basic_string.h **** { 316:/usr/include/c++/4.8/bits/basic_string.h **** if (!_M_rep()->_M_is_leaked()) 317:/usr/include/c++/4.8/bits/basic_string.h **** _M_leak_hard(); 318:/usr/include/c++/4.8/bits/basic_string.h **** } 319:/usr/include/c++/4.8/bits/basic_string.h **** 320:/usr/include/c++/4.8/bits/basic_string.h **** size_type 321:/usr/include/c++/4.8/bits/basic_string.h **** _M_check(size_type __pos, const char* __s) const 322:/usr/include/c++/4.8/bits/basic_string.h **** { 323:/usr/include/c++/4.8/bits/basic_string.h **** if (__pos > this->size()) 324:/usr/include/c++/4.8/bits/basic_string.h **** __throw_out_of_range(__N(__s)); 325:/usr/include/c++/4.8/bits/basic_string.h **** return __pos; 326:/usr/include/c++/4.8/bits/basic_string.h **** } 327:/usr/include/c++/4.8/bits/basic_string.h **** 328:/usr/include/c++/4.8/bits/basic_string.h **** void 329:/usr/include/c++/4.8/bits/basic_string.h **** _M_check_length(size_type __n1, size_type __n2, const char* __s) const 330:/usr/include/c++/4.8/bits/basic_string.h **** { 331:/usr/include/c++/4.8/bits/basic_string.h **** if (this->max_size() - (this->size() - __n1) < __n2) 332:/usr/include/c++/4.8/bits/basic_string.h **** __throw_length_error(__N(__s)); 333:/usr/include/c++/4.8/bits/basic_string.h **** } 334:/usr/include/c++/4.8/bits/basic_string.h **** 335:/usr/include/c++/4.8/bits/basic_string.h **** // NB: _M_limit doesn't check for a bad __pos value. 336:/usr/include/c++/4.8/bits/basic_string.h **** size_type 337:/usr/include/c++/4.8/bits/basic_string.h **** _M_limit(size_type __pos, size_type __off) const 338:/usr/include/c++/4.8/bits/basic_string.h **** { 339:/usr/include/c++/4.8/bits/basic_string.h **** const bool __testoff = __off < this->size() - __pos; 340:/usr/include/c++/4.8/bits/basic_string.h **** return __testoff ? __off : this->size() - __pos; 341:/usr/include/c++/4.8/bits/basic_string.h **** } 342:/usr/include/c++/4.8/bits/basic_string.h **** 343:/usr/include/c++/4.8/bits/basic_string.h **** // True if _Rep and source do not overlap. 344:/usr/include/c++/4.8/bits/basic_string.h **** bool 345:/usr/include/c++/4.8/bits/basic_string.h **** _M_disjunct(const _CharT* __s) const 346:/usr/include/c++/4.8/bits/basic_string.h **** { 347:/usr/include/c++/4.8/bits/basic_string.h **** return (less()(__s, _M_data()) 348:/usr/include/c++/4.8/bits/basic_string.h **** || less()(_M_data() + this->size(), __s)); 349:/usr/include/c++/4.8/bits/basic_string.h **** } 350:/usr/include/c++/4.8/bits/basic_string.h **** 351:/usr/include/c++/4.8/bits/basic_string.h **** // When __n = 1 way faster than the general multichar 352:/usr/include/c++/4.8/bits/basic_string.h **** // traits_type::copy/move/assign. 353:/usr/include/c++/4.8/bits/basic_string.h **** static void 354:/usr/include/c++/4.8/bits/basic_string.h **** _M_copy(_CharT* __d, const _CharT* __s, size_type __n) 355:/usr/include/c++/4.8/bits/basic_string.h **** { 356:/usr/include/c++/4.8/bits/basic_string.h **** if (__n == 1) 357:/usr/include/c++/4.8/bits/basic_string.h **** traits_type::assign(*__d, *__s); 358:/usr/include/c++/4.8/bits/basic_string.h **** else 359:/usr/include/c++/4.8/bits/basic_string.h **** traits_type::copy(__d, __s, __n); 360:/usr/include/c++/4.8/bits/basic_string.h **** } 361:/usr/include/c++/4.8/bits/basic_string.h **** 362:/usr/include/c++/4.8/bits/basic_string.h **** static void 363:/usr/include/c++/4.8/bits/basic_string.h **** _M_move(_CharT* __d, const _CharT* __s, size_type __n) 364:/usr/include/c++/4.8/bits/basic_string.h **** { GAS LISTING /tmp/ccrG9BDx.s page 41 365:/usr/include/c++/4.8/bits/basic_string.h **** if (__n == 1) 366:/usr/include/c++/4.8/bits/basic_string.h **** traits_type::assign(*__d, *__s); 367:/usr/include/c++/4.8/bits/basic_string.h **** else 368:/usr/include/c++/4.8/bits/basic_string.h **** traits_type::move(__d, __s, __n); 369:/usr/include/c++/4.8/bits/basic_string.h **** } 370:/usr/include/c++/4.8/bits/basic_string.h **** 371:/usr/include/c++/4.8/bits/basic_string.h **** static void 372:/usr/include/c++/4.8/bits/basic_string.h **** _M_assign(_CharT* __d, size_type __n, _CharT __c) 373:/usr/include/c++/4.8/bits/basic_string.h **** { 374:/usr/include/c++/4.8/bits/basic_string.h **** if (__n == 1) 375:/usr/include/c++/4.8/bits/basic_string.h **** traits_type::assign(*__d, __c); 376:/usr/include/c++/4.8/bits/basic_string.h **** else 377:/usr/include/c++/4.8/bits/basic_string.h **** traits_type::assign(__d, __n, __c); 378:/usr/include/c++/4.8/bits/basic_string.h **** } 379:/usr/include/c++/4.8/bits/basic_string.h **** 380:/usr/include/c++/4.8/bits/basic_string.h **** // _S_copy_chars is a separate template to permit specialization 381:/usr/include/c++/4.8/bits/basic_string.h **** // to optimize for the common case of pointers as iterators. 382:/usr/include/c++/4.8/bits/basic_string.h **** template 383:/usr/include/c++/4.8/bits/basic_string.h **** static void 384:/usr/include/c++/4.8/bits/basic_string.h **** _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) 385:/usr/include/c++/4.8/bits/basic_string.h **** { 386:/usr/include/c++/4.8/bits/basic_string.h **** for (; __k1 != __k2; ++__k1, ++__p) 387:/usr/include/c++/4.8/bits/basic_string.h **** traits_type::assign(*__p, *__k1); // These types are off. 388:/usr/include/c++/4.8/bits/basic_string.h **** } 389:/usr/include/c++/4.8/bits/basic_string.h **** 390:/usr/include/c++/4.8/bits/basic_string.h **** static void 391:/usr/include/c++/4.8/bits/basic_string.h **** _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2) 392:/usr/include/c++/4.8/bits/basic_string.h **** { _S_copy_chars(__p, __k1.base(), __k2.base()); } 393:/usr/include/c++/4.8/bits/basic_string.h **** 394:/usr/include/c++/4.8/bits/basic_string.h **** static void 395:/usr/include/c++/4.8/bits/basic_string.h **** _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2) 396:/usr/include/c++/4.8/bits/basic_string.h **** { _S_copy_chars(__p, __k1.base(), __k2.base()); } 397:/usr/include/c++/4.8/bits/basic_string.h **** 398:/usr/include/c++/4.8/bits/basic_string.h **** static void 399:/usr/include/c++/4.8/bits/basic_string.h **** _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) 400:/usr/include/c++/4.8/bits/basic_string.h **** { _M_copy(__p, __k1, __k2 - __k1); } 401:/usr/include/c++/4.8/bits/basic_string.h **** 402:/usr/include/c++/4.8/bits/basic_string.h **** static void 403:/usr/include/c++/4.8/bits/basic_string.h **** _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2) 404:/usr/include/c++/4.8/bits/basic_string.h **** { _M_copy(__p, __k1, __k2 - __k1); } 405:/usr/include/c++/4.8/bits/basic_string.h **** 406:/usr/include/c++/4.8/bits/basic_string.h **** static int 407:/usr/include/c++/4.8/bits/basic_string.h **** _S_compare(size_type __n1, size_type __n2) 408:/usr/include/c++/4.8/bits/basic_string.h **** { 409:/usr/include/c++/4.8/bits/basic_string.h **** const difference_type __d = difference_type(__n1 - __n2); 410:/usr/include/c++/4.8/bits/basic_string.h **** 411:/usr/include/c++/4.8/bits/basic_string.h **** if (__d > __gnu_cxx::__numeric_traits::__max) 412:/usr/include/c++/4.8/bits/basic_string.h **** return __gnu_cxx::__numeric_traits::__max; 413:/usr/include/c++/4.8/bits/basic_string.h **** else if (__d < __gnu_cxx::__numeric_traits::__min) 414:/usr/include/c++/4.8/bits/basic_string.h **** return __gnu_cxx::__numeric_traits::__min; 415:/usr/include/c++/4.8/bits/basic_string.h **** else 416:/usr/include/c++/4.8/bits/basic_string.h **** return int(__d); 417:/usr/include/c++/4.8/bits/basic_string.h **** } 418:/usr/include/c++/4.8/bits/basic_string.h **** 419:/usr/include/c++/4.8/bits/basic_string.h **** void 420:/usr/include/c++/4.8/bits/basic_string.h **** _M_mutate(size_type __pos, size_type __len1, size_type __len2); 421:/usr/include/c++/4.8/bits/basic_string.h **** GAS LISTING /tmp/ccrG9BDx.s page 42 422:/usr/include/c++/4.8/bits/basic_string.h **** void 423:/usr/include/c++/4.8/bits/basic_string.h **** _M_leak_hard(); 424:/usr/include/c++/4.8/bits/basic_string.h **** 425:/usr/include/c++/4.8/bits/basic_string.h **** static _Rep& 426:/usr/include/c++/4.8/bits/basic_string.h **** _S_empty_rep() 427:/usr/include/c++/4.8/bits/basic_string.h **** { return _Rep::_S_empty_rep(); } 428:/usr/include/c++/4.8/bits/basic_string.h **** 429:/usr/include/c++/4.8/bits/basic_string.h **** public: 430:/usr/include/c++/4.8/bits/basic_string.h **** // Construct/copy/destroy: 431:/usr/include/c++/4.8/bits/basic_string.h **** // NB: We overload ctors in some cases instead of using default 432:/usr/include/c++/4.8/bits/basic_string.h **** // arguments, per 17.4.4.4 para. 2 item 2. 433:/usr/include/c++/4.8/bits/basic_string.h **** 434:/usr/include/c++/4.8/bits/basic_string.h **** /** 435:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Default constructor creates an empty string. 436:/usr/include/c++/4.8/bits/basic_string.h **** */ 437:/usr/include/c++/4.8/bits/basic_string.h **** basic_string() 438:/usr/include/c++/4.8/bits/basic_string.h **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0 439:/usr/include/c++/4.8/bits/basic_string.h **** : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { } 440:/usr/include/c++/4.8/bits/basic_string.h **** #else 441:/usr/include/c++/4.8/bits/basic_string.h **** : _M_dataplus(_S_construct(size_type(), _CharT(), _Alloc()), _Alloc()){ } 442:/usr/include/c++/4.8/bits/basic_string.h **** #endif 443:/usr/include/c++/4.8/bits/basic_string.h **** 444:/usr/include/c++/4.8/bits/basic_string.h **** /** 445:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Construct an empty string using allocator @a a. 446:/usr/include/c++/4.8/bits/basic_string.h **** */ 447:/usr/include/c++/4.8/bits/basic_string.h **** explicit 448:/usr/include/c++/4.8/bits/basic_string.h **** basic_string(const _Alloc& __a); 449:/usr/include/c++/4.8/bits/basic_string.h **** 450:/usr/include/c++/4.8/bits/basic_string.h **** // NB: per LWG issue 42, semantics different from IS: 451:/usr/include/c++/4.8/bits/basic_string.h **** /** 452:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Construct string with copy of value of @a str. 453:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str Source string. 454:/usr/include/c++/4.8/bits/basic_string.h **** */ 455:/usr/include/c++/4.8/bits/basic_string.h **** basic_string(const basic_string& __str); 456:/usr/include/c++/4.8/bits/basic_string.h **** /** 457:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Construct string as copy of a substring. 458:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str Source string. 459:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of first character to copy from. 460:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters to copy (default remainder). 461:/usr/include/c++/4.8/bits/basic_string.h **** */ 462:/usr/include/c++/4.8/bits/basic_string.h **** basic_string(const basic_string& __str, size_type __pos, 463:/usr/include/c++/4.8/bits/basic_string.h **** size_type __n = npos); 464:/usr/include/c++/4.8/bits/basic_string.h **** /** 465:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Construct string as copy of a substring. 466:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str Source string. 467:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of first character to copy from. 468:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters to copy. 469:/usr/include/c++/4.8/bits/basic_string.h **** * @param __a Allocator to use. 470:/usr/include/c++/4.8/bits/basic_string.h **** */ 471:/usr/include/c++/4.8/bits/basic_string.h **** basic_string(const basic_string& __str, size_type __pos, 472:/usr/include/c++/4.8/bits/basic_string.h **** size_type __n, const _Alloc& __a); 473:/usr/include/c++/4.8/bits/basic_string.h **** 474:/usr/include/c++/4.8/bits/basic_string.h **** /** 475:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Construct string initialized by a character %array. 476:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s Source character %array. 477:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters to copy. 478:/usr/include/c++/4.8/bits/basic_string.h **** * @param __a Allocator to use (default is default allocator). GAS LISTING /tmp/ccrG9BDx.s page 43 479:/usr/include/c++/4.8/bits/basic_string.h **** * 480:/usr/include/c++/4.8/bits/basic_string.h **** * NB: @a __s must have at least @a __n characters, '\\0' 481:/usr/include/c++/4.8/bits/basic_string.h **** * has no special meaning. 482:/usr/include/c++/4.8/bits/basic_string.h **** */ 483:/usr/include/c++/4.8/bits/basic_string.h **** basic_string(const _CharT* __s, size_type __n, 484:/usr/include/c++/4.8/bits/basic_string.h **** const _Alloc& __a = _Alloc()); 485:/usr/include/c++/4.8/bits/basic_string.h **** /** 486:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Construct string as copy of a C string. 487:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s Source C string. 488:/usr/include/c++/4.8/bits/basic_string.h **** * @param __a Allocator to use (default is default allocator). 489:/usr/include/c++/4.8/bits/basic_string.h **** */ 490:/usr/include/c++/4.8/bits/basic_string.h **** basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()); 491:/usr/include/c++/4.8/bits/basic_string.h **** /** 492:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Construct string as multiple characters. 493:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters. 494:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c Character to use. 495:/usr/include/c++/4.8/bits/basic_string.h **** * @param __a Allocator to use (default is default allocator). 496:/usr/include/c++/4.8/bits/basic_string.h **** */ 497:/usr/include/c++/4.8/bits/basic_string.h **** basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()); 498:/usr/include/c++/4.8/bits/basic_string.h **** 499:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L 500:/usr/include/c++/4.8/bits/basic_string.h **** /** 501:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Move construct string. 502:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str Source string. 503:/usr/include/c++/4.8/bits/basic_string.h **** * 504:/usr/include/c++/4.8/bits/basic_string.h **** * The newly-created string contains the exact contents of @a __str. 505:/usr/include/c++/4.8/bits/basic_string.h **** * @a __str is a valid, but unspecified string. 506:/usr/include/c++/4.8/bits/basic_string.h **** **/ 507:/usr/include/c++/4.8/bits/basic_string.h **** basic_string(basic_string&& __str) noexcept 508:/usr/include/c++/4.8/bits/basic_string.h **** : _M_dataplus(__str._M_dataplus) 509:/usr/include/c++/4.8/bits/basic_string.h **** { 510:/usr/include/c++/4.8/bits/basic_string.h **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0 511:/usr/include/c++/4.8/bits/basic_string.h **** __str._M_data(_S_empty_rep()._M_refdata()); 512:/usr/include/c++/4.8/bits/basic_string.h **** #else 513:/usr/include/c++/4.8/bits/basic_string.h **** __str._M_data(_S_construct(size_type(), _CharT(), get_allocator())); 514:/usr/include/c++/4.8/bits/basic_string.h **** #endif 515:/usr/include/c++/4.8/bits/basic_string.h **** } 516:/usr/include/c++/4.8/bits/basic_string.h **** 517:/usr/include/c++/4.8/bits/basic_string.h **** /** 518:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Construct string from an initializer %list. 519:/usr/include/c++/4.8/bits/basic_string.h **** * @param __l std::initializer_list of characters. 520:/usr/include/c++/4.8/bits/basic_string.h **** * @param __a Allocator to use (default is default allocator). 521:/usr/include/c++/4.8/bits/basic_string.h **** */ 522:/usr/include/c++/4.8/bits/basic_string.h **** basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()); 523:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11 524:/usr/include/c++/4.8/bits/basic_string.h **** 525:/usr/include/c++/4.8/bits/basic_string.h **** /** 526:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Construct string as copy of a range. 527:/usr/include/c++/4.8/bits/basic_string.h **** * @param __beg Start of range. 528:/usr/include/c++/4.8/bits/basic_string.h **** * @param __end End of range. 529:/usr/include/c++/4.8/bits/basic_string.h **** * @param __a Allocator to use (default is default allocator). 530:/usr/include/c++/4.8/bits/basic_string.h **** */ 531:/usr/include/c++/4.8/bits/basic_string.h **** template 532:/usr/include/c++/4.8/bits/basic_string.h **** basic_string(_InputIterator __beg, _InputIterator __end, 533:/usr/include/c++/4.8/bits/basic_string.h **** const _Alloc& __a = _Alloc()); 534:/usr/include/c++/4.8/bits/basic_string.h **** 535:/usr/include/c++/4.8/bits/basic_string.h **** /** GAS LISTING /tmp/ccrG9BDx.s page 44 536:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Destroy the string instance. 537:/usr/include/c++/4.8/bits/basic_string.h **** */ 538:/usr/include/c++/4.8/bits/basic_string.h **** ~basic_string() _GLIBCXX_NOEXCEPT 539:/usr/include/c++/4.8/bits/basic_string.h **** { _M_rep()->_M_dispose(this->get_allocator()); } 540:/usr/include/c++/4.8/bits/basic_string.h **** 541:/usr/include/c++/4.8/bits/basic_string.h **** /** 542:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Assign the value of @a str to this string. 543:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str Source string. 544:/usr/include/c++/4.8/bits/basic_string.h **** */ 545:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 546:/usr/include/c++/4.8/bits/basic_string.h **** operator=(const basic_string& __str) 547:/usr/include/c++/4.8/bits/basic_string.h **** { return this->assign(__str); } 548:/usr/include/c++/4.8/bits/basic_string.h **** 549:/usr/include/c++/4.8/bits/basic_string.h **** /** 550:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Copy contents of @a s into this string. 551:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s Source null-terminated string. 552:/usr/include/c++/4.8/bits/basic_string.h **** */ 553:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 554:/usr/include/c++/4.8/bits/basic_string.h **** operator=(const _CharT* __s) 555:/usr/include/c++/4.8/bits/basic_string.h **** { return this->assign(__s); } 556:/usr/include/c++/4.8/bits/basic_string.h **** 557:/usr/include/c++/4.8/bits/basic_string.h **** /** 558:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Set value to string of length 1. 559:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c Source character. 560:/usr/include/c++/4.8/bits/basic_string.h **** * 561:/usr/include/c++/4.8/bits/basic_string.h **** * Assigning to a character makes this string length 1 and 562:/usr/include/c++/4.8/bits/basic_string.h **** * (*this)[0] == @a c. 563:/usr/include/c++/4.8/bits/basic_string.h **** */ 564:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 565:/usr/include/c++/4.8/bits/basic_string.h **** operator=(_CharT __c) 566:/usr/include/c++/4.8/bits/basic_string.h **** { 567:/usr/include/c++/4.8/bits/basic_string.h **** this->assign(1, __c); 568:/usr/include/c++/4.8/bits/basic_string.h **** return *this; 569:/usr/include/c++/4.8/bits/basic_string.h **** } 570:/usr/include/c++/4.8/bits/basic_string.h **** 571:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L 572:/usr/include/c++/4.8/bits/basic_string.h **** /** 573:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Move assign the value of @a str to this string. 574:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str Source string. 575:/usr/include/c++/4.8/bits/basic_string.h **** * 576:/usr/include/c++/4.8/bits/basic_string.h **** * The contents of @a str are moved into this string (without copying). 577:/usr/include/c++/4.8/bits/basic_string.h **** * @a str is a valid, but unspecified string. 578:/usr/include/c++/4.8/bits/basic_string.h **** **/ 579:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 580:/usr/include/c++/4.8/bits/basic_string.h **** operator=(basic_string&& __str) 581:/usr/include/c++/4.8/bits/basic_string.h **** { 582:/usr/include/c++/4.8/bits/basic_string.h **** // NB: DR 1204. 583:/usr/include/c++/4.8/bits/basic_string.h **** this->swap(__str); 584:/usr/include/c++/4.8/bits/basic_string.h **** return *this; 585:/usr/include/c++/4.8/bits/basic_string.h **** } 586:/usr/include/c++/4.8/bits/basic_string.h **** 587:/usr/include/c++/4.8/bits/basic_string.h **** /** 588:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Set value to string constructed from initializer %list. 589:/usr/include/c++/4.8/bits/basic_string.h **** * @param __l std::initializer_list. 590:/usr/include/c++/4.8/bits/basic_string.h **** */ 591:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 592:/usr/include/c++/4.8/bits/basic_string.h **** operator=(initializer_list<_CharT> __l) GAS LISTING /tmp/ccrG9BDx.s page 45 593:/usr/include/c++/4.8/bits/basic_string.h **** { 594:/usr/include/c++/4.8/bits/basic_string.h **** this->assign(__l.begin(), __l.size()); 595:/usr/include/c++/4.8/bits/basic_string.h **** return *this; 596:/usr/include/c++/4.8/bits/basic_string.h **** } 597:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11 598:/usr/include/c++/4.8/bits/basic_string.h **** 599:/usr/include/c++/4.8/bits/basic_string.h **** // Iterators: 600:/usr/include/c++/4.8/bits/basic_string.h **** /** 601:/usr/include/c++/4.8/bits/basic_string.h **** * Returns a read/write iterator that points to the first character in 602:/usr/include/c++/4.8/bits/basic_string.h **** * the %string. Unshares the string. 603:/usr/include/c++/4.8/bits/basic_string.h **** */ 604:/usr/include/c++/4.8/bits/basic_string.h **** iterator 605:/usr/include/c++/4.8/bits/basic_string.h **** begin() _GLIBCXX_NOEXCEPT 606:/usr/include/c++/4.8/bits/basic_string.h **** { 607:/usr/include/c++/4.8/bits/basic_string.h **** _M_leak(); 608:/usr/include/c++/4.8/bits/basic_string.h **** return iterator(_M_data()); 609:/usr/include/c++/4.8/bits/basic_string.h **** } 610:/usr/include/c++/4.8/bits/basic_string.h **** 611:/usr/include/c++/4.8/bits/basic_string.h **** /** 612:/usr/include/c++/4.8/bits/basic_string.h **** * Returns a read-only (constant) iterator that points to the first 613:/usr/include/c++/4.8/bits/basic_string.h **** * character in the %string. 614:/usr/include/c++/4.8/bits/basic_string.h **** */ 615:/usr/include/c++/4.8/bits/basic_string.h **** const_iterator 616:/usr/include/c++/4.8/bits/basic_string.h **** begin() const _GLIBCXX_NOEXCEPT 617:/usr/include/c++/4.8/bits/basic_string.h **** { return const_iterator(_M_data()); } 618:/usr/include/c++/4.8/bits/basic_string.h **** 619:/usr/include/c++/4.8/bits/basic_string.h **** /** 620:/usr/include/c++/4.8/bits/basic_string.h **** * Returns a read/write iterator that points one past the last 621:/usr/include/c++/4.8/bits/basic_string.h **** * character in the %string. Unshares the string. 622:/usr/include/c++/4.8/bits/basic_string.h **** */ 623:/usr/include/c++/4.8/bits/basic_string.h **** iterator 624:/usr/include/c++/4.8/bits/basic_string.h **** end() _GLIBCXX_NOEXCEPT 625:/usr/include/c++/4.8/bits/basic_string.h **** { 626:/usr/include/c++/4.8/bits/basic_string.h **** _M_leak(); 627:/usr/include/c++/4.8/bits/basic_string.h **** return iterator(_M_data() + this->size()); 628:/usr/include/c++/4.8/bits/basic_string.h **** } 629:/usr/include/c++/4.8/bits/basic_string.h **** 630:/usr/include/c++/4.8/bits/basic_string.h **** /** 631:/usr/include/c++/4.8/bits/basic_string.h **** * Returns a read-only (constant) iterator that points one past the 632:/usr/include/c++/4.8/bits/basic_string.h **** * last character in the %string. 633:/usr/include/c++/4.8/bits/basic_string.h **** */ 634:/usr/include/c++/4.8/bits/basic_string.h **** const_iterator 635:/usr/include/c++/4.8/bits/basic_string.h **** end() const _GLIBCXX_NOEXCEPT 636:/usr/include/c++/4.8/bits/basic_string.h **** { return const_iterator(_M_data() + this->size()); } 637:/usr/include/c++/4.8/bits/basic_string.h **** 638:/usr/include/c++/4.8/bits/basic_string.h **** /** 639:/usr/include/c++/4.8/bits/basic_string.h **** * Returns a read/write reverse iterator that points to the last 640:/usr/include/c++/4.8/bits/basic_string.h **** * character in the %string. Iteration is done in reverse element 641:/usr/include/c++/4.8/bits/basic_string.h **** * order. Unshares the string. 642:/usr/include/c++/4.8/bits/basic_string.h **** */ 643:/usr/include/c++/4.8/bits/basic_string.h **** reverse_iterator 644:/usr/include/c++/4.8/bits/basic_string.h **** rbegin() _GLIBCXX_NOEXCEPT 645:/usr/include/c++/4.8/bits/basic_string.h **** { return reverse_iterator(this->end()); } 646:/usr/include/c++/4.8/bits/basic_string.h **** 647:/usr/include/c++/4.8/bits/basic_string.h **** /** 648:/usr/include/c++/4.8/bits/basic_string.h **** * Returns a read-only (constant) reverse iterator that points 649:/usr/include/c++/4.8/bits/basic_string.h **** * to the last character in the %string. Iteration is done in GAS LISTING /tmp/ccrG9BDx.s page 46 650:/usr/include/c++/4.8/bits/basic_string.h **** * reverse element order. 651:/usr/include/c++/4.8/bits/basic_string.h **** */ 652:/usr/include/c++/4.8/bits/basic_string.h **** const_reverse_iterator 653:/usr/include/c++/4.8/bits/basic_string.h **** rbegin() const _GLIBCXX_NOEXCEPT 654:/usr/include/c++/4.8/bits/basic_string.h **** { return const_reverse_iterator(this->end()); } 655:/usr/include/c++/4.8/bits/basic_string.h **** 656:/usr/include/c++/4.8/bits/basic_string.h **** /** 657:/usr/include/c++/4.8/bits/basic_string.h **** * Returns a read/write reverse iterator that points to one before the 658:/usr/include/c++/4.8/bits/basic_string.h **** * first character in the %string. Iteration is done in reverse 659:/usr/include/c++/4.8/bits/basic_string.h **** * element order. Unshares the string. 660:/usr/include/c++/4.8/bits/basic_string.h **** */ 661:/usr/include/c++/4.8/bits/basic_string.h **** reverse_iterator 662:/usr/include/c++/4.8/bits/basic_string.h **** rend() _GLIBCXX_NOEXCEPT 663:/usr/include/c++/4.8/bits/basic_string.h **** { return reverse_iterator(this->begin()); } 664:/usr/include/c++/4.8/bits/basic_string.h **** 665:/usr/include/c++/4.8/bits/basic_string.h **** /** 666:/usr/include/c++/4.8/bits/basic_string.h **** * Returns a read-only (constant) reverse iterator that points 667:/usr/include/c++/4.8/bits/basic_string.h **** * to one before the first character in the %string. Iteration 668:/usr/include/c++/4.8/bits/basic_string.h **** * is done in reverse element order. 669:/usr/include/c++/4.8/bits/basic_string.h **** */ 670:/usr/include/c++/4.8/bits/basic_string.h **** const_reverse_iterator 671:/usr/include/c++/4.8/bits/basic_string.h **** rend() const _GLIBCXX_NOEXCEPT 672:/usr/include/c++/4.8/bits/basic_string.h **** { return const_reverse_iterator(this->begin()); } 673:/usr/include/c++/4.8/bits/basic_string.h **** 674:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L 675:/usr/include/c++/4.8/bits/basic_string.h **** /** 676:/usr/include/c++/4.8/bits/basic_string.h **** * Returns a read-only (constant) iterator that points to the first 677:/usr/include/c++/4.8/bits/basic_string.h **** * character in the %string. 678:/usr/include/c++/4.8/bits/basic_string.h **** */ 679:/usr/include/c++/4.8/bits/basic_string.h **** const_iterator 680:/usr/include/c++/4.8/bits/basic_string.h **** cbegin() const noexcept 681:/usr/include/c++/4.8/bits/basic_string.h **** { return const_iterator(this->_M_data()); } 682:/usr/include/c++/4.8/bits/basic_string.h **** 683:/usr/include/c++/4.8/bits/basic_string.h **** /** 684:/usr/include/c++/4.8/bits/basic_string.h **** * Returns a read-only (constant) iterator that points one past the 685:/usr/include/c++/4.8/bits/basic_string.h **** * last character in the %string. 686:/usr/include/c++/4.8/bits/basic_string.h **** */ 687:/usr/include/c++/4.8/bits/basic_string.h **** const_iterator 688:/usr/include/c++/4.8/bits/basic_string.h **** cend() const noexcept 689:/usr/include/c++/4.8/bits/basic_string.h **** { return const_iterator(this->_M_data() + this->size()); } 690:/usr/include/c++/4.8/bits/basic_string.h **** 691:/usr/include/c++/4.8/bits/basic_string.h **** /** 692:/usr/include/c++/4.8/bits/basic_string.h **** * Returns a read-only (constant) reverse iterator that points 693:/usr/include/c++/4.8/bits/basic_string.h **** * to the last character in the %string. Iteration is done in 694:/usr/include/c++/4.8/bits/basic_string.h **** * reverse element order. 695:/usr/include/c++/4.8/bits/basic_string.h **** */ 696:/usr/include/c++/4.8/bits/basic_string.h **** const_reverse_iterator 697:/usr/include/c++/4.8/bits/basic_string.h **** crbegin() const noexcept 698:/usr/include/c++/4.8/bits/basic_string.h **** { return const_reverse_iterator(this->end()); } 699:/usr/include/c++/4.8/bits/basic_string.h **** 700:/usr/include/c++/4.8/bits/basic_string.h **** /** 701:/usr/include/c++/4.8/bits/basic_string.h **** * Returns a read-only (constant) reverse iterator that points 702:/usr/include/c++/4.8/bits/basic_string.h **** * to one before the first character in the %string. Iteration 703:/usr/include/c++/4.8/bits/basic_string.h **** * is done in reverse element order. 704:/usr/include/c++/4.8/bits/basic_string.h **** */ 705:/usr/include/c++/4.8/bits/basic_string.h **** const_reverse_iterator 706:/usr/include/c++/4.8/bits/basic_string.h **** crend() const noexcept GAS LISTING /tmp/ccrG9BDx.s page 47 707:/usr/include/c++/4.8/bits/basic_string.h **** { return const_reverse_iterator(this->begin()); } 708:/usr/include/c++/4.8/bits/basic_string.h **** #endif 709:/usr/include/c++/4.8/bits/basic_string.h **** 710:/usr/include/c++/4.8/bits/basic_string.h **** public: 711:/usr/include/c++/4.8/bits/basic_string.h **** // Capacity: 712:/usr/include/c++/4.8/bits/basic_string.h **** /// Returns the number of characters in the string, not including any 713:/usr/include/c++/4.8/bits/basic_string.h **** /// null-termination. 714:/usr/include/c++/4.8/bits/basic_string.h **** size_type 715:/usr/include/c++/4.8/bits/basic_string.h **** size() const _GLIBCXX_NOEXCEPT 716:/usr/include/c++/4.8/bits/basic_string.h **** { return _M_rep()->_M_length; } 717:/usr/include/c++/4.8/bits/basic_string.h **** 718:/usr/include/c++/4.8/bits/basic_string.h **** /// Returns the number of characters in the string, not including any 719:/usr/include/c++/4.8/bits/basic_string.h **** /// null-termination. 720:/usr/include/c++/4.8/bits/basic_string.h **** size_type 721:/usr/include/c++/4.8/bits/basic_string.h **** length() const _GLIBCXX_NOEXCEPT 722:/usr/include/c++/4.8/bits/basic_string.h **** { return _M_rep()->_M_length; } 723:/usr/include/c++/4.8/bits/basic_string.h **** 724:/usr/include/c++/4.8/bits/basic_string.h **** /// Returns the size() of the largest possible %string. 725:/usr/include/c++/4.8/bits/basic_string.h **** size_type 726:/usr/include/c++/4.8/bits/basic_string.h **** max_size() const _GLIBCXX_NOEXCEPT 727:/usr/include/c++/4.8/bits/basic_string.h **** { return _Rep::_S_max_size; } 728:/usr/include/c++/4.8/bits/basic_string.h **** 729:/usr/include/c++/4.8/bits/basic_string.h **** /** 730:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Resizes the %string to the specified number of characters. 731:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters the %string should contain. 732:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c Character to fill any new elements. 733:/usr/include/c++/4.8/bits/basic_string.h **** * 734:/usr/include/c++/4.8/bits/basic_string.h **** * This function will %resize the %string to the specified 735:/usr/include/c++/4.8/bits/basic_string.h **** * number of characters. If the number is smaller than the 736:/usr/include/c++/4.8/bits/basic_string.h **** * %string's current size the %string is truncated, otherwise 737:/usr/include/c++/4.8/bits/basic_string.h **** * the %string is extended and new elements are %set to @a __c. 738:/usr/include/c++/4.8/bits/basic_string.h **** */ 739:/usr/include/c++/4.8/bits/basic_string.h **** void 740:/usr/include/c++/4.8/bits/basic_string.h **** resize(size_type __n, _CharT __c); 741:/usr/include/c++/4.8/bits/basic_string.h **** 742:/usr/include/c++/4.8/bits/basic_string.h **** /** 743:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Resizes the %string to the specified number of characters. 744:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters the %string should contain. 745:/usr/include/c++/4.8/bits/basic_string.h **** * 746:/usr/include/c++/4.8/bits/basic_string.h **** * This function will resize the %string to the specified length. If 747:/usr/include/c++/4.8/bits/basic_string.h **** * the new size is smaller than the %string's current size the %string 748:/usr/include/c++/4.8/bits/basic_string.h **** * is truncated, otherwise the %string is extended and new characters 749:/usr/include/c++/4.8/bits/basic_string.h **** * are default-constructed. For basic types such as char, this means 750:/usr/include/c++/4.8/bits/basic_string.h **** * setting them to 0. 751:/usr/include/c++/4.8/bits/basic_string.h **** */ 752:/usr/include/c++/4.8/bits/basic_string.h **** void 753:/usr/include/c++/4.8/bits/basic_string.h **** resize(size_type __n) 754:/usr/include/c++/4.8/bits/basic_string.h **** { this->resize(__n, _CharT()); } 755:/usr/include/c++/4.8/bits/basic_string.h **** 756:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L 757:/usr/include/c++/4.8/bits/basic_string.h **** /// A non-binding request to reduce capacity() to size(). 758:/usr/include/c++/4.8/bits/basic_string.h **** void 759:/usr/include/c++/4.8/bits/basic_string.h **** shrink_to_fit() 760:/usr/include/c++/4.8/bits/basic_string.h **** { 761:/usr/include/c++/4.8/bits/basic_string.h **** if (capacity() > size()) 762:/usr/include/c++/4.8/bits/basic_string.h **** { 763:/usr/include/c++/4.8/bits/basic_string.h **** __try GAS LISTING /tmp/ccrG9BDx.s page 48 764:/usr/include/c++/4.8/bits/basic_string.h **** { reserve(0); } 765:/usr/include/c++/4.8/bits/basic_string.h **** __catch(...) 766:/usr/include/c++/4.8/bits/basic_string.h **** { } 767:/usr/include/c++/4.8/bits/basic_string.h **** } 768:/usr/include/c++/4.8/bits/basic_string.h **** } 769:/usr/include/c++/4.8/bits/basic_string.h **** #endif 770:/usr/include/c++/4.8/bits/basic_string.h **** 771:/usr/include/c++/4.8/bits/basic_string.h **** /** 772:/usr/include/c++/4.8/bits/basic_string.h **** * Returns the total number of characters that the %string can hold 773:/usr/include/c++/4.8/bits/basic_string.h **** * before needing to allocate more memory. 774:/usr/include/c++/4.8/bits/basic_string.h **** */ 775:/usr/include/c++/4.8/bits/basic_string.h **** size_type 776:/usr/include/c++/4.8/bits/basic_string.h **** capacity() const _GLIBCXX_NOEXCEPT 777:/usr/include/c++/4.8/bits/basic_string.h **** { return _M_rep()->_M_capacity; } 778:/usr/include/c++/4.8/bits/basic_string.h **** 779:/usr/include/c++/4.8/bits/basic_string.h **** /** 780:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Attempt to preallocate enough memory for specified number of 781:/usr/include/c++/4.8/bits/basic_string.h **** * characters. 782:/usr/include/c++/4.8/bits/basic_string.h **** * @param __res_arg Number of characters required. 783:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If @a __res_arg exceeds @c max_size(). 784:/usr/include/c++/4.8/bits/basic_string.h **** * 785:/usr/include/c++/4.8/bits/basic_string.h **** * This function attempts to reserve enough memory for the 786:/usr/include/c++/4.8/bits/basic_string.h **** * %string to hold the specified number of characters. If the 787:/usr/include/c++/4.8/bits/basic_string.h **** * number requested is more than max_size(), length_error is 788:/usr/include/c++/4.8/bits/basic_string.h **** * thrown. 789:/usr/include/c++/4.8/bits/basic_string.h **** * 790:/usr/include/c++/4.8/bits/basic_string.h **** * The advantage of this function is that if optimal code is a 791:/usr/include/c++/4.8/bits/basic_string.h **** * necessity and the user can determine the string length that will be 792:/usr/include/c++/4.8/bits/basic_string.h **** * required, the user can reserve the memory in %advance, and thus 793:/usr/include/c++/4.8/bits/basic_string.h **** * prevent a possible reallocation of memory and copying of %string 794:/usr/include/c++/4.8/bits/basic_string.h **** * data. 795:/usr/include/c++/4.8/bits/basic_string.h **** */ 796:/usr/include/c++/4.8/bits/basic_string.h **** void 797:/usr/include/c++/4.8/bits/basic_string.h **** reserve(size_type __res_arg = 0); 798:/usr/include/c++/4.8/bits/basic_string.h **** 799:/usr/include/c++/4.8/bits/basic_string.h **** /** 800:/usr/include/c++/4.8/bits/basic_string.h **** * Erases the string, making it empty. 801:/usr/include/c++/4.8/bits/basic_string.h **** */ 802:/usr/include/c++/4.8/bits/basic_string.h **** void 803:/usr/include/c++/4.8/bits/basic_string.h **** clear() _GLIBCXX_NOEXCEPT 804:/usr/include/c++/4.8/bits/basic_string.h **** { _M_mutate(0, this->size(), 0); } 805:/usr/include/c++/4.8/bits/basic_string.h **** 806:/usr/include/c++/4.8/bits/basic_string.h **** /** 807:/usr/include/c++/4.8/bits/basic_string.h **** * Returns true if the %string is empty. Equivalent to 808:/usr/include/c++/4.8/bits/basic_string.h **** * *this == "". 809:/usr/include/c++/4.8/bits/basic_string.h **** */ 810:/usr/include/c++/4.8/bits/basic_string.h **** bool 811:/usr/include/c++/4.8/bits/basic_string.h **** empty() const _GLIBCXX_NOEXCEPT 812:/usr/include/c++/4.8/bits/basic_string.h **** { return this->size() == 0; } 813:/usr/include/c++/4.8/bits/basic_string.h **** 814:/usr/include/c++/4.8/bits/basic_string.h **** // Element access: 815:/usr/include/c++/4.8/bits/basic_string.h **** /** 816:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Subscript access to the data contained in the %string. 817:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos The index of the character to access. 818:/usr/include/c++/4.8/bits/basic_string.h **** * @return Read-only (constant) reference to the character. 819:/usr/include/c++/4.8/bits/basic_string.h **** * 820:/usr/include/c++/4.8/bits/basic_string.h **** * This operator allows for easy, array-style, data access. GAS LISTING /tmp/ccrG9BDx.s page 49 821:/usr/include/c++/4.8/bits/basic_string.h **** * Note that data access with this operator is unchecked and 822:/usr/include/c++/4.8/bits/basic_string.h **** * out_of_range lookups are not defined. (For checked lookups 823:/usr/include/c++/4.8/bits/basic_string.h **** * see at().) 824:/usr/include/c++/4.8/bits/basic_string.h **** */ 825:/usr/include/c++/4.8/bits/basic_string.h **** const_reference 826:/usr/include/c++/4.8/bits/basic_string.h **** operator[] (size_type __pos) const 827:/usr/include/c++/4.8/bits/basic_string.h **** { 828:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_DEBUG_ASSERT(__pos <= size()); 829:/usr/include/c++/4.8/bits/basic_string.h **** return _M_data()[__pos]; 830:/usr/include/c++/4.8/bits/basic_string.h **** } 831:/usr/include/c++/4.8/bits/basic_string.h **** 832:/usr/include/c++/4.8/bits/basic_string.h **** /** 833:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Subscript access to the data contained in the %string. 834:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos The index of the character to access. 835:/usr/include/c++/4.8/bits/basic_string.h **** * @return Read/write reference to the character. 836:/usr/include/c++/4.8/bits/basic_string.h **** * 837:/usr/include/c++/4.8/bits/basic_string.h **** * This operator allows for easy, array-style, data access. 838:/usr/include/c++/4.8/bits/basic_string.h **** * Note that data access with this operator is unchecked and 839:/usr/include/c++/4.8/bits/basic_string.h **** * out_of_range lookups are not defined. (For checked lookups 840:/usr/include/c++/4.8/bits/basic_string.h **** * see at().) Unshares the string. 841:/usr/include/c++/4.8/bits/basic_string.h **** */ 842:/usr/include/c++/4.8/bits/basic_string.h **** reference 843:/usr/include/c++/4.8/bits/basic_string.h **** operator[](size_type __pos) 844:/usr/include/c++/4.8/bits/basic_string.h **** { 845:/usr/include/c++/4.8/bits/basic_string.h **** // allow pos == size() as v3 extension: 846:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_DEBUG_ASSERT(__pos <= size()); 847:/usr/include/c++/4.8/bits/basic_string.h **** // but be strict in pedantic mode: 848:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_DEBUG_PEDASSERT(__pos < size()); 849:/usr/include/c++/4.8/bits/basic_string.h **** _M_leak(); 850:/usr/include/c++/4.8/bits/basic_string.h **** return _M_data()[__pos]; 851:/usr/include/c++/4.8/bits/basic_string.h **** } 852:/usr/include/c++/4.8/bits/basic_string.h **** 853:/usr/include/c++/4.8/bits/basic_string.h **** /** 854:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Provides access to the data contained in the %string. 855:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n The index of the character to access. 856:/usr/include/c++/4.8/bits/basic_string.h **** * @return Read-only (const) reference to the character. 857:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::out_of_range If @a n is an invalid index. 858:/usr/include/c++/4.8/bits/basic_string.h **** * 859:/usr/include/c++/4.8/bits/basic_string.h **** * This function provides for safer data access. The parameter is 860:/usr/include/c++/4.8/bits/basic_string.h **** * first checked that it is in the range of the string. The function 861:/usr/include/c++/4.8/bits/basic_string.h **** * throws out_of_range if the check fails. 862:/usr/include/c++/4.8/bits/basic_string.h **** */ 863:/usr/include/c++/4.8/bits/basic_string.h **** const_reference 864:/usr/include/c++/4.8/bits/basic_string.h **** at(size_type __n) const 865:/usr/include/c++/4.8/bits/basic_string.h **** { 866:/usr/include/c++/4.8/bits/basic_string.h **** if (__n >= this->size()) 867:/usr/include/c++/4.8/bits/basic_string.h **** __throw_out_of_range(__N("basic_string::at")); 868:/usr/include/c++/4.8/bits/basic_string.h **** return _M_data()[__n]; 869:/usr/include/c++/4.8/bits/basic_string.h **** } 870:/usr/include/c++/4.8/bits/basic_string.h **** 871:/usr/include/c++/4.8/bits/basic_string.h **** /** 872:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Provides access to the data contained in the %string. 873:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n The index of the character to access. 874:/usr/include/c++/4.8/bits/basic_string.h **** * @return Read/write reference to the character. 875:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::out_of_range If @a n is an invalid index. 876:/usr/include/c++/4.8/bits/basic_string.h **** * 877:/usr/include/c++/4.8/bits/basic_string.h **** * This function provides for safer data access. The parameter is GAS LISTING /tmp/ccrG9BDx.s page 50 878:/usr/include/c++/4.8/bits/basic_string.h **** * first checked that it is in the range of the string. The function 879:/usr/include/c++/4.8/bits/basic_string.h **** * throws out_of_range if the check fails. Success results in 880:/usr/include/c++/4.8/bits/basic_string.h **** * unsharing the string. 881:/usr/include/c++/4.8/bits/basic_string.h **** */ 882:/usr/include/c++/4.8/bits/basic_string.h **** reference 883:/usr/include/c++/4.8/bits/basic_string.h **** at(size_type __n) 884:/usr/include/c++/4.8/bits/basic_string.h **** { 885:/usr/include/c++/4.8/bits/basic_string.h **** if (__n >= size()) 886:/usr/include/c++/4.8/bits/basic_string.h **** __throw_out_of_range(__N("basic_string::at")); 887:/usr/include/c++/4.8/bits/basic_string.h **** _M_leak(); 888:/usr/include/c++/4.8/bits/basic_string.h **** return _M_data()[__n]; 889:/usr/include/c++/4.8/bits/basic_string.h **** } 890:/usr/include/c++/4.8/bits/basic_string.h **** 891:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L 892:/usr/include/c++/4.8/bits/basic_string.h **** /** 893:/usr/include/c++/4.8/bits/basic_string.h **** * Returns a read/write reference to the data at the first 894:/usr/include/c++/4.8/bits/basic_string.h **** * element of the %string. 895:/usr/include/c++/4.8/bits/basic_string.h **** */ 896:/usr/include/c++/4.8/bits/basic_string.h **** reference 897:/usr/include/c++/4.8/bits/basic_string.h **** front() 898:/usr/include/c++/4.8/bits/basic_string.h **** { return operator[](0); } 899:/usr/include/c++/4.8/bits/basic_string.h **** 900:/usr/include/c++/4.8/bits/basic_string.h **** /** 901:/usr/include/c++/4.8/bits/basic_string.h **** * Returns a read-only (constant) reference to the data at the first 902:/usr/include/c++/4.8/bits/basic_string.h **** * element of the %string. 903:/usr/include/c++/4.8/bits/basic_string.h **** */ 904:/usr/include/c++/4.8/bits/basic_string.h **** const_reference 905:/usr/include/c++/4.8/bits/basic_string.h **** front() const 906:/usr/include/c++/4.8/bits/basic_string.h **** { return operator[](0); } 907:/usr/include/c++/4.8/bits/basic_string.h **** 908:/usr/include/c++/4.8/bits/basic_string.h **** /** 909:/usr/include/c++/4.8/bits/basic_string.h **** * Returns a read/write reference to the data at the last 910:/usr/include/c++/4.8/bits/basic_string.h **** * element of the %string. 911:/usr/include/c++/4.8/bits/basic_string.h **** */ 912:/usr/include/c++/4.8/bits/basic_string.h **** reference 913:/usr/include/c++/4.8/bits/basic_string.h **** back() 914:/usr/include/c++/4.8/bits/basic_string.h **** { return operator[](this->size() - 1); } 915:/usr/include/c++/4.8/bits/basic_string.h **** 916:/usr/include/c++/4.8/bits/basic_string.h **** /** 917:/usr/include/c++/4.8/bits/basic_string.h **** * Returns a read-only (constant) reference to the data at the 918:/usr/include/c++/4.8/bits/basic_string.h **** * last element of the %string. 919:/usr/include/c++/4.8/bits/basic_string.h **** */ 920:/usr/include/c++/4.8/bits/basic_string.h **** const_reference 921:/usr/include/c++/4.8/bits/basic_string.h **** back() const 922:/usr/include/c++/4.8/bits/basic_string.h **** { return operator[](this->size() - 1); } 923:/usr/include/c++/4.8/bits/basic_string.h **** #endif 924:/usr/include/c++/4.8/bits/basic_string.h **** 925:/usr/include/c++/4.8/bits/basic_string.h **** // Modifiers: 926:/usr/include/c++/4.8/bits/basic_string.h **** /** 927:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Append a string to this string. 928:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str The string to append. 929:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 930:/usr/include/c++/4.8/bits/basic_string.h **** */ 931:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 932:/usr/include/c++/4.8/bits/basic_string.h **** operator+=(const basic_string& __str) 933:/usr/include/c++/4.8/bits/basic_string.h **** { return this->append(__str); } 934:/usr/include/c++/4.8/bits/basic_string.h **** GAS LISTING /tmp/ccrG9BDx.s page 51 935:/usr/include/c++/4.8/bits/basic_string.h **** /** 936:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Append a C string. 937:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s The C string to append. 938:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 939:/usr/include/c++/4.8/bits/basic_string.h **** */ 940:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 941:/usr/include/c++/4.8/bits/basic_string.h **** operator+=(const _CharT* __s) 942:/usr/include/c++/4.8/bits/basic_string.h **** { return this->append(__s); } 943:/usr/include/c++/4.8/bits/basic_string.h **** 944:/usr/include/c++/4.8/bits/basic_string.h **** /** 945:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Append a character. 946:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c The character to append. 947:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 948:/usr/include/c++/4.8/bits/basic_string.h **** */ 949:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 950:/usr/include/c++/4.8/bits/basic_string.h **** operator+=(_CharT __c) 951:/usr/include/c++/4.8/bits/basic_string.h **** { 952:/usr/include/c++/4.8/bits/basic_string.h **** this->push_back(__c); 953:/usr/include/c++/4.8/bits/basic_string.h **** return *this; 954:/usr/include/c++/4.8/bits/basic_string.h **** } 955:/usr/include/c++/4.8/bits/basic_string.h **** 956:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L 957:/usr/include/c++/4.8/bits/basic_string.h **** /** 958:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Append an initializer_list of characters. 959:/usr/include/c++/4.8/bits/basic_string.h **** * @param __l The initializer_list of characters to be appended. 960:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 961:/usr/include/c++/4.8/bits/basic_string.h **** */ 962:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 963:/usr/include/c++/4.8/bits/basic_string.h **** operator+=(initializer_list<_CharT> __l) 964:/usr/include/c++/4.8/bits/basic_string.h **** { return this->append(__l.begin(), __l.size()); } 965:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11 966:/usr/include/c++/4.8/bits/basic_string.h **** 967:/usr/include/c++/4.8/bits/basic_string.h **** /** 968:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Append a string to this string. 969:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str The string to append. 970:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 971:/usr/include/c++/4.8/bits/basic_string.h **** */ 972:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 973:/usr/include/c++/4.8/bits/basic_string.h **** append(const basic_string& __str); 974:/usr/include/c++/4.8/bits/basic_string.h **** 975:/usr/include/c++/4.8/bits/basic_string.h **** /** 976:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Append a substring. 977:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str The string to append. 978:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of the first character of str to append. 979:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n The number of characters to append. 980:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 981:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::out_of_range if @a __pos is not a valid index. 982:/usr/include/c++/4.8/bits/basic_string.h **** * 983:/usr/include/c++/4.8/bits/basic_string.h **** * This function appends @a __n characters from @a __str 984:/usr/include/c++/4.8/bits/basic_string.h **** * starting at @a __pos to this string. If @a __n is is larger 985:/usr/include/c++/4.8/bits/basic_string.h **** * than the number of available characters in @a __str, the 986:/usr/include/c++/4.8/bits/basic_string.h **** * remainder of @a __str is appended. 987:/usr/include/c++/4.8/bits/basic_string.h **** */ 988:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 989:/usr/include/c++/4.8/bits/basic_string.h **** append(const basic_string& __str, size_type __pos, size_type __n); 990:/usr/include/c++/4.8/bits/basic_string.h **** 991:/usr/include/c++/4.8/bits/basic_string.h **** /** GAS LISTING /tmp/ccrG9BDx.s page 52 992:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Append a C substring. 993:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s The C string to append. 994:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n The number of characters to append. 995:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 996:/usr/include/c++/4.8/bits/basic_string.h **** */ 997:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 998:/usr/include/c++/4.8/bits/basic_string.h **** append(const _CharT* __s, size_type __n); 999:/usr/include/c++/4.8/bits/basic_string.h **** 1000:/usr/include/c++/4.8/bits/basic_string.h **** /** 1001:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Append a C string. 1002:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s The C string to append. 1003:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1004:/usr/include/c++/4.8/bits/basic_string.h **** */ 1005:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1006:/usr/include/c++/4.8/bits/basic_string.h **** append(const _CharT* __s) 1007:/usr/include/c++/4.8/bits/basic_string.h **** { 1008:/usr/include/c++/4.8/bits/basic_string.h **** __glibcxx_requires_string(__s); 1009:/usr/include/c++/4.8/bits/basic_string.h **** return this->append(__s, traits_type::length(__s)); 1010:/usr/include/c++/4.8/bits/basic_string.h **** } 1011:/usr/include/c++/4.8/bits/basic_string.h **** 1012:/usr/include/c++/4.8/bits/basic_string.h **** /** 1013:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Append multiple characters. 1014:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n The number of characters to append. 1015:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c The character to use. 1016:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1017:/usr/include/c++/4.8/bits/basic_string.h **** * 1018:/usr/include/c++/4.8/bits/basic_string.h **** * Appends __n copies of __c to this string. 1019:/usr/include/c++/4.8/bits/basic_string.h **** */ 1020:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1021:/usr/include/c++/4.8/bits/basic_string.h **** append(size_type __n, _CharT __c); 1022:/usr/include/c++/4.8/bits/basic_string.h **** 1023:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L 1024:/usr/include/c++/4.8/bits/basic_string.h **** /** 1025:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Append an initializer_list of characters. 1026:/usr/include/c++/4.8/bits/basic_string.h **** * @param __l The initializer_list of characters to append. 1027:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1028:/usr/include/c++/4.8/bits/basic_string.h **** */ 1029:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1030:/usr/include/c++/4.8/bits/basic_string.h **** append(initializer_list<_CharT> __l) 1031:/usr/include/c++/4.8/bits/basic_string.h **** { return this->append(__l.begin(), __l.size()); } 1032:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11 1033:/usr/include/c++/4.8/bits/basic_string.h **** 1034:/usr/include/c++/4.8/bits/basic_string.h **** /** 1035:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Append a range of characters. 1036:/usr/include/c++/4.8/bits/basic_string.h **** * @param __first Iterator referencing the first character to append. 1037:/usr/include/c++/4.8/bits/basic_string.h **** * @param __last Iterator marking the end of the range. 1038:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1039:/usr/include/c++/4.8/bits/basic_string.h **** * 1040:/usr/include/c++/4.8/bits/basic_string.h **** * Appends characters in the range [__first,__last) to this string. 1041:/usr/include/c++/4.8/bits/basic_string.h **** */ 1042:/usr/include/c++/4.8/bits/basic_string.h **** template 1043:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1044:/usr/include/c++/4.8/bits/basic_string.h **** append(_InputIterator __first, _InputIterator __last) 1045:/usr/include/c++/4.8/bits/basic_string.h **** { return this->replace(_M_iend(), _M_iend(), __first, __last); } 1046:/usr/include/c++/4.8/bits/basic_string.h **** 1047:/usr/include/c++/4.8/bits/basic_string.h **** /** 1048:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Append a single character. GAS LISTING /tmp/ccrG9BDx.s page 53 1049:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c Character to append. 1050:/usr/include/c++/4.8/bits/basic_string.h **** */ 1051:/usr/include/c++/4.8/bits/basic_string.h **** void 1052:/usr/include/c++/4.8/bits/basic_string.h **** push_back(_CharT __c) 1053:/usr/include/c++/4.8/bits/basic_string.h **** { 1054:/usr/include/c++/4.8/bits/basic_string.h **** const size_type __len = 1 + this->size(); 1055:/usr/include/c++/4.8/bits/basic_string.h **** if (__len > this->capacity() || _M_rep()->_M_is_shared()) 1056:/usr/include/c++/4.8/bits/basic_string.h **** this->reserve(__len); 1057:/usr/include/c++/4.8/bits/basic_string.h **** traits_type::assign(_M_data()[this->size()], __c); 1058:/usr/include/c++/4.8/bits/basic_string.h **** _M_rep()->_M_set_length_and_sharable(__len); 1059:/usr/include/c++/4.8/bits/basic_string.h **** } 1060:/usr/include/c++/4.8/bits/basic_string.h **** 1061:/usr/include/c++/4.8/bits/basic_string.h **** /** 1062:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Set value to contents of another string. 1063:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str Source string to use. 1064:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1065:/usr/include/c++/4.8/bits/basic_string.h **** */ 1066:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1067:/usr/include/c++/4.8/bits/basic_string.h **** assign(const basic_string& __str); 1068:/usr/include/c++/4.8/bits/basic_string.h **** 1069:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L 1070:/usr/include/c++/4.8/bits/basic_string.h **** /** 1071:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Set value to contents of another string. 1072:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str Source string to use. 1073:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1074:/usr/include/c++/4.8/bits/basic_string.h **** * 1075:/usr/include/c++/4.8/bits/basic_string.h **** * This function sets this string to the exact contents of @a __str. 1076:/usr/include/c++/4.8/bits/basic_string.h **** * @a __str is a valid, but unspecified string. 1077:/usr/include/c++/4.8/bits/basic_string.h **** */ 1078:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1079:/usr/include/c++/4.8/bits/basic_string.h **** assign(basic_string&& __str) 1080:/usr/include/c++/4.8/bits/basic_string.h **** { 1081:/usr/include/c++/4.8/bits/basic_string.h **** this->swap(__str); 1082:/usr/include/c++/4.8/bits/basic_string.h **** return *this; 1083:/usr/include/c++/4.8/bits/basic_string.h **** } 1084:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11 1085:/usr/include/c++/4.8/bits/basic_string.h **** 1086:/usr/include/c++/4.8/bits/basic_string.h **** /** 1087:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Set value to a substring of a string. 1088:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str The string to use. 1089:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of the first character of str. 1090:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters to use. 1091:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1092:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::out_of_range if @a pos is not a valid index. 1093:/usr/include/c++/4.8/bits/basic_string.h **** * 1094:/usr/include/c++/4.8/bits/basic_string.h **** * This function sets this string to the substring of @a __str 1095:/usr/include/c++/4.8/bits/basic_string.h **** * consisting of @a __n characters at @a __pos. If @a __n is 1096:/usr/include/c++/4.8/bits/basic_string.h **** * is larger than the number of available characters in @a 1097:/usr/include/c++/4.8/bits/basic_string.h **** * __str, the remainder of @a __str is used. 1098:/usr/include/c++/4.8/bits/basic_string.h **** */ 1099:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1100:/usr/include/c++/4.8/bits/basic_string.h **** assign(const basic_string& __str, size_type __pos, size_type __n) 1101:/usr/include/c++/4.8/bits/basic_string.h **** { return this->assign(__str._M_data() 1102:/usr/include/c++/4.8/bits/basic_string.h **** + __str._M_check(__pos, "basic_string::assign"), 1103:/usr/include/c++/4.8/bits/basic_string.h **** __str._M_limit(__pos, __n)); } 1104:/usr/include/c++/4.8/bits/basic_string.h **** 1105:/usr/include/c++/4.8/bits/basic_string.h **** /** GAS LISTING /tmp/ccrG9BDx.s page 54 1106:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Set value to a C substring. 1107:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s The C string to use. 1108:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters to use. 1109:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1110:/usr/include/c++/4.8/bits/basic_string.h **** * 1111:/usr/include/c++/4.8/bits/basic_string.h **** * This function sets the value of this string to the first @a __n 1112:/usr/include/c++/4.8/bits/basic_string.h **** * characters of @a __s. If @a __n is is larger than the number of 1113:/usr/include/c++/4.8/bits/basic_string.h **** * available characters in @a __s, the remainder of @a __s is used. 1114:/usr/include/c++/4.8/bits/basic_string.h **** */ 1115:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1116:/usr/include/c++/4.8/bits/basic_string.h **** assign(const _CharT* __s, size_type __n); 1117:/usr/include/c++/4.8/bits/basic_string.h **** 1118:/usr/include/c++/4.8/bits/basic_string.h **** /** 1119:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Set value to contents of a C string. 1120:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s The C string to use. 1121:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1122:/usr/include/c++/4.8/bits/basic_string.h **** * 1123:/usr/include/c++/4.8/bits/basic_string.h **** * This function sets the value of this string to the value of @a __s. 1124:/usr/include/c++/4.8/bits/basic_string.h **** * The data is copied, so there is no dependence on @a __s once the 1125:/usr/include/c++/4.8/bits/basic_string.h **** * function returns. 1126:/usr/include/c++/4.8/bits/basic_string.h **** */ 1127:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1128:/usr/include/c++/4.8/bits/basic_string.h **** assign(const _CharT* __s) 1129:/usr/include/c++/4.8/bits/basic_string.h **** { 1130:/usr/include/c++/4.8/bits/basic_string.h **** __glibcxx_requires_string(__s); 1131:/usr/include/c++/4.8/bits/basic_string.h **** return this->assign(__s, traits_type::length(__s)); 1132:/usr/include/c++/4.8/bits/basic_string.h **** } 1133:/usr/include/c++/4.8/bits/basic_string.h **** 1134:/usr/include/c++/4.8/bits/basic_string.h **** /** 1135:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Set value to multiple characters. 1136:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Length of the resulting string. 1137:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c The character to use. 1138:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1139:/usr/include/c++/4.8/bits/basic_string.h **** * 1140:/usr/include/c++/4.8/bits/basic_string.h **** * This function sets the value of this string to @a __n copies of 1141:/usr/include/c++/4.8/bits/basic_string.h **** * character @a __c. 1142:/usr/include/c++/4.8/bits/basic_string.h **** */ 1143:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1144:/usr/include/c++/4.8/bits/basic_string.h **** assign(size_type __n, _CharT __c) 1145:/usr/include/c++/4.8/bits/basic_string.h **** { return _M_replace_aux(size_type(0), this->size(), __n, __c); } 1146:/usr/include/c++/4.8/bits/basic_string.h **** 1147:/usr/include/c++/4.8/bits/basic_string.h **** /** 1148:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Set value to a range of characters. 1149:/usr/include/c++/4.8/bits/basic_string.h **** * @param __first Iterator referencing the first character to append. 1150:/usr/include/c++/4.8/bits/basic_string.h **** * @param __last Iterator marking the end of the range. 1151:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1152:/usr/include/c++/4.8/bits/basic_string.h **** * 1153:/usr/include/c++/4.8/bits/basic_string.h **** * Sets value of string to characters in the range [__first,__last). 1154:/usr/include/c++/4.8/bits/basic_string.h **** */ 1155:/usr/include/c++/4.8/bits/basic_string.h **** template 1156:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1157:/usr/include/c++/4.8/bits/basic_string.h **** assign(_InputIterator __first, _InputIterator __last) 1158:/usr/include/c++/4.8/bits/basic_string.h **** { return this->replace(_M_ibegin(), _M_iend(), __first, __last); } 1159:/usr/include/c++/4.8/bits/basic_string.h **** 1160:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L 1161:/usr/include/c++/4.8/bits/basic_string.h **** /** 1162:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Set value to an initializer_list of characters. GAS LISTING /tmp/ccrG9BDx.s page 55 1163:/usr/include/c++/4.8/bits/basic_string.h **** * @param __l The initializer_list of characters to assign. 1164:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1165:/usr/include/c++/4.8/bits/basic_string.h **** */ 1166:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1167:/usr/include/c++/4.8/bits/basic_string.h **** assign(initializer_list<_CharT> __l) 1168:/usr/include/c++/4.8/bits/basic_string.h **** { return this->assign(__l.begin(), __l.size()); } 1169:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11 1170:/usr/include/c++/4.8/bits/basic_string.h **** 1171:/usr/include/c++/4.8/bits/basic_string.h **** /** 1172:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Insert multiple characters. 1173:/usr/include/c++/4.8/bits/basic_string.h **** * @param __p Iterator referencing location in string to insert at. 1174:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters to insert 1175:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c The character to insert. 1176:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1177:/usr/include/c++/4.8/bits/basic_string.h **** * 1178:/usr/include/c++/4.8/bits/basic_string.h **** * Inserts @a __n copies of character @a __c starting at the 1179:/usr/include/c++/4.8/bits/basic_string.h **** * position referenced by iterator @a __p. If adding 1180:/usr/include/c++/4.8/bits/basic_string.h **** * characters causes the length to exceed max_size(), 1181:/usr/include/c++/4.8/bits/basic_string.h **** * length_error is thrown. The value of the string doesn't 1182:/usr/include/c++/4.8/bits/basic_string.h **** * change if an error is thrown. 1183:/usr/include/c++/4.8/bits/basic_string.h **** */ 1184:/usr/include/c++/4.8/bits/basic_string.h **** void 1185:/usr/include/c++/4.8/bits/basic_string.h **** insert(iterator __p, size_type __n, _CharT __c) 1186:/usr/include/c++/4.8/bits/basic_string.h **** { this->replace(__p, __p, __n, __c); } 1187:/usr/include/c++/4.8/bits/basic_string.h **** 1188:/usr/include/c++/4.8/bits/basic_string.h **** /** 1189:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Insert a range of characters. 1190:/usr/include/c++/4.8/bits/basic_string.h **** * @param __p Iterator referencing location in string to insert at. 1191:/usr/include/c++/4.8/bits/basic_string.h **** * @param __beg Start of range. 1192:/usr/include/c++/4.8/bits/basic_string.h **** * @param __end End of range. 1193:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1194:/usr/include/c++/4.8/bits/basic_string.h **** * 1195:/usr/include/c++/4.8/bits/basic_string.h **** * Inserts characters in range [__beg,__end). If adding 1196:/usr/include/c++/4.8/bits/basic_string.h **** * characters causes the length to exceed max_size(), 1197:/usr/include/c++/4.8/bits/basic_string.h **** * length_error is thrown. The value of the string doesn't 1198:/usr/include/c++/4.8/bits/basic_string.h **** * change if an error is thrown. 1199:/usr/include/c++/4.8/bits/basic_string.h **** */ 1200:/usr/include/c++/4.8/bits/basic_string.h **** template 1201:/usr/include/c++/4.8/bits/basic_string.h **** void 1202:/usr/include/c++/4.8/bits/basic_string.h **** insert(iterator __p, _InputIterator __beg, _InputIterator __end) 1203:/usr/include/c++/4.8/bits/basic_string.h **** { this->replace(__p, __p, __beg, __end); } 1204:/usr/include/c++/4.8/bits/basic_string.h **** 1205:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L 1206:/usr/include/c++/4.8/bits/basic_string.h **** /** 1207:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Insert an initializer_list of characters. 1208:/usr/include/c++/4.8/bits/basic_string.h **** * @param __p Iterator referencing location in string to insert at. 1209:/usr/include/c++/4.8/bits/basic_string.h **** * @param __l The initializer_list of characters to insert. 1210:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1211:/usr/include/c++/4.8/bits/basic_string.h **** */ 1212:/usr/include/c++/4.8/bits/basic_string.h **** void 1213:/usr/include/c++/4.8/bits/basic_string.h **** insert(iterator __p, initializer_list<_CharT> __l) 1214:/usr/include/c++/4.8/bits/basic_string.h **** { 1215:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend()); 1216:/usr/include/c++/4.8/bits/basic_string.h **** this->insert(__p - _M_ibegin(), __l.begin(), __l.size()); 1217:/usr/include/c++/4.8/bits/basic_string.h **** } 1218:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11 1219:/usr/include/c++/4.8/bits/basic_string.h **** GAS LISTING /tmp/ccrG9BDx.s page 56 1220:/usr/include/c++/4.8/bits/basic_string.h **** /** 1221:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Insert value of a string. 1222:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos1 Iterator referencing location in string to insert at. 1223:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str The string to insert. 1224:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1225:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1226:/usr/include/c++/4.8/bits/basic_string.h **** * 1227:/usr/include/c++/4.8/bits/basic_string.h **** * Inserts value of @a __str starting at @a __pos1. If adding 1228:/usr/include/c++/4.8/bits/basic_string.h **** * characters causes the length to exceed max_size(), 1229:/usr/include/c++/4.8/bits/basic_string.h **** * length_error is thrown. The value of the string doesn't 1230:/usr/include/c++/4.8/bits/basic_string.h **** * change if an error is thrown. 1231:/usr/include/c++/4.8/bits/basic_string.h **** */ 1232:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1233:/usr/include/c++/4.8/bits/basic_string.h **** insert(size_type __pos1, const basic_string& __str) 1234:/usr/include/c++/4.8/bits/basic_string.h **** { return this->insert(__pos1, __str, size_type(0), __str.size()); } 1235:/usr/include/c++/4.8/bits/basic_string.h **** 1236:/usr/include/c++/4.8/bits/basic_string.h **** /** 1237:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Insert a substring. 1238:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos1 Iterator referencing location in string to insert at. 1239:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str The string to insert. 1240:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos2 Start of characters in str to insert. 1241:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters to insert. 1242:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1243:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1244:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::out_of_range If @a pos1 > size() or 1245:/usr/include/c++/4.8/bits/basic_string.h **** * @a __pos2 > @a str.size(). 1246:/usr/include/c++/4.8/bits/basic_string.h **** * 1247:/usr/include/c++/4.8/bits/basic_string.h **** * Starting at @a pos1, insert @a __n character of @a __str 1248:/usr/include/c++/4.8/bits/basic_string.h **** * beginning with @a __pos2. If adding characters causes the 1249:/usr/include/c++/4.8/bits/basic_string.h **** * length to exceed max_size(), length_error is thrown. If @a 1250:/usr/include/c++/4.8/bits/basic_string.h **** * __pos1 is beyond the end of this string or @a __pos2 is 1251:/usr/include/c++/4.8/bits/basic_string.h **** * beyond the end of @a __str, out_of_range is thrown. The 1252:/usr/include/c++/4.8/bits/basic_string.h **** * value of the string doesn't change if an error is thrown. 1253:/usr/include/c++/4.8/bits/basic_string.h **** */ 1254:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1255:/usr/include/c++/4.8/bits/basic_string.h **** insert(size_type __pos1, const basic_string& __str, 1256:/usr/include/c++/4.8/bits/basic_string.h **** size_type __pos2, size_type __n) 1257:/usr/include/c++/4.8/bits/basic_string.h **** { return this->insert(__pos1, __str._M_data() 1258:/usr/include/c++/4.8/bits/basic_string.h **** + __str._M_check(__pos2, "basic_string::insert"), 1259:/usr/include/c++/4.8/bits/basic_string.h **** __str._M_limit(__pos2, __n)); } 1260:/usr/include/c++/4.8/bits/basic_string.h **** 1261:/usr/include/c++/4.8/bits/basic_string.h **** /** 1262:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Insert a C substring. 1263:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Iterator referencing location in string to insert at. 1264:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s The C string to insert. 1265:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n The number of characters to insert. 1266:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1267:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1268:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::out_of_range If @a __pos is beyond the end of this 1269:/usr/include/c++/4.8/bits/basic_string.h **** * string. 1270:/usr/include/c++/4.8/bits/basic_string.h **** * 1271:/usr/include/c++/4.8/bits/basic_string.h **** * Inserts the first @a __n characters of @a __s starting at @a 1272:/usr/include/c++/4.8/bits/basic_string.h **** * __pos. If adding characters causes the length to exceed 1273:/usr/include/c++/4.8/bits/basic_string.h **** * max_size(), length_error is thrown. If @a __pos is beyond 1274:/usr/include/c++/4.8/bits/basic_string.h **** * end(), out_of_range is thrown. The value of the string 1275:/usr/include/c++/4.8/bits/basic_string.h **** * doesn't change if an error is thrown. 1276:/usr/include/c++/4.8/bits/basic_string.h **** */ GAS LISTING /tmp/ccrG9BDx.s page 57 1277:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1278:/usr/include/c++/4.8/bits/basic_string.h **** insert(size_type __pos, const _CharT* __s, size_type __n); 1279:/usr/include/c++/4.8/bits/basic_string.h **** 1280:/usr/include/c++/4.8/bits/basic_string.h **** /** 1281:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Insert a C string. 1282:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Iterator referencing location in string to insert at. 1283:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s The C string to insert. 1284:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1285:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1286:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::out_of_range If @a pos is beyond the end of this 1287:/usr/include/c++/4.8/bits/basic_string.h **** * string. 1288:/usr/include/c++/4.8/bits/basic_string.h **** * 1289:/usr/include/c++/4.8/bits/basic_string.h **** * Inserts the first @a n characters of @a __s starting at @a __pos. If 1290:/usr/include/c++/4.8/bits/basic_string.h **** * adding characters causes the length to exceed max_size(), 1291:/usr/include/c++/4.8/bits/basic_string.h **** * length_error is thrown. If @a __pos is beyond end(), out_of_range is 1292:/usr/include/c++/4.8/bits/basic_string.h **** * thrown. The value of the string doesn't change if an error is 1293:/usr/include/c++/4.8/bits/basic_string.h **** * thrown. 1294:/usr/include/c++/4.8/bits/basic_string.h **** */ 1295:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1296:/usr/include/c++/4.8/bits/basic_string.h **** insert(size_type __pos, const _CharT* __s) 1297:/usr/include/c++/4.8/bits/basic_string.h **** { 1298:/usr/include/c++/4.8/bits/basic_string.h **** __glibcxx_requires_string(__s); 1299:/usr/include/c++/4.8/bits/basic_string.h **** return this->insert(__pos, __s, traits_type::length(__s)); 1300:/usr/include/c++/4.8/bits/basic_string.h **** } 1301:/usr/include/c++/4.8/bits/basic_string.h **** 1302:/usr/include/c++/4.8/bits/basic_string.h **** /** 1303:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Insert multiple characters. 1304:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index in string to insert at. 1305:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters to insert 1306:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c The character to insert. 1307:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1308:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1309:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::out_of_range If @a __pos is beyond the end of this 1310:/usr/include/c++/4.8/bits/basic_string.h **** * string. 1311:/usr/include/c++/4.8/bits/basic_string.h **** * 1312:/usr/include/c++/4.8/bits/basic_string.h **** * Inserts @a __n copies of character @a __c starting at index 1313:/usr/include/c++/4.8/bits/basic_string.h **** * @a __pos. If adding characters causes the length to exceed 1314:/usr/include/c++/4.8/bits/basic_string.h **** * max_size(), length_error is thrown. If @a __pos > length(), 1315:/usr/include/c++/4.8/bits/basic_string.h **** * out_of_range is thrown. The value of the string doesn't 1316:/usr/include/c++/4.8/bits/basic_string.h **** * change if an error is thrown. 1317:/usr/include/c++/4.8/bits/basic_string.h **** */ 1318:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1319:/usr/include/c++/4.8/bits/basic_string.h **** insert(size_type __pos, size_type __n, _CharT __c) 1320:/usr/include/c++/4.8/bits/basic_string.h **** { return _M_replace_aux(_M_check(__pos, "basic_string::insert"), 1321:/usr/include/c++/4.8/bits/basic_string.h **** size_type(0), __n, __c); } 1322:/usr/include/c++/4.8/bits/basic_string.h **** 1323:/usr/include/c++/4.8/bits/basic_string.h **** /** 1324:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Insert one character. 1325:/usr/include/c++/4.8/bits/basic_string.h **** * @param __p Iterator referencing position in string to insert at. 1326:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c The character to insert. 1327:/usr/include/c++/4.8/bits/basic_string.h **** * @return Iterator referencing newly inserted char. 1328:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1329:/usr/include/c++/4.8/bits/basic_string.h **** * 1330:/usr/include/c++/4.8/bits/basic_string.h **** * Inserts character @a __c at position referenced by @a __p. 1331:/usr/include/c++/4.8/bits/basic_string.h **** * If adding character causes the length to exceed max_size(), 1332:/usr/include/c++/4.8/bits/basic_string.h **** * length_error is thrown. If @a __p is beyond end of string, 1333:/usr/include/c++/4.8/bits/basic_string.h **** * out_of_range is thrown. The value of the string doesn't GAS LISTING /tmp/ccrG9BDx.s page 58 1334:/usr/include/c++/4.8/bits/basic_string.h **** * change if an error is thrown. 1335:/usr/include/c++/4.8/bits/basic_string.h **** */ 1336:/usr/include/c++/4.8/bits/basic_string.h **** iterator 1337:/usr/include/c++/4.8/bits/basic_string.h **** insert(iterator __p, _CharT __c) 1338:/usr/include/c++/4.8/bits/basic_string.h **** { 1339:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend()); 1340:/usr/include/c++/4.8/bits/basic_string.h **** const size_type __pos = __p - _M_ibegin(); 1341:/usr/include/c++/4.8/bits/basic_string.h **** _M_replace_aux(__pos, size_type(0), size_type(1), __c); 1342:/usr/include/c++/4.8/bits/basic_string.h **** _M_rep()->_M_set_leaked(); 1343:/usr/include/c++/4.8/bits/basic_string.h **** return iterator(_M_data() + __pos); 1344:/usr/include/c++/4.8/bits/basic_string.h **** } 1345:/usr/include/c++/4.8/bits/basic_string.h **** 1346:/usr/include/c++/4.8/bits/basic_string.h **** /** 1347:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Remove characters. 1348:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of first character to remove (default 0). 1349:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters to remove (default remainder). 1350:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1351:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::out_of_range If @a pos is beyond the end of this 1352:/usr/include/c++/4.8/bits/basic_string.h **** * string. 1353:/usr/include/c++/4.8/bits/basic_string.h **** * 1354:/usr/include/c++/4.8/bits/basic_string.h **** * Removes @a __n characters from this string starting at @a 1355:/usr/include/c++/4.8/bits/basic_string.h **** * __pos. The length of the string is reduced by @a __n. If 1356:/usr/include/c++/4.8/bits/basic_string.h **** * there are < @a __n characters to remove, the remainder of 1357:/usr/include/c++/4.8/bits/basic_string.h **** * the string is truncated. If @a __p is beyond end of string, 1358:/usr/include/c++/4.8/bits/basic_string.h **** * out_of_range is thrown. The value of the string doesn't 1359:/usr/include/c++/4.8/bits/basic_string.h **** * change if an error is thrown. 1360:/usr/include/c++/4.8/bits/basic_string.h **** */ 1361:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1362:/usr/include/c++/4.8/bits/basic_string.h **** erase(size_type __pos = 0, size_type __n = npos) 1363:/usr/include/c++/4.8/bits/basic_string.h **** { 1364:/usr/include/c++/4.8/bits/basic_string.h **** _M_mutate(_M_check(__pos, "basic_string::erase"), 1365:/usr/include/c++/4.8/bits/basic_string.h **** _M_limit(__pos, __n), size_type(0)); 1366:/usr/include/c++/4.8/bits/basic_string.h **** return *this; 1367:/usr/include/c++/4.8/bits/basic_string.h **** } 1368:/usr/include/c++/4.8/bits/basic_string.h **** 1369:/usr/include/c++/4.8/bits/basic_string.h **** /** 1370:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Remove one character. 1371:/usr/include/c++/4.8/bits/basic_string.h **** * @param __position Iterator referencing the character to remove. 1372:/usr/include/c++/4.8/bits/basic_string.h **** * @return iterator referencing same location after removal. 1373:/usr/include/c++/4.8/bits/basic_string.h **** * 1374:/usr/include/c++/4.8/bits/basic_string.h **** * Removes the character at @a __position from this string. The value 1375:/usr/include/c++/4.8/bits/basic_string.h **** * of the string doesn't change if an error is thrown. 1376:/usr/include/c++/4.8/bits/basic_string.h **** */ 1377:/usr/include/c++/4.8/bits/basic_string.h **** iterator 1378:/usr/include/c++/4.8/bits/basic_string.h **** erase(iterator __position) 1379:/usr/include/c++/4.8/bits/basic_string.h **** { 1380:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_DEBUG_PEDASSERT(__position >= _M_ibegin() 1381:/usr/include/c++/4.8/bits/basic_string.h **** && __position < _M_iend()); 1382:/usr/include/c++/4.8/bits/basic_string.h **** const size_type __pos = __position - _M_ibegin(); 1383:/usr/include/c++/4.8/bits/basic_string.h **** _M_mutate(__pos, size_type(1), size_type(0)); 1384:/usr/include/c++/4.8/bits/basic_string.h **** _M_rep()->_M_set_leaked(); 1385:/usr/include/c++/4.8/bits/basic_string.h **** return iterator(_M_data() + __pos); 1386:/usr/include/c++/4.8/bits/basic_string.h **** } 1387:/usr/include/c++/4.8/bits/basic_string.h **** 1388:/usr/include/c++/4.8/bits/basic_string.h **** /** 1389:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Remove a range of characters. 1390:/usr/include/c++/4.8/bits/basic_string.h **** * @param __first Iterator referencing the first character to remove. GAS LISTING /tmp/ccrG9BDx.s page 59 1391:/usr/include/c++/4.8/bits/basic_string.h **** * @param __last Iterator referencing the end of the range. 1392:/usr/include/c++/4.8/bits/basic_string.h **** * @return Iterator referencing location of first after removal. 1393:/usr/include/c++/4.8/bits/basic_string.h **** * 1394:/usr/include/c++/4.8/bits/basic_string.h **** * Removes the characters in the range [first,last) from this string. 1395:/usr/include/c++/4.8/bits/basic_string.h **** * The value of the string doesn't change if an error is thrown. 1396:/usr/include/c++/4.8/bits/basic_string.h **** */ 1397:/usr/include/c++/4.8/bits/basic_string.h **** iterator 1398:/usr/include/c++/4.8/bits/basic_string.h **** erase(iterator __first, iterator __last); 1399:/usr/include/c++/4.8/bits/basic_string.h **** 1400:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L 1401:/usr/include/c++/4.8/bits/basic_string.h **** /** 1402:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Remove the last character. 1403:/usr/include/c++/4.8/bits/basic_string.h **** * 1404:/usr/include/c++/4.8/bits/basic_string.h **** * The string must be non-empty. 1405:/usr/include/c++/4.8/bits/basic_string.h **** */ 1406:/usr/include/c++/4.8/bits/basic_string.h **** void 1407:/usr/include/c++/4.8/bits/basic_string.h **** pop_back() 1408:/usr/include/c++/4.8/bits/basic_string.h **** { erase(size()-1, 1); } 1409:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11 1410:/usr/include/c++/4.8/bits/basic_string.h **** 1411:/usr/include/c++/4.8/bits/basic_string.h **** /** 1412:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Replace characters with value from another string. 1413:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of first character to replace. 1414:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters to be replaced. 1415:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str String to insert. 1416:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1417:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::out_of_range If @a pos is beyond the end of this 1418:/usr/include/c++/4.8/bits/basic_string.h **** * string. 1419:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1420:/usr/include/c++/4.8/bits/basic_string.h **** * 1421:/usr/include/c++/4.8/bits/basic_string.h **** * Removes the characters in the range [__pos,__pos+__n) from 1422:/usr/include/c++/4.8/bits/basic_string.h **** * this string. In place, the value of @a __str is inserted. 1423:/usr/include/c++/4.8/bits/basic_string.h **** * If @a __pos is beyond end of string, out_of_range is thrown. 1424:/usr/include/c++/4.8/bits/basic_string.h **** * If the length of the result exceeds max_size(), length_error 1425:/usr/include/c++/4.8/bits/basic_string.h **** * is thrown. The value of the string doesn't change if an 1426:/usr/include/c++/4.8/bits/basic_string.h **** * error is thrown. 1427:/usr/include/c++/4.8/bits/basic_string.h **** */ 1428:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1429:/usr/include/c++/4.8/bits/basic_string.h **** replace(size_type __pos, size_type __n, const basic_string& __str) 1430:/usr/include/c++/4.8/bits/basic_string.h **** { return this->replace(__pos, __n, __str._M_data(), __str.size()); } 1431:/usr/include/c++/4.8/bits/basic_string.h **** 1432:/usr/include/c++/4.8/bits/basic_string.h **** /** 1433:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Replace characters with value from another string. 1434:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos1 Index of first character to replace. 1435:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n1 Number of characters to be replaced. 1436:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str String to insert. 1437:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos2 Index of first character of str to use. 1438:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n2 Number of characters from str to use. 1439:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1440:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::out_of_range If @a __pos1 > size() or @a __pos2 > 1441:/usr/include/c++/4.8/bits/basic_string.h **** * __str.size(). 1442:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1443:/usr/include/c++/4.8/bits/basic_string.h **** * 1444:/usr/include/c++/4.8/bits/basic_string.h **** * Removes the characters in the range [__pos1,__pos1 + n) from this 1445:/usr/include/c++/4.8/bits/basic_string.h **** * string. In place, the value of @a __str is inserted. If @a __pos is 1446:/usr/include/c++/4.8/bits/basic_string.h **** * beyond end of string, out_of_range is thrown. If the length of the 1447:/usr/include/c++/4.8/bits/basic_string.h **** * result exceeds max_size(), length_error is thrown. The value of the GAS LISTING /tmp/ccrG9BDx.s page 60 1448:/usr/include/c++/4.8/bits/basic_string.h **** * string doesn't change if an error is thrown. 1449:/usr/include/c++/4.8/bits/basic_string.h **** */ 1450:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1451:/usr/include/c++/4.8/bits/basic_string.h **** replace(size_type __pos1, size_type __n1, const basic_string& __str, 1452:/usr/include/c++/4.8/bits/basic_string.h **** size_type __pos2, size_type __n2) 1453:/usr/include/c++/4.8/bits/basic_string.h **** { return this->replace(__pos1, __n1, __str._M_data() 1454:/usr/include/c++/4.8/bits/basic_string.h **** + __str._M_check(__pos2, "basic_string::replace"), 1455:/usr/include/c++/4.8/bits/basic_string.h **** __str._M_limit(__pos2, __n2)); } 1456:/usr/include/c++/4.8/bits/basic_string.h **** 1457:/usr/include/c++/4.8/bits/basic_string.h **** /** 1458:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Replace characters with value of a C substring. 1459:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of first character to replace. 1460:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n1 Number of characters to be replaced. 1461:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string to insert. 1462:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n2 Number of characters from @a s to use. 1463:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1464:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::out_of_range If @a pos1 > size(). 1465:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1466:/usr/include/c++/4.8/bits/basic_string.h **** * 1467:/usr/include/c++/4.8/bits/basic_string.h **** * Removes the characters in the range [__pos,__pos + __n1) 1468:/usr/include/c++/4.8/bits/basic_string.h **** * from this string. In place, the first @a __n2 characters of 1469:/usr/include/c++/4.8/bits/basic_string.h **** * @a __s are inserted, or all of @a __s if @a __n2 is too large. If 1470:/usr/include/c++/4.8/bits/basic_string.h **** * @a __pos is beyond end of string, out_of_range is thrown. If 1471:/usr/include/c++/4.8/bits/basic_string.h **** * the length of result exceeds max_size(), length_error is 1472:/usr/include/c++/4.8/bits/basic_string.h **** * thrown. The value of the string doesn't change if an error 1473:/usr/include/c++/4.8/bits/basic_string.h **** * is thrown. 1474:/usr/include/c++/4.8/bits/basic_string.h **** */ 1475:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1476:/usr/include/c++/4.8/bits/basic_string.h **** replace(size_type __pos, size_type __n1, const _CharT* __s, 1477:/usr/include/c++/4.8/bits/basic_string.h **** size_type __n2); 1478:/usr/include/c++/4.8/bits/basic_string.h **** 1479:/usr/include/c++/4.8/bits/basic_string.h **** /** 1480:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Replace characters with value of a C string. 1481:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of first character to replace. 1482:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n1 Number of characters to be replaced. 1483:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string to insert. 1484:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1485:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::out_of_range If @a pos > size(). 1486:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1487:/usr/include/c++/4.8/bits/basic_string.h **** * 1488:/usr/include/c++/4.8/bits/basic_string.h **** * Removes the characters in the range [__pos,__pos + __n1) 1489:/usr/include/c++/4.8/bits/basic_string.h **** * from this string. In place, the characters of @a __s are 1490:/usr/include/c++/4.8/bits/basic_string.h **** * inserted. If @a __pos is beyond end of string, out_of_range 1491:/usr/include/c++/4.8/bits/basic_string.h **** * is thrown. If the length of result exceeds max_size(), 1492:/usr/include/c++/4.8/bits/basic_string.h **** * length_error is thrown. The value of the string doesn't 1493:/usr/include/c++/4.8/bits/basic_string.h **** * change if an error is thrown. 1494:/usr/include/c++/4.8/bits/basic_string.h **** */ 1495:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1496:/usr/include/c++/4.8/bits/basic_string.h **** replace(size_type __pos, size_type __n1, const _CharT* __s) 1497:/usr/include/c++/4.8/bits/basic_string.h **** { 1498:/usr/include/c++/4.8/bits/basic_string.h **** __glibcxx_requires_string(__s); 1499:/usr/include/c++/4.8/bits/basic_string.h **** return this->replace(__pos, __n1, __s, traits_type::length(__s)); 1500:/usr/include/c++/4.8/bits/basic_string.h **** } 1501:/usr/include/c++/4.8/bits/basic_string.h **** 1502:/usr/include/c++/4.8/bits/basic_string.h **** /** 1503:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Replace characters with multiple characters. 1504:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of first character to replace. GAS LISTING /tmp/ccrG9BDx.s page 61 1505:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n1 Number of characters to be replaced. 1506:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n2 Number of characters to insert. 1507:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c Character to insert. 1508:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1509:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::out_of_range If @a __pos > size(). 1510:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1511:/usr/include/c++/4.8/bits/basic_string.h **** * 1512:/usr/include/c++/4.8/bits/basic_string.h **** * Removes the characters in the range [pos,pos + n1) from this 1513:/usr/include/c++/4.8/bits/basic_string.h **** * string. In place, @a __n2 copies of @a __c are inserted. 1514:/usr/include/c++/4.8/bits/basic_string.h **** * If @a __pos is beyond end of string, out_of_range is thrown. 1515:/usr/include/c++/4.8/bits/basic_string.h **** * If the length of result exceeds max_size(), length_error is 1516:/usr/include/c++/4.8/bits/basic_string.h **** * thrown. The value of the string doesn't change if an error 1517:/usr/include/c++/4.8/bits/basic_string.h **** * is thrown. 1518:/usr/include/c++/4.8/bits/basic_string.h **** */ 1519:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1520:/usr/include/c++/4.8/bits/basic_string.h **** replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) 1521:/usr/include/c++/4.8/bits/basic_string.h **** { return _M_replace_aux(_M_check(__pos, "basic_string::replace"), 1522:/usr/include/c++/4.8/bits/basic_string.h **** _M_limit(__pos, __n1), __n2, __c); } 1523:/usr/include/c++/4.8/bits/basic_string.h **** 1524:/usr/include/c++/4.8/bits/basic_string.h **** /** 1525:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Replace range of characters with string. 1526:/usr/include/c++/4.8/bits/basic_string.h **** * @param __i1 Iterator referencing start of range to replace. 1527:/usr/include/c++/4.8/bits/basic_string.h **** * @param __i2 Iterator referencing end of range to replace. 1528:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str String value to insert. 1529:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1530:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1531:/usr/include/c++/4.8/bits/basic_string.h **** * 1532:/usr/include/c++/4.8/bits/basic_string.h **** * Removes the characters in the range [__i1,__i2). In place, 1533:/usr/include/c++/4.8/bits/basic_string.h **** * the value of @a __str is inserted. If the length of result 1534:/usr/include/c++/4.8/bits/basic_string.h **** * exceeds max_size(), length_error is thrown. The value of 1535:/usr/include/c++/4.8/bits/basic_string.h **** * the string doesn't change if an error is thrown. 1536:/usr/include/c++/4.8/bits/basic_string.h **** */ 1537:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1538:/usr/include/c++/4.8/bits/basic_string.h **** replace(iterator __i1, iterator __i2, const basic_string& __str) 1539:/usr/include/c++/4.8/bits/basic_string.h **** { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } 1540:/usr/include/c++/4.8/bits/basic_string.h **** 1541:/usr/include/c++/4.8/bits/basic_string.h **** /** 1542:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Replace range of characters with C substring. 1543:/usr/include/c++/4.8/bits/basic_string.h **** * @param __i1 Iterator referencing start of range to replace. 1544:/usr/include/c++/4.8/bits/basic_string.h **** * @param __i2 Iterator referencing end of range to replace. 1545:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string value to insert. 1546:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters from s to insert. 1547:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1548:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1549:/usr/include/c++/4.8/bits/basic_string.h **** * 1550:/usr/include/c++/4.8/bits/basic_string.h **** * Removes the characters in the range [__i1,__i2). In place, 1551:/usr/include/c++/4.8/bits/basic_string.h **** * the first @a __n characters of @a __s are inserted. If the 1552:/usr/include/c++/4.8/bits/basic_string.h **** * length of result exceeds max_size(), length_error is thrown. 1553:/usr/include/c++/4.8/bits/basic_string.h **** * The value of the string doesn't change if an error is 1554:/usr/include/c++/4.8/bits/basic_string.h **** * thrown. 1555:/usr/include/c++/4.8/bits/basic_string.h **** */ 1556:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1557:/usr/include/c++/4.8/bits/basic_string.h **** replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n) 1558:/usr/include/c++/4.8/bits/basic_string.h **** { 1559:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2 1560:/usr/include/c++/4.8/bits/basic_string.h **** && __i2 <= _M_iend()); 1561:/usr/include/c++/4.8/bits/basic_string.h **** return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n); GAS LISTING /tmp/ccrG9BDx.s page 62 1562:/usr/include/c++/4.8/bits/basic_string.h **** } 1563:/usr/include/c++/4.8/bits/basic_string.h **** 1564:/usr/include/c++/4.8/bits/basic_string.h **** /** 1565:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Replace range of characters with C string. 1566:/usr/include/c++/4.8/bits/basic_string.h **** * @param __i1 Iterator referencing start of range to replace. 1567:/usr/include/c++/4.8/bits/basic_string.h **** * @param __i2 Iterator referencing end of range to replace. 1568:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string value to insert. 1569:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1570:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1571:/usr/include/c++/4.8/bits/basic_string.h **** * 1572:/usr/include/c++/4.8/bits/basic_string.h **** * Removes the characters in the range [__i1,__i2). In place, 1573:/usr/include/c++/4.8/bits/basic_string.h **** * the characters of @a __s are inserted. If the length of 1574:/usr/include/c++/4.8/bits/basic_string.h **** * result exceeds max_size(), length_error is thrown. The 1575:/usr/include/c++/4.8/bits/basic_string.h **** * value of the string doesn't change if an error is thrown. 1576:/usr/include/c++/4.8/bits/basic_string.h **** */ 1577:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1578:/usr/include/c++/4.8/bits/basic_string.h **** replace(iterator __i1, iterator __i2, const _CharT* __s) 1579:/usr/include/c++/4.8/bits/basic_string.h **** { 1580:/usr/include/c++/4.8/bits/basic_string.h **** __glibcxx_requires_string(__s); 1581:/usr/include/c++/4.8/bits/basic_string.h **** return this->replace(__i1, __i2, __s, traits_type::length(__s)); 1582:/usr/include/c++/4.8/bits/basic_string.h **** } 1583:/usr/include/c++/4.8/bits/basic_string.h **** 1584:/usr/include/c++/4.8/bits/basic_string.h **** /** 1585:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Replace range of characters with multiple characters 1586:/usr/include/c++/4.8/bits/basic_string.h **** * @param __i1 Iterator referencing start of range to replace. 1587:/usr/include/c++/4.8/bits/basic_string.h **** * @param __i2 Iterator referencing end of range to replace. 1588:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters to insert. 1589:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c Character to insert. 1590:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1591:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1592:/usr/include/c++/4.8/bits/basic_string.h **** * 1593:/usr/include/c++/4.8/bits/basic_string.h **** * Removes the characters in the range [__i1,__i2). In place, 1594:/usr/include/c++/4.8/bits/basic_string.h **** * @a __n copies of @a __c are inserted. If the length of 1595:/usr/include/c++/4.8/bits/basic_string.h **** * result exceeds max_size(), length_error is thrown. The 1596:/usr/include/c++/4.8/bits/basic_string.h **** * value of the string doesn't change if an error is thrown. 1597:/usr/include/c++/4.8/bits/basic_string.h **** */ 1598:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1599:/usr/include/c++/4.8/bits/basic_string.h **** replace(iterator __i1, iterator __i2, size_type __n, _CharT __c) 1600:/usr/include/c++/4.8/bits/basic_string.h **** { 1601:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2 1602:/usr/include/c++/4.8/bits/basic_string.h **** && __i2 <= _M_iend()); 1603:/usr/include/c++/4.8/bits/basic_string.h **** return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c); 1604:/usr/include/c++/4.8/bits/basic_string.h **** } 1605:/usr/include/c++/4.8/bits/basic_string.h **** 1606:/usr/include/c++/4.8/bits/basic_string.h **** /** 1607:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Replace range of characters with range. 1608:/usr/include/c++/4.8/bits/basic_string.h **** * @param __i1 Iterator referencing start of range to replace. 1609:/usr/include/c++/4.8/bits/basic_string.h **** * @param __i2 Iterator referencing end of range to replace. 1610:/usr/include/c++/4.8/bits/basic_string.h **** * @param __k1 Iterator referencing start of range to insert. 1611:/usr/include/c++/4.8/bits/basic_string.h **** * @param __k2 Iterator referencing end of range to insert. 1612:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1613:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1614:/usr/include/c++/4.8/bits/basic_string.h **** * 1615:/usr/include/c++/4.8/bits/basic_string.h **** * Removes the characters in the range [__i1,__i2). In place, 1616:/usr/include/c++/4.8/bits/basic_string.h **** * characters in the range [__k1,__k2) are inserted. If the 1617:/usr/include/c++/4.8/bits/basic_string.h **** * length of result exceeds max_size(), length_error is thrown. 1618:/usr/include/c++/4.8/bits/basic_string.h **** * The value of the string doesn't change if an error is GAS LISTING /tmp/ccrG9BDx.s page 63 1619:/usr/include/c++/4.8/bits/basic_string.h **** * thrown. 1620:/usr/include/c++/4.8/bits/basic_string.h **** */ 1621:/usr/include/c++/4.8/bits/basic_string.h **** template 1622:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1623:/usr/include/c++/4.8/bits/basic_string.h **** replace(iterator __i1, iterator __i2, 1624:/usr/include/c++/4.8/bits/basic_string.h **** _InputIterator __k1, _InputIterator __k2) 1625:/usr/include/c++/4.8/bits/basic_string.h **** { 1626:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2 1627:/usr/include/c++/4.8/bits/basic_string.h **** && __i2 <= _M_iend()); 1628:/usr/include/c++/4.8/bits/basic_string.h **** __glibcxx_requires_valid_range(__k1, __k2); 1629:/usr/include/c++/4.8/bits/basic_string.h **** typedef typename std::__is_integer<_InputIterator>::__type _Integral; 1630:/usr/include/c++/4.8/bits/basic_string.h **** return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral()); 1631:/usr/include/c++/4.8/bits/basic_string.h **** } 1632:/usr/include/c++/4.8/bits/basic_string.h **** 1633:/usr/include/c++/4.8/bits/basic_string.h **** // Specializations for the common case of pointer and iterator: 1634:/usr/include/c++/4.8/bits/basic_string.h **** // useful to avoid the overhead of temporary buffering in _M_replace. 1635:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1636:/usr/include/c++/4.8/bits/basic_string.h **** replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2) 1637:/usr/include/c++/4.8/bits/basic_string.h **** { 1638:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2 1639:/usr/include/c++/4.8/bits/basic_string.h **** && __i2 <= _M_iend()); 1640:/usr/include/c++/4.8/bits/basic_string.h **** __glibcxx_requires_valid_range(__k1, __k2); 1641:/usr/include/c++/4.8/bits/basic_string.h **** return this->replace(__i1 - _M_ibegin(), __i2 - __i1, 1642:/usr/include/c++/4.8/bits/basic_string.h **** __k1, __k2 - __k1); 1643:/usr/include/c++/4.8/bits/basic_string.h **** } 1644:/usr/include/c++/4.8/bits/basic_string.h **** 1645:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1646:/usr/include/c++/4.8/bits/basic_string.h **** replace(iterator __i1, iterator __i2, 1647:/usr/include/c++/4.8/bits/basic_string.h **** const _CharT* __k1, const _CharT* __k2) 1648:/usr/include/c++/4.8/bits/basic_string.h **** { 1649:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2 1650:/usr/include/c++/4.8/bits/basic_string.h **** && __i2 <= _M_iend()); 1651:/usr/include/c++/4.8/bits/basic_string.h **** __glibcxx_requires_valid_range(__k1, __k2); 1652:/usr/include/c++/4.8/bits/basic_string.h **** return this->replace(__i1 - _M_ibegin(), __i2 - __i1, 1653:/usr/include/c++/4.8/bits/basic_string.h **** __k1, __k2 - __k1); 1654:/usr/include/c++/4.8/bits/basic_string.h **** } 1655:/usr/include/c++/4.8/bits/basic_string.h **** 1656:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1657:/usr/include/c++/4.8/bits/basic_string.h **** replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2) 1658:/usr/include/c++/4.8/bits/basic_string.h **** { 1659:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2 1660:/usr/include/c++/4.8/bits/basic_string.h **** && __i2 <= _M_iend()); 1661:/usr/include/c++/4.8/bits/basic_string.h **** __glibcxx_requires_valid_range(__k1, __k2); 1662:/usr/include/c++/4.8/bits/basic_string.h **** return this->replace(__i1 - _M_ibegin(), __i2 - __i1, 1663:/usr/include/c++/4.8/bits/basic_string.h **** __k1.base(), __k2 - __k1); 1664:/usr/include/c++/4.8/bits/basic_string.h **** } 1665:/usr/include/c++/4.8/bits/basic_string.h **** 1666:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1667:/usr/include/c++/4.8/bits/basic_string.h **** replace(iterator __i1, iterator __i2, 1668:/usr/include/c++/4.8/bits/basic_string.h **** const_iterator __k1, const_iterator __k2) 1669:/usr/include/c++/4.8/bits/basic_string.h **** { 1670:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2 1671:/usr/include/c++/4.8/bits/basic_string.h **** && __i2 <= _M_iend()); 1672:/usr/include/c++/4.8/bits/basic_string.h **** __glibcxx_requires_valid_range(__k1, __k2); 1673:/usr/include/c++/4.8/bits/basic_string.h **** return this->replace(__i1 - _M_ibegin(), __i2 - __i1, 1674:/usr/include/c++/4.8/bits/basic_string.h **** __k1.base(), __k2 - __k1); 1675:/usr/include/c++/4.8/bits/basic_string.h **** } GAS LISTING /tmp/ccrG9BDx.s page 64 1676:/usr/include/c++/4.8/bits/basic_string.h **** 1677:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L 1678:/usr/include/c++/4.8/bits/basic_string.h **** /** 1679:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Replace range of characters with initializer_list. 1680:/usr/include/c++/4.8/bits/basic_string.h **** * @param __i1 Iterator referencing start of range to replace. 1681:/usr/include/c++/4.8/bits/basic_string.h **** * @param __i2 Iterator referencing end of range to replace. 1682:/usr/include/c++/4.8/bits/basic_string.h **** * @param __l The initializer_list of characters to insert. 1683:/usr/include/c++/4.8/bits/basic_string.h **** * @return Reference to this string. 1684:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::length_error If new length exceeds @c max_size(). 1685:/usr/include/c++/4.8/bits/basic_string.h **** * 1686:/usr/include/c++/4.8/bits/basic_string.h **** * Removes the characters in the range [__i1,__i2). In place, 1687:/usr/include/c++/4.8/bits/basic_string.h **** * characters in the range [__k1,__k2) are inserted. If the 1688:/usr/include/c++/4.8/bits/basic_string.h **** * length of result exceeds max_size(), length_error is thrown. 1689:/usr/include/c++/4.8/bits/basic_string.h **** * The value of the string doesn't change if an error is 1690:/usr/include/c++/4.8/bits/basic_string.h **** * thrown. 1691:/usr/include/c++/4.8/bits/basic_string.h **** */ 1692:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& replace(iterator __i1, iterator __i2, 1693:/usr/include/c++/4.8/bits/basic_string.h **** initializer_list<_CharT> __l) 1694:/usr/include/c++/4.8/bits/basic_string.h **** { return this->replace(__i1, __i2, __l.begin(), __l.end()); } 1695:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11 1696:/usr/include/c++/4.8/bits/basic_string.h **** 1697:/usr/include/c++/4.8/bits/basic_string.h **** private: 1698:/usr/include/c++/4.8/bits/basic_string.h **** template 1699:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1700:/usr/include/c++/4.8/bits/basic_string.h **** _M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n, 1701:/usr/include/c++/4.8/bits/basic_string.h **** _Integer __val, __true_type) 1702:/usr/include/c++/4.8/bits/basic_string.h **** { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); } 1703:/usr/include/c++/4.8/bits/basic_string.h **** 1704:/usr/include/c++/4.8/bits/basic_string.h **** template 1705:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1706:/usr/include/c++/4.8/bits/basic_string.h **** _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1, 1707:/usr/include/c++/4.8/bits/basic_string.h **** _InputIterator __k2, __false_type); 1708:/usr/include/c++/4.8/bits/basic_string.h **** 1709:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1710:/usr/include/c++/4.8/bits/basic_string.h **** _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, 1711:/usr/include/c++/4.8/bits/basic_string.h **** _CharT __c); 1712:/usr/include/c++/4.8/bits/basic_string.h **** 1713:/usr/include/c++/4.8/bits/basic_string.h **** basic_string& 1714:/usr/include/c++/4.8/bits/basic_string.h **** _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s, 1715:/usr/include/c++/4.8/bits/basic_string.h **** size_type __n2); 1716:/usr/include/c++/4.8/bits/basic_string.h **** 1717:/usr/include/c++/4.8/bits/basic_string.h **** // _S_construct_aux is used to implement the 21.3.1 para 15 which 1718:/usr/include/c++/4.8/bits/basic_string.h **** // requires special behaviour if _InIter is an integral type 1719:/usr/include/c++/4.8/bits/basic_string.h **** template 1720:/usr/include/c++/4.8/bits/basic_string.h **** static _CharT* 1721:/usr/include/c++/4.8/bits/basic_string.h **** _S_construct_aux(_InIterator __beg, _InIterator __end, 1722:/usr/include/c++/4.8/bits/basic_string.h **** const _Alloc& __a, __false_type) 1723:/usr/include/c++/4.8/bits/basic_string.h **** { 1724:/usr/include/c++/4.8/bits/basic_string.h **** typedef typename iterator_traits<_InIterator>::iterator_category _Tag; 1725:/usr/include/c++/4.8/bits/basic_string.h **** return _S_construct(__beg, __end, __a, _Tag()); 1726:/usr/include/c++/4.8/bits/basic_string.h **** } 1727:/usr/include/c++/4.8/bits/basic_string.h **** 1728:/usr/include/c++/4.8/bits/basic_string.h **** // _GLIBCXX_RESOLVE_LIB_DEFECTS 1729:/usr/include/c++/4.8/bits/basic_string.h **** // 438. Ambiguity in the "do the right thing" clause 1730:/usr/include/c++/4.8/bits/basic_string.h **** template 1731:/usr/include/c++/4.8/bits/basic_string.h **** static _CharT* 1732:/usr/include/c++/4.8/bits/basic_string.h **** _S_construct_aux(_Integer __beg, _Integer __end, GAS LISTING /tmp/ccrG9BDx.s page 65 1733:/usr/include/c++/4.8/bits/basic_string.h **** const _Alloc& __a, __true_type) 1734:/usr/include/c++/4.8/bits/basic_string.h **** { return _S_construct_aux_2(static_cast(__beg), 1735:/usr/include/c++/4.8/bits/basic_string.h **** __end, __a); } 1736:/usr/include/c++/4.8/bits/basic_string.h **** 1737:/usr/include/c++/4.8/bits/basic_string.h **** static _CharT* 1738:/usr/include/c++/4.8/bits/basic_string.h **** _S_construct_aux_2(size_type __req, _CharT __c, const _Alloc& __a) 1739:/usr/include/c++/4.8/bits/basic_string.h **** { return _S_construct(__req, __c, __a); } 1740:/usr/include/c++/4.8/bits/basic_string.h **** 1741:/usr/include/c++/4.8/bits/basic_string.h **** template 1742:/usr/include/c++/4.8/bits/basic_string.h **** static _CharT* 1743:/usr/include/c++/4.8/bits/basic_string.h **** _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a) 1744:/usr/include/c++/4.8/bits/basic_string.h **** { 1745:/usr/include/c++/4.8/bits/basic_string.h **** typedef typename std::__is_integer<_InIterator>::__type _Integral; 1746:/usr/include/c++/4.8/bits/basic_string.h **** return _S_construct_aux(__beg, __end, __a, _Integral()); 1747:/usr/include/c++/4.8/bits/basic_string.h **** } 1748:/usr/include/c++/4.8/bits/basic_string.h **** 1749:/usr/include/c++/4.8/bits/basic_string.h **** // For Input Iterators, used in istreambuf_iterators, etc. 1750:/usr/include/c++/4.8/bits/basic_string.h **** template 1751:/usr/include/c++/4.8/bits/basic_string.h **** static _CharT* 1752:/usr/include/c++/4.8/bits/basic_string.h **** _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, 1753:/usr/include/c++/4.8/bits/basic_string.h **** input_iterator_tag); 1754:/usr/include/c++/4.8/bits/basic_string.h **** 1755:/usr/include/c++/4.8/bits/basic_string.h **** // For forward_iterators up to random_access_iterators, used for 1756:/usr/include/c++/4.8/bits/basic_string.h **** // string::iterator, _CharT*, etc. 1757:/usr/include/c++/4.8/bits/basic_string.h **** template 1758:/usr/include/c++/4.8/bits/basic_string.h **** static _CharT* 1759:/usr/include/c++/4.8/bits/basic_string.h **** _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a, 1760:/usr/include/c++/4.8/bits/basic_string.h **** forward_iterator_tag); 1761:/usr/include/c++/4.8/bits/basic_string.h **** 1762:/usr/include/c++/4.8/bits/basic_string.h **** static _CharT* 1763:/usr/include/c++/4.8/bits/basic_string.h **** _S_construct(size_type __req, _CharT __c, const _Alloc& __a); 1764:/usr/include/c++/4.8/bits/basic_string.h **** 1765:/usr/include/c++/4.8/bits/basic_string.h **** public: 1766:/usr/include/c++/4.8/bits/basic_string.h **** 1767:/usr/include/c++/4.8/bits/basic_string.h **** /** 1768:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Copy substring into C string. 1769:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string to copy value into. 1770:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters to copy. 1771:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of first character to copy. 1772:/usr/include/c++/4.8/bits/basic_string.h **** * @return Number of characters actually copied 1773:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::out_of_range If __pos > size(). 1774:/usr/include/c++/4.8/bits/basic_string.h **** * 1775:/usr/include/c++/4.8/bits/basic_string.h **** * Copies up to @a __n characters starting at @a __pos into the 1776:/usr/include/c++/4.8/bits/basic_string.h **** * C string @a __s. If @a __pos is %greater than size(), 1777:/usr/include/c++/4.8/bits/basic_string.h **** * out_of_range is thrown. 1778:/usr/include/c++/4.8/bits/basic_string.h **** */ 1779:/usr/include/c++/4.8/bits/basic_string.h **** size_type 1780:/usr/include/c++/4.8/bits/basic_string.h **** copy(_CharT* __s, size_type __n, size_type __pos = 0) const; 1781:/usr/include/c++/4.8/bits/basic_string.h **** 1782:/usr/include/c++/4.8/bits/basic_string.h **** /** 1783:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Swap contents with another string. 1784:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s String to swap with. 1785:/usr/include/c++/4.8/bits/basic_string.h **** * 1786:/usr/include/c++/4.8/bits/basic_string.h **** * Exchanges the contents of this string with that of @a __s in constant 1787:/usr/include/c++/4.8/bits/basic_string.h **** * time. 1788:/usr/include/c++/4.8/bits/basic_string.h **** */ 1789:/usr/include/c++/4.8/bits/basic_string.h **** void GAS LISTING /tmp/ccrG9BDx.s page 66 1790:/usr/include/c++/4.8/bits/basic_string.h **** swap(basic_string& __s); 1791:/usr/include/c++/4.8/bits/basic_string.h **** 1792:/usr/include/c++/4.8/bits/basic_string.h **** // String operations: 1793:/usr/include/c++/4.8/bits/basic_string.h **** /** 1794:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Return const pointer to null-terminated contents. 1795:/usr/include/c++/4.8/bits/basic_string.h **** * 1796:/usr/include/c++/4.8/bits/basic_string.h **** * This is a handle to internal data. Do not modify or dire things may 1797:/usr/include/c++/4.8/bits/basic_string.h **** * happen. 1798:/usr/include/c++/4.8/bits/basic_string.h **** */ 1799:/usr/include/c++/4.8/bits/basic_string.h **** const _CharT* 1800:/usr/include/c++/4.8/bits/basic_string.h **** c_str() const _GLIBCXX_NOEXCEPT 1801:/usr/include/c++/4.8/bits/basic_string.h **** { return _M_data(); } 1802:/usr/include/c++/4.8/bits/basic_string.h **** 1803:/usr/include/c++/4.8/bits/basic_string.h **** /** 1804:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Return const pointer to contents. 1805:/usr/include/c++/4.8/bits/basic_string.h **** * 1806:/usr/include/c++/4.8/bits/basic_string.h **** * This is a handle to internal data. Do not modify or dire things may 1807:/usr/include/c++/4.8/bits/basic_string.h **** * happen. 1808:/usr/include/c++/4.8/bits/basic_string.h **** */ 1809:/usr/include/c++/4.8/bits/basic_string.h **** const _CharT* 1810:/usr/include/c++/4.8/bits/basic_string.h **** data() const _GLIBCXX_NOEXCEPT 1811:/usr/include/c++/4.8/bits/basic_string.h **** { return _M_data(); } 1812:/usr/include/c++/4.8/bits/basic_string.h **** 1813:/usr/include/c++/4.8/bits/basic_string.h **** /** 1814:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Return copy of allocator used to construct this string. 1815:/usr/include/c++/4.8/bits/basic_string.h **** */ 1816:/usr/include/c++/4.8/bits/basic_string.h **** allocator_type 1817:/usr/include/c++/4.8/bits/basic_string.h **** get_allocator() const _GLIBCXX_NOEXCEPT 1818:/usr/include/c++/4.8/bits/basic_string.h **** { return _M_dataplus; } 1819:/usr/include/c++/4.8/bits/basic_string.h **** 1820:/usr/include/c++/4.8/bits/basic_string.h **** /** 1821:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find position of a C substring. 1822:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string to locate. 1823:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search from. 1824:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters from @a s to search for. 1825:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of start of first occurrence. 1826:/usr/include/c++/4.8/bits/basic_string.h **** * 1827:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches forward for the first @a 1828:/usr/include/c++/4.8/bits/basic_string.h **** * __n characters in @a __s within this string. If found, 1829:/usr/include/c++/4.8/bits/basic_string.h **** * returns the index where it begins. If not found, returns 1830:/usr/include/c++/4.8/bits/basic_string.h **** * npos. 1831:/usr/include/c++/4.8/bits/basic_string.h **** */ 1832:/usr/include/c++/4.8/bits/basic_string.h **** size_type 1833:/usr/include/c++/4.8/bits/basic_string.h **** find(const _CharT* __s, size_type __pos, size_type __n) const; 1834:/usr/include/c++/4.8/bits/basic_string.h **** 1835:/usr/include/c++/4.8/bits/basic_string.h **** /** 1836:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find position of a string. 1837:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str String to locate. 1838:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search from (default 0). 1839:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of start of first occurrence. 1840:/usr/include/c++/4.8/bits/basic_string.h **** * 1841:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches forward for value of @a __str within 1842:/usr/include/c++/4.8/bits/basic_string.h **** * this string. If found, returns the index where it begins. If not 1843:/usr/include/c++/4.8/bits/basic_string.h **** * found, returns npos. 1844:/usr/include/c++/4.8/bits/basic_string.h **** */ 1845:/usr/include/c++/4.8/bits/basic_string.h **** size_type 1846:/usr/include/c++/4.8/bits/basic_string.h **** find(const basic_string& __str, size_type __pos = 0) const GAS LISTING /tmp/ccrG9BDx.s page 67 1847:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_NOEXCEPT 1848:/usr/include/c++/4.8/bits/basic_string.h **** { return this->find(__str.data(), __pos, __str.size()); } 1849:/usr/include/c++/4.8/bits/basic_string.h **** 1850:/usr/include/c++/4.8/bits/basic_string.h **** /** 1851:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find position of a C string. 1852:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string to locate. 1853:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search from (default 0). 1854:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of start of first occurrence. 1855:/usr/include/c++/4.8/bits/basic_string.h **** * 1856:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches forward for the value of @a 1857:/usr/include/c++/4.8/bits/basic_string.h **** * __s within this string. If found, returns the index where 1858:/usr/include/c++/4.8/bits/basic_string.h **** * it begins. If not found, returns npos. 1859:/usr/include/c++/4.8/bits/basic_string.h **** */ 1860:/usr/include/c++/4.8/bits/basic_string.h **** size_type 1861:/usr/include/c++/4.8/bits/basic_string.h **** find(const _CharT* __s, size_type __pos = 0) const 1862:/usr/include/c++/4.8/bits/basic_string.h **** { 1863:/usr/include/c++/4.8/bits/basic_string.h **** __glibcxx_requires_string(__s); 1864:/usr/include/c++/4.8/bits/basic_string.h **** return this->find(__s, __pos, traits_type::length(__s)); 1865:/usr/include/c++/4.8/bits/basic_string.h **** } 1866:/usr/include/c++/4.8/bits/basic_string.h **** 1867:/usr/include/c++/4.8/bits/basic_string.h **** /** 1868:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find position of a character. 1869:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c Character to locate. 1870:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search from (default 0). 1871:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of first occurrence. 1872:/usr/include/c++/4.8/bits/basic_string.h **** * 1873:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches forward for @a __c within 1874:/usr/include/c++/4.8/bits/basic_string.h **** * this string. If found, returns the index where it was 1875:/usr/include/c++/4.8/bits/basic_string.h **** * found. If not found, returns npos. 1876:/usr/include/c++/4.8/bits/basic_string.h **** */ 1877:/usr/include/c++/4.8/bits/basic_string.h **** size_type 1878:/usr/include/c++/4.8/bits/basic_string.h **** find(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT; 1879:/usr/include/c++/4.8/bits/basic_string.h **** 1880:/usr/include/c++/4.8/bits/basic_string.h **** /** 1881:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find last position of a string. 1882:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str String to locate. 1883:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search back from (default end). 1884:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of start of last occurrence. 1885:/usr/include/c++/4.8/bits/basic_string.h **** * 1886:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches backward for value of @a 1887:/usr/include/c++/4.8/bits/basic_string.h **** * __str within this string. If found, returns the index where 1888:/usr/include/c++/4.8/bits/basic_string.h **** * it begins. If not found, returns npos. 1889:/usr/include/c++/4.8/bits/basic_string.h **** */ 1890:/usr/include/c++/4.8/bits/basic_string.h **** size_type 1891:/usr/include/c++/4.8/bits/basic_string.h **** rfind(const basic_string& __str, size_type __pos = npos) const 1892:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_NOEXCEPT 1893:/usr/include/c++/4.8/bits/basic_string.h **** { return this->rfind(__str.data(), __pos, __str.size()); } 1894:/usr/include/c++/4.8/bits/basic_string.h **** 1895:/usr/include/c++/4.8/bits/basic_string.h **** /** 1896:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find last position of a C substring. 1897:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string to locate. 1898:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search back from. 1899:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters from s to search for. 1900:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of start of last occurrence. 1901:/usr/include/c++/4.8/bits/basic_string.h **** * 1902:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches backward for the first @a 1903:/usr/include/c++/4.8/bits/basic_string.h **** * __n characters in @a __s within this string. If found, GAS LISTING /tmp/ccrG9BDx.s page 68 1904:/usr/include/c++/4.8/bits/basic_string.h **** * returns the index where it begins. If not found, returns 1905:/usr/include/c++/4.8/bits/basic_string.h **** * npos. 1906:/usr/include/c++/4.8/bits/basic_string.h **** */ 1907:/usr/include/c++/4.8/bits/basic_string.h **** size_type 1908:/usr/include/c++/4.8/bits/basic_string.h **** rfind(const _CharT* __s, size_type __pos, size_type __n) const; 1909:/usr/include/c++/4.8/bits/basic_string.h **** 1910:/usr/include/c++/4.8/bits/basic_string.h **** /** 1911:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find last position of a C string. 1912:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string to locate. 1913:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to start search at (default end). 1914:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of start of last occurrence. 1915:/usr/include/c++/4.8/bits/basic_string.h **** * 1916:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches backward for the value of 1917:/usr/include/c++/4.8/bits/basic_string.h **** * @a __s within this string. If found, returns the index 1918:/usr/include/c++/4.8/bits/basic_string.h **** * where it begins. If not found, returns npos. 1919:/usr/include/c++/4.8/bits/basic_string.h **** */ 1920:/usr/include/c++/4.8/bits/basic_string.h **** size_type 1921:/usr/include/c++/4.8/bits/basic_string.h **** rfind(const _CharT* __s, size_type __pos = npos) const 1922:/usr/include/c++/4.8/bits/basic_string.h **** { 1923:/usr/include/c++/4.8/bits/basic_string.h **** __glibcxx_requires_string(__s); 1924:/usr/include/c++/4.8/bits/basic_string.h **** return this->rfind(__s, __pos, traits_type::length(__s)); 1925:/usr/include/c++/4.8/bits/basic_string.h **** } 1926:/usr/include/c++/4.8/bits/basic_string.h **** 1927:/usr/include/c++/4.8/bits/basic_string.h **** /** 1928:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find last position of a character. 1929:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c Character to locate. 1930:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search back from (default end). 1931:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of last occurrence. 1932:/usr/include/c++/4.8/bits/basic_string.h **** * 1933:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches backward for @a __c within 1934:/usr/include/c++/4.8/bits/basic_string.h **** * this string. If found, returns the index where it was 1935:/usr/include/c++/4.8/bits/basic_string.h **** * found. If not found, returns npos. 1936:/usr/include/c++/4.8/bits/basic_string.h **** */ 1937:/usr/include/c++/4.8/bits/basic_string.h **** size_type 1938:/usr/include/c++/4.8/bits/basic_string.h **** rfind(_CharT __c, size_type __pos = npos) const _GLIBCXX_NOEXCEPT; 1939:/usr/include/c++/4.8/bits/basic_string.h **** 1940:/usr/include/c++/4.8/bits/basic_string.h **** /** 1941:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find position of a character of string. 1942:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str String containing characters to locate. 1943:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search from (default 0). 1944:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of first occurrence. 1945:/usr/include/c++/4.8/bits/basic_string.h **** * 1946:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches forward for one of the 1947:/usr/include/c++/4.8/bits/basic_string.h **** * characters of @a __str within this string. If found, 1948:/usr/include/c++/4.8/bits/basic_string.h **** * returns the index where it was found. If not found, returns 1949:/usr/include/c++/4.8/bits/basic_string.h **** * npos. 1950:/usr/include/c++/4.8/bits/basic_string.h **** */ 1951:/usr/include/c++/4.8/bits/basic_string.h **** size_type 1952:/usr/include/c++/4.8/bits/basic_string.h **** find_first_of(const basic_string& __str, size_type __pos = 0) const 1953:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_NOEXCEPT 1954:/usr/include/c++/4.8/bits/basic_string.h **** { return this->find_first_of(__str.data(), __pos, __str.size()); } 1955:/usr/include/c++/4.8/bits/basic_string.h **** 1956:/usr/include/c++/4.8/bits/basic_string.h **** /** 1957:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find position of a character of C substring. 1958:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s String containing characters to locate. 1959:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search from. 1960:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters from s to search for. GAS LISTING /tmp/ccrG9BDx.s page 69 1961:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of first occurrence. 1962:/usr/include/c++/4.8/bits/basic_string.h **** * 1963:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches forward for one of the 1964:/usr/include/c++/4.8/bits/basic_string.h **** * first @a __n characters of @a __s within this string. If 1965:/usr/include/c++/4.8/bits/basic_string.h **** * found, returns the index where it was found. If not found, 1966:/usr/include/c++/4.8/bits/basic_string.h **** * returns npos. 1967:/usr/include/c++/4.8/bits/basic_string.h **** */ 1968:/usr/include/c++/4.8/bits/basic_string.h **** size_type 1969:/usr/include/c++/4.8/bits/basic_string.h **** find_first_of(const _CharT* __s, size_type __pos, size_type __n) const; 1970:/usr/include/c++/4.8/bits/basic_string.h **** 1971:/usr/include/c++/4.8/bits/basic_string.h **** /** 1972:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find position of a character of C string. 1973:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s String containing characters to locate. 1974:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search from (default 0). 1975:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of first occurrence. 1976:/usr/include/c++/4.8/bits/basic_string.h **** * 1977:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches forward for one of the 1978:/usr/include/c++/4.8/bits/basic_string.h **** * characters of @a __s within this string. If found, returns 1979:/usr/include/c++/4.8/bits/basic_string.h **** * the index where it was found. If not found, returns npos. 1980:/usr/include/c++/4.8/bits/basic_string.h **** */ 1981:/usr/include/c++/4.8/bits/basic_string.h **** size_type 1982:/usr/include/c++/4.8/bits/basic_string.h **** find_first_of(const _CharT* __s, size_type __pos = 0) const 1983:/usr/include/c++/4.8/bits/basic_string.h **** { 1984:/usr/include/c++/4.8/bits/basic_string.h **** __glibcxx_requires_string(__s); 1985:/usr/include/c++/4.8/bits/basic_string.h **** return this->find_first_of(__s, __pos, traits_type::length(__s)); 1986:/usr/include/c++/4.8/bits/basic_string.h **** } 1987:/usr/include/c++/4.8/bits/basic_string.h **** 1988:/usr/include/c++/4.8/bits/basic_string.h **** /** 1989:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find position of a character. 1990:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c Character to locate. 1991:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search from (default 0). 1992:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of first occurrence. 1993:/usr/include/c++/4.8/bits/basic_string.h **** * 1994:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches forward for the character 1995:/usr/include/c++/4.8/bits/basic_string.h **** * @a __c within this string. If found, returns the index 1996:/usr/include/c++/4.8/bits/basic_string.h **** * where it was found. If not found, returns npos. 1997:/usr/include/c++/4.8/bits/basic_string.h **** * 1998:/usr/include/c++/4.8/bits/basic_string.h **** * Note: equivalent to find(__c, __pos). 1999:/usr/include/c++/4.8/bits/basic_string.h **** */ 2000:/usr/include/c++/4.8/bits/basic_string.h **** size_type 2001:/usr/include/c++/4.8/bits/basic_string.h **** find_first_of(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT 2002:/usr/include/c++/4.8/bits/basic_string.h **** { return this->find(__c, __pos); } 2003:/usr/include/c++/4.8/bits/basic_string.h **** 2004:/usr/include/c++/4.8/bits/basic_string.h **** /** 2005:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find last position of a character of string. 2006:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str String containing characters to locate. 2007:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search back from (default end). 2008:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of last occurrence. 2009:/usr/include/c++/4.8/bits/basic_string.h **** * 2010:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches backward for one of the 2011:/usr/include/c++/4.8/bits/basic_string.h **** * characters of @a __str within this string. If found, 2012:/usr/include/c++/4.8/bits/basic_string.h **** * returns the index where it was found. If not found, returns 2013:/usr/include/c++/4.8/bits/basic_string.h **** * npos. 2014:/usr/include/c++/4.8/bits/basic_string.h **** */ 2015:/usr/include/c++/4.8/bits/basic_string.h **** size_type 2016:/usr/include/c++/4.8/bits/basic_string.h **** find_last_of(const basic_string& __str, size_type __pos = npos) const 2017:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_NOEXCEPT GAS LISTING /tmp/ccrG9BDx.s page 70 2018:/usr/include/c++/4.8/bits/basic_string.h **** { return this->find_last_of(__str.data(), __pos, __str.size()); } 2019:/usr/include/c++/4.8/bits/basic_string.h **** 2020:/usr/include/c++/4.8/bits/basic_string.h **** /** 2021:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find last position of a character of C substring. 2022:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string containing characters to locate. 2023:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search back from. 2024:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters from s to search for. 2025:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of last occurrence. 2026:/usr/include/c++/4.8/bits/basic_string.h **** * 2027:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches backward for one of the 2028:/usr/include/c++/4.8/bits/basic_string.h **** * first @a __n characters of @a __s within this string. If 2029:/usr/include/c++/4.8/bits/basic_string.h **** * found, returns the index where it was found. If not found, 2030:/usr/include/c++/4.8/bits/basic_string.h **** * returns npos. 2031:/usr/include/c++/4.8/bits/basic_string.h **** */ 2032:/usr/include/c++/4.8/bits/basic_string.h **** size_type 2033:/usr/include/c++/4.8/bits/basic_string.h **** find_last_of(const _CharT* __s, size_type __pos, size_type __n) const; 2034:/usr/include/c++/4.8/bits/basic_string.h **** 2035:/usr/include/c++/4.8/bits/basic_string.h **** /** 2036:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find last position of a character of C string. 2037:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string containing characters to locate. 2038:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search back from (default end). 2039:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of last occurrence. 2040:/usr/include/c++/4.8/bits/basic_string.h **** * 2041:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches backward for one of the 2042:/usr/include/c++/4.8/bits/basic_string.h **** * characters of @a __s within this string. If found, returns 2043:/usr/include/c++/4.8/bits/basic_string.h **** * the index where it was found. If not found, returns npos. 2044:/usr/include/c++/4.8/bits/basic_string.h **** */ 2045:/usr/include/c++/4.8/bits/basic_string.h **** size_type 2046:/usr/include/c++/4.8/bits/basic_string.h **** find_last_of(const _CharT* __s, size_type __pos = npos) const 2047:/usr/include/c++/4.8/bits/basic_string.h **** { 2048:/usr/include/c++/4.8/bits/basic_string.h **** __glibcxx_requires_string(__s); 2049:/usr/include/c++/4.8/bits/basic_string.h **** return this->find_last_of(__s, __pos, traits_type::length(__s)); 2050:/usr/include/c++/4.8/bits/basic_string.h **** } 2051:/usr/include/c++/4.8/bits/basic_string.h **** 2052:/usr/include/c++/4.8/bits/basic_string.h **** /** 2053:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find last position of a character. 2054:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c Character to locate. 2055:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search back from (default end). 2056:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of last occurrence. 2057:/usr/include/c++/4.8/bits/basic_string.h **** * 2058:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches backward for @a __c within 2059:/usr/include/c++/4.8/bits/basic_string.h **** * this string. If found, returns the index where it was 2060:/usr/include/c++/4.8/bits/basic_string.h **** * found. If not found, returns npos. 2061:/usr/include/c++/4.8/bits/basic_string.h **** * 2062:/usr/include/c++/4.8/bits/basic_string.h **** * Note: equivalent to rfind(__c, __pos). 2063:/usr/include/c++/4.8/bits/basic_string.h **** */ 2064:/usr/include/c++/4.8/bits/basic_string.h **** size_type 2065:/usr/include/c++/4.8/bits/basic_string.h **** find_last_of(_CharT __c, size_type __pos = npos) const _GLIBCXX_NOEXCEPT 2066:/usr/include/c++/4.8/bits/basic_string.h **** { return this->rfind(__c, __pos); } 2067:/usr/include/c++/4.8/bits/basic_string.h **** 2068:/usr/include/c++/4.8/bits/basic_string.h **** /** 2069:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find position of a character not in string. 2070:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str String containing characters to avoid. 2071:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search from (default 0). 2072:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of first occurrence. 2073:/usr/include/c++/4.8/bits/basic_string.h **** * 2074:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches forward for a character not contained GAS LISTING /tmp/ccrG9BDx.s page 71 2075:/usr/include/c++/4.8/bits/basic_string.h **** * in @a __str within this string. If found, returns the index where it 2076:/usr/include/c++/4.8/bits/basic_string.h **** * was found. If not found, returns npos. 2077:/usr/include/c++/4.8/bits/basic_string.h **** */ 2078:/usr/include/c++/4.8/bits/basic_string.h **** size_type 2079:/usr/include/c++/4.8/bits/basic_string.h **** find_first_not_of(const basic_string& __str, size_type __pos = 0) const 2080:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_NOEXCEPT 2081:/usr/include/c++/4.8/bits/basic_string.h **** { return this->find_first_not_of(__str.data(), __pos, __str.size()); } 2082:/usr/include/c++/4.8/bits/basic_string.h **** 2083:/usr/include/c++/4.8/bits/basic_string.h **** /** 2084:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find position of a character not in C substring. 2085:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string containing characters to avoid. 2086:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search from. 2087:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters from __s to consider. 2088:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of first occurrence. 2089:/usr/include/c++/4.8/bits/basic_string.h **** * 2090:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches forward for a character not 2091:/usr/include/c++/4.8/bits/basic_string.h **** * contained in the first @a __n characters of @a __s within 2092:/usr/include/c++/4.8/bits/basic_string.h **** * this string. If found, returns the index where it was 2093:/usr/include/c++/4.8/bits/basic_string.h **** * found. If not found, returns npos. 2094:/usr/include/c++/4.8/bits/basic_string.h **** */ 2095:/usr/include/c++/4.8/bits/basic_string.h **** size_type 2096:/usr/include/c++/4.8/bits/basic_string.h **** find_first_not_of(const _CharT* __s, size_type __pos, 2097:/usr/include/c++/4.8/bits/basic_string.h **** size_type __n) const; 2098:/usr/include/c++/4.8/bits/basic_string.h **** 2099:/usr/include/c++/4.8/bits/basic_string.h **** /** 2100:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find position of a character not in C string. 2101:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string containing characters to avoid. 2102:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search from (default 0). 2103:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of first occurrence. 2104:/usr/include/c++/4.8/bits/basic_string.h **** * 2105:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches forward for a character not 2106:/usr/include/c++/4.8/bits/basic_string.h **** * contained in @a __s within this string. If found, returns 2107:/usr/include/c++/4.8/bits/basic_string.h **** * the index where it was found. If not found, returns npos. 2108:/usr/include/c++/4.8/bits/basic_string.h **** */ 2109:/usr/include/c++/4.8/bits/basic_string.h **** size_type 2110:/usr/include/c++/4.8/bits/basic_string.h **** find_first_not_of(const _CharT* __s, size_type __pos = 0) const 2111:/usr/include/c++/4.8/bits/basic_string.h **** { 2112:/usr/include/c++/4.8/bits/basic_string.h **** __glibcxx_requires_string(__s); 2113:/usr/include/c++/4.8/bits/basic_string.h **** return this->find_first_not_of(__s, __pos, traits_type::length(__s)); 2114:/usr/include/c++/4.8/bits/basic_string.h **** } 2115:/usr/include/c++/4.8/bits/basic_string.h **** 2116:/usr/include/c++/4.8/bits/basic_string.h **** /** 2117:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find position of a different character. 2118:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c Character to avoid. 2119:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search from (default 0). 2120:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of first occurrence. 2121:/usr/include/c++/4.8/bits/basic_string.h **** * 2122:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches forward for a character 2123:/usr/include/c++/4.8/bits/basic_string.h **** * other than @a __c within this string. If found, returns the 2124:/usr/include/c++/4.8/bits/basic_string.h **** * index where it was found. If not found, returns npos. 2125:/usr/include/c++/4.8/bits/basic_string.h **** */ 2126:/usr/include/c++/4.8/bits/basic_string.h **** size_type 2127:/usr/include/c++/4.8/bits/basic_string.h **** find_first_not_of(_CharT __c, size_type __pos = 0) const 2128:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_NOEXCEPT; 2129:/usr/include/c++/4.8/bits/basic_string.h **** 2130:/usr/include/c++/4.8/bits/basic_string.h **** /** 2131:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find last position of a character not in string. GAS LISTING /tmp/ccrG9BDx.s page 72 2132:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str String containing characters to avoid. 2133:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search back from (default end). 2134:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of last occurrence. 2135:/usr/include/c++/4.8/bits/basic_string.h **** * 2136:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches backward for a character 2137:/usr/include/c++/4.8/bits/basic_string.h **** * not contained in @a __str within this string. If found, 2138:/usr/include/c++/4.8/bits/basic_string.h **** * returns the index where it was found. If not found, returns 2139:/usr/include/c++/4.8/bits/basic_string.h **** * npos. 2140:/usr/include/c++/4.8/bits/basic_string.h **** */ 2141:/usr/include/c++/4.8/bits/basic_string.h **** size_type 2142:/usr/include/c++/4.8/bits/basic_string.h **** find_last_not_of(const basic_string& __str, size_type __pos = npos) const 2143:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_NOEXCEPT 2144:/usr/include/c++/4.8/bits/basic_string.h **** { return this->find_last_not_of(__str.data(), __pos, __str.size()); } 2145:/usr/include/c++/4.8/bits/basic_string.h **** 2146:/usr/include/c++/4.8/bits/basic_string.h **** /** 2147:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find last position of a character not in C substring. 2148:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string containing characters to avoid. 2149:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search back from. 2150:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters from s to consider. 2151:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of last occurrence. 2152:/usr/include/c++/4.8/bits/basic_string.h **** * 2153:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches backward for a character not 2154:/usr/include/c++/4.8/bits/basic_string.h **** * contained in the first @a __n characters of @a __s within this string. 2155:/usr/include/c++/4.8/bits/basic_string.h **** * If found, returns the index where it was found. If not found, 2156:/usr/include/c++/4.8/bits/basic_string.h **** * returns npos. 2157:/usr/include/c++/4.8/bits/basic_string.h **** */ 2158:/usr/include/c++/4.8/bits/basic_string.h **** size_type 2159:/usr/include/c++/4.8/bits/basic_string.h **** find_last_not_of(const _CharT* __s, size_type __pos, 2160:/usr/include/c++/4.8/bits/basic_string.h **** size_type __n) const; 2161:/usr/include/c++/4.8/bits/basic_string.h **** /** 2162:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find last position of a character not in C string. 2163:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string containing characters to avoid. 2164:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search back from (default end). 2165:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of last occurrence. 2166:/usr/include/c++/4.8/bits/basic_string.h **** * 2167:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches backward for a character 2168:/usr/include/c++/4.8/bits/basic_string.h **** * not contained in @a __s within this string. If found, 2169:/usr/include/c++/4.8/bits/basic_string.h **** * returns the index where it was found. If not found, returns 2170:/usr/include/c++/4.8/bits/basic_string.h **** * npos. 2171:/usr/include/c++/4.8/bits/basic_string.h **** */ 2172:/usr/include/c++/4.8/bits/basic_string.h **** size_type 2173:/usr/include/c++/4.8/bits/basic_string.h **** find_last_not_of(const _CharT* __s, size_type __pos = npos) const 2174:/usr/include/c++/4.8/bits/basic_string.h **** { 2175:/usr/include/c++/4.8/bits/basic_string.h **** __glibcxx_requires_string(__s); 2176:/usr/include/c++/4.8/bits/basic_string.h **** return this->find_last_not_of(__s, __pos, traits_type::length(__s)); 2177:/usr/include/c++/4.8/bits/basic_string.h **** } 2178:/usr/include/c++/4.8/bits/basic_string.h **** 2179:/usr/include/c++/4.8/bits/basic_string.h **** /** 2180:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Find last position of a different character. 2181:/usr/include/c++/4.8/bits/basic_string.h **** * @param __c Character to avoid. 2182:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of character to search back from (default end). 2183:/usr/include/c++/4.8/bits/basic_string.h **** * @return Index of last occurrence. 2184:/usr/include/c++/4.8/bits/basic_string.h **** * 2185:/usr/include/c++/4.8/bits/basic_string.h **** * Starting from @a __pos, searches backward for a character other than 2186:/usr/include/c++/4.8/bits/basic_string.h **** * @a __c within this string. If found, returns the index where it was 2187:/usr/include/c++/4.8/bits/basic_string.h **** * found. If not found, returns npos. 2188:/usr/include/c++/4.8/bits/basic_string.h **** */ GAS LISTING /tmp/ccrG9BDx.s page 73 2189:/usr/include/c++/4.8/bits/basic_string.h **** size_type 2190:/usr/include/c++/4.8/bits/basic_string.h **** find_last_not_of(_CharT __c, size_type __pos = npos) const 2191:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_NOEXCEPT; 2192:/usr/include/c++/4.8/bits/basic_string.h **** 2193:/usr/include/c++/4.8/bits/basic_string.h **** /** 2194:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Get a substring. 2195:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of first character (default 0). 2196:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters in substring (default remainder). 2197:/usr/include/c++/4.8/bits/basic_string.h **** * @return The new string. 2198:/usr/include/c++/4.8/bits/basic_string.h **** * @throw std::out_of_range If __pos > size(). 2199:/usr/include/c++/4.8/bits/basic_string.h **** * 2200:/usr/include/c++/4.8/bits/basic_string.h **** * Construct and return a new string using the @a __n 2201:/usr/include/c++/4.8/bits/basic_string.h **** * characters starting at @a __pos. If the string is too 2202:/usr/include/c++/4.8/bits/basic_string.h **** * short, use the remainder of the characters. If @a __pos is 2203:/usr/include/c++/4.8/bits/basic_string.h **** * beyond the end of the string, out_of_range is thrown. 2204:/usr/include/c++/4.8/bits/basic_string.h **** */ 2205:/usr/include/c++/4.8/bits/basic_string.h **** basic_string 2206:/usr/include/c++/4.8/bits/basic_string.h **** substr(size_type __pos = 0, size_type __n = npos) const 2207:/usr/include/c++/4.8/bits/basic_string.h **** { return basic_string(*this, 2208:/usr/include/c++/4.8/bits/basic_string.h **** _M_check(__pos, "basic_string::substr"), __n); } 2209:/usr/include/c++/4.8/bits/basic_string.h **** 2210:/usr/include/c++/4.8/bits/basic_string.h **** /** 2211:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Compare to a string. 2212:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str String to compare against. 2213:/usr/include/c++/4.8/bits/basic_string.h **** * @return Integer < 0, 0, or > 0. 2214:/usr/include/c++/4.8/bits/basic_string.h **** * 2215:/usr/include/c++/4.8/bits/basic_string.h **** * Returns an integer < 0 if this string is ordered before @a 2216:/usr/include/c++/4.8/bits/basic_string.h **** * __str, 0 if their values are equivalent, or > 0 if this 2217:/usr/include/c++/4.8/bits/basic_string.h **** * string is ordered after @a __str. Determines the effective 2218:/usr/include/c++/4.8/bits/basic_string.h **** * length rlen of the strings to compare as the smallest of 2219:/usr/include/c++/4.8/bits/basic_string.h **** * size() and str.size(). The function then compares the two 2220:/usr/include/c++/4.8/bits/basic_string.h **** * strings by calling traits::compare(data(), str.data(),rlen). 2221:/usr/include/c++/4.8/bits/basic_string.h **** * If the result of the comparison is nonzero returns it, 2222:/usr/include/c++/4.8/bits/basic_string.h **** * otherwise the shorter one is ordered first. 2223:/usr/include/c++/4.8/bits/basic_string.h **** */ 2224:/usr/include/c++/4.8/bits/basic_string.h **** int 2225:/usr/include/c++/4.8/bits/basic_string.h **** compare(const basic_string& __str) const 2226:/usr/include/c++/4.8/bits/basic_string.h **** { 2227:/usr/include/c++/4.8/bits/basic_string.h **** const size_type __size = this->size(); 2228:/usr/include/c++/4.8/bits/basic_string.h **** const size_type __osize = __str.size(); 2229:/usr/include/c++/4.8/bits/basic_string.h **** const size_type __len = std::min(__size, __osize); 2230:/usr/include/c++/4.8/bits/basic_string.h **** 2231:/usr/include/c++/4.8/bits/basic_string.h **** int __r = traits_type::compare(_M_data(), __str.data(), __len); 2232:/usr/include/c++/4.8/bits/basic_string.h **** if (!__r) 2233:/usr/include/c++/4.8/bits/basic_string.h **** __r = _S_compare(__size, __osize); 2234:/usr/include/c++/4.8/bits/basic_string.h **** return __r; 2235:/usr/include/c++/4.8/bits/basic_string.h **** } 2236:/usr/include/c++/4.8/bits/basic_string.h **** 2237:/usr/include/c++/4.8/bits/basic_string.h **** /** 2238:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Compare substring to a string. 2239:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of first character of substring. 2240:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n Number of characters in substring. 2241:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str String to compare against. 2242:/usr/include/c++/4.8/bits/basic_string.h **** * @return Integer < 0, 0, or > 0. 2243:/usr/include/c++/4.8/bits/basic_string.h **** * 2244:/usr/include/c++/4.8/bits/basic_string.h **** * Form the substring of this string from the @a __n characters 2245:/usr/include/c++/4.8/bits/basic_string.h **** * starting at @a __pos. Returns an integer < 0 if the GAS LISTING /tmp/ccrG9BDx.s page 74 2246:/usr/include/c++/4.8/bits/basic_string.h **** * substring is ordered before @a __str, 0 if their values are 2247:/usr/include/c++/4.8/bits/basic_string.h **** * equivalent, or > 0 if the substring is ordered after @a 2248:/usr/include/c++/4.8/bits/basic_string.h **** * __str. Determines the effective length rlen of the strings 2249:/usr/include/c++/4.8/bits/basic_string.h **** * to compare as the smallest of the length of the substring 2250:/usr/include/c++/4.8/bits/basic_string.h **** * and @a __str.size(). The function then compares the two 2251:/usr/include/c++/4.8/bits/basic_string.h **** * strings by calling 2252:/usr/include/c++/4.8/bits/basic_string.h **** * traits::compare(substring.data(),str.data(),rlen). If the 2253:/usr/include/c++/4.8/bits/basic_string.h **** * result of the comparison is nonzero returns it, otherwise 2254:/usr/include/c++/4.8/bits/basic_string.h **** * the shorter one is ordered first. 2255:/usr/include/c++/4.8/bits/basic_string.h **** */ 2256:/usr/include/c++/4.8/bits/basic_string.h **** int 2257:/usr/include/c++/4.8/bits/basic_string.h **** compare(size_type __pos, size_type __n, const basic_string& __str) const; 2258:/usr/include/c++/4.8/bits/basic_string.h **** 2259:/usr/include/c++/4.8/bits/basic_string.h **** /** 2260:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Compare substring to a substring. 2261:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos1 Index of first character of substring. 2262:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n1 Number of characters in substring. 2263:/usr/include/c++/4.8/bits/basic_string.h **** * @param __str String to compare against. 2264:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos2 Index of first character of substring of str. 2265:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n2 Number of characters in substring of str. 2266:/usr/include/c++/4.8/bits/basic_string.h **** * @return Integer < 0, 0, or > 0. 2267:/usr/include/c++/4.8/bits/basic_string.h **** * 2268:/usr/include/c++/4.8/bits/basic_string.h **** * Form the substring of this string from the @a __n1 2269:/usr/include/c++/4.8/bits/basic_string.h **** * characters starting at @a __pos1. Form the substring of @a 2270:/usr/include/c++/4.8/bits/basic_string.h **** * __str from the @a __n2 characters starting at @a __pos2. 2271:/usr/include/c++/4.8/bits/basic_string.h **** * Returns an integer < 0 if this substring is ordered before 2272:/usr/include/c++/4.8/bits/basic_string.h **** * the substring of @a __str, 0 if their values are equivalent, 2273:/usr/include/c++/4.8/bits/basic_string.h **** * or > 0 if this substring is ordered after the substring of 2274:/usr/include/c++/4.8/bits/basic_string.h **** * @a __str. Determines the effective length rlen of the 2275:/usr/include/c++/4.8/bits/basic_string.h **** * strings to compare as the smallest of the lengths of the 2276:/usr/include/c++/4.8/bits/basic_string.h **** * substrings. The function then compares the two strings by 2277:/usr/include/c++/4.8/bits/basic_string.h **** * calling 2278:/usr/include/c++/4.8/bits/basic_string.h **** * traits::compare(substring.data(),str.substr(pos2,n2).data(),rlen). 2279:/usr/include/c++/4.8/bits/basic_string.h **** * If the result of the comparison is nonzero returns it, 2280:/usr/include/c++/4.8/bits/basic_string.h **** * otherwise the shorter one is ordered first. 2281:/usr/include/c++/4.8/bits/basic_string.h **** */ 2282:/usr/include/c++/4.8/bits/basic_string.h **** int 2283:/usr/include/c++/4.8/bits/basic_string.h **** compare(size_type __pos1, size_type __n1, const basic_string& __str, 2284:/usr/include/c++/4.8/bits/basic_string.h **** size_type __pos2, size_type __n2) const; 2285:/usr/include/c++/4.8/bits/basic_string.h **** 2286:/usr/include/c++/4.8/bits/basic_string.h **** /** 2287:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Compare to a C string. 2288:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string to compare against. 2289:/usr/include/c++/4.8/bits/basic_string.h **** * @return Integer < 0, 0, or > 0. 2290:/usr/include/c++/4.8/bits/basic_string.h **** * 2291:/usr/include/c++/4.8/bits/basic_string.h **** * Returns an integer < 0 if this string is ordered before @a __s, 0 if 2292:/usr/include/c++/4.8/bits/basic_string.h **** * their values are equivalent, or > 0 if this string is ordered after 2293:/usr/include/c++/4.8/bits/basic_string.h **** * @a __s. Determines the effective length rlen of the strings to 2294:/usr/include/c++/4.8/bits/basic_string.h **** * compare as the smallest of size() and the length of a string 2295:/usr/include/c++/4.8/bits/basic_string.h **** * constructed from @a __s. The function then compares the two strings 2296:/usr/include/c++/4.8/bits/basic_string.h **** * by calling traits::compare(data(),s,rlen). If the result of the 2297:/usr/include/c++/4.8/bits/basic_string.h **** * comparison is nonzero returns it, otherwise the shorter one is 2298:/usr/include/c++/4.8/bits/basic_string.h **** * ordered first. 2299:/usr/include/c++/4.8/bits/basic_string.h **** */ 2300:/usr/include/c++/4.8/bits/basic_string.h **** int 2301:/usr/include/c++/4.8/bits/basic_string.h **** compare(const _CharT* __s) const; 2302:/usr/include/c++/4.8/bits/basic_string.h **** GAS LISTING /tmp/ccrG9BDx.s page 75 2303:/usr/include/c++/4.8/bits/basic_string.h **** // _GLIBCXX_RESOLVE_LIB_DEFECTS 2304:/usr/include/c++/4.8/bits/basic_string.h **** // 5 String::compare specification questionable 2305:/usr/include/c++/4.8/bits/basic_string.h **** /** 2306:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Compare substring to a C string. 2307:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of first character of substring. 2308:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n1 Number of characters in substring. 2309:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s C string to compare against. 2310:/usr/include/c++/4.8/bits/basic_string.h **** * @return Integer < 0, 0, or > 0. 2311:/usr/include/c++/4.8/bits/basic_string.h **** * 2312:/usr/include/c++/4.8/bits/basic_string.h **** * Form the substring of this string from the @a __n1 2313:/usr/include/c++/4.8/bits/basic_string.h **** * characters starting at @a pos. Returns an integer < 0 if 2314:/usr/include/c++/4.8/bits/basic_string.h **** * the substring is ordered before @a __s, 0 if their values 2315:/usr/include/c++/4.8/bits/basic_string.h **** * are equivalent, or > 0 if the substring is ordered after @a 2316:/usr/include/c++/4.8/bits/basic_string.h **** * __s. Determines the effective length rlen of the strings to 2317:/usr/include/c++/4.8/bits/basic_string.h **** * compare as the smallest of the length of the substring and 2318:/usr/include/c++/4.8/bits/basic_string.h **** * the length of a string constructed from @a __s. The 2319:/usr/include/c++/4.8/bits/basic_string.h **** * function then compares the two string by calling 2320:/usr/include/c++/4.8/bits/basic_string.h **** * traits::compare(substring.data(),__s,rlen). If the result of 2321:/usr/include/c++/4.8/bits/basic_string.h **** * the comparison is nonzero returns it, otherwise the shorter 2322:/usr/include/c++/4.8/bits/basic_string.h **** * one is ordered first. 2323:/usr/include/c++/4.8/bits/basic_string.h **** */ 2324:/usr/include/c++/4.8/bits/basic_string.h **** int 2325:/usr/include/c++/4.8/bits/basic_string.h **** compare(size_type __pos, size_type __n1, const _CharT* __s) const; 2326:/usr/include/c++/4.8/bits/basic_string.h **** 2327:/usr/include/c++/4.8/bits/basic_string.h **** /** 2328:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Compare substring against a character %array. 2329:/usr/include/c++/4.8/bits/basic_string.h **** * @param __pos Index of first character of substring. 2330:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n1 Number of characters in substring. 2331:/usr/include/c++/4.8/bits/basic_string.h **** * @param __s character %array to compare against. 2332:/usr/include/c++/4.8/bits/basic_string.h **** * @param __n2 Number of characters of s. 2333:/usr/include/c++/4.8/bits/basic_string.h **** * @return Integer < 0, 0, or > 0. 2334:/usr/include/c++/4.8/bits/basic_string.h **** * 2335:/usr/include/c++/4.8/bits/basic_string.h **** * Form the substring of this string from the @a __n1 2336:/usr/include/c++/4.8/bits/basic_string.h **** * characters starting at @a __pos. Form a string from the 2337:/usr/include/c++/4.8/bits/basic_string.h **** * first @a __n2 characters of @a __s. Returns an integer < 0 2338:/usr/include/c++/4.8/bits/basic_string.h **** * if this substring is ordered before the string from @a __s, 2339:/usr/include/c++/4.8/bits/basic_string.h **** * 0 if their values are equivalent, or > 0 if this substring 2340:/usr/include/c++/4.8/bits/basic_string.h **** * is ordered after the string from @a __s. Determines the 2341:/usr/include/c++/4.8/bits/basic_string.h **** * effective length rlen of the strings to compare as the 2342:/usr/include/c++/4.8/bits/basic_string.h **** * smallest of the length of the substring and @a __n2. The 2343:/usr/include/c++/4.8/bits/basic_string.h **** * function then compares the two strings by calling 2344:/usr/include/c++/4.8/bits/basic_string.h **** * traits::compare(substring.data(),s,rlen). If the result of 2345:/usr/include/c++/4.8/bits/basic_string.h **** * the comparison is nonzero returns it, otherwise the shorter 2346:/usr/include/c++/4.8/bits/basic_string.h **** * one is ordered first. 2347:/usr/include/c++/4.8/bits/basic_string.h **** * 2348:/usr/include/c++/4.8/bits/basic_string.h **** * NB: s must have at least n2 characters, '\\0' has 2349:/usr/include/c++/4.8/bits/basic_string.h **** * no special meaning. 2350:/usr/include/c++/4.8/bits/basic_string.h **** */ 2351:/usr/include/c++/4.8/bits/basic_string.h **** int 2352:/usr/include/c++/4.8/bits/basic_string.h **** compare(size_type __pos, size_type __n1, const _CharT* __s, 2353:/usr/include/c++/4.8/bits/basic_string.h **** size_type __n2) const; 2354:/usr/include/c++/4.8/bits/basic_string.h **** }; 2355:/usr/include/c++/4.8/bits/basic_string.h **** 2356:/usr/include/c++/4.8/bits/basic_string.h **** // operator+ 2357:/usr/include/c++/4.8/bits/basic_string.h **** /** 2358:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Concatenate two strings. 2359:/usr/include/c++/4.8/bits/basic_string.h **** * @param __lhs First string. GAS LISTING /tmp/ccrG9BDx.s page 76 2360:/usr/include/c++/4.8/bits/basic_string.h **** * @param __rhs Last string. 2361:/usr/include/c++/4.8/bits/basic_string.h **** * @return New string with value of @a __lhs followed by @a __rhs. 2362:/usr/include/c++/4.8/bits/basic_string.h **** */ 2363:/usr/include/c++/4.8/bits/basic_string.h **** template 2364:/usr/include/c++/4.8/bits/basic_string.h **** basic_string<_CharT, _Traits, _Alloc> 2365:/usr/include/c++/4.8/bits/basic_string.h **** operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 2366:/usr/include/c++/4.8/bits/basic_string.h **** const basic_string<_CharT, _Traits, _Alloc>& __rhs) 2367:/usr/include/c++/4.8/bits/basic_string.h **** { 2368:/usr/include/c++/4.8/bits/basic_string.h **** basic_string<_CharT, _Traits, _Alloc> __str(__lhs); 2369:/usr/include/c++/4.8/bits/basic_string.h **** __str.append(__rhs); 2370:/usr/include/c++/4.8/bits/basic_string.h **** return __str; 2371:/usr/include/c++/4.8/bits/basic_string.h **** } 2372:/usr/include/c++/4.8/bits/basic_string.h **** 2373:/usr/include/c++/4.8/bits/basic_string.h **** /** 2374:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Concatenate C string and string. 2375:/usr/include/c++/4.8/bits/basic_string.h **** * @param __lhs First string. 2376:/usr/include/c++/4.8/bits/basic_string.h **** * @param __rhs Last string. 2377:/usr/include/c++/4.8/bits/basic_string.h **** * @return New string with value of @a __lhs followed by @a __rhs. 2378:/usr/include/c++/4.8/bits/basic_string.h **** */ 2379:/usr/include/c++/4.8/bits/basic_string.h **** template 2380:/usr/include/c++/4.8/bits/basic_string.h **** basic_string<_CharT,_Traits,_Alloc> 2381:/usr/include/c++/4.8/bits/basic_string.h **** operator+(const _CharT* __lhs, 2382:/usr/include/c++/4.8/bits/basic_string.h **** const basic_string<_CharT,_Traits,_Alloc>& __rhs); 2383:/usr/include/c++/4.8/bits/basic_string.h **** 2384:/usr/include/c++/4.8/bits/basic_string.h **** /** 2385:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Concatenate character and string. 2386:/usr/include/c++/4.8/bits/basic_string.h **** * @param __lhs First string. 2387:/usr/include/c++/4.8/bits/basic_string.h **** * @param __rhs Last string. 2388:/usr/include/c++/4.8/bits/basic_string.h **** * @return New string with @a __lhs followed by @a __rhs. 2389:/usr/include/c++/4.8/bits/basic_string.h **** */ 2390:/usr/include/c++/4.8/bits/basic_string.h **** template 2391:/usr/include/c++/4.8/bits/basic_string.h **** basic_string<_CharT,_Traits,_Alloc> 2392:/usr/include/c++/4.8/bits/basic_string.h **** operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); 2393:/usr/include/c++/4.8/bits/basic_string.h **** 2394:/usr/include/c++/4.8/bits/basic_string.h **** /** 2395:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Concatenate string and C string. 2396:/usr/include/c++/4.8/bits/basic_string.h **** * @param __lhs First string. 2397:/usr/include/c++/4.8/bits/basic_string.h **** * @param __rhs Last string. 2398:/usr/include/c++/4.8/bits/basic_string.h **** * @return New string with @a __lhs followed by @a __rhs. 2399:/usr/include/c++/4.8/bits/basic_string.h **** */ 2400:/usr/include/c++/4.8/bits/basic_string.h **** template 2401:/usr/include/c++/4.8/bits/basic_string.h **** inline basic_string<_CharT, _Traits, _Alloc> 2402:/usr/include/c++/4.8/bits/basic_string.h **** operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 2403:/usr/include/c++/4.8/bits/basic_string.h **** const _CharT* __rhs) 2404:/usr/include/c++/4.8/bits/basic_string.h **** { 2405:/usr/include/c++/4.8/bits/basic_string.h **** basic_string<_CharT, _Traits, _Alloc> __str(__lhs); 2406:/usr/include/c++/4.8/bits/basic_string.h **** __str.append(__rhs); 2407:/usr/include/c++/4.8/bits/basic_string.h **** return __str; 2408:/usr/include/c++/4.8/bits/basic_string.h **** } 2409:/usr/include/c++/4.8/bits/basic_string.h **** 2410:/usr/include/c++/4.8/bits/basic_string.h **** /** 2411:/usr/include/c++/4.8/bits/basic_string.h **** * @brief Concatenate string and character. 2412:/usr/include/c++/4.8/bits/basic_string.h **** * @param __lhs First string. 2413:/usr/include/c++/4.8/bits/basic_string.h **** * @param __rhs Last string. 2414:/usr/include/c++/4.8/bits/basic_string.h **** * @return New string with @a __lhs followed by @a __rhs. 2415:/usr/include/c++/4.8/bits/basic_string.h **** */ 2416:/usr/include/c++/4.8/bits/basic_string.h **** template GAS LISTING /tmp/ccrG9BDx.s page 77 2417:/usr/include/c++/4.8/bits/basic_string.h **** inline basic_string<_CharT, _Traits, _Alloc> 2418:/usr/include/c++/4.8/bits/basic_string.h **** operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs) 2419:/usr/include/c++/4.8/bits/basic_string.h **** { 2420:/usr/include/c++/4.8/bits/basic_string.h **** typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 2421:/usr/include/c++/4.8/bits/basic_string.h **** typedef typename __string_type::size_type __size_type; 2422:/usr/include/c++/4.8/bits/basic_string.h **** __string_type __str(__lhs); 2423:/usr/include/c++/4.8/bits/basic_string.h **** __str.append(__size_type(1), __rhs); 2424:/usr/include/c++/4.8/bits/basic_string.h **** return __str; 2425:/usr/include/c++/4.8/bits/basic_string.h **** } 2426:/usr/include/c++/4.8/bits/basic_string.h **** 2427:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L 2428:/usr/include/c++/4.8/bits/basic_string.h **** template 2429:/usr/include/c++/4.8/bits/basic_string.h **** inline basic_string<_CharT, _Traits, _Alloc> 2430:/usr/include/c++/4.8/bits/basic_string.h **** operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 2431:/usr/include/c++/4.8/bits/basic_string.h **** const basic_string<_CharT, _Traits, _Alloc>& __rhs) 2432:/usr/include/c++/4.8/bits/basic_string.h **** { return std::move(__lhs.append(__rhs)); } 2433:/usr/include/c++/4.8/bits/basic_string.h **** 2434:/usr/include/c++/4.8/bits/basic_string.h **** template 2435:/usr/include/c++/4.8/bits/basic_string.h **** inline basic_string<_CharT, _Traits, _Alloc> 2436:/usr/include/c++/4.8/bits/basic_string.h **** operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 2437:/usr/include/c++/4.8/bits/basic_string.h **** basic_string<_CharT, _Traits, _Alloc>&& __rhs) 2438:/usr/include/c++/4.8/bits/basic_string.h **** { return std::move(__rhs.insert(0, __lhs)); } 2439:/usr/include/c++/4.8/bits/basic_string.h **** 2440:/usr/include/c++/4.8/bits/basic_string.h **** template 2441:/usr/include/c++/4.8/bits/basic_string.h **** inline basic_string<_CharT, _Traits, _Alloc> 2442:/usr/include/c++/4.8/bits/basic_string.h **** operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 2443:/usr/include/c++/4.8/bits/basic_string.h **** basic_string<_CharT, _Traits, _Alloc>&& __rhs) 2444:/usr/include/c++/4.8/bits/basic_string.h **** { 2445:/usr/include/c++/4.8/bits/basic_string.h **** const auto __size = __lhs.size() + __rhs.size(); 2446:/usr/include/c++/4.8/bits/basic_string.h **** const bool __cond = (__size > __lhs.capacity() 2447:/usr/include/c++/4.8/bits/basic_string.h **** && __size <= __rhs.capacity()); 2448:/usr/include/c++/4.8/bits/basic_string.h **** return __cond ? std::move(__rhs.insert(0, __lhs)) 2449:/usr/include/c++/4.8/bits/basic_string.h **** : std::move(__lhs.append(__rhs)); 2450:/usr/include/c++/4.8/bits/basic_string.h **** } 2451:/usr/include/c++/4.8/bits/basic_string.h **** 2452:/usr/include/c++/4.8/bits/basic_string.h **** template 2453:/usr/include/c++/4.8/bits/basic_string.h **** inline basic_string<_CharT, _Traits, _Alloc> 2454:/usr/include/c++/4.8/bits/basic_string.h **** operator+(const _CharT* __lhs, 2455:/usr/include/c++/4.8/bits/basic_string.h **** basic_string<_CharT, _Traits, _Alloc>&& __rhs) 2456:/usr/include/c++/4.8/bits/basic_string.h **** { return std::move(__rhs.insert(0, __lhs)); } 2457:/usr/include/c++/4.8/bits/basic_string.h **** 2458:/usr/include/c++/4.8/bits/basic_string.h **** template 2459:/usr/include/c++/4.8/bits/basic_string.h **** inline basic_string<_CharT, _Traits, _Alloc> 2460:/usr/include/c++/4.8/bits/basic_string.h **** operator+(_CharT __lhs, 2461:/usr/include/c++/4.8/bits/basic_string.h **** basic_string<_CharT, _Traits, _Alloc>&& __rhs) 2462:/usr/include/c++/4.8/bits/basic_string.h **** { return std::move(__rhs.insert(0, 1, __lhs)); } 2463:/usr/include/c++/4.8/bits/basic_string.h **** 2464:/usr/include/c++/4.8/bits/basic_string.h **** template 2465:/usr/include/c++/4.8/bits/basic_string.h **** inline basic_string<_CharT, _Traits, _Alloc> 2466:/usr/include/c++/4.8/bits/basic_string.h **** operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 590 .loc 7 2466 0 591 .cfi_startproc 592 .LVL63: 593 0000 53 pushq %rbx 594 .cfi_def_cfa_offset 16 595 .cfi_offset 3, -16 596 0001 4889FB movq %rdi, %rbx GAS LISTING /tmp/ccrG9BDx.s page 78 597 0004 4889F7 movq %rsi, %rdi 598 .LVL64: 2467:/usr/include/c++/4.8/bits/basic_string.h **** const _CharT* __rhs) 2468:/usr/include/c++/4.8/bits/basic_string.h **** { return std::move(__lhs.append(__rhs)); } 599 .loc 7 2468 0 600 0007 4889D6 movq %rdx, %rsi 601 .LVL65: 602 000a E8000000 call _ZNSs6appendEPKc 602 00 603 .LVL66: 604 000f 4889C7 movq %rax, %rdi 605 0012 E8000000 call _ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_ 605 00 606 .LVL67: 607 0017 4889C6 movq %rax, %rsi 608 001a 4889DF movq %rbx, %rdi 609 001d E8000000 call _ZNSsC1EOSs 609 00 610 .LVL68: 611 0022 4889D8 movq %rbx, %rax 612 0025 5B popq %rbx 613 .cfi_def_cfa_offset 8 614 .LVL69: 615 0026 C3 ret 616 .cfi_endproc 617 .LFE1318: 619 .section .rodata.str1.1 620 .LC1: 621 0004 4D794578 .string "MyExceptionB(" 621 63657074 621 696F6E42 621 2800 622 .LC2: 623 0012 2900 .string ")" 624 .text 625 0185 90 .align 2 626 .globl _ZNK12MyExceptionB9as_stringEv 628 _ZNK12MyExceptionB9as_stringEv: 629 .LFB1251: 29:rethrow.cpp **** return "MyExceptionB(" + _what + ")"; 630 .loc 1 29 0 631 .cfi_startproc 632 .cfi_personality 0x3,__gxx_personality_v0 633 .cfi_lsda 0x3,.LLSDA1251 634 .LVL70: 635 0186 53 pushq %rbx 636 .cfi_def_cfa_offset 16 637 .cfi_offset 3, -16 638 0187 4883EC10 subq $16, %rsp 639 .cfi_def_cfa_offset 32 640 018b 4889FB movq %rdi, %rbx 30:rethrow.cpp **** } 641 .loc 1 30 0 642 018e 488D5608 leaq 8(%rsi), %rdx 643 0192 BE000000 movl $.LC1, %esi 643 00 644 .LVL71: GAS LISTING /tmp/ccrG9BDx.s page 79 645 0197 4889E7 movq %rsp, %rdi 646 .LVL72: 647 .LEHB10: 648 019a E8000000 call _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ 648 00 649 .LEHE10: 650 .LVL73: 651 019f BA000000 movl $.LC2, %edx 651 00 652 01a4 4889E6 movq %rsp, %rsi 653 01a7 4889DF movq %rbx, %rdi 654 .LEHB11: 655 01aa E8000000 call _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_ 655 00 656 .LEHE11: 657 .LVL74: 658 01af EB13 jmp .L46 659 .L44: 660 01b1 4889C3 movq %rax, %rbx 661 .LVL75: 662 01b4 4889E7 movq %rsp, %rdi 663 01b7 E8000000 call _ZNSsD1Ev 663 00 664 .LVL76: 665 01bc 4889DF movq %rbx, %rdi 666 .LEHB12: 667 01bf E8000000 call _Unwind_Resume 667 00 668 .LEHE12: 669 .LVL77: 670 .L46: 30:rethrow.cpp **** } 671 .loc 1 30 0 is_stmt 0 discriminator 2 672 01c4 4889E7 movq %rsp, %rdi 673 01c7 E8000000 call _ZNSsD1Ev 673 00 674 .LVL78: 31:rethrow.cpp **** 675 .loc 1 31 0 is_stmt 1 discriminator 2 676 01cc 4889D8 movq %rbx, %rax 677 01cf 4883C410 addq $16, %rsp 678 .cfi_def_cfa_offset 16 679 01d3 5B popq %rbx 680 .cfi_def_cfa_offset 8 681 .LVL79: 682 01d4 C3 ret 683 .cfi_endproc 684 .LFE1251: 685 .section .gcc_except_table 686 .LLSDA1251: 687 005d FF .byte 0xff 688 005e FF .byte 0xff 689 005f 01 .byte 0x1 690 0060 0C .uleb128 .LLSDACSE1251-.LLSDACSB1251 691 .LLSDACSB1251: 692 0061 14 .uleb128 .LEHB10-.LFB1251 693 0062 05 .uleb128 .LEHE10-.LEHB10 GAS LISTING /tmp/ccrG9BDx.s page 80 694 0063 00 .uleb128 0 695 0064 00 .uleb128 0 696 0065 24 .uleb128 .LEHB11-.LFB1251 697 0066 05 .uleb128 .LEHE11-.LEHB11 698 0067 2B .uleb128 .L44-.LFB1251 699 0068 00 .uleb128 0 700 0069 39 .uleb128 .LEHB12-.LFB1251 701 006a 05 .uleb128 .LEHE12-.LEHB12 702 006b 00 .uleb128 0 703 006c 00 .uleb128 0 704 .LLSDACSE1251: 705 .text 707 .section .rodata.str1.1 708 .LC3: 709 0014 466F6F00 .string "Foo" 710 .LC4: 711 0018 476F7420 .string "Got exception:" 711 65786365 711 7074696F 711 6E3A00 712 .LC5: 713 0027 20726574 .string " rethrowing..." 713 68726F77 713 696E672E 713 2E2E00 714 .text 715 .globl _Z17catch_and_rethrowv 717 _Z17catch_and_rethrowv: 718 .LFB1259: 38:rethrow.cpp **** try { 719 .loc 1 38 0 720 .cfi_startproc 721 .cfi_personality 0x3,__gxx_personality_v0 722 .cfi_lsda 0x3,.LLSDA1259 723 01d5 55 pushq %rbp 724 .cfi_def_cfa_offset 16 725 .cfi_offset 6, -16 726 01d6 53 pushq %rbx 727 .cfi_def_cfa_offset 24 728 .cfi_offset 3, -24 729 01d7 4883EC28 subq $40, %rsp 730 .cfi_def_cfa_offset 64 731 .LBB6: 40:rethrow.cpp **** } catch (MyExceptionB &e) { 732 .loc 1 40 0 733 01db 488D5424 leaq 16(%rsp), %rdx 733 10 734 01e0 BE000000 movl $.LC3, %esi 734 00 735 01e5 4889E7 movq %rsp, %rdi 736 .LEHB13: 737 01e8 E8000000 call _ZNSsC1EPKcRKSaIcE 737 00 738 .LEHE13: 739 .LVL80: 40:rethrow.cpp **** } catch (MyExceptionB &e) { 740 .loc 1 40 0 is_stmt 0 discriminator 1 GAS LISTING /tmp/ccrG9BDx.s page 81 741 01ed 4889E7 movq %rsp, %rdi 742 .LEHB14: 743 01f0 E8000000 call _Z18throw_MyExceptionBSs 743 00 744 .LEHE14: 745 .LVL81: 746 .L58: 747 01f5 4889C5 movq %rax, %rbp 748 01f8 4889D3 movq %rdx, %rbx 40:rethrow.cpp **** } catch (MyExceptionB &e) { 749 .loc 1 40 0 750 01fb 4889E7 movq %rsp, %rdi 751 01fe E8000000 call _ZNSsD1Ev 751 00 752 .LVL82: 753 0203 4889E8 movq %rbp, %rax 754 0206 4889DA movq %rbx, %rdx 755 0209 EB00 jmp .L50 756 .L57: 757 .L50: 758 020b 4883FA01 cmpq $1, %rdx 759 020f 742C je .L52 760 0211 EB25 jmp .L61 761 .LVL83: 762 .L60: 763 0213 4889C5 movq %rax, %rbp 764 0216 4889D3 movq %rdx, %rbx 765 .LBB7: 42:rethrow.cpp **** throw; 766 .loc 1 42 0 is_stmt 1 767 0219 488D7C24 leaq 16(%rsp), %rdi 767 10 768 021e E8000000 call _ZNSsD1Ev 768 00 769 .LVL84: 770 0223 EB06 jmp .L54 771 .L59: 772 0225 4889C5 movq %rax, %rbp 773 0228 4889D3 movq %rdx, %rbx 774 .L54: 41:rethrow.cpp **** cout << "Got exception:" << e.as_string() << " rethrowing..." << endl; 775 .loc 1 41 0 776 022b E8000000 call __cxa_end_catch 776 00 777 .LVL85: 778 0230 4889EF movq %rbp, %rdi 779 0233 4889DA movq %rbx, %rdx 780 0236 EB5F jmp .L55 781 .L61: 782 0238 4889C7 movq %rax, %rdi 783 023b EB5A jmp .L55 784 .L52: 785 023d 4889C7 movq %rax, %rdi 786 0240 E8000000 call __cxa_begin_catch 786 00 787 .LVL86: 42:rethrow.cpp **** throw; GAS LISTING /tmp/ccrG9BDx.s page 82 788 .loc 1 42 0 789 0245 4889C6 movq %rax, %rsi 790 0248 488D7C24 leaq 16(%rsp), %rdi 790 10 791 .LEHB15: 792 024d E8000000 call _ZNK12MyExceptionB9as_stringEv 792 00 793 .LEHE15: 794 .LVL87: 42:rethrow.cpp **** throw; 795 .loc 1 42 0 is_stmt 0 discriminator 1 796 0252 BE000000 movl $.LC4, %esi 796 00 797 0257 BF000000 movl $_ZSt4cout, %edi 797 00 798 .LEHB16: 799 025c E8000000 call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 799 00 800 .LVL88: 801 0261 488D7424 leaq 16(%rsp), %rsi 801 10 802 0266 4889C7 movq %rax, %rdi 803 0269 E8000000 call _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E 803 00 804 .LVL89: 805 026e BE000000 movl $.LC5, %esi 805 00 806 0273 4889C7 movq %rax, %rdi 807 0276 E8000000 call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 807 00 808 .LVL90: 42:rethrow.cpp **** throw; 809 .loc 1 42 0 discriminator 2 810 027b BE000000 movl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi 810 00 811 0280 4889C7 movq %rax, %rdi 812 0283 E8000000 call _ZNSolsEPFRSoS_E 812 00 813 .LEHE16: 814 .LVL91: 42:rethrow.cpp **** throw; 815 .loc 1 42 0 discriminator 1 816 0288 488D7C24 leaq 16(%rsp), %rdi 816 10 817 028d E8000000 call _ZNSsD1Ev 817 00 818 .LVL92: 819 .LEHB17: 43:rethrow.cpp **** } 820 .loc 1 43 0 is_stmt 1 discriminator 1 821 0292 E8000000 call __cxa_rethrow 821 00 822 .LEHE17: 823 .LVL93: 824 .L55: 825 0297 4883FAFF cmpq $-1, %rdx 826 029b 7405 je .L56 GAS LISTING /tmp/ccrG9BDx.s page 83 827 .LEHB18: 828 029d E8000000 call _Unwind_Resume 828 00 829 .LVL94: 830 .L56: 831 .LBE7: 832 .LBE6: 38:rethrow.cpp **** try { 833 .loc 1 38 0 834 02a2 E8000000 call __cxa_call_unexpected 834 00 835 .LEHE18: 836 .LVL95: 837 .cfi_endproc 838 .LFE1259: 839 .section .gcc_except_table 840 006d 000000 .align 4 841 .LLSDA1259: 842 0070 FF .byte 0xff 843 0071 03 .byte 0x3 844 0072 29 .uleb128 .LLSDATT1259-.LLSDATTD1259 845 .LLSDATTD1259: 846 0073 01 .byte 0x1 847 0074 1B .uleb128 .LLSDACSE1259-.LLSDACSB1259 848 .LLSDACSB1259: 849 0075 13 .uleb128 .LEHB13-.LFB1259 850 0076 05 .uleb128 .LEHE13-.LEHB13 851 0077 36 .uleb128 .L57-.LFB1259 852 0078 03 .uleb128 0x3 853 0079 1B .uleb128 .LEHB14-.LFB1259 854 007a 05 .uleb128 .LEHE14-.LEHB14 855 007b 20 .uleb128 .L58-.LFB1259 856 007c 05 .uleb128 0x5 857 007d 78 .uleb128 .LEHB15-.LFB1259 858 007e 05 .uleb128 .LEHE15-.LEHB15 859 007f 50 .uleb128 .L59-.LFB1259 860 0080 07 .uleb128 0x7 861 0081 8701 .uleb128 .LEHB16-.LFB1259 862 0083 2C .uleb128 .LEHE16-.LEHB16 863 0084 3E .uleb128 .L60-.LFB1259 864 0085 07 .uleb128 0x7 865 0086 BD01 .uleb128 .LEHB17-.LFB1259 866 0088 05 .uleb128 .LEHE17-.LEHB17 867 0089 50 .uleb128 .L59-.LFB1259 868 008a 07 .uleb128 0x7 869 008b C801 .uleb128 .LEHB18-.LFB1259 870 008d 0A .uleb128 .LEHE18-.LEHB18 871 008e 00 .uleb128 0 872 008f 00 .uleb128 0 873 .LLSDACSE1259: 874 0090 7F .byte 0x7f 875 0091 00 .byte 0 876 0092 01 .byte 0x1 877 0093 7D .byte 0x7d 878 0094 00 .byte 0 879 0095 7D .byte 0x7d 880 0096 00 .byte 0 GAS LISTING /tmp/ccrG9BDx.s page 84 881 0097 79 .byte 0x79 882 .align 4 883 0098 00000000 .long _ZTI12MyExceptionB 884 .LLSDATT1259: 885 009c 01 .byte 0x1 886 009d 00 .byte 0 887 .text 889 .section .rodata.str1.1 890 .LC6: 891 0036 42617A00 .string "Baz" 892 .LC7: 893 003a 20746872 .string " throwing another..." 893 6F77696E 893 6720616E 893 6F746865 893 722E2E2E 894 .text 895 .globl _Z23catch_and_throw_anotherv 897 _Z23catch_and_throw_anotherv: 898 .LFB1260: 47:rethrow.cpp **** try { 899 .loc 1 47 0 900 .cfi_startproc 901 .cfi_personality 0x3,__gxx_personality_v0 902 .cfi_lsda 0x3,.LLSDA1260 903 02a7 4154 pushq %r12 904 .cfi_def_cfa_offset 16 905 .cfi_offset 12, -16 906 02a9 55 pushq %rbp 907 .cfi_def_cfa_offset 24 908 .cfi_offset 6, -24 909 02aa 53 pushq %rbx 910 .cfi_def_cfa_offset 32 911 .cfi_offset 3, -32 912 02ab 4883EC30 subq $48, %rsp 913 .cfi_def_cfa_offset 80 914 .LBB8: 49:rethrow.cpp **** } catch (MyExceptionB &e) { 915 .loc 1 49 0 916 02af 488D5424 leaq 32(%rsp), %rdx 916 20 917 02b4 BE000000 movl $.LC6, %esi 917 00 918 02b9 4889E7 movq %rsp, %rdi 919 .LEHB19: 920 02bc E8000000 call _ZNSsC1EPKcRKSaIcE 920 00 921 .LEHE19: 922 .LVL96: 49:rethrow.cpp **** } catch (MyExceptionB &e) { 923 .loc 1 49 0 is_stmt 0 discriminator 1 924 02c1 4889E7 movq %rsp, %rdi 925 .LEHB20: 926 02c4 E8000000 call _Z18throw_MyExceptionBSs 926 00 927 .LEHE20: 928 .LVL97: GAS LISTING /tmp/ccrG9BDx.s page 85 929 .L74: 930 02c9 4889C5 movq %rax, %rbp 931 02cc 4889D3 movq %rdx, %rbx 49:rethrow.cpp **** } catch (MyExceptionB &e) { 932 .loc 1 49 0 933 02cf 4889E7 movq %rsp, %rdi 934 02d2 E8000000 call _ZNSsD1Ev 934 00 935 .LVL98: 936 02d7 4889E8 movq %rbp, %rax 937 02da 4889DA movq %rbx, %rdx 938 02dd EB00 jmp .L65 939 .L73: 940 .L65: 941 02df 4883FA01 cmpq $1, %rdx 942 02e3 7445 je .L67 943 02e5 EB3B jmp .L78 944 .LVL99: 945 .L76: 946 02e7 4889C5 movq %rax, %rbp 947 .LVL100: 948 02ea 4889D3 movq %rdx, %rbx 949 .LBB9: 51:rethrow.cpp **** throw MyExceptionB(e.as_string()); 950 .loc 1 51 0 is_stmt 1 951 02ed 488D7C24 leaq 16(%rsp), %rdi 951 10 952 02f2 E8000000 call _ZNSsD1Ev 952 00 953 .LVL101: 954 02f7 EB19 jmp .L69 955 .LVL102: 956 .L77: 957 02f9 4889C5 movq %rax, %rbp 958 .LVL103: 959 02fc 4989D4 movq %rdx, %r12 52:rethrow.cpp **** } 960 .loc 1 52 0 961 02ff 4889DF movq %rbx, %rdi 962 0302 E8000000 call __cxa_free_exception 962 00 963 .LVL104: 964 0307 4C89E3 movq %r12, %rbx 965 030a EB06 jmp .L69 966 .LVL105: 967 .L75: 968 030c 4889C5 movq %rax, %rbp 969 .LVL106: 970 030f 4889D3 movq %rdx, %rbx 971 .L69: 50:rethrow.cpp **** cout << "Got exception:" << e.as_string() << " throwing another..." << endl; 972 .loc 1 50 0 973 0312 E8000000 call __cxa_end_catch 973 00 974 .LVL107: 975 0317 4889EF movq %rbp, %rdi 976 031a 4889DA movq %rbx, %rdx GAS LISTING /tmp/ccrG9BDx.s page 86 977 031d E9A30000 jmp .L71 977 00 978 .L78: 979 0322 4889C7 movq %rax, %rdi 980 0325 E99B0000 jmp .L71 980 00 981 .L67: 982 032a 4889C7 movq %rax, %rdi 983 032d E8000000 call __cxa_begin_catch 983 00 984 .LVL108: 985 0332 4889C5 movq %rax, %rbp 986 .LVL109: 51:rethrow.cpp **** throw MyExceptionB(e.as_string()); 987 .loc 1 51 0 988 0335 4889C6 movq %rax, %rsi 989 0338 488D7C24 leaq 16(%rsp), %rdi 989 10 990 .LEHB21: 991 033d E8000000 call _ZNK12MyExceptionB9as_stringEv 991 00 992 .LEHE21: 993 .LVL110: 51:rethrow.cpp **** throw MyExceptionB(e.as_string()); 994 .loc 1 51 0 is_stmt 0 discriminator 1 995 0342 BE000000 movl $.LC4, %esi 995 00 996 0347 BF000000 movl $_ZSt4cout, %edi 996 00 997 .LEHB22: 998 034c E8000000 call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 998 00 999 .LVL111: 1000 0351 488D7424 leaq 16(%rsp), %rsi 1000 10 1001 0356 4889C7 movq %rax, %rdi 1002 0359 E8000000 call _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E 1002 00 1003 .LVL112: 1004 035e BE000000 movl $.LC7, %esi 1004 00 1005 0363 4889C7 movq %rax, %rdi 1006 0366 E8000000 call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 1006 00 1007 .LVL113: 51:rethrow.cpp **** throw MyExceptionB(e.as_string()); 1008 .loc 1 51 0 discriminator 2 1009 036b BE000000 movl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi 1009 00 1010 0370 4889C7 movq %rax, %rdi 1011 0373 E8000000 call _ZNSolsEPFRSoS_E 1011 00 1012 .LEHE22: 1013 .LVL114: 51:rethrow.cpp **** throw MyExceptionB(e.as_string()); 1014 .loc 1 51 0 discriminator 1 1015 0378 488D7C24 leaq 16(%rsp), %rdi GAS LISTING /tmp/ccrG9BDx.s page 87 1015 10 1016 037d E8000000 call _ZNSsD1Ev 1016 00 1017 .LVL115: 52:rethrow.cpp **** } 1018 .loc 1 52 0 is_stmt 1 discriminator 1 1019 0382 BF100000 movl $16, %edi 1019 00 1020 0387 E8000000 call __cxa_allocate_exception 1020 00 1021 .LVL116: 1022 038c 4889C3 movq %rax, %rbx 1023 038f 4889EE movq %rbp, %rsi 1024 0392 488D7C24 leaq 32(%rsp), %rdi 1024 20 1025 .LEHB23: 1026 0397 E8000000 call _ZNK12MyExceptionB9as_stringEv 1026 00 1027 .LEHE23: 1028 .LVL117: 1029 039c 488D7424 leaq 32(%rsp), %rsi 1029 20 1030 03a1 4889DF movq %rbx, %rdi 1031 03a4 E8000000 call _ZN12MyExceptionBC1ESs 1031 00 1032 .LVL118: 1033 03a9 488D7C24 leaq 32(%rsp), %rdi 1033 20 1034 03ae E8000000 call _ZNSsD1Ev 1034 00 1035 .LVL119: 1036 03b3 BA000000 movl $_ZN12MyExceptionBD1Ev, %edx 1036 00 1037 03b8 BE000000 movl $_ZTI12MyExceptionB, %esi 1037 00 1038 03bd 4889DF movq %rbx, %rdi 1039 .LEHB24: 1040 03c0 E8000000 call __cxa_throw 1040 00 1041 .LEHE24: 1042 .LVL120: 1043 .L71: 1044 03c5 4883FAFF cmpq $-1, %rdx 1045 03c9 7405 je .L72 1046 .LEHB25: 1047 03cb E8000000 call _Unwind_Resume 1047 00 1048 .LVL121: 1049 .L72: 1050 .LBE9: 1051 .LBE8: 47:rethrow.cpp **** try { 1052 .loc 1 47 0 1053 03d0 E8000000 call __cxa_call_unexpected 1053 00 1054 .LEHE25: 1055 .LVL122: GAS LISTING /tmp/ccrG9BDx.s page 88 1056 .cfi_endproc 1057 .LFE1260: 1058 .section .gcc_except_table 1059 009e 0000 .align 4 1060 .LLSDA1260: 1061 00a0 FF .byte 0xff 1062 00a1 03 .byte 0x3 1063 00a2 31 .uleb128 .LLSDATT1260-.LLSDATTD1260 1064 .LLSDATTD1260: 1065 00a3 01 .byte 0x1 1066 00a4 21 .uleb128 .LLSDACSE1260-.LLSDACSB1260 1067 .LLSDACSB1260: 1068 00a5 15 .uleb128 .LEHB19-.LFB1260 1069 00a6 05 .uleb128 .LEHE19-.LEHB19 1070 00a7 38 .uleb128 .L73-.LFB1260 1071 00a8 03 .uleb128 0x3 1072 00a9 1D .uleb128 .LEHB20-.LFB1260 1073 00aa 05 .uleb128 .LEHE20-.LEHB20 1074 00ab 22 .uleb128 .L74-.LFB1260 1075 00ac 05 .uleb128 0x5 1076 00ad 9601 .uleb128 .LEHB21-.LFB1260 1077 00af 05 .uleb128 .LEHE21-.LEHB21 1078 00b0 65 .uleb128 .L75-.LFB1260 1079 00b1 07 .uleb128 0x7 1080 00b2 A501 .uleb128 .LEHB22-.LFB1260 1081 00b4 2C .uleb128 .LEHE22-.LEHB22 1082 00b5 40 .uleb128 .L76-.LFB1260 1083 00b6 07 .uleb128 0x7 1084 00b7 F001 .uleb128 .LEHB23-.LFB1260 1085 00b9 05 .uleb128 .LEHE23-.LEHB23 1086 00ba 52 .uleb128 .L77-.LFB1260 1087 00bb 07 .uleb128 0x7 1088 00bc 9902 .uleb128 .LEHB24-.LFB1260 1089 00be 05 .uleb128 .LEHE24-.LEHB24 1090 00bf 65 .uleb128 .L75-.LFB1260 1091 00c0 07 .uleb128 0x7 1092 00c1 A402 .uleb128 .LEHB25-.LFB1260 1093 00c3 0A .uleb128 .LEHE25-.LEHB25 1094 00c4 00 .uleb128 0 1095 00c5 00 .uleb128 0 1096 .LLSDACSE1260: 1097 00c6 7F .byte 0x7f 1098 00c7 00 .byte 0 1099 00c8 01 .byte 0x1 1100 00c9 7D .byte 0x7d 1101 00ca 00 .byte 0 1102 00cb 7D .byte 0x7d 1103 00cc 00 .byte 0 1104 00cd 79 .byte 0x79 1105 00ce 0000 .align 4 1106 00d0 00000000 .long _ZTI12MyExceptionB 1107 .LLSDATT1260: 1108 00d4 01 .byte 0x1 1109 00d5 00 .byte 0 1110 .text 1112 .section .rodata.str1.1 1113 .LC8: GAS LISTING /tmp/ccrG9BDx.s page 89 1114 004f 4D61696E .string "Main got exception: " 1114 20676F74 1114 20657863 1114 65707469 1114 6F6E3A20 1115 .text 1116 .globl _Z9doRethrowv 1118 _Z9doRethrowv: 1119 .LFB1262: 60:rethrow.cpp **** try { 1120 .loc 1 60 0 1121 .cfi_startproc 1122 .cfi_personality 0x3,__gxx_personality_v0 1123 .cfi_lsda 0x3,.LLSDA1262 1124 03d5 53 pushq %rbx 1125 .cfi_def_cfa_offset 16 1126 .cfi_offset 3, -16 1127 03d6 4883EC10 subq $16, %rsp 1128 .cfi_def_cfa_offset 32 1129 .LEHB26: 1130 .LBB10: 62:rethrow.cpp **** } catch (MyExceptionB &e) { 1131 .loc 1 62 0 1132 03da E8000000 call _Z17catch_and_rethrowv 1132 00 1133 .LEHE26: 1134 .LVL123: 1135 .L93: 1136 03df 4889C3 movq %rax, %rbx 1137 .LBB11: 64:rethrow.cpp **** } 1138 .loc 1 64 0 1139 03e2 4889E7 movq %rsp, %rdi 1140 03e5 E8000000 call _ZNSsD1Ev 1140 00 1141 .LVL124: 1142 03ea EB03 jmp .L82 1143 .L92: 1144 03ec 4889C3 movq %rax, %rbx 1145 .L82: 63:rethrow.cpp **** cout << "Main got exception: " << e.as_string() << endl; 1146 .loc 1 63 0 1147 03ef E8000000 call __cxa_end_catch 1147 00 1148 .LVL125: 1149 03f4 4889DF movq %rbx, %rdi 1150 .LEHB27: 1151 03f7 E8000000 call _Unwind_Resume 1151 00 1152 .LVL126: 1153 .L91: 1154 03fc 4889C7 movq %rax, %rdi 1155 03ff 4883FA01 cmpq $1, %rdx 1156 0403 7405 je .L85 1157 0405 E8000000 call _Unwind_Resume 1157 00 1158 .LEHE27: GAS LISTING /tmp/ccrG9BDx.s page 90 1159 .LVL127: 1160 .L85: 1161 040a E8000000 call __cxa_begin_catch 1161 00 1162 .LVL128: 64:rethrow.cpp **** } 1163 .loc 1 64 0 1164 040f 4889C6 movq %rax, %rsi 1165 0412 4889E7 movq %rsp, %rdi 1166 .LEHB28: 1167 0415 E8000000 call _ZNK12MyExceptionB9as_stringEv 1167 00 1168 .LEHE28: 1169 .LVL129: 64:rethrow.cpp **** } 1170 .loc 1 64 0 is_stmt 0 discriminator 1 1171 041a BE000000 movl $.LC8, %esi 1171 00 1172 041f BF000000 movl $_ZSt4cout, %edi 1172 00 1173 .LEHB29: 1174 0424 E8000000 call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 1174 00 1175 .LVL130: 1176 0429 4889E6 movq %rsp, %rsi 1177 042c 4889C7 movq %rax, %rdi 1178 042f E8000000 call _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E 1178 00 1179 .LVL131: 1180 0434 BE000000 movl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi 1180 00 1181 0439 4889C7 movq %rax, %rdi 1182 043c E8000000 call _ZNSolsEPFRSoS_E 1182 00 1183 .LEHE29: 1184 .LVL132: 1185 0441 4889E7 movq %rsp, %rdi 1186 0444 E8000000 call _ZNSsD1Ev 1186 00 1187 .LVL133: 63:rethrow.cpp **** cout << "Main got exception: " << e.as_string() << endl; 1188 .loc 1 63 0 is_stmt 1 discriminator 1 1189 0449 E8000000 call __cxa_end_catch 1189 00 1190 .LVL134: 1191 .LEHB30: 1192 .LBE11: 68:rethrow.cpp **** } catch (MyExceptionB &e) { 1193 .loc 1 68 0 discriminator 1 1194 044e E8000000 call _Z23catch_and_throw_anotherv 1194 00 1195 .LEHE30: 1196 .LVL135: 1197 .L96: 1198 0453 4889C3 movq %rax, %rbx 1199 .LBB12: 70:rethrow.cpp **** } GAS LISTING /tmp/ccrG9BDx.s page 91 1200 .loc 1 70 0 1201 0456 4889E7 movq %rsp, %rdi 1202 0459 E8000000 call _ZNSsD1Ev 1202 00 1203 .LVL136: 1204 045e EB03 jmp .L87 1205 .L95: 1206 0460 4889C3 movq %rax, %rbx 1207 .L87: 69:rethrow.cpp **** cout << "Main got exception: " << e.as_string() << endl; 1208 .loc 1 69 0 1209 0463 E8000000 call __cxa_end_catch 1209 00 1210 .LVL137: 1211 0468 4889DF movq %rbx, %rdi 1212 .LEHB31: 1213 046b E8000000 call _Unwind_Resume 1213 00 1214 .LVL138: 1215 .L94: 1216 0470 4889C7 movq %rax, %rdi 1217 0473 4883FA01 cmpq $1, %rdx 1218 0477 7405 je .L90 1219 0479 E8000000 call _Unwind_Resume 1219 00 1220 .LEHE31: 1221 .LVL139: 1222 .L90: 1223 047e E8000000 call __cxa_begin_catch 1223 00 1224 .LVL140: 70:rethrow.cpp **** } 1225 .loc 1 70 0 1226 0483 4889C6 movq %rax, %rsi 1227 0486 4889E7 movq %rsp, %rdi 1228 .LEHB32: 1229 0489 E8000000 call _ZNK12MyExceptionB9as_stringEv 1229 00 1230 .LEHE32: 1231 .LVL141: 70:rethrow.cpp **** } 1232 .loc 1 70 0 is_stmt 0 discriminator 1 1233 048e BE000000 movl $.LC8, %esi 1233 00 1234 0493 BF000000 movl $_ZSt4cout, %edi 1234 00 1235 .LEHB33: 1236 0498 E8000000 call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 1236 00 1237 .LVL142: 1238 049d 4889E6 movq %rsp, %rsi 1239 04a0 4889C7 movq %rax, %rdi 1240 04a3 E8000000 call _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E 1240 00 1241 .LVL143: 1242 04a8 BE000000 movl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi 1242 00 GAS LISTING /tmp/ccrG9BDx.s page 92 1243 04ad 4889C7 movq %rax, %rdi 1244 04b0 E8000000 call _ZNSolsEPFRSoS_E 1244 00 1245 .LEHE33: 1246 .LVL144: 1247 04b5 4889E7 movq %rsp, %rdi 1248 04b8 E8000000 call _ZNSsD1Ev 1248 00 1249 .LVL145: 69:rethrow.cpp **** cout << "Main got exception: " << e.as_string() << endl; 1250 .loc 1 69 0 is_stmt 1 discriminator 1 1251 04bd E8000000 call __cxa_end_catch 1251 00 1252 .LVL146: 1253 .LBE12: 74:rethrow.cpp **** } catch (MyExceptionB &e) { 1254 .loc 1 74 0 discriminator 1 1255 04c2 E8000000 call _Z12doesnt_throwv 1255 00 1256 .LVL147: 1257 .LBE10: 1258 .cfi_endproc 1259 .LFE1262: 1260 .section .gcc_except_table 1261 00d6 0000 .align 4 1262 .LLSDA1262: 1263 00d8 FF .byte 0xff 1264 00d9 03 .byte 0x3 1265 00da 2D .uleb128 .LLSDATT1262-.LLSDATTD1262 1266 .LLSDATTD1262: 1267 00db 01 .byte 0x1 1268 00dc 25 .uleb128 .LLSDACSE1262-.LLSDACSB1262 1269 .LLSDACSB1262: 1270 00dd 05 .uleb128 .LEHB26-.LFB1262 1271 00de 05 .uleb128 .LEHE26-.LEHB26 1272 00df 27 .uleb128 .L91-.LFB1262 1273 00e0 01 .uleb128 0x1 1274 00e1 22 .uleb128 .LEHB27-.LFB1262 1275 00e2 13 .uleb128 .LEHE27-.LEHB27 1276 00e3 00 .uleb128 0 1277 00e4 00 .uleb128 0 1278 00e5 40 .uleb128 .LEHB28-.LFB1262 1279 00e6 05 .uleb128 .LEHE28-.LEHB28 1280 00e7 17 .uleb128 .L92-.LFB1262 1281 00e8 00 .uleb128 0 1282 00e9 4F .uleb128 .LEHB29-.LFB1262 1283 00ea 1D .uleb128 .LEHE29-.LEHB29 1284 00eb 0A .uleb128 .L93-.LFB1262 1285 00ec 00 .uleb128 0 1286 00ed 79 .uleb128 .LEHB30-.LFB1262 1287 00ee 05 .uleb128 .LEHE30-.LEHB30 1288 00ef 9B01 .uleb128 .L94-.LFB1262 1289 00f1 01 .uleb128 0x1 1290 00f2 9601 .uleb128 .LEHB31-.LFB1262 1291 00f4 13 .uleb128 .LEHE31-.LEHB31 1292 00f5 00 .uleb128 0 1293 00f6 00 .uleb128 0 GAS LISTING /tmp/ccrG9BDx.s page 93 1294 00f7 B401 .uleb128 .LEHB32-.LFB1262 1295 00f9 05 .uleb128 .LEHE32-.LEHB32 1296 00fa 8B01 .uleb128 .L95-.LFB1262 1297 00fc 00 .uleb128 0 1298 00fd C301 .uleb128 .LEHB33-.LFB1262 1299 00ff 1D .uleb128 .LEHE33-.LEHB33 1300 0100 7E .uleb128 .L96-.LFB1262 1301 0101 00 .uleb128 0 1302 .LLSDACSE1262: 1303 0102 01 .byte 0x1 1304 0103 00 .byte 0 1305 .align 4 1306 0104 00000000 .long _ZTI12MyExceptionB 1307 .LLSDATT1262: 1308 .text 1311 _GLOBAL__sub_I__ZN12MyExceptionBC2ESs: 1312 .LFB1427: 1313 .loc 1 78 0 1314 .cfi_startproc 1315 04c7 4883EC08 subq $8, %rsp 1316 .cfi_def_cfa_offset 16 1317 .loc 1 78 0 1318 04cb BEFFFF00 movl $65535, %esi 1318 00 1319 04d0 BF010000 movl $1, %edi 1319 00 1320 04d5 E869FBFF call _Z41__static_initialization_and_destruction_0ii 1320 FF 1321 .LVL148: 1322 04da 4883C408 addq $8, %rsp 1323 .cfi_def_cfa_offset 8 1324 04de C3 ret 1325 .cfi_endproc 1326 .LFE1427: 1328 .section .init_array,"aw" 1329 .align 8 1330 0000 00000000 .quad _GLOBAL__sub_I__ZN12MyExceptionBC2ESs 1330 00000000 1331 .weak _ZTS12MyExceptionB 1332 .section .rodata._ZTS12MyExceptionB,"aG",@progbits,_ZTS12MyExceptionB,comdat 1335 _ZTS12MyExceptionB: 1336 0000 31324D79 .string "12MyExceptionB" 1336 45786365 1336 7074696F 1336 6E4200 1337 .weak _ZTI12MyExceptionB 1338 .section .rodata._ZTI12MyExceptionB,"aG",@progbits,_ZTI12MyExceptionB,comdat 1339 .align 16 1342 _ZTI12MyExceptionB: 1343 0000 00000000 .quad _ZTVN10__cxxabiv120__si_class_type_infoE+16 1343 00000000 1344 0008 00000000 .quad _ZTS12MyExceptionB 1344 00000000 1345 0010 00000000 .quad _ZTISt9exception 1345 00000000 1346 .weak _ZTV12MyExceptionB 1347 .section .rodata._ZTV12MyExceptionB,"aG",@progbits,_ZTV12MyExceptionB,comdat GAS LISTING /tmp/ccrG9BDx.s page 94 1348 .align 32 1351 _ZTV12MyExceptionB: 1352 0000 00000000 .quad 0 1352 00000000 1353 0008 00000000 .quad _ZTI12MyExceptionB 1353 00000000 1354 0010 00000000 .quad _ZN12MyExceptionBD1Ev 1354 00000000 1355 0018 00000000 .quad _ZN12MyExceptionBD0Ev 1355 00000000 1356 0020 00000000 .quad _ZNK12MyExceptionB4whatEv 1356 00000000 1357 .local _ZStL8__ioinit 1358 .comm _ZStL8__ioinit,1,1 1359 .text 1360 .Letext0: 1361 .file 8 "/usr/include/c++/4.8/bits/exception_ptr.h" 1362 .file 9 "/usr/include/c++/4.8/cwchar" 1363 .file 10 "/usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h" 1364 .file 11 "/usr/include/c++/4.8/cstdint" 1365 .file 12 "/usr/include/c++/4.8/bits/allocator.h" 1366 .file 13 "/usr/include/c++/4.8/clocale" 1367 .file 14 "/usr/include/c++/4.8/cstdlib" 1368 .file 15 "/usr/include/c++/4.8/cstdio" 1369 .file 16 "/usr/include/c++/4.8/initializer_list" 1370 .file 17 "/usr/include/c++/4.8/bits/stringfwd.h" 1371 .file 18 "/usr/include/c++/4.8/bits/ios_base.h" 1372 .file 19 "/usr/include/c++/4.8/cwctype" 1373 .file 20 "/usr/include/c++/4.8/ostream" 1374 .file 21 "/usr/include/c++/4.8/type_traits" 1375 .file 22 "/usr/include/c++/4.8/bits/stl_iterator_base_types.h" 1376 .file 23 "/usr/include/c++/4.8/iosfwd" 1377 .file 24 "/usr/include/c++/4.8/ext/new_allocator.h" 1378 .file 25 "/usr/include/c++/4.8/ext/numeric_traits.h" 1379 .file 26 "/usr/include/c++/4.8/bits/stl_iterator.h" 1380 .file 27 "/usr/include/c++/4.8/debug/debug.h" 1381 .file 28 "/usr/include/stdio.h" 1382 .file 29 "/usr/include/libio.h" 1383 .file 30 "" 1384 .file 31 "/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h" 1385 .file 32 "/usr/include/wchar.h" 1386 .file 33 "/usr/include/x86_64-linux-gnu/bits/wchar2.h" 1387 .file 34 "/usr/include/time.h" 1388 .file 35 "/usr/include/stdint.h" 1389 .file 36 "/usr/include/locale.h" 1390 .file 37 "/usr/include/x86_64-linux-gnu/bits/types.h" 1391 .file 38 "/usr/include/x86_64-linux-gnu/c++/4.8/bits/atomic_word.h" 1392 .file 39 "/usr/include/stdlib.h" 1393 .file 40 "/usr/include/x86_64-linux-gnu/bits/stdlib.h" 1394 .file 41 "/usr/include/_G_config.h" 1395 .file 42 "/usr/include/x86_64-linux-gnu/bits/stdio2.h" 1396 .file 43 "/usr/include/wctype.h" 1397 .file 44 "/usr/include/c++/4.8/new" 1398 .file 45 "/usr/include/c++/4.8/bits/stl_pair.h" GAS LISTING /tmp/ccrG9BDx.s page 95 DEFINED SYMBOLS *ABS*:0000000000000000 rethrow.cpp /tmp/ccrG9BDx.s:7 .text:0000000000000000 _ZNK12MyExceptionB4whatEv /tmp/ccrG9BDx.s:30 .text:0000000000000012 _ZN12MyExceptionBD2Ev /tmp/ccrG9BDx.s:1351 .rodata._ZTV12MyExceptionB:0000000000000000 _ZTV12MyExceptionB /tmp/ccrG9BDx.s:30 .text:0000000000000012 _ZN12MyExceptionBD1Ev /tmp/ccrG9BDx.s:63 .text:0000000000000030 _ZN12MyExceptionBD0Ev /tmp/ccrG9BDx.s:86 .text:0000000000000043 _Z41__static_initialization_and_destruction_0ii .bss:0000000000000000 _ZStL8__ioinit /tmp/ccrG9BDx.s:122 .text._ZNSt9exceptionC2Ev:0000000000000000 _ZNSt9exceptionC2Ev /tmp/ccrG9BDx.s:122 .text._ZNSt9exceptionC2Ev:0000000000000000 _ZNSt9exceptionC1Ev /tmp/ccrG9BDx.s:141 .text._ZNSt11char_traitsIcE6lengthEPKc:0000000000000000 _ZNSt11char_traitsIcE6lengthEPKc /tmp/ccrG9BDx.s:162 .text:0000000000000078 _ZN12MyExceptionBC2ESs /tmp/ccrG9BDx.s:162 .text:0000000000000078 _ZN12MyExceptionBC1ESs /tmp/ccrG9BDx.s:258 .text:00000000000000c5 _Z18throw_MyExceptionBSs /tmp/ccrG9BDx.s:1342 .rodata._ZTI12MyExceptionB:0000000000000000 _ZTI12MyExceptionB /tmp/ccrG9BDx.s:372 .text:0000000000000136 _Z12doesnt_throwv /tmp/ccrG9BDx.s:460 .text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_:0000000000000000 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ /tmp/ccrG9BDx.s:572 .text._ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_:0000000000000000 _ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_ /tmp/ccrG9BDx.s:587 .text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_:0000000000000000 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_ /tmp/ccrG9BDx.s:628 .text:0000000000000186 _ZNK12MyExceptionB9as_stringEv /tmp/ccrG9BDx.s:717 .text:00000000000001d5 _Z17catch_and_rethrowv /tmp/ccrG9BDx.s:897 .text:00000000000002a7 _Z23catch_and_throw_anotherv /tmp/ccrG9BDx.s:1118 .text:00000000000003d5 _Z9doRethrowv /tmp/ccrG9BDx.s:1311 .text:00000000000004c7 _GLOBAL__sub_I__ZN12MyExceptionBC2ESs /tmp/ccrG9BDx.s:1335 .rodata._ZTS12MyExceptionB:0000000000000000 _ZTS12MyExceptionB .group:0000000000000000 _ZNSt9exceptionC5Ev UNDEFINED SYMBOLS _ZNKSs5c_strEv _ZNSsD1Ev _ZNSt9exceptionD2Ev _ZdlPv _ZNSt8ios_base4InitC1Ev __dso_handle _ZNSt8ios_base4InitD1Ev __cxa_atexit _ZTVSt9exception __gxx_personality_v0 _ZNSsC1ERKSs _Unwind_Resume __cxa_call_unexpected __cxa_allocate_exception __cxa_throw __cxa_free_exception _ZNSsC1EPKcRKSaIcE _ZNSsC1Ev _ZNKSs4sizeEv _ZNSs7reserveEm _ZNSs6appendEPKcm _ZNSs6appendERKSs _ZNSs6appendEPKc _ZNSsC1EOSs __cxa_end_catch __cxa_begin_catch _ZSt4cout _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc GAS LISTING /tmp/ccrG9BDx.s page 96 _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_ _ZNSolsEPFRSoS_E __cxa_rethrow _ZTVN10__cxxabiv120__si_class_type_infoE _ZTISt9exception