PHP 8.2.30
Preview: string_view.tcc Size: 6.54 KB
/usr/include/c++/8/bits/string_view.tcc

// Components for manipulating non-owning sequences of characters -*- C++ -*-

// Copyright (C) 2013-2018 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.

// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

/** @file include/bits/string_view.tcc
 *  This is an internal header file, included by other library headers.
 *  Do not attempt to use it directly. @headername{string_view}
 */

//
// N3762 basic_string_view library
//

#ifndef _GLIBCXX_STRING_VIEW_TCC
#define _GLIBCXX_STRING_VIEW_TCC 1

#pragma GCC system_header

#if __cplusplus >= 201703L

namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

  template<typename _CharT, typename _Traits>
    constexpr typename basic_string_view<_CharT, _Traits>::size_type
    basic_string_view<_CharT, _Traits>::
    find(const _CharT* __str, size_type __pos, size_type __n) const noexcept
    {
      __glibcxx_requires_string_len(__str, __n);

      if (__n == 0)
	return __pos <= this->_M_len ? __pos : npos;

      if (__n <= this->_M_len)
	{
	  for (; __pos <= this->_M_len - __n; ++__pos)
	    if (traits_type::eq(this->_M_str[__pos], __str[0])
		&& traits_type::compare(this->_M_str + __pos + 1,
					__str + 1, __n - 1) == 0)
	      return __pos;
	}
      return npos;
    }

  template<typename _CharT, typename _Traits>
    constexpr typename basic_string_view<_CharT, _Traits>::size_type
    basic_string_view<_CharT, _Traits>::
    find(_CharT __c, size_type __pos) const noexcept
    {
      size_type __ret = npos;
      if (__pos < this->_M_len)
	{
	  const size_type __n = this->_M_len - __pos;
	  const _CharT* __p = traits_type::find(this->_M_str + __pos, __n, __c);
	  if (__p)
	    __ret = __p - this->_M_str;
	}
      return __ret;
    }

  template<typename _CharT, typename _Traits>
    constexpr typename basic_string_view<_CharT, _Traits>::size_type
    basic_string_view<_CharT, _Traits>::
    rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept
    {
      __glibcxx_requires_string_len(__str, __n);

      if (__n <= this->_M_len)
	{
	  __pos = std::min(size_type(this->_M_len - __n), __pos);
	  do
	    {
	      if (traits_type::compare(this->_M_str + __pos, __str, __n) == 0)
		return __pos;
	    }
	  while (__pos-- > 0);
	}
      return npos;
    }

  template<typename _CharT, typename _Traits>
    constexpr typename basic_string_view<_CharT, _Traits>::size_type
    basic_string_view<_CharT, _Traits>::
    rfind(_CharT __c, size_type __pos) const noexcept
    {
      size_type __size = this->_M_len;
      if (__size > 0)
	{
	  if (--__size > __pos)
	    __size = __pos;
	  for (++__size; __size-- > 0; )
	    if (traits_type::eq(this->_M_str[__size], __c))
	      return __size;
	}
      return npos;
    }

  template<typename _CharT, typename _Traits>
    constexpr typename basic_string_view<_CharT, _Traits>::size_type
    basic_string_view<_CharT, _Traits>::
    find_first_of(const _CharT* __str, size_type __pos,
		  size_type __n) const noexcept
    {
      __glibcxx_requires_string_len(__str, __n);
      for (; __n && __pos < this->_M_len; ++__pos)
	{
	  const _CharT* __p = traits_type::find(__str, __n,
						this->_M_str[__pos]);
	  if (__p)
	    return __pos;
	}
      return npos;
    }

  template<typename _CharT, typename _Traits>
    constexpr typename basic_string_view<_CharT, _Traits>::size_type
    basic_string_view<_CharT, _Traits>::
    find_last_of(const _CharT* __str, size_type __pos,
		 size_type __n) const noexcept
    {
      __glibcxx_requires_string_len(__str, __n);
      size_type __size = this->size();
      if (__size && __n)
	{
	  if (--__size > __pos)
	    __size = __pos;
	  do
	    {
	      if (traits_type::find(__str, __n, this->_M_str[__size]))
		return __size;
	    }
	  while (__size-- != 0);
	}
      return npos;
    }

  template<typename _CharT, typename _Traits>
    constexpr typename basic_string_view<_CharT, _Traits>::size_type
    basic_string_view<_CharT, _Traits>::
    find_first_not_of(const _CharT* __str, size_type __pos,
		      size_type __n) const noexcept
    {
      __glibcxx_requires_string_len(__str, __n);
      for (; __pos < this->_M_len; ++__pos)
	if (!traits_type::find(__str, __n, this->_M_str[__pos]))
	  return __pos;
      return npos;
    }

  template<typename _CharT, typename _Traits>
    constexpr typename basic_string_view<_CharT, _Traits>::size_type
    basic_string_view<_CharT, _Traits>::
    find_first_not_of(_CharT __c, size_type __pos) const noexcept
    {
      for (; __pos < this->_M_len; ++__pos)
	if (!traits_type::eq(this->_M_str[__pos], __c))
	  return __pos;
      return npos;
    }

  template<typename _CharT, typename _Traits>
    constexpr typename basic_string_view<_CharT, _Traits>::size_type
    basic_string_view<_CharT, _Traits>::
    find_last_not_of(const _CharT* __str, size_type __pos,
		     size_type __n) const noexcept
    {
      __glibcxx_requires_string_len(__str, __n);
      size_type __size = this->_M_len;
      if (__size)
	{
	  if (--__size > __pos)
	    __size = __pos;
	  do
	    {
	      if (!traits_type::find(__str, __n, this->_M_str[__size]))
		return __size;
	    }
	  while (__size--);
	}
      return npos;
    }

  template<typename _CharT, typename _Traits>
    constexpr typename basic_string_view<_CharT, _Traits>::size_type
    basic_string_view<_CharT, _Traits>::
    find_last_not_of(_CharT __c, size_type __pos) const noexcept
    {
      size_type __size = this->_M_len;
      if (__size)
	{
	  if (--__size > __pos)
	    __size = __pos;
	  do
	    {
	      if (!traits_type::eq(this->_M_str[__size], __c))
		return __size;
	    }
	  while (__size--);
	}
      return npos;
    }

