<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.3"/> <title>libstdc++: __gnu_cxx::__rc_string_base< _CharT, _Traits, _Alloc > Class Template Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="navtree.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="resize.js"></script> <script type="text/javascript" src="navtree.js"></script> <script type="text/javascript"> $(document).ready(initResizable); $(window).load(resizeHeight); </script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">libstdc++ </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.3 --> </div><!-- top --> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> <div id="nav-sync" class="sync"></div> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> $(document).ready(function(){initNavTree('a00018.html','');}); </script> <div id="doc-content"> <div class="header"> <div class="summary"> <a href="#pub-types">Public Types</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="#pro-types">Protected Types</a> | <a href="#pro-static-methods">Static Protected Member Functions</a> | <a href="a02004.html">List of all members</a> </div> <div class="headertitle"> <div class="title">__gnu_cxx::__rc_string_base< _CharT, _Traits, _Alloc > Class Template Reference</div> </div> </div><!--header--> <div class="contents"> <p>Inherits __gnu_cxx::__vstring_utility< _CharT, _Traits, _Alloc >.</p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a> Public Types</h2></td></tr> <tr class="memitem:a11ed2810c7e0e8851e4ad17fd4a42f05"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a11ed2810c7e0e8851e4ad17fd4a42f05"></a> typedef <br class="typebreak"/> _Util_Base::_CharT_alloc_type </td><td class="memItemRight" valign="bottom"><b>_CharT_alloc_type</b></td></tr> <tr class="separator:a11ed2810c7e0e8851e4ad17fd4a42f05"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7c05ff432df8cf5b93cb28d812b5237e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c05ff432df8cf5b93cb28d812b5237e"></a> typedef __vstring_utility<br class="typebreak"/> < _CharT, _Traits, _Alloc > </td><td class="memItemRight" valign="bottom"><b>_Util_Base</b></td></tr> <tr class="separator:a7c05ff432df8cf5b93cb28d812b5237e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a568f2a050b5b8ae920196a0899157ef3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a568f2a050b5b8ae920196a0899157ef3"></a> typedef _Alloc </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr> <tr class="separator:a568f2a050b5b8ae920196a0899157ef3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af62415c4f26f81b363ebe6d5b612f260"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af62415c4f26f81b363ebe6d5b612f260"></a> typedef <br class="typebreak"/> _CharT_alloc_type::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr> <tr class="separator:af62415c4f26f81b363ebe6d5b612f260"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af3b1120e0bc31cf2373f6ea2d73a9122"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3b1120e0bc31cf2373f6ea2d73a9122"></a> typedef _Traits </td><td class="memItemRight" valign="bottom"><b>traits_type</b></td></tr> <tr class="separator:af3b1120e0bc31cf2373f6ea2d73a9122"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a79883c5956b245aa810d38d871138a9b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a79883c5956b245aa810d38d871138a9b"></a> typedef _Traits::char_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr> <tr class="separator:a79883c5956b245aa810d38d871138a9b"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr class="memitem:af9ddd3f4c01c56461004dbee1fe365d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af9ddd3f4c01c56461004dbee1fe365d0"></a>  </td><td class="memItemRight" valign="bottom"><b>__rc_string_base</b> (const _Alloc &__a)</td></tr> <tr class="separator:af9ddd3f4c01c56461004dbee1fe365d0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aafa872f0c86a830350edf828c52bf7cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aafa872f0c86a830350edf828c52bf7cb"></a>  </td><td class="memItemRight" valign="bottom"><b>__rc_string_base</b> (const <a class="el" href="a00018.html">__rc_string_base</a> &__rcs)</td></tr> <tr class="separator:aafa872f0c86a830350edf828c52bf7cb"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a125bc6c1aab79fa25ec0d145f828449b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a125bc6c1aab79fa25ec0d145f828449b"></a>  </td><td class="memItemRight" valign="bottom"><b>__rc_string_base</b> (<a class="el" href="a00018.html">__rc_string_base</a> &&__rcs)</td></tr> <tr class="separator:a125bc6c1aab79fa25ec0d145f828449b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac1f37d753351363f325e3af8753d3d60"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1f37d753351363f325e3af8753d3d60"></a>  </td><td class="memItemRight" valign="bottom"><b>__rc_string_base</b> (size_type __n, _CharT __c, const _Alloc &__a)</td></tr> <tr class="separator:ac1f37d753351363f325e3af8753d3d60"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a65f2d5c2c5ccd94ac390b5aed0cde4b8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a65f2d5c2c5ccd94ac390b5aed0cde4b8"></a> template<typename _InputIterator > </td></tr> <tr class="memitem:a65f2d5c2c5ccd94ac390b5aed0cde4b8"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>__rc_string_base</b> (_InputIterator __beg, _InputIterator __end, const _Alloc &__a)</td></tr> <tr class="separator:a65f2d5c2c5ccd94ac390b5aed0cde4b8"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8c1c701941fa28cdce1c50bebebdcd7f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c1c701941fa28cdce1c50bebebdcd7f"></a> void </td><td class="memItemRight" valign="bottom"><b>_M_assign</b> (const <a class="el" href="a00018.html">__rc_string_base</a> &__rcs)</td></tr> <tr class="separator:a8c1c701941fa28cdce1c50bebebdcd7f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a355f8348bcd603e91fa77599b72aa8f1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a355f8348bcd603e91fa77599b72aa8f1"></a> size_type </td><td class="memItemRight" valign="bottom"><b>_M_capacity</b> () const </td></tr> <tr class="separator:a355f8348bcd603e91fa77599b72aa8f1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a364acb3f0c4c2aa7f119d873d97f1355"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a364acb3f0c4c2aa7f119d873d97f1355"></a> void </td><td class="memItemRight" valign="bottom"><b>_M_clear</b> ()</td></tr> <tr class="separator:a364acb3f0c4c2aa7f119d873d97f1355"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ace5d6be6d37d14594ef8fdb98cab3740"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace5d6be6d37d14594ef8fdb98cab3740"></a> bool </td><td class="memItemRight" valign="bottom"><b>_M_compare</b> (const <a class="el" href="a00018.html">__rc_string_base</a> &) const </td></tr> <tr class="separator:ace5d6be6d37d14594ef8fdb98cab3740"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3e7ce982140629c6953ba48ac88adeec"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3e7ce982140629c6953ba48ac88adeec"></a> template<> </td></tr> <tr class="memitem:a3e7ce982140629c6953ba48ac88adeec"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>_M_compare</b> (const <a class="el" href="a00018.html">__rc_string_base</a> &__rcs) const</td></tr> <tr class="separator:a3e7ce982140629c6953ba48ac88adeec"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a02d3c341476584bdb571b7ca1454ed9d"><td class="memTemplParams" colspan="2"><a class="anchor" id="a02d3c341476584bdb571b7ca1454ed9d"></a> template<> </td></tr> <tr class="memitem:a02d3c341476584bdb571b7ca1454ed9d"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>_M_compare</b> (const <a class="el" href="a00018.html">__rc_string_base</a> &__rcs) const</td></tr> <tr class="separator:a02d3c341476584bdb571b7ca1454ed9d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7f8ad96e81a84a3b4e3f14161976c730"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f8ad96e81a84a3b4e3f14161976c730"></a> _CharT * </td><td class="memItemRight" valign="bottom"><b>_M_data</b> () const </td></tr> <tr class="separator:a7f8ad96e81a84a3b4e3f14161976c730"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6b800764fecb9aa218fa96b2eb991f02"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b800764fecb9aa218fa96b2eb991f02"></a> void </td><td class="memItemRight" valign="bottom"><b>_M_erase</b> (size_type __pos, size_type __n)</td></tr> <tr class="separator:a6b800764fecb9aa218fa96b2eb991f02"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:acac154161a71a3535191862ad2f752c5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acac154161a71a3535191862ad2f752c5"></a> allocator_type & </td><td class="memItemRight" valign="bottom"><b>_M_get_allocator</b> ()</td></tr> <tr class="separator:acac154161a71a3535191862ad2f752c5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a127ffcddb58d15235c9d80de570e0612"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a127ffcddb58d15235c9d80de570e0612"></a> const allocator_type & </td><td class="memItemRight" valign="bottom"><b>_M_get_allocator</b> () const </td></tr> <tr class="separator:a127ffcddb58d15235c9d80de570e0612"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a71ffef4ce33b54e7b5c6192c32b2a2ad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a71ffef4ce33b54e7b5c6192c32b2a2ad"></a> bool </td><td class="memItemRight" valign="bottom"><b>_M_is_shared</b> () const </td></tr> <tr class="separator:a71ffef4ce33b54e7b5c6192c32b2a2ad"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a798b1ac0d3c8f2c20bd5453af3494f91"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a798b1ac0d3c8f2c20bd5453af3494f91"></a> void </td><td class="memItemRight" valign="bottom"><b>_M_leak</b> ()</td></tr> <tr class="separator:a798b1ac0d3c8f2c20bd5453af3494f91"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:abd0331c9c0842f6febe56aaf2ac284c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abd0331c9c0842f6febe56aaf2ac284c4"></a> size_type </td><td class="memItemRight" valign="bottom"><b>_M_length</b> () const </td></tr> <tr class="separator:abd0331c9c0842f6febe56aaf2ac284c4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a83d65d9fe847caaecc763f2836caebfb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83d65d9fe847caaecc763f2836caebfb"></a> size_type </td><td class="memItemRight" valign="bottom"><b>_M_max_size</b> () const </td></tr> <tr class="separator:a83d65d9fe847caaecc763f2836caebfb"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:adc54b4d970573f360c78c509fca2daad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc54b4d970573f360c78c509fca2daad"></a> void </td><td class="memItemRight" valign="bottom"><b>_M_mutate</b> (size_type __pos, size_type __len1, const _CharT *__s, size_type __len2)</td></tr> <tr class="separator:adc54b4d970573f360c78c509fca2daad"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a69aaa89924c18f34038da9cc70446f3f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69aaa89924c18f34038da9cc70446f3f"></a> void </td><td class="memItemRight" valign="bottom"><b>_M_reserve</b> (size_type __res)</td></tr> <tr class="separator:a69aaa89924c18f34038da9cc70446f3f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a61947e45f4afe0ab9e31745007d22893"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61947e45f4afe0ab9e31745007d22893"></a> void </td><td class="memItemRight" valign="bottom"><b>_M_set_leaked</b> ()</td></tr> <tr class="separator:a61947e45f4afe0ab9e31745007d22893"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4ead2deb5cc0acb1829cf4b4f3227d04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ead2deb5cc0acb1829cf4b4f3227d04"></a> void </td><td class="memItemRight" valign="bottom"><b>_M_set_length</b> (size_type __n)</td></tr> <tr class="separator:a4ead2deb5cc0acb1829cf4b4f3227d04"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1f7c41f7ab447c47904c8cad875f1c1d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f7c41f7ab447c47904c8cad875f1c1d"></a> void </td><td class="memItemRight" valign="bottom"><b>_M_swap</b> (<a class="el" href="a00018.html">__rc_string_base</a> &__rcs)</td></tr> <tr class="separator:a1f7c41f7ab447c47904c8cad875f1c1d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a94cabb035d82c6e09298000065c8ec49"><td class="memTemplParams" colspan="2"><a class="anchor" id="a94cabb035d82c6e09298000065c8ec49"></a> template<typename _InIterator > </td></tr> <tr class="memitem:a94cabb035d82c6e09298000065c8ec49"><td class="memTemplItemLeft" align="right" valign="top">_CharT * </td><td class="memTemplItemRight" valign="bottom"><b>_S_construct</b> (_InIterator __beg, _InIterator __end, const _Alloc &__a, <a class="el" href="a00665.html">std::forward_iterator_tag</a>)</td></tr> <tr class="separator:a94cabb035d82c6e09298000065c8ec49"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a> Protected Types</h2></td></tr> <tr class="memitem:afd5bf3e8b9ed7800015b1d5ac5eb12b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afd5bf3e8b9ed7800015b1d5ac5eb12b7"></a> typedef <br class="typebreak"/> __gnu_cxx::__normal_iterator<br class="typebreak"/> < const_pointer, <br class="typebreak"/> <a class="el" href="a00020.html">__gnu_cxx::__versa_string</a><br class="typebreak"/> < _CharT, _Traits, _Alloc, <br class="typebreak"/> <a class="el" href="a00018.html">__rc_string_base</a> > > </td><td class="memItemRight" valign="bottom"><b>__const_rc_iterator</b></td></tr> <tr class="separator:afd5bf3e8b9ed7800015b1d5ac5eb12b7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a72a9b8ee2da725fc9e090c4ac025c7e3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72a9b8ee2da725fc9e090c4ac025c7e3"></a> typedef <br class="typebreak"/> __gnu_cxx::__normal_iterator<br class="typebreak"/> < const_pointer, <br class="typebreak"/> <a class="el" href="a00020.html">__gnu_cxx::__versa_string</a><br class="typebreak"/> < _CharT, _Traits, _Alloc, <br class="typebreak"/> __sso_string_base > > </td><td class="memItemRight" valign="bottom"><b>__const_sso_iterator</b></td></tr> <tr class="separator:a72a9b8ee2da725fc9e090c4ac025c7e3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0e6ef4342dbb141769c88272c99bc8b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e6ef4342dbb141769c88272c99bc8b5"></a> typedef <br class="typebreak"/> __gnu_cxx::__normal_iterator<br class="typebreak"/> < pointer, <br class="typebreak"/> <a class="el" href="a00020.html">__gnu_cxx::__versa_string</a><br class="typebreak"/> < _CharT, _Traits, _Alloc, <br class="typebreak"/> <a class="el" href="a00018.html">__rc_string_base</a> > > </td><td class="memItemRight" valign="bottom"><b>__rc_iterator</b></td></tr> <tr class="separator:a0e6ef4342dbb141769c88272c99bc8b5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a44e976c363fd59b2e2afc9db4dc052bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44e976c363fd59b2e2afc9db4dc052bd"></a> typedef <br class="typebreak"/> __gnu_cxx::__normal_iterator<br class="typebreak"/> < pointer, <br class="typebreak"/> <a class="el" href="a00020.html">__gnu_cxx::__versa_string</a><br class="typebreak"/> < _CharT, _Traits, _Alloc, <br class="typebreak"/> __sso_string_base > > </td><td class="memItemRight" valign="bottom"><b>__sso_iterator</b></td></tr> <tr class="separator:a44e976c363fd59b2e2afc9db4dc052bd"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2468540de9b5d2a7e90f323a916f6fa6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2468540de9b5d2a7e90f323a916f6fa6"></a> typedef <br class="typebreak"/> _CharT_alloc_type::const_pointer </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr> <tr class="separator:a2468540de9b5d2a7e90f323a916f6fa6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac0ada1008ee1ec1475af0cbf21bba850"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0ada1008ee1ec1475af0cbf21bba850"></a> typedef <br class="typebreak"/> _CharT_alloc_type::difference_type </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr> <tr class="separator:ac0ada1008ee1ec1475af0cbf21bba850"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa6bbb3df89d6a6bfa05b18a03eb20a7a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa6bbb3df89d6a6bfa05b18a03eb20a7a"></a> typedef _CharT_alloc_type::pointer </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr> <tr class="separator:aa6bbb3df89d6a6bfa05b18a03eb20a7a"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a> Static Protected Member Functions</h2></td></tr> <tr class="memitem:ae3ce53d55e94c87b48f512554796ae99"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3ce53d55e94c87b48f512554796ae99"></a> static void </td><td class="memItemRight" valign="bottom"><b>_S_assign</b> (_CharT *__d, size_type __n, _CharT __c)</td></tr> <tr class="separator:ae3ce53d55e94c87b48f512554796ae99"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a035c54f4c119fd7114316a920c9139c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a035c54f4c119fd7114316a920c9139c6"></a> static int </td><td class="memItemRight" valign="bottom"><b>_S_compare</b> (size_type __n1, size_type __n2)</td></tr> <tr class="separator:a035c54f4c119fd7114316a920c9139c6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a10e4d89ffb64ded6a0d697b736d5af5d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a10e4d89ffb64ded6a0d697b736d5af5d"></a> static void </td><td class="memItemRight" valign="bottom"><b>_S_copy</b> (_CharT *__d, const _CharT *__s, size_type __n)</td></tr> <tr class="separator:a10e4d89ffb64ded6a0d697b736d5af5d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8e49e2ac574b1196159995e2625981f6"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8e49e2ac574b1196159995e2625981f6"></a> template<typename _Iterator > </td></tr> <tr class="memitem:a8e49e2ac574b1196159995e2625981f6"><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><b>_S_copy_chars</b> (_CharT *__p, _Iterator __k1, _Iterator __k2)</td></tr> <tr class="separator:a8e49e2ac574b1196159995e2625981f6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1ae7a576de3116a6241af83e1ca3d778"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ae7a576de3116a6241af83e1ca3d778"></a> static void </td><td class="memItemRight" valign="bottom"><b>_S_copy_chars</b> (_CharT *__p, __sso_iterator __k1, __sso_iterator __k2)</td></tr> <tr class="separator:a1ae7a576de3116a6241af83e1ca3d778"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:abc3a3f425a9ce9021f0d97a74c1bd0d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abc3a3f425a9ce9021f0d97a74c1bd0d2"></a> static void </td><td class="memItemRight" valign="bottom"><b>_S_copy_chars</b> (_CharT *__p, __const_sso_iterator __k1, __const_sso_iterator __k2)</td></tr> <tr class="separator:abc3a3f425a9ce9021f0d97a74c1bd0d2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9f908984163cf66696644564bebd8983"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f908984163cf66696644564bebd8983"></a> static void </td><td class="memItemRight" valign="bottom"><b>_S_copy_chars</b> (_CharT *__p, __rc_iterator __k1, __rc_iterator __k2)</td></tr> <tr class="separator:a9f908984163cf66696644564bebd8983"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a009b150759a0c2aba8bed1dccf2ac5b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a009b150759a0c2aba8bed1dccf2ac5b9"></a> static void </td><td class="memItemRight" valign="bottom"><b>_S_copy_chars</b> (_CharT *__p, __const_rc_iterator __k1, __const_rc_iterator __k2)</td></tr> <tr class="separator:a009b150759a0c2aba8bed1dccf2ac5b9"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:accf3857a389b9f35e13034a3eab1576d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="accf3857a389b9f35e13034a3eab1576d"></a> static void </td><td class="memItemRight" valign="bottom"><b>_S_copy_chars</b> (_CharT *__p, _CharT *__k1, _CharT *__k2)</td></tr> <tr class="separator:accf3857a389b9f35e13034a3eab1576d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4e3807c8de72d22a563a65125ff309be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e3807c8de72d22a563a65125ff309be"></a> static void </td><td class="memItemRight" valign="bottom"><b>_S_copy_chars</b> (_CharT *__p, const _CharT *__k1, const _CharT *__k2)</td></tr> <tr class="separator:a4e3807c8de72d22a563a65125ff309be"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a70d3b141492f2ac9b622775952612af7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70d3b141492f2ac9b622775952612af7"></a> static void </td><td class="memItemRight" valign="bottom"><b>_S_move</b> (_CharT *__d, const _CharT *__s, size_type __n)</td></tr> <tr class="separator:a70d3b141492f2ac9b622775952612af7"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><h3>template<typename _CharT, typename _Traits, typename _Alloc><br/> class __gnu_cxx::__rc_string_base< _CharT, _Traits, _Alloc ></h3> <p>Documentation? What's that? Nathan Myers <a href="#" onclick="location.href='mai'+'lto:'+'ncm'+'@c'+'ant'+'ri'+'p.o'+'rg'; return false;">ncm@c<span style="display: none;">.nosp@m.</span>antr<span style="display: none;">.nosp@m.</span>ip.or<span style="display: none;">.nosp@m.</span>g</a>.</p> <p>A string looks like this:</p> <div class="fragment"><div class="line"> [_Rep]</div> <div class="line"> _M_length</div> <div class="line">[__rc_string_base<char_type>] _M_capacity</div> <div class="line">_M_dataplus _M_refcount</div> <div class="line">_M_p ----------------> unnamed array of char_type</div> </div><!-- fragment --><p>Where the _M_p points to the first character in the string, and you cast it to a pointer-to-_Rep and subtract 1 to get a pointer to the header.</p> <p>This approach has the enormous advantage that a string object requires only one allocation. All the ugliness is confined within a single pair of inline functions, which each compile to a single <em>add</em> instruction: _Rep::_M_refdata(), and __rc_string_base::_M_rep(); and the allocation function which gets a block of raw bytes and with room enough and constructs a _Rep object at the front.</p> <p>The reason you want _M_data pointing to the character array and not the _Rep is so that the debugger can see the string contents. (Probably we should add a non-inline member to get the _Rep for the debugger to use, so users can check the actual string length.)</p> <p>Note that the _Rep object is a POD so that you can have a static <em>empty string</em> _Rep object already <em>constructed</em> before static constructors have run. The reference-count encoding is chosen so that a 0 indicates one reference, so you never try to destroy the empty-string _Rep object.</p> <p>All but the last paragraph is considered pretty conventional for a C++ string implementation. </p> <p>Definition at line <a class="el" href="a01408_source.html#l00083">83</a> of file <a class="el" href="a01408_source.html">rc_string_base.h</a>.</p> </div><hr/>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="a01408_source.html">rc_string_base.h</a></li> </ul> </div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="navelem"><a class="el" href="a01591.html">__gnu_cxx</a></li><li class="navelem"><a class="el" href="a00018.html">__rc_string_base</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.3 </li> </ul> </div> </body> </html>