Unix/Linux Go Back    


CentOS 7.0 - man page for __gnu_cxx::__rc_string_base (centos section 3)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)


__gnu_cxx::__rc_string_base< _CharT, _Tr__gnu_cxx::__rc_string_base< _CharT, _Traits, _Alloc >(3)

NAME
       __gnu_cxx::__rc_string_base< _CharT, _Traits, _Alloc > -

SYNOPSIS
       Inherits __gnu_cxx::__vstring_utility< _CharT, _Traits, _Alloc >.

   Public Types
       typedef
	   _Util_Base::_CharT_alloc_type _CharT_alloc_type"
       typedef __vstring_utility
	   < _CharT, _Traits, _Alloc > _Util_Base"
       typedef _Alloc allocator_type
       typedef
	   _CharT_alloc_type::size_type size_type"
       typedef _Traits traits_type
       typedef _Traits::char_type value_type

   Public Member Functions
       __rc_string_base (const _Alloc &__a)
       __rc_string_base (const __rc_string_base &__rcs)
       __rc_string_base (__rc_string_base &&__rcs)
       __rc_string_base (size_type __n, _CharT __c, const _Alloc &__a)
       template<typename _InputIterator > __rc_string_base (_InputIterator __beg, _InputIterator
	   __end, const _Alloc &__a)
       void _M_assign (const __rc_string_base &__rcs)
       size_type _M_capacity () const
       void _M_clear ()
       bool _M_compare (const __rc_string_base &) const
       template<> bool _M_compare (const __rc_string_base &__rcs) const
       template<> bool _M_compare (const __rc_string_base &__rcs) const
       _CharT * _M_data () const
       void _M_erase (size_type __pos, size_type __n)
       allocator_type & _M_get_allocator ()
       const allocator_type & _M_get_allocator () const
       bool _M_is_shared () const
       void _M_leak ()
       size_type _M_length () const
       size_type _M_max_size () const
       void _M_mutate (size_type __pos, size_type __len1, const _CharT *__s, size_type __len2)
       void _M_reserve (size_type __res)
       void _M_set_leaked ()
       void _M_set_length (size_type __n)
       void _M_swap (__rc_string_base &__rcs)
       template<typename _InIterator > _CharT * _S_construct (_InIterator __beg, _InIterator
	   __end, const _Alloc &__a, std::forward_iterator_tag)

   Protected Types
       typedef
	   __gnu_cxx::__normal_iterator
	   < const_pointer,
	   __gnu_cxx::__versa_string
	   < _CharT, _Traits, _Alloc,
	   __rc_string_base > > __const_rc_iterator"
       typedef
	   __gnu_cxx::__normal_iterator
	   < const_pointer,
	   __gnu_cxx::__versa_string
	   < _CharT, _Traits, _Alloc,
	   __sso_string_base > > __const_sso_iterator"
       typedef
	   __gnu_cxx::__normal_iterator
	   < pointer,
	   __gnu_cxx::__versa_string
	   < _CharT, _Traits, _Alloc,
	   __rc_string_base > > __rc_iterator"
       typedef
	   __gnu_cxx::__normal_iterator
	   < pointer,
	   __gnu_cxx::__versa_string
	   < _CharT, _Traits, _Alloc,
	   __sso_string_base > > __sso_iterator"
       typedef
	   _CharT_alloc_type::const_pointer const_pointer"
       typedef
	   _CharT_alloc_type::difference_type difference_type"
       typedef _CharT_alloc_type::pointer pointer

   Static Protected Member Functions
       static void _S_assign (_CharT *__d, size_type __n, _CharT __c)
       static int _S_compare (size_type __n1, size_type __n2)
       static void _S_copy (_CharT *__d, const _CharT *__s, size_type __n)
       template<typename _Iterator > static void _S_copy_chars (_CharT *__p, _Iterator __k1,
	   _Iterator __k2)
       static void _S_copy_chars (_CharT *__p, __sso_iterator __k1, __sso_iterator __k2)
       static void _S_copy_chars (_CharT *__p, __const_sso_iterator __k1, __const_sso_iterator
	   __k2)
       static void _S_copy_chars (_CharT *__p, __rc_iterator __k1, __rc_iterator __k2)
       static void _S_copy_chars (_CharT *__p, __const_rc_iterator __k1, __const_rc_iterator
	   __k2)
       static void _S_copy_chars (_CharT *__p, _CharT *__k1, _CharT *__k2)
       static void _S_copy_chars (_CharT *__p, const _CharT *__k1, const _CharT *__k2)
       static void _S_move (_CharT *__d, const _CharT *__s, size_type __n)

Detailed Description
   template<typename _CharT, typename _Traits, typename _Alloc>class __gnu_cxx::__rc_string_base<
       _CharT, _Traits, _Alloc >
       Documentation? What's that? Nathan Myers ncm@cantrip.org.

       A string looks like this:

       *					[_Rep]
       *					_M_length
       *   [__rc_string_base<char_type>]	_M_capacity
       *   _M_dataplus				_M_refcount
       *   _M_p ---------------->		unnamed array of char_type
       *

       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.

       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 add 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.

       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.)

       Note that the _Rep object is a POD so that you can have a static empty string _Rep object
       already constructed 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.

       All but the last paragraph is considered pretty conventional for a C++ string
       implementation.

       Definition at line 82 of file rc_string_base.h.

Author
       Generated automatically by Doxygen for libstdc++ from the source code.

libstdc++				__gnu_cxx::__rc_string_base< _CharT, _Traits, _Alloc >(3)
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums


All times are GMT -4. The time now is 04:57 AM.