_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std

#endif // __cplusplus <= 201402L

#endif // _GLIBCXX_STRING_VIEW_TCC

Directory Contents

Dirs: 0 × Files: 128

Name Size Perms Modified Actions
21.23 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
3.22 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
7.39 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
19.60 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
23.28 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
9.35 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
2.20 KB lrw-r--r-- 2025-08-26 09:45:07
Edit Download
15.70 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
5.94 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
237.01 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
52.50 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
26.52 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
1.44 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
20.42 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
20.79 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
3.34 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
9.56 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
1.77 KB lrw-r--r-- 2025-08-26 09:45:07
Edit Download
2.17 KB lrw-r--r-- 2025-08-26 09:45:07
Edit Download
33.32 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
12.10 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
2.23 KB lrw-r--r-- 2025-08-26 09:45:07
Edit Download
1.61 KB lrw-r--r-- 2025-08-26 09:45:07
Edit Download
5.84 KB lrw-r--r-- 2025-08-26 09:45:07
Edit Download
47.77 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
12.86 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
32.03 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
14.38 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
10.04 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
9.50 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
32.12 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
3.18 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
8.04 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
5.39 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
7.59 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
72.06 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
66.38 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
2.10 KB lrw-r--r-- 2025-08-26 09:45:07
Edit Download
7.68 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
3.57 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
30.30 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
30.36 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
15.60 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
5.51 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
24.31 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
8.18 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
15.72 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
90.16 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
38.62 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
67.36 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
44.22 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
7.42 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
2.40 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
6.38 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
4.69 KB lrw-r--r-- 2025-08-26 09:45:07
Edit Download
8.02 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
12.03 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
3.91 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
7.76 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
8.02 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
8.87 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
6.47 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
4.93 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
171.14 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
103.12 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
9.79 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
11.61 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
95.12 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
16.18 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
10.47 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
7.65 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
17.63 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
18.84 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
14.36 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
4.79 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
7.31 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
18.40 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
6.92 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
14.66 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
22.88 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
9.54 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
53.01 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
9.13 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
45.95 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
9.90 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
3.19 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
22.71 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
9.08 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
209.27 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
49.31 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
32.94 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
7.22 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
76.73 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
40.77 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
19.73 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
41.30 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
7.99 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
8.48 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
65.97 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
51.55 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
40.58 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
34.97 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
13.51 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
18.21 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
23.51 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
3.74 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
4.49 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
35.28 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
11.66 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
8.15 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
73.15 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
27.06 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
59.12 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
4.81 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
13.44 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
6.50 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
2.55 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
6.54 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
9.84 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
25.38 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
73.58 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
57.76 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
6.37 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
22.12 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
21.30 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
7.08 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
18.08 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download
28.95 KB lrw-r--r-- 2025-08-26 09:45:00
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).