GAS LISTING /tmp/ccev5sD5.s page 1 1 .file "hello-exceptions.cpp" 2 .text 3 .Ltext0: 4 .align 2 5 .globl _ZNK12MyExceptionA4whatEv 7 _ZNK12MyExceptionA4whatEv: 8 .LFB1250: 9 .file 1 "hello-exceptions.cpp" 1:hello-exceptions.cpp **** #include <exception> 2:hello-exceptions.cpp **** #include <string> 3:hello-exceptions.cpp **** #include <iostream> 4:hello-exceptions.cpp **** 5:hello-exceptions.cpp **** using namespace std; 6:hello-exceptions.cpp **** 7:hello-exceptions.cpp **** class MyExceptionA : public exception { 8:hello-exceptions.cpp **** private: 9:hello-exceptions.cpp **** string _what; 10:hello-exceptions.cpp **** public: 11:hello-exceptions.cpp **** MyExceptionA(string what) throw (); 12:hello-exceptions.cpp **** ~MyExceptionA() throw (); 13:hello-exceptions.cpp **** 14:hello-exceptions.cpp **** virtual const char *what() const throw (); 15:hello-exceptions.cpp **** string as_string() const; 16:hello-exceptions.cpp **** }; 17:hello-exceptions.cpp **** 18:hello-exceptions.cpp **** MyExceptionA::MyExceptionA(string what) throw (): 19:hello-exceptions.cpp **** _what(what) 20:hello-exceptions.cpp **** {} 21:hello-exceptions.cpp **** 22:hello-exceptions.cpp **** MyExceptionA::~MyExceptionA() throw () { 23:hello-exceptions.cpp **** } 24:hello-exceptions.cpp **** 25:hello-exceptions.cpp **** const char *MyExceptionA::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:hello-exceptions.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:hello-exceptions.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 _ZN12MyExceptionAD2Ev 30 _ZN12MyExceptionAD2Ev: 31 .LFB1247: 22:hello-exceptions.cpp **** } GAS LISTING /tmp/ccev5sD5.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:hello-exceptions.cpp **** } 40 .loc 1 22 0 41 0016 48C70700 movq $_ZTV12MyExceptionA+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:hello-exceptions.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 _ZN12MyExceptionAD1Ev 59 .set _ZN12MyExceptionAD1Ev,_ZN12MyExceptionAD2Ev 60 .align 2 61 .globl _ZN12MyExceptionAD0Ev 63 _ZN12MyExceptionAD0Ev: 64 .LFB1249: 22:hello-exceptions.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:hello-exceptions.cpp **** 72 .loc 1 23 0 73 0034 E8000000 call _ZN12MyExceptionAD1Ev 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/ccev5sD5.s page 3 82 .cfi_endproc 83 .LFE1249: 86 _Z41__static_initialization_and_destruction_0ii: 87 .LFB1423: 28:hello-exceptions.cpp **** 29:hello-exceptions.cpp **** string MyExceptionA::as_string() const { 30:hello-exceptions.cpp **** return "MyExceptionA(" + _what + ")"; 31:hello-exceptions.cpp **** } 32:hello-exceptions.cpp **** 33:hello-exceptions.cpp **** 34:hello-exceptions.cpp **** // arg must be greater than 0. Returns half arg, rounded down. 35:hello-exceptions.cpp **** int take_half(int arg) throw (MyExceptionA) { 36:hello-exceptions.cpp **** if (arg <= 0) { 37:hello-exceptions.cpp **** throw MyExceptionA("arg is not greater than 0."); 38:hello-exceptions.cpp **** } 39:hello-exceptions.cpp **** return arg / 2; 40:hello-exceptions.cpp **** } 41:hello-exceptions.cpp **** 42:hello-exceptions.cpp **** void helloExceptions() { 43:hello-exceptions.cpp **** try { 44:hello-exceptions.cpp **** take_half(-2); 45:hello-exceptions.cpp **** } catch (MyExceptionA &e) { 46:hello-exceptions.cpp **** cout << "Got exception: " << e.as_string() << endl; 47:hello-exceptions.cpp **** } 48:hello-exceptions.cpp **** } 88 .loc 1 48 0 89 .cfi_startproc 90 .LVL12: 91 0043 83FF01 cmpl $1, %edi 92 0046 752E jne .L11 93 .loc 1 48 0 discriminator 1 94 0048 81FEFFFF cmpl $65535, %esi 94 0000 95 004e 7526 jne .L11 96 .loc 1 48 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 **** GAS LISTING /tmp/ccev5sD5.s page 4 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 **** // <http://www.gnu.org/licenses/>. 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 <bits/c++config.h> 39:/usr/include/c++/4.8/iostream **** #include <ostream> 40:/usr/include/c++/4.8/iostream **** #include <istream> 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 **** /** 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 <em>standard stream 50:/usr/include/c++/4.8/iostream **** * objects</em>. 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 GAS LISTING /tmp/ccev5sD5.s page 5 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 48 0 111 0072 4883C408 addq $8, %rsp 112 .cfi_def_cfa_offset 8 113 .L11: 114 0076 C3 ret 115 .cfi_endproc 116 .LFE1423: 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" 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 **** // <http://www.gnu.org/licenses/>. 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__ GAS LISTING /tmp/ccev5sD5.s page 6 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 <bits/c++config.h> 38:/usr/include/c++/4.8/exception **** #include <bits/atomic_lockfree_defines.h> 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 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 GAS LISTING /tmp/ccev5sD5.s page 7 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 **** // <http://www.gnu.org/licenses/>. 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 **** 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 <bits/stl_algobase.h> // std::copy, std::fill_n 40:/usr/include/c++/4.8/bits/char_traits.h **** #include <bits/postypes.h> // For streampos 41:/usr/include/c++/4.8/bits/char_traits.h **** #include <cwchar> // 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<typename _CharT> 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; GAS LISTING /tmp/ccev5sD5.s page 8 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<typename _CharT> 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 **** 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 **** GAS LISTING /tmp/ccev5sD5.s page 9 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<char_type>(__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<int_type>(__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<int_type>(_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<typename _CharT> 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) 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<typename _CharT> 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<typename _CharT> 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<typename _CharT> GAS LISTING /tmp/ccev5sD5.s page 10 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<typename _CharT> 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<typename _CharT> 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 **** } 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<class _CharT> 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<char> 234:/usr/include/c++/4.8/bits/char_traits.h **** { GAS LISTING /tmp/ccev5sD5.s page 11 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: 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 _ZN12MyExceptionAC2ESs 162 _ZN12MyExceptionAC2ESs: 163 .LFB1244: 18:hello-exceptions.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 GAS LISTING /tmp/ccev5sD5.s page 12 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:hello-exceptions.cpp **** {} 181 .loc 1 19 0 182 0082 E8000000 call _ZNSt9exceptionC2Ev 182 00 183 .LVL20: 184 0087 48C70300 movq $_ZTV12MyExceptionA+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 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:hello-exceptions.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:hello-exceptions.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 GAS LISTING /tmp/ccev5sD5.s page 13 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 250 .LLSDATT1244: 251 0014 00 .byte 0 252 .text 254 .globl _ZN12MyExceptionAC1ESs 255 .set _ZN12MyExceptionAC1ESs,_ZN12MyExceptionAC2ESs 256 .section .rodata.str1.1,"aMS",@progbits,1 257 .LC0: 258 0000 61726720 .string "arg is not greater than 0." 258 6973206E 258 6F742067 258 72656174 258 65722074 259 .text 260 .globl _Z9take_halfi 262 _Z9take_halfi: 263 .LFB1252: 35:hello-exceptions.cpp **** if (arg <= 0) { 264 .loc 1 35 0 265 .cfi_startproc 266 .cfi_personality 0x3,__gxx_personality_v0 267 .cfi_lsda 0x3,.LLSDA1252 268 .LVL28: 36:hello-exceptions.cpp **** throw MyExceptionA("arg is not greater than 0."); 269 .loc 1 36 0 270 00c5 85FF testl %edi, %edi 271 00c7 7F7B jg .L21 35:hello-exceptions.cpp **** if (arg <= 0) { 272 .loc 1 35 0 273 00c9 4154 pushq %r12 274 .cfi_def_cfa_offset 16 GAS LISTING /tmp/ccev5sD5.s page 14 275 .cfi_offset 12, -16 276 00cb 55 pushq %rbp 277 .cfi_def_cfa_offset 24 278 .cfi_offset 6, -24 279 00cc 53 pushq %rbx 280 .cfi_def_cfa_offset 32 281 .cfi_offset 3, -32 282 00cd 4883EC20 subq $32, %rsp 283 .cfi_def_cfa_offset 64 37:hello-exceptions.cpp **** } 284 .loc 1 37 0 285 00d1 BF100000 movl $16, %edi 285 00 286 .LVL29: 287 00d6 E8000000 call __cxa_allocate_exception 287 00 288 .LVL30: 289 00db 4889C3 movq %rax, %rbx 290 00de 488D5424 leaq 15(%rsp), %rdx 290 0F 291 00e3 BE000000 movl $.LC0, %esi 291 00 292 00e8 488D7C24 leaq 16(%rsp), %rdi 292 10 293 .LEHB2: 294 00ed E8000000 call _ZNSsC1EPKcRKSaIcE 294 00 295 .LEHE2: 296 .LVL31: 37:hello-exceptions.cpp **** } 297 .loc 1 37 0 is_stmt 0 discriminator 1 298 00f2 488D7424 leaq 16(%rsp), %rsi 298 10 299 00f7 4889DF movq %rbx, %rdi 300 00fa E8000000 call _ZN12MyExceptionAC1ESs 300 00 301 .LVL32: 302 00ff 488D7C24 leaq 16(%rsp), %rdi 302 10 303 0104 E8000000 call _ZNSsD1Ev 303 00 304 .LVL33: 305 0109 BA000000 movl $_ZN12MyExceptionAD1Ev, %edx 305 00 306 010e BE000000 movl $_ZTI12MyExceptionA, %esi 306 00 307 0113 4889DF movq %rbx, %rdi 308 .LEHB3: 309 0116 E8000000 call __cxa_throw 309 00 310 .LEHE3: 311 .LVL34: 312 .L25: 313 011b 4989C4 movq %rax, %r12 314 011e 4889D5 movq %rdx, %rbp 37:hello-exceptions.cpp **** } 315 .loc 1 37 0 GAS LISTING /tmp/ccev5sD5.s page 15 316 0121 4889DF movq %rbx, %rdi 317 0124 E8000000 call __cxa_free_exception 317 00 318 .LVL35: 319 0129 4C89E7 movq %r12, %rdi 320 012c 4889EA movq %rbp, %rdx 321 012f EB03 jmp .L23 322 .L26: 323 0131 4889C7 movq %rax, %rdi 324 .L23: 325 0134 4883FAFF cmpq $-1, %rdx 326 0138 7405 je .L24 327 .LEHB4: 328 013a E8000000 call _Unwind_Resume 328 00 329 .LVL36: 330 .L24: 35:hello-exceptions.cpp **** if (arg <= 0) { 331 .loc 1 35 0 is_stmt 1 332 013f E8000000 call __cxa_call_unexpected 332 00 333 .LEHE4: 334 .LVL37: 335 .L21: 336 .cfi_def_cfa_offset 8 337 .cfi_restore 3 338 .cfi_restore 6 339 .cfi_restore 12 39:hello-exceptions.cpp **** } 340 .loc 1 39 0 341 0144 89F8 movl %edi, %eax 342 0146 C1E81F shrl $31, %eax 343 0149 01F8 addl %edi, %eax 344 014b D1F8 sarl %eax 40:hello-exceptions.cpp **** 345 .loc 1 40 0 346 014d C3 ret 347 .cfi_endproc 348 .LFE1252: 349 .section .gcc_except_table 350 0015 000000 .align 4 351 .LLSDA1252: 352 0018 FF .byte 0xff 353 0019 03 .byte 0x3 354 001a 19 .uleb128 .LLSDATT1252-.LLSDATTD1252 355 .LLSDATTD1252: 356 001b 01 .byte 0x1 357 001c 0C .uleb128 .LLSDACSE1252-.LLSDACSB1252 358 .LLSDACSB1252: 359 001d 28 .uleb128 .LEHB2-.LFB1252 360 001e 05 .uleb128 .LEHE2-.LEHB2 361 001f 56 .uleb128 .L25-.LFB1252 362 0020 03 .uleb128 0x3 363 0021 51 .uleb128 .LEHB3-.LFB1252 364 0022 05 .uleb128 .LEHE3-.LEHB3 365 0023 6C .uleb128 .L26-.LFB1252 366 0024 01 .uleb128 0x1 GAS LISTING /tmp/ccev5sD5.s page 16 367 0025 75 .uleb128 .LEHB4-.LFB1252 368 0026 0A .uleb128 .LEHE4-.LEHB4 369 0027 00 .uleb128 0 370 0028 00 .uleb128 0 371 .LLSDACSE1252: 372 0029 7F .byte 0x7f 373 002a 00 .byte 0 374 002b 00 .byte 0 375 002c 7D .byte 0x7d 376 002d 000000 .align 4 377 0030 00000000 .long _ZTI12MyExceptionA 378 .LLSDATT1252: 379 0034 01 .byte 0x1 380 0035 00 .byte 0 381 .text 383 .section .text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_,"axG",@progbits,_ZStplIcSt11 384 .weak _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ 386 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_: 387 .LFB1314: 388 .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 **** // <http://www.gnu.org/licenses/>. 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 GAS LISTING /tmp/ccev5sD5.s page 17 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 <bits/cxxabi_forced.h> 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 **** 48:/usr/include/c++/4.8/bits/basic_string.tcc **** template<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 75:/usr/include/c++/4.8/bits/basic_string.tcc **** template<typename _InIterator> 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); GAS LISTING /tmp/ccev5sD5.s page 18 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); 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<typename _CharT, typename _Traits, typename _Alloc> 121:/usr/include/c++/4.8/bits/basic_string.tcc **** template <typename _InIterator> 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<size_type>(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<typename _CharT, typename _Traits, typename _Alloc> 151:/usr/include/c++/4.8/bits/basic_string.tcc **** _CharT* GAS LISTING /tmp/ccev5sD5.s page 19 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) 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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 **** { } GAS LISTING /tmp/ccev5sD5.s page 20 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 226:/usr/include/c++/4.8/bits/basic_string.tcc **** template<typename _InputIterator> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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 GAS LISTING /tmp/ccev5sD5.s page 21 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 **** } 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> GAS LISTING /tmp/ccev5sD5.s page 22 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); 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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 **** { GAS LISTING /tmp/ccev5sD5.s page 23 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<typename _CharT, typename _Traits, typename _Alloc> 389:/usr/include/c++/4.8/bits/basic_string.tcc **** typename basic_string<_CharT, _Traits, _Alloc>::iterator 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<typename _CharT, typename _Traits, typename _Alloc> 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. GAS LISTING /tmp/ccev5sD5.s page 24 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<typename _CharT, typename _Traits, typename _Alloc> 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 **** { 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<char*>(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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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, GAS LISTING /tmp/ccev5sD5.s page 25 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<typename _CharT, typename _Traits, typename _Alloc> 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 **** { 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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() GAS LISTING /tmp/ccev5sD5.s page 26 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, 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); GAS LISTING /tmp/ccev5sD5.s page 27 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(); 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 652:/usr/include/c++/4.8/bits/basic_string.tcc **** template<typename _InputIterator> 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 **** GAS LISTING /tmp/ccev5sD5.s page 28 665:/usr/include/c++/4.8/bits/basic_string.tcc **** template<typename _CharT, typename _Traits, typename _Alloc> 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); 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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, 389 .loc 5 692 0 390 .cfi_startproc 391 .cfi_personality 0x3,__gxx_personality_v0 392 .cfi_lsda 0x3,.LLSDA1314 393 .LVL38: 394 0000 4155 pushq %r13 395 .cfi_def_cfa_offset 16 396 .cfi_offset 13, -16 397 0002 4154 pushq %r12 398 .cfi_def_cfa_offset 24 399 .cfi_offset 12, -24 400 0004 55 pushq %rbp 401 .cfi_def_cfa_offset 32 402 .cfi_offset 6, -32 403 0005 53 pushq %rbx 404 .cfi_def_cfa_offset 40 405 .cfi_offset 3, -40 406 0006 4883EC08 subq $8, %rsp 407 .cfi_def_cfa_offset 48 408 000a 4889FB movq %rdi, %rbx 409 000d 4989F4 movq %rsi, %r12 410 0010 4889D5 movq %rdx, %rbp 411 .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); GAS LISTING /tmp/ccev5sD5.s page 29 412 .loc 5 698 0 413 0013 4889F7 movq %rsi, %rdi 414 .LVL39: 415 0016 E8000000 call _ZNSt11char_traitsIcE6lengthEPKc 415 00 416 .LVL40: 417 001b 4989C5 movq %rax, %r13 418 .LVL41: 699:/usr/include/c++/4.8/bits/basic_string.tcc **** __string_type __str; 419 .loc 5 699 0 420 001e 4889DF movq %rbx, %rdi 421 0021 E8000000 call _ZNSsC1Ev 421 00 422 .LVL42: 700:/usr/include/c++/4.8/bits/basic_string.tcc **** __str.reserve(__len + __rhs.size()); 423 .loc 5 700 0 424 0026 4889EF movq %rbp, %rdi 425 0029 E8000000 call _ZNKSs4sizeEv 425 00 426 .LVL43: 427 002e 4A8D3428 leaq (%rax,%r13), %rsi 428 0032 4889DF movq %rbx, %rdi 429 .LEHB5: 430 0035 E8000000 call _ZNSs7reserveEm 430 00 431 .LVL44: 701:/usr/include/c++/4.8/bits/basic_string.tcc **** __str.append(__lhs, __len); 432 .loc 5 701 0 433 003a 4C89EA movq %r13, %rdx 434 003d 4C89E6 movq %r12, %rsi 435 0040 4889DF movq %rbx, %rdi 436 0043 E8000000 call _ZNSs6appendEPKcm 436 00 437 .LVL45: 702:/usr/include/c++/4.8/bits/basic_string.tcc **** __str.append(__rhs); 438 .loc 5 702 0 439 0048 4889EE movq %rbp, %rsi 440 004b 4889DF movq %rbx, %rdi 441 004e E8000000 call _ZNSs6appendERKSs 441 00 442 .LEHE5: 443 .LVL46: 444 0053 EB13 jmp .L32 445 .L31: 446 0055 4889C5 movq %rax, %rbp 447 .LVL47: 448 0058 4889DF movq %rbx, %rdi 449 005b E8000000 call _ZNSsD1Ev 449 00 450 .LVL48: 451 0060 4889EF movq %rbp, %rdi 452 .LEHB6: 453 0063 E8000000 call _Unwind_Resume 453 00 454 .LEHE6: 455 .LVL49: 456 .L32: GAS LISTING /tmp/ccev5sD5.s page 30 457 .LBE5: 703:/usr/include/c++/4.8/bits/basic_string.tcc **** return __str; 704:/usr/include/c++/4.8/bits/basic_string.tcc **** } 458 .loc 5 704 0 459 0068 4889D8 movq %rbx, %rax 460 006b 4883C408 addq $8, %rsp 461 .cfi_def_cfa_offset 40 462 006f 5B popq %rbx 463 .cfi_def_cfa_offset 32 464 .LVL50: 465 0070 5D popq %rbp 466 .cfi_def_cfa_offset 24 467 .LVL51: 468 0071 415C popq %r12 469 .cfi_def_cfa_offset 16 470 .LVL52: 471 0073 415D popq %r13 472 .cfi_def_cfa_offset 8 473 .LVL53: 474 0075 C3 ret 475 .cfi_endproc 476 .LFE1314: 477 .section .gcc_except_table 478 .LLSDA1314: 479 0036 FF .byte 0xff 480 0037 FF .byte 0xff 481 0038 01 .byte 0x1 482 0039 08 .uleb128 .LLSDACSE1314-.LLSDACSB1314 483 .LLSDACSB1314: 484 003a 35 .uleb128 .LEHB5-.LFB1314 485 003b 1E .uleb128 .LEHE5-.LEHB5 486 003c 55 .uleb128 .L31-.LFB1314 487 003d 00 .uleb128 0 488 003e 63 .uleb128 .LEHB6-.LFB1314 489 003f 05 .uleb128 .LEHE6-.LEHB6 490 0040 00 .uleb128 0 491 0041 00 .uleb128 0 492 .LLSDACSE1314: 493 .section .text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_,"axG",@progbits,_ZStplIcSt11 495 .section .text._ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_,"axG",@progbits,_ZSt4moveIRSsEON 496 .weak _ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_ 498 _ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_: 499 .LFB1316: 500 .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 GAS LISTING /tmp/ccev5sD5.s page 31 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 **** // <http://www.gnu.org/licenses/>. 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 <bits/c++config.h> 34:/usr/include/c++/4.8/bits/move.h **** #include <bits/concept_check.h> 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<typename _Tp> 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<char&>(reinterpret_cast<const volatile char&>(__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 <type_traits> // 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. GAS LISTING /tmp/ccev5sD5.s page 32 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<typename _Tp> 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. 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<typename _Tp> 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<typename _Tp> 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 501 .loc 6 101 0 502 .cfi_startproc 503 .LVL54: 504 0000 4889F8 movq %rdi, %rax 102:/usr/include/c++/4.8/bits/move.h **** { return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); } 505 .loc 6 102 0 506 0003 C3 ret 507 .cfi_endproc 508 .LFE1316: 510 .section .text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_,"axG",@progbits,_ZStplIcSt11c 511 .weak _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_ 513 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_: 514 .LFB1315: 515 .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 GAS LISTING /tmp/ccev5sD5.s page 33 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 23:/usr/include/c++/4.8/bits/basic_string.h **** // <http://www.gnu.org/licenses/>. 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 <ext/atomicity.h> 40:/usr/include/c++/4.8/bits/basic_string.h **** #include <debug/debug.h> 41:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L 42:/usr/include/c++/4.8/bits/basic_string.h **** #include <initializer_list> 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 <string> 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 <a href="tables.html#65">container</a>, a 62:/usr/include/c++/4.8/bits/basic_string.h **** * <a href="tables.html#66">reversible container</a>, and a 63:/usr/include/c++/4.8/bits/basic_string.h **** * <a href="tables.html#67">sequence</a>. Of the 64:/usr/include/c++/4.8/bits/basic_string.h **** * <a href="tables.html#68">optional sequence requirements</a>, 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 **** * GAS LISTING /tmp/ccev5sD5.s page 34 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 <ncm@cantrip.org>. 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<char_type>] _M_capacity 79:/usr/include/c++/4.8/bits/basic_string.h **** * _M_dataplus _M_refcount 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 <em>empty string</em> _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<typename _CharT, typename _Traits, typename _Alloc> 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; GAS LISTING /tmp/ccev5sD5.s page 35 127:/usr/include/c++/4.8/bits/basic_string.h **** typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator; 128:/usr/include/c++/4.8/bits/basic_string.h **** typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string> 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_iterator> const_reverse_iterator; 131:/usr/include/c++/4.8/bits/basic_string.h **** typedef std::reverse_iterator<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 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<char>::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 GAS LISTING /tmp/ccev5sD5.s page 36 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<void*>(&_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 **** 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)) GAS LISTING /tmp/ccev5sD5.s page 37 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 **** } 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<size_type>(-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); } GAS LISTING /tmp/ccev5sD5.s page 38 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()); } 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<const _CharT*>()(__s, _M_data()) 348:/usr/include/c++/4.8/bits/basic_string.h **** || less<const _CharT*>()(_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) GAS LISTING /tmp/ccev5sD5.s page 39 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 **** { 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<class _Iterator> 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<int>::__max) GAS LISTING /tmp/ccev5sD5.s page 40 412:/usr/include/c++/4.8/bits/basic_string.h **** return __gnu_cxx::__numeric_traits<int>::__max; 413:/usr/include/c++/4.8/bits/basic_string.h **** else if (__d < __gnu_cxx::__numeric_traits<int>::__min) 414:/usr/include/c++/4.8/bits/basic_string.h **** return __gnu_cxx::__numeric_traits<int>::__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 **** 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. GAS LISTING /tmp/ccev5sD5.s page 41 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). 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 **** /** GAS LISTING /tmp/ccev5sD5.s page 42 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<class _InputIterator> 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 **** /** 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. GAS LISTING /tmp/ccev5sD5.s page 43 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) 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 GAS LISTING /tmp/ccev5sD5.s page 44 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 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 GAS LISTING /tmp/ccev5sD5.s page 45 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 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) GAS LISTING /tmp/ccev5sD5.s page 46 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 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 **** * <code>*this == ""</code>. 809:/usr/include/c++/4.8/bits/basic_string.h **** */ 810:/usr/include/c++/4.8/bits/basic_string.h **** bool GAS LISTING /tmp/ccev5sD5.s page 47 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. 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")); GAS LISTING /tmp/ccev5sD5.s page 48 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 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 **** GAS LISTING /tmp/ccev5sD5.s page 49 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 **** 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. GAS LISTING /tmp/ccev5sD5.s page 50 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 **** /** 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. GAS LISTING /tmp/ccev5sD5.s page 51 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<class _InputIterator> 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. 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 GAS LISTING /tmp/ccev5sD5.s page 52 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 **** /** 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 **** * GAS LISTING /tmp/ccev5sD5.s page 53 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<class _InputIterator> 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. 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<class _InputIterator> 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. GAS LISTING /tmp/ccev5sD5.s page 54 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 **** 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. GAS LISTING /tmp/ccev5sD5.s page 55 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 **** */ 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 **** /** GAS LISTING /tmp/ccev5sD5.s page 56 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 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() GAS LISTING /tmp/ccev5sD5.s page 57 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. 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. GAS LISTING /tmp/ccev5sD5.s page 58 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 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 **** */ GAS LISTING /tmp/ccev5sD5.s page 59 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. 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 GAS LISTING /tmp/ccev5sD5.s page 60 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); 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. GAS LISTING /tmp/ccev5sD5.s page 61 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 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<class _InputIterator> 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 **** GAS LISTING /tmp/ccev5sD5.s page 62 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 **** } 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<class _Integer> 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<class _InputIterator> 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<class _InIterator> 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) GAS LISTING /tmp/ccev5sD5.s page 63 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<class _Integer> 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, 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<size_type>(__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<class _InIterator> 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<class _InIterator> 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<class _FwdIterator> 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 GAS LISTING /tmp/ccev5sD5.s page 64 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 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. GAS LISTING /tmp/ccev5sD5.s page 65 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 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()); } GAS LISTING /tmp/ccev5sD5.s page 66 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, 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 **** */ GAS LISTING /tmp/ccev5sD5.s page 67 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. 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). GAS LISTING /tmp/ccev5sD5.s page 68 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 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 GAS LISTING /tmp/ccev5sD5.s page 69 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 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 **** * GAS LISTING /tmp/ccev5sD5.s page 70 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. 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 **** GAS LISTING /tmp/ccev5sD5.s page 71 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 **** */ 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 **** } GAS LISTING /tmp/ccev5sD5.s page 72 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 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 GAS LISTING /tmp/ccev5sD5.s page 73 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 **** 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. GAS LISTING /tmp/ccev5sD5.s page 74 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. 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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); GAS LISTING /tmp/ccev5sD5.s page 75 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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<typename _CharT, typename _Traits, typename _Alloc> 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 **** GAS LISTING /tmp/ccev5sD5.s page 76 2464:/usr/include/c++/4.8/bits/basic_string.h **** template<typename _CharT, typename _Traits, typename _Alloc> 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, 516 .loc 7 2466 0 517 .cfi_startproc 518 .LVL55: 519 0000 53 pushq %rbx 520 .cfi_def_cfa_offset 16 521 .cfi_offset 3, -16 522 0001 4889FB movq %rdi, %rbx 523 0004 4889F7 movq %rsi, %rdi 524 .LVL56: 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)); } 525 .loc 7 2468 0 526 0007 4889D6 movq %rdx, %rsi 527 .LVL57: 528 000a E8000000 call _ZNSs6appendEPKc 528 00 529 .LVL58: 530 000f 4889C7 movq %rax, %rdi 531 0012 E8000000 call _ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_ 531 00 532 .LVL59: 533 0017 4889C6 movq %rax, %rsi 534 001a 4889DF movq %rbx, %rdi 535 001d E8000000 call _ZNSsC1EOSs 535 00 536 .LVL60: 537 0022 4889D8 movq %rbx, %rax 538 0025 5B popq %rbx 539 .cfi_def_cfa_offset 8 540 .LVL61: 541 0026 C3 ret 542 .cfi_endproc 543 .LFE1315: 545 .section .rodata.str1.1 546 .LC1: 547 001b 4D794578 .string "MyExceptionA(" 547 63657074 547 696F6E41 547 2800 548 .LC2: 549 0029 2900 .string ")" 550 .text 551 .align 2 552 .globl _ZNK12MyExceptionA9as_stringEv 554 _ZNK12MyExceptionA9as_stringEv: 555 .LFB1251: 29:hello-exceptions.cpp **** return "MyExceptionA(" + _what + ")"; 556 .loc 1 29 0 557 .cfi_startproc 558 .cfi_personality 0x3,__gxx_personality_v0 559 .cfi_lsda 0x3,.LLSDA1251 560 .LVL62: 561 014e 53 pushq %rbx 562 .cfi_def_cfa_offset 16 GAS LISTING /tmp/ccev5sD5.s page 77 563 .cfi_offset 3, -16 564 014f 4883EC10 subq $16, %rsp 565 .cfi_def_cfa_offset 32 566 0153 4889FB movq %rdi, %rbx 30:hello-exceptions.cpp **** } 567 .loc 1 30 0 568 0156 488D5608 leaq 8(%rsi), %rdx 569 015a BE000000 movl $.LC1, %esi 569 00 570 .LVL63: 571 015f 4889E7 movq %rsp, %rdi 572 .LVL64: 573 .LEHB7: 574 0162 E8000000 call _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ 574 00 575 .LEHE7: 576 .LVL65: 577 0167 BA000000 movl $.LC2, %edx 577 00 578 016c 4889E6 movq %rsp, %rsi 579 016f 4889DF movq %rbx, %rdi 580 .LEHB8: 581 0172 E8000000 call _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_ 581 00 582 .LEHE8: 583 .LVL66: 584 0177 EB13 jmp .L41 585 .L39: 586 0179 4889C3 movq %rax, %rbx 587 .LVL67: 588 017c 4889E7 movq %rsp, %rdi 589 017f E8000000 call _ZNSsD1Ev 589 00 590 .LVL68: 591 0184 4889DF movq %rbx, %rdi 592 .LEHB9: 593 0187 E8000000 call _Unwind_Resume 593 00 594 .LEHE9: 595 .LVL69: 596 .L41: 30:hello-exceptions.cpp **** } 597 .loc 1 30 0 is_stmt 0 discriminator 2 598 018c 4889E7 movq %rsp, %rdi 599 018f E8000000 call _ZNSsD1Ev 599 00 600 .LVL70: 31:hello-exceptions.cpp **** 601 .loc 1 31 0 is_stmt 1 discriminator 2 602 0194 4889D8 movq %rbx, %rax 603 0197 4883C410 addq $16, %rsp 604 .cfi_def_cfa_offset 16 605 019b 5B popq %rbx 606 .cfi_def_cfa_offset 8 607 .LVL71: 608 019c C3 ret 609 .cfi_endproc GAS LISTING /tmp/ccev5sD5.s page 78 610 .LFE1251: 611 .section .gcc_except_table 612 .LLSDA1251: 613 0042 FF .byte 0xff 614 0043 FF .byte 0xff 615 0044 01 .byte 0x1 616 0045 0C .uleb128 .LLSDACSE1251-.LLSDACSB1251 617 .LLSDACSB1251: 618 0046 14 .uleb128 .LEHB7-.LFB1251 619 0047 05 .uleb128 .LEHE7-.LEHB7 620 0048 00 .uleb128 0 621 0049 00 .uleb128 0 622 004a 24 .uleb128 .LEHB8-.LFB1251 623 004b 05 .uleb128 .LEHE8-.LEHB8 624 004c 2B .uleb128 .L39-.LFB1251 625 004d 00 .uleb128 0 626 004e 39 .uleb128 .LEHB9-.LFB1251 627 004f 05 .uleb128 .LEHE9-.LEHB9 628 0050 00 .uleb128 0 629 0051 00 .uleb128 0 630 .LLSDACSE1251: 631 .text 633 .section .rodata.str1.1 634 .LC3: 635 002b 476F7420 .string "Got exception: " 635 65786365 635 7074696F 635 6E3A2000 636 .text 637 .globl _Z15helloExceptionsv 639 _Z15helloExceptionsv: 640 .LFB1259: 42:hello-exceptions.cpp **** try { 641 .loc 1 42 0 642 .cfi_startproc 643 .cfi_personality 0x3,__gxx_personality_v0 644 .cfi_lsda 0x3,.LLSDA1259 645 019d 53 pushq %rbx 646 .cfi_def_cfa_offset 16 647 .cfi_offset 3, -16 648 019e 4883EC10 subq $16, %rsp 649 .cfi_def_cfa_offset 32 650 .LBB6: 44:hello-exceptions.cpp **** } catch (MyExceptionA &e) { 651 .loc 1 44 0 652 01a2 BFFEFFFF movl $-2, %edi 652 FF 653 .LEHB10: 654 01a7 E8000000 call _Z9take_halfi 654 00 655 .LEHE10: 656 .LVL72: 657 01ac EB6F jmp .L43 658 .LVL73: 659 .L52: 660 01ae 4889C3 movq %rax, %rbx 661 .LBB7: GAS LISTING /tmp/ccev5sD5.s page 79 46:hello-exceptions.cpp **** } 662 .loc 1 46 0 663 01b1 4889E7 movq %rsp, %rdi 664 01b4 E8000000 call _ZNSsD1Ev 664 00 665 .LVL74: 666 .p2align 4,,2 667 01b9 EB03 jmp .L45 668 .L51: 669 01bb 4889C3 movq %rax, %rbx 670 .L45: 45:hello-exceptions.cpp **** cout << "Got exception: " << e.as_string() << endl; 671 .loc 1 45 0 672 01be E8000000 call __cxa_end_catch 672 00 673 .LVL75: 674 01c3 4889DF movq %rbx, %rdi 675 .LEHB11: 676 01c6 E8000000 call _Unwind_Resume 676 00 677 .LVL76: 678 .L50: 679 01cb 4889C7 movq %rax, %rdi 680 01ce 4883FA01 cmpq $1, %rdx 681 01d2 7405 je .L48 682 01d4 E8000000 call _Unwind_Resume 682 00 683 .LEHE11: 684 .LVL77: 685 .L48: 686 01d9 E8000000 call __cxa_begin_catch 686 00 687 .LVL78: 46:hello-exceptions.cpp **** } 688 .loc 1 46 0 689 01de 4889C6 movq %rax, %rsi 690 01e1 4889E7 movq %rsp, %rdi 691 .LEHB12: 692 01e4 E8000000 call _ZNK12MyExceptionA9as_stringEv 692 00 693 .LEHE12: 694 .LVL79: 46:hello-exceptions.cpp **** } 695 .loc 1 46 0 is_stmt 0 discriminator 1 696 01e9 BE000000 movl $.LC3, %esi 696 00 697 01ee BF000000 movl $_ZSt4cout, %edi 697 00 698 .LEHB13: 699 01f3 E8000000 call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 699 00 700 .LVL80: 701 01f8 4889E6 movq %rsp, %rsi 702 01fb 4889C7 movq %rax, %rdi 703 01fe E8000000 call _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E 703 00 704 .LVL81: GAS LISTING /tmp/ccev5sD5.s page 80 705 0203 BE000000 movl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi 705 00 706 0208 4889C7 movq %rax, %rdi 707 020b E8000000 call _ZNSolsEPFRSoS_E 707 00 708 .LEHE13: 709 .LVL82: 710 0210 4889E7 movq %rsp, %rdi 711 0213 E8000000 call _ZNSsD1Ev 711 00 712 .LVL83: 45:hello-exceptions.cpp **** cout << "Got exception: " << e.as_string() << endl; 713 .loc 1 45 0 is_stmt 1 discriminator 1 714 0218 E8000000 call __cxa_end_catch 714 00 715 .LVL84: 716 .L43: 717 .LBE7: 718 .LBE6: 719 .loc 1 48 0 720 021d 4883C410 addq $16, %rsp 721 .cfi_def_cfa_offset 16 722 0221 5B popq %rbx 723 .cfi_def_cfa_offset 8 724 0222 C3 ret 725 .cfi_endproc 726 .LFE1259: 727 .section .gcc_except_table 728 0052 0000 .align 4 729 .LLSDA1259: 730 0054 FF .byte 0xff 731 0055 03 .byte 0x3 732 0056 19 .uleb128 .LLSDATT1259-.LLSDATTD1259 733 .LLSDATTD1259: 734 0057 01 .byte 0x1 735 0058 10 .uleb128 .LLSDACSE1259-.LLSDACSB1259 736 .LLSDACSB1259: 737 0059 0A .uleb128 .LEHB10-.LFB1259 738 005a 05 .uleb128 .LEHE10-.LEHB10 739 005b 2E .uleb128 .L50-.LFB1259 740 005c 01 .uleb128 0x1 741 005d 29 .uleb128 .LEHB11-.LFB1259 742 005e 13 .uleb128 .LEHE11-.LEHB11 743 005f 00 .uleb128 0 744 0060 00 .uleb128 0 745 0061 47 .uleb128 .LEHB12-.LFB1259 746 0062 05 .uleb128 .LEHE12-.LEHB12 747 0063 1E .uleb128 .L51-.LFB1259 748 0064 00 .uleb128 0 749 0065 56 .uleb128 .LEHB13-.LFB1259 750 0066 1D .uleb128 .LEHE13-.LEHB13 751 0067 11 .uleb128 .L52-.LFB1259 752 0068 00 .uleb128 0 753 .LLSDACSE1259: 754 0069 01 .byte 0x1 755 006a 00 .byte 0 756 006b 00 .align 4 GAS LISTING /tmp/ccev5sD5.s page 81 757 006c 00000000 .long _ZTI12MyExceptionA 758 .LLSDATT1259: 759 .text 762 _GLOBAL__sub_I__ZN12MyExceptionAC2ESs: 763 .LFB1424: 764 .loc 1 48 0 765 .cfi_startproc 766 0223 4883EC08 subq $8, %rsp 767 .cfi_def_cfa_offset 16 768 .loc 1 48 0 769 0227 BEFFFF00 movl $65535, %esi 769 00 770 022c BF010000 movl $1, %edi 770 00 771 0231 E80DFEFF call _Z41__static_initialization_and_destruction_0ii 771 FF 772 .LVL85: 773 0236 4883C408 addq $8, %rsp 774 .cfi_def_cfa_offset 8 775 023a C3 ret 776 .cfi_endproc 777 .LFE1424: 779 .section .init_array,"aw" 780 .align 8 781 0000 00000000 .quad _GLOBAL__sub_I__ZN12MyExceptionAC2ESs 781 00000000 782 .weak _ZTS12MyExceptionA 783 .section .rodata._ZTS12MyExceptionA,"aG",@progbits,_ZTS12MyExceptionA,comdat 786 _ZTS12MyExceptionA: 787 0000 31324D79 .string "12MyExceptionA" 787 45786365 787 7074696F 787 6E4100 788 .weak _ZTI12MyExceptionA 789 .section .rodata._ZTI12MyExceptionA,"aG",@progbits,_ZTI12MyExceptionA,comdat 790 .align 16 793 _ZTI12MyExceptionA: 794 0000 00000000 .quad _ZTVN10__cxxabiv120__si_class_type_infoE+16 794 00000000 795 0008 00000000 .quad _ZTS12MyExceptionA 795 00000000 796 0010 00000000 .quad _ZTISt9exception 796 00000000 797 .weak _ZTV12MyExceptionA 798 .section .rodata._ZTV12MyExceptionA,"aG",@progbits,_ZTV12MyExceptionA,comdat 799 .align 32 802 _ZTV12MyExceptionA: 803 0000 00000000 .quad 0 803 00000000 804 0008 00000000 .quad _ZTI12MyExceptionA 804 00000000 805 0010 00000000 .quad _ZN12MyExceptionAD1Ev 805 00000000 806 0018 00000000 .quad _ZN12MyExceptionAD0Ev 806 00000000 807 0020 00000000 .quad _ZNK12MyExceptionA4whatEv 807 00000000 GAS LISTING /tmp/ccev5sD5.s page 82 808 .local _ZStL8__ioinit 809 .comm _ZStL8__ioinit,1,1 810 .text 811 .Letext0: 812 .file 8 "/usr/include/c++/4.8/bits/exception_ptr.h" 813 .file 9 "/usr/include/c++/4.8/cwchar" 814 .file 10 "/usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h" 815 .file 11 "/usr/include/c++/4.8/cstdint" 816 .file 12 "/usr/include/c++/4.8/bits/allocator.h" 817 .file 13 "/usr/include/c++/4.8/clocale" 818 .file 14 "/usr/include/c++/4.8/cstdlib" 819 .file 15 "/usr/include/c++/4.8/cstdio" 820 .file 16 "/usr/include/c++/4.8/initializer_list" 821 .file 17 "/usr/include/c++/4.8/bits/stringfwd.h" 822 .file 18 "/usr/include/c++/4.8/bits/ios_base.h" 823 .file 19 "/usr/include/c++/4.8/cwctype" 824 .file 20 "/usr/include/c++/4.8/ostream" 825 .file 21 "/usr/include/c++/4.8/type_traits" 826 .file 22 "/usr/include/c++/4.8/bits/stl_iterator_base_types.h" 827 .file 23 "/usr/include/c++/4.8/iosfwd" 828 .file 24 "/usr/include/c++/4.8/ext/new_allocator.h" 829 .file 25 "/usr/include/c++/4.8/ext/numeric_traits.h" 830 .file 26 "/usr/include/c++/4.8/bits/stl_iterator.h" 831 .file 27 "/usr/include/c++/4.8/debug/debug.h" 832 .file 28 "/usr/include/stdio.h" 833 .file 29 "/usr/include/libio.h" 834 .file 30 "<built-in>" 835 .file 31 "/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h" 836 .file 32 "/usr/include/wchar.h" 837 .file 33 "/usr/include/x86_64-linux-gnu/bits/wchar2.h" 838 .file 34 "/usr/include/time.h" 839 .file 35 "/usr/include/stdint.h" 840 .file 36 "/usr/include/locale.h" 841 .file 37 "/usr/include/x86_64-linux-gnu/bits/types.h" 842 .file 38 "/usr/include/x86_64-linux-gnu/c++/4.8/bits/atomic_word.h" 843 .file 39 "/usr/include/stdlib.h" 844 .file 40 "/usr/include/x86_64-linux-gnu/bits/stdlib.h" 845 .file 41 "/usr/include/_G_config.h" 846 .file 42 "/usr/include/x86_64-linux-gnu/bits/stdio2.h" 847 .file 43 "/usr/include/wctype.h" 848 .file 44 "/usr/include/c++/4.8/new" 849 .file 45 "/usr/include/c++/4.8/bits/stl_pair.h" GAS LISTING /tmp/ccev5sD5.s page 83 DEFINED SYMBOLS *ABS*:0000000000000000 hello-exceptions.cpp /tmp/ccev5sD5.s:7 .text:0000000000000000 _ZNK12MyExceptionA4whatEv /tmp/ccev5sD5.s:30 .text:0000000000000012 _ZN12MyExceptionAD2Ev /tmp/ccev5sD5.s:802 .rodata._ZTV12MyExceptionA:0000000000000000 _ZTV12MyExceptionA /tmp/ccev5sD5.s:30 .text:0000000000000012 _ZN12MyExceptionAD1Ev /tmp/ccev5sD5.s:63 .text:0000000000000030 _ZN12MyExceptionAD0Ev /tmp/ccev5sD5.s:86 .text:0000000000000043 _Z41__static_initialization_and_destruction_0ii .bss:0000000000000000 _ZStL8__ioinit /tmp/ccev5sD5.s:122 .text._ZNSt9exceptionC2Ev:0000000000000000 _ZNSt9exceptionC2Ev /tmp/ccev5sD5.s:122 .text._ZNSt9exceptionC2Ev:0000000000000000 _ZNSt9exceptionC1Ev /tmp/ccev5sD5.s:141 .text._ZNSt11char_traitsIcE6lengthEPKc:0000000000000000 _ZNSt11char_traitsIcE6lengthEPKc /tmp/ccev5sD5.s:162 .text:0000000000000078 _ZN12MyExceptionAC2ESs /tmp/ccev5sD5.s:162 .text:0000000000000078 _ZN12MyExceptionAC1ESs /tmp/ccev5sD5.s:262 .text:00000000000000c5 _Z9take_halfi /tmp/ccev5sD5.s:793 .rodata._ZTI12MyExceptionA:0000000000000000 _ZTI12MyExceptionA /tmp/ccev5sD5.s:386 .text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_:0000000000000000 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ /tmp/ccev5sD5.s:498 .text._ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_:0000000000000000 _ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_ /tmp/ccev5sD5.s:513 .text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_:0000000000000000 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_ /tmp/ccev5sD5.s:554 .text:000000000000014e _ZNK12MyExceptionA9as_stringEv /tmp/ccev5sD5.s:639 .text:000000000000019d _Z15helloExceptionsv /tmp/ccev5sD5.s:762 .text:0000000000000223 _GLOBAL__sub_I__ZN12MyExceptionAC2ESs /tmp/ccev5sD5.s:786 .rodata._ZTS12MyExceptionA:0000000000000000 _ZTS12MyExceptionA .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 _ZNSsC1EPKcRKSaIcE __cxa_throw __cxa_free_exception _ZNSsC1Ev _ZNKSs4sizeEv _ZNSs7reserveEm _ZNSs6appendEPKcm _ZNSs6appendERKSs _ZNSs6appendEPKc _ZNSsC1EOSs __cxa_end_catch __cxa_begin_catch _ZSt4cout _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_ _ZNSolsEPFRSoS_E GAS LISTING /tmp/ccev5sD5.s page 84 _ZTVN10__cxxabiv120__si_class_type_infoE _ZTISt9exception