diff options
author | Lancelot Six <lancelot.six@amd.com> | 2023-10-13 10:23:59 +0000 |
---|---|---|
committer | Lancelot Six <lancelot.six@amd.com> | 2023-11-21 11:52:36 +0000 |
commit | 393be56421a81e44c8728c8b31df66b319697398 (patch) | |
tree | 9c173828a2b54aeac5329a1acd9cdcb90a36b8f5 | |
parent | 882b0505164f9474ef565cbc237df34a65061a8f (diff) | |
download | binutils-393be56421a81e44c8728c8b31df66b319697398.zip binutils-393be56421a81e44c8728c8b31df66b319697398.tar.gz binutils-393be56421a81e44c8728c8b31df66b319697398.tar.bz2 |
gdbsupport: Remove gdb::string_view
Now that all places using gdb::string_view have been updated to use
std::string_view, this patch drops the gdb::string_view implementation
and the tests which came with it.
As this drops the unittests/string_view-selftests.c, this also
implicitly solves PR build/23676, as pointed-out by Tom Tromey.
Change-Id: Idf5479b09e0ac536917b3f0e13aca48424b90df0
Approved-By: Tom Tromey <tom@tromey.com>
Approved-By: Pedro Alves <pedro@palves.net>
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=23676
76 files changed, 0 insertions, 6296 deletions
diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 714564f..a50628e 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -482,7 +482,6 @@ SELFTESTS_SRCS = \ unittests/scoped_mmap-selftests.c \ unittests/scoped_restore-selftests.c \ unittests/search-memory-selftests.c \ - unittests/string_view-selftests.c \ unittests/style-selftests.c \ unittests/tracepoint-selftests.c \ unittests/tui-selftests.c \ diff --git a/gdb/unittests/basic_string_view/capacity/1.cc b/gdb/unittests/basic_string_view/capacity/1.cc deleted file mode 100644 index 12470a9..0000000 --- a/gdb/unittests/basic_string_view/capacity/1.cc +++ /dev/null @@ -1,172 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// string_view size, length - -namespace capacity_1 { - -template<typename T> - struct A { }; - -template<typename T> - bool - operator==(const A<T>&, const A<T>&) { return true; } - -template<typename T> - bool - operator<(const A<T>&, const A<T>&) { return true; } - -struct B { }; - -} // namespace capacity_1 -} // namespace string_view -} // namespace selftests - -// char_traits specialization -namespace std -{ - template<> - struct char_traits<selftests::string_view::capacity_1::A< - selftests::string_view::capacity_1::B> > - { - typedef selftests::string_view::capacity_1::A< - selftests::string_view::capacity_1::B> char_type; - // Unsigned as wint_t in unsigned. - typedef unsigned long int_type; - typedef streampos pos_type; - typedef streamoff off_type; - typedef mbstate_t state_type; - - static void - assign(char_type& __c1, const char_type& __c2) - { __c1 = __c2; } - - static bool - eq(const char_type& __c1, const char_type& __c2) - { return __c1 == __c2; } - - static bool - lt(const char_type& __c1, const char_type& __c2) - { return __c1 < __c2; } - - static int - compare(const char_type* __s1, const char_type* __s2, size_t __n) - { - for (size_t __i = 0; __i < __n; ++__i) - if (!eq(__s1[__i], __s2[__i])) - return lt(__s1[__i], __s2[__i]) ? -1 : 1; - return 0; - } - - static size_t - length(const char_type* __s) - { - const char_type* __p = __s; - while (__p) - ++__p; - return (__p - __s); - } - - static const char_type* - find(const char_type* __s, size_t __n, const char_type& __a) - { - for (const char_type* __p = __s; size_t(__p - __s) < __n; ++__p) - if (*__p == __a) return __p; - return 0; - } - - static char_type* - move(char_type* __s1, const char_type* __s2, size_t __n) - { return (char_type*) memmove(__s1, __s2, __n * sizeof(char_type)); } - - static char_type* - copy(char_type* __s1, const char_type* __s2, size_t __n) - { return (char_type*) memcpy(__s1, __s2, __n * sizeof(char_type)); } - - static char_type* - assign(char_type* __s, size_t __n, char_type __a) - { - for (char_type* __p = __s; __p < __s + __n; ++__p) - assign(*__p, __a); - return __s; - } - - static char_type - to_char_type(const int_type&) - { return char_type(); } - - static int_type - to_int_type(const char_type&) { return int_type(); } - - static bool - eq_int_type(const int_type& __c1, const int_type& __c2) - { return __c1 == __c2; } - - static int_type - eof() { return static_cast<int_type>(-1); } - - static int_type - not_eof(const int_type& __c) - { return eq_int_type(__c, eof()) ? int_type(0) : __c; } - }; -} // namespace std - -namespace selftests { -namespace string_view { -namespace capacity_1 { - -static void -test01 () -{ - gdb::basic_string_view<A<B>> str02; - typedef gdb::basic_string_view< A<B> >::size_type size_type_o; - size_type_o sz03; - size_type_o sz04; - - // non-POD types: size, length, max_size, empty() - bool b01 = str02.empty(); - VERIFY( b01 == true ); - sz03 = str02.size(); - sz04 = str02.length(); - VERIFY( sz03 == sz04 ); - str02.data(); - sz03 = str02.size(); - sz04 = str02.length(); - VERIFY( sz03 == sz04 ); - - sz03 = str02.max_size(); - VERIFY( sz03 >= sz04 ); - - sz03 = str02.size(); - str02 = {}; - b01 = str02.empty(); - VERIFY( b01 == true ); - sz04 = str02.size(); - VERIFY( sz03 >= sz04 ); -} - -static int -main() -{ - test01(); - - return 0; -} - -} // namespace capacity_1 diff --git a/gdb/unittests/basic_string_view/capacity/empty_neg.cc b/gdb/unittests/basic_string_view/capacity/empty_neg.cc deleted file mode 100644 index 4cb1bea..0000000 --- a/gdb/unittests/basic_string_view/capacity/empty_neg.cc +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (C) 2017-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// { dg-options "-std=gnu++17" } -// { dg-do compile { target c++17 } } - -#include <string_view> - -void -test01() -{ - std::string_view s; - s.empty(); // { dg-warning "ignoring return value" } -} diff --git a/gdb/unittests/basic_string_view/cons/char/1.cc b/gdb/unittests/basic_string_view/cons/char/1.cc deleted file mode 100644 index b27f999..0000000 --- a/gdb/unittests/basic_string_view/cons/char/1.cc +++ /dev/null @@ -1,67 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view constructors. - -namespace cons_1 { - -static void -test01 () -{ - typedef gdb::string_view::size_type csize_type; - - // basic_string_view() - const gdb::string_view str00{}; - VERIFY( str00.length() == 0 ); - VERIFY( str00.data() == nullptr ); - - // basic_string_view(const char*) - const char str_lit01[] = "rodeo beach, marin"; - const gdb::string_view str01{str_lit01}; - VERIFY( str01.length() == 18 ); - VERIFY( str01.data() == str_lit01 ); - const gdb::string_view str02{"baker beach, san francisco"}; - VERIFY( str02.length() == 26 ); - - // basic_string_view(const string_view&) - gdb::string_view str04{str01}; - VERIFY( str04.length() == str01.length() ); - VERIFY( str04.data() == str01.data() ); - - // basic_string_view(const char* s) - csize_type len_lit01 = strlen(str_lit01); - gdb::string_view str05{str_lit01, len_lit01}; - VERIFY( str05.length() == len_lit01 ); - VERIFY( str05.data() == str_lit01 ); - - // basic_string_view(basic_string& s) - std::string istr07(10, 'z'); - gdb::string_view str07{istr07}; - VERIFY( str07.length() == 10 ); -} - -static int -main () -{ - test01(); - - return 0; -} - -} // namespace cons_1 diff --git a/gdb/unittests/basic_string_view/cons/char/2.cc b/gdb/unittests/basic_string_view/cons/char/2.cc deleted file mode 100644 index 22a7916..0000000 --- a/gdb/unittests/basic_string_view/cons/char/2.cc +++ /dev/null @@ -1,46 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view constructors. - -namespace cons_2 { - -static void -test03 () -{ - const char* with_nulls = "This contains \0 a zero byte."; - - // These are tests to see how basic_string_view handles data with NUL - // bytes. Obviously basic_string_view(char*) will halt at the first one, but - // nothing else should. - gdb::string_view s1(with_nulls, 28); - VERIFY( s1.size() == 28 ); - gdb::string_view s2(s1); - VERIFY( s2.size() == 28 ); -} - -static int -main () -{ - test03(); - - return 0; -} - -} // namespace cons_2 diff --git a/gdb/unittests/basic_string_view/cons/char/3.cc b/gdb/unittests/basic_string_view/cons/char/3.cc deleted file mode 100644 index ab98b0b..0000000 --- a/gdb/unittests/basic_string_view/cons/char/3.cc +++ /dev/null @@ -1,39 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view constructors. - -namespace cons_3 { - -static void -test05 () -{ - char const * s = 0; - gdb::string_view zero_length_built_with_NULL(s, 0); -} - -static int -main () -{ - test05(); - - return 0; -} - -} // namespace cons_3 diff --git a/gdb/unittests/basic_string_view/cons/wchar_t/1.cc b/gdb/unittests/basic_string_view/cons/wchar_t/1.cc deleted file mode 100644 index 8a1599c..0000000 --- a/gdb/unittests/basic_string_view/cons/wchar_t/1.cc +++ /dev/null @@ -1,68 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view constructors. - -#include <string_view> -#include <string> -#include <cwchar> -#include <testsuite_hooks.h> - -void -test01() -{ - typedef std::wstring_view::size_type csize_type; - - // basic_string_view() - const std::wstring_view str00{}; - VERIFY( str00.length() == 0 ); - VERIFY( str00.data() == nullptr ); - - // basic_string_view(const char*) - const wchar_t str_lit01[] = L"rodeo beach, marin"; - const std::wstring_view str01{str_lit01}; - VERIFY( str01.length() == 18 ); - VERIFY( str01.data() == str_lit01 ); - const std::wstring_view str02{L"baker beach, san francisco"}; - VERIFY( str02.length() == 26 ); - - // basic_string_view(const string_view&) - std::wstring_view str04{str01}; - VERIFY( str04.length() == str01.length() ); - VERIFY( str04.data() == str01.data() ); - - // basic_string_view(const char* s) - csize_type len_lit01 = wcslen(str_lit01); - std::wstring_view str05{str_lit01, len_lit01}; - VERIFY( str05.length() == len_lit01 ); - VERIFY( str05.data() == str_lit01 ); - - // basic_string_view(basic_string& s) - std::wstring istr07(10, L'z'); - std::wstring_view str07{istr07}; - VERIFY( str07.length() == 10 ); -} - -int -main() -{ - test01(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/cons/wchar_t/2.cc b/gdb/unittests/basic_string_view/cons/wchar_t/2.cc deleted file mode 100644 index 54a7fe5..0000000 --- a/gdb/unittests/basic_string_view/cons/wchar_t/2.cc +++ /dev/null @@ -1,45 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view constructors. - -#include <string_view> -#include <testsuite_hooks.h> - -void -test03() -{ - const wchar_t* with_nulls = L"This contains \0 a zero byte."; - - // These are tests to see how basic_string_view handles data with NUL - // bytes. Obviously basic_string_view(char*) will halt at the first one, but - // nothing else should. - std::wstring_view s1 (with_nulls, 28); - VERIFY( s1.size() == 28 ); - std::wstring_view s2 (s1); - VERIFY( s2.size() == 28 ); -} - -int -main() -{ - test03(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/cons/wchar_t/3.cc b/gdb/unittests/basic_string_view/cons/wchar_t/3.cc deleted file mode 100644 index 540683f..0000000 --- a/gdb/unittests/basic_string_view/cons/wchar_t/3.cc +++ /dev/null @@ -1,38 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view constructors. - -#include <string_view> -#include <testsuite_hooks.h> - -void -test05() -{ - wchar_t const * s = 0; - std::wstring_view zero_length_built_with_NULL(s, 0); -} - -int -main() -{ - test05(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/element_access/char/1.cc b/gdb/unittests/basic_string_view/element_access/char/1.cc deleted file mode 100644 index 788d174..0000000 --- a/gdb/unittests/basic_string_view/element_access/char/1.cc +++ /dev/null @@ -1,70 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string element access - -namespace element_access_1 { - -static void -test01 () -{ - typedef gdb::string_view::size_type csize_type; - typedef gdb::string_view::const_reference cref; - typedef gdb::string_view::reference ref; - csize_type csz01; - - const gdb::string_view str01("tamarindo, costa rica"); - gdb::string_view str02("41st street beach, capitola, california"); - gdb::string_view str03; - - // const_reference operator[] (size_type pos) const; - csz01 = str01.size(); - cref cref1 = str01[csz01 - 1]; - VERIFY( cref1 == 'a' ); - // Undefined behavior at size(). - //cref cref2 = str01[csz01]; - //VERIFY( cref2 == char() ); - - // const_reference at(size_type pos) const; - csz01 = str01.size(); - cref cref3 = str01.at(csz01 - 1); - VERIFY( cref3 == 'a' ); - try - { - str01.at(csz01); - VERIFY( false ); // Should not get here, as exception thrown. - } - catch (gdb_exception& fail) - { - VERIFY( true ); - } - catch (...) - { - VERIFY( false ); - } -} - -static int -main () -{ - test01(); - return 0; -} - -} // namespace element_access_1 diff --git a/gdb/unittests/basic_string_view/element_access/char/2.cc b/gdb/unittests/basic_string_view/element_access/char/2.cc deleted file mode 100644 index 938916e..0000000 --- a/gdb/unittests/basic_string_view/element_access/char/2.cc +++ /dev/null @@ -1,30 +0,0 @@ -// { dg-do run { xfail *-*-* } } -// { dg-options "-std=gnu++17 -O0" } -// { dg-require-debug-mode "" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -#include <string_view> - -int -main() -{ - typedef std::string_view string_view_type; - string_view_type s; - s[0]; // abort -} diff --git a/gdb/unittests/basic_string_view/element_access/char/empty.cc b/gdb/unittests/basic_string_view/element_access/char/empty.cc deleted file mode 100644 index 030c96a..0000000 --- a/gdb/unittests/basic_string_view/element_access/char/empty.cc +++ /dev/null @@ -1,39 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. -// -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. -// - -namespace element_access_empty { - -static int -main () -{ - { - gdb::string_view empty; - VERIFY( empty.empty() ); - } - - { - const gdb::string_view empty; - VERIFY( empty.empty() ); - } - - return 0; -} - -} // namespace element_access_empty diff --git a/gdb/unittests/basic_string_view/element_access/char/front_back.cc b/gdb/unittests/basic_string_view/element_access/char/front_back.cc deleted file mode 100644 index 7e767fc..0000000 --- a/gdb/unittests/basic_string_view/element_access/char/front_back.cc +++ /dev/null @@ -1,43 +0,0 @@ -// { dg-options "-std=gnu++17" } -// { dg-require-string-conversions "" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -namespace element_access_front_back { - -static void -test01 () -{ - gdb::string_view str("ramifications"); - const gdb::string_view cstr("melodien"); - - VERIFY( str.front() == 'r' ); - VERIFY( str.back() == 's' ); - VERIFY( cstr.front() == 'm' ); - VERIFY( cstr.back() == 'n' ); -} - -static int -main () -{ - test01(); - - return 0; -} - -} // namespace element_access_front_back diff --git a/gdb/unittests/basic_string_view/element_access/wchar_t/1.cc b/gdb/unittests/basic_string_view/element_access/wchar_t/1.cc deleted file mode 100644 index 679772b..0000000 --- a/gdb/unittests/basic_string_view/element_access/wchar_t/1.cc +++ /dev/null @@ -1,71 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view element access - -#include <string_view> -#include <stdexcept> -#include <testsuite_hooks.h> - -void -test01() -{ - typedef std::wstring_view::size_type csize_type; - typedef std::wstring_view::const_reference cref; - typedef std::wstring_view::reference ref; - csize_type csz01, csz02; - - const std::wstring_view str01(L"tamarindo, costa rica"); - std::wstring_view str02(L"41st street beach, capitola, california"); - std::wstring_view str03; - - // const_reference operator[] (size_type pos) const; - csz01 = str01.size(); - cref cref1 = str01[csz01 - 1]; - VERIFY( cref1 == L'a' ); - // Undefined behavior at size(). - //cref cref2 = str01[csz01]; - //VERIFY( cref2 == wchar_t() ); - - // const_reference at(size_type pos) const; - csz01 = str01.size(); - cref cref3 = str01.at(csz01 - 1); - VERIFY( cref3 == L'a' ); - try - { - str01.at(csz01); - VERIFY( false ); // Should not get here, as exception thrown. - } - catch (std::out_of_range& fail) - { - VERIFY( true ); - } - catch (...) - { - VERIFY( false ); - } -} - -int -main() -{ - test01(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/element_access/wchar_t/2.cc b/gdb/unittests/basic_string_view/element_access/wchar_t/2.cc deleted file mode 100644 index cdbc6a5..0000000 --- a/gdb/unittests/basic_string_view/element_access/wchar_t/2.cc +++ /dev/null @@ -1,32 +0,0 @@ -// { dg-do run { xfail *-*-* } } -// { dg-options "-std=gnu++17 -O0" } -// { dg-require-debug-mode "" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -#include <string_view> - -// libstdc++/21674 -// NB: Should work without any inlining or optimizations (ie. -O0). -int -main() -{ - typedef std::wstring_view string_view_type; - string_view_type s; - s[0]; // abort -} diff --git a/gdb/unittests/basic_string_view/element_access/wchar_t/empty.cc b/gdb/unittests/basic_string_view/element_access/wchar_t/empty.cc deleted file mode 100644 index f31d34a..0000000 --- a/gdb/unittests/basic_string_view/element_access/wchar_t/empty.cc +++ /dev/null @@ -1,38 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. -// -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. -// - -#include <string_view> -#include <testsuite_hooks.h> - -int -main() -{ - { - std::wstring_view empty; - VERIFY( empty.empty() ); - } - - { - const std::wstring_view empty; - VERIFY( empty.empty() ); - } - - return 0; -} diff --git a/gdb/unittests/basic_string_view/element_access/wchar_t/front_back.cc b/gdb/unittests/basic_string_view/element_access/wchar_t/front_back.cc deleted file mode 100644 index c17a08a..0000000 --- a/gdb/unittests/basic_string_view/element_access/wchar_t/front_back.cc +++ /dev/null @@ -1,42 +0,0 @@ -// { dg-options "-std=gnu++17" } -// { dg-require-string-conversions "" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -#include <string_view> -#include <testsuite_hooks.h> - -void -test01() -{ - std::wstring_view str(L"ramifications"); - const std::wstring_view cstr(L"melodien"); - - VERIFY( str.front() == L'r' ); - VERIFY( str.back() == L's' ); - VERIFY( cstr.front() == L'm' ); - VERIFY( cstr.back() == L'n' ); -} - -int -main() -{ - test01(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/include.cc b/gdb/unittests/basic_string_view/include.cc deleted file mode 100644 index ef01b7c..0000000 --- a/gdb/unittests/basic_string_view/include.cc +++ /dev/null @@ -1,25 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// NB: This issue affected only debug-mode. - -// { dg-options "-std=gnu++17 -fno-rtti" } -// { dg-do compile } - -#include <string_view> diff --git a/gdb/unittests/basic_string_view/inserters/char/1.cc b/gdb/unittests/basic_string_view/inserters/char/1.cc deleted file mode 100644 index e0a33bf..0000000 --- a/gdb/unittests/basic_string_view/inserters/char/1.cc +++ /dev/null @@ -1,65 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// inserters - -// NB: This file is predicated on sstreams, istreams, and ostreams -// working, not to mention other major details like char_traits, and -// all of the string_view class. - -#include <string_view> -#include <stdexcept> -#include <sstream> -#include <fstream> -#include <iostream> -#include <testsuite_hooks.h> - -void -test01() -{ - typedef std::string_view::size_type csize_type; - typedef std::string_view::const_reference cref; - typedef std::string_view::reference ref; - - const std::string_view str01("sailing grand traverse bay\n" - "\t\t\t from Elk Rapids to the point reminds me of miles"); - - // ostream& operator<<(ostream&, const basic_string_view&) - std::ostringstream ostrs01; - try - { - ostrs01 << str01; - VERIFY( ostrs01.str() == str01 ); - } - catch(std::exception& fail) - { - VERIFY( false ); - } - - std::string_view hello_world; - std::cout << hello_world; -} - -int -main() -{ - test01(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/inserters/char/2.cc b/gdb/unittests/basic_string_view/inserters/char/2.cc deleted file mode 100644 index 840f521..0000000 --- a/gdb/unittests/basic_string_view/inserters/char/2.cc +++ /dev/null @@ -1,91 +0,0 @@ - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// inserters - -// NB: This file is predicated on sstreams, ostreams -// working, not to mention other major details like char_traits, and -// all of the string_view class. - -// { dg-options "-std=gnu++17" } -// { dg-require-fileio "" } - -namespace inserters_2 { - -// testing basic_filebuf::xsputn via stress testing with large string_views -// based on a bug report libstdc++ 9 -// mode == out -static void -test05 (std::size_t size) -{ - bool test ATTRIBUTE_UNUSED = true; - - const char filename[] = "inserters_extractors-2.txt"; - const char fillc = 'f'; - std::ofstream ofs(filename); - std::string str(size, fillc); - gdb::string_view strv{str}; - - // sanity checks - VERIFY( str.size() == size ); - VERIFY( ofs.good() ); - - // stress test - ofs << str << std::endl; - if (!ofs.good()) - test = false; - - ofs << str << std::endl; - if (!ofs.good()) - test = false; - - VERIFY( str.size() == size ); - VERIFY( ofs.good() ); - - ofs.close(); - - // sanity check on the written file - std::ifstream ifs(filename); - std::size_t count = 0; - char c; - while (count <= (2 * size) + 4) - { - ifs >> c; - if (ifs.good() && c == fillc) - { - ++count; - c = '0'; - } - else - break; - } - - VERIFY( count == 2 * size ); -} - -static int -main () -{ - test05(1); - test05(1000); - test05(10000); - - return 0; -} - -} // namespace inserters_2 diff --git a/gdb/unittests/basic_string_view/inserters/char/3.cc b/gdb/unittests/basic_string_view/inserters/char/3.cc deleted file mode 100644 index 43e3ae0..0000000 --- a/gdb/unittests/basic_string_view/inserters/char/3.cc +++ /dev/null @@ -1,54 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// inserters - -// NB: This file is predicated on sstreams, and ostreams -// working, not to mention other major details like char_traits, and -// all of the string_view class. - -#include <string_view> -#include <sstream> -#include <iomanip> -#include <testsuite_hooks.h> - -// libstdc++/2830 -void -test09() -{ - std::string_view foo{"peace\0\0\0& love"}; - - std::ostringstream oss1; - oss1 << foo; - VERIFY( oss1.str() == foo ); - - std::ostringstream oss2; - oss2.width(20); - oss2 << foo; - VERIFY( oss2.str() != foo ); - VERIFY( oss2.str().size() == 20 ); -} - -int -main() -{ - test09(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/inserters/pod/10081-out.cc b/gdb/unittests/basic_string_view/inserters/pod/10081-out.cc deleted file mode 100644 index 4b5d81d..0000000 --- a/gdb/unittests/basic_string_view/inserters/pod/10081-out.cc +++ /dev/null @@ -1,75 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// class basic_istream::sentry - -#include <string_view> -#include <ostream> -#include <sstream> -#include <locale> -#include <typeinfo> -#include <testsuite_hooks.h> -#include <testsuite_character.h> - -void -test01() -{ - using namespace std; - - using __gnu_test::pod_ushort; - typedef basic_string_view<pod_ushort> string_type; - typedef basic_stringbuf<pod_ushort> stringbuf_type; - typedef basic_ostream<pod_ushort> ostream_type; - - string_type str; - stringbuf_type strbuf01; - ostream_type stream(&strbuf01); - - try - { - stream << str; - } - catch (std::bad_cast& obj) - { - // Ok, throws bad_cast because locale has no ctype facet. - } - catch (...) - { - VERIFY( false ); - } - - const std::locale loc(std::locale::classic(), new std::ctype<pod_ushort>); - stream.imbue(loc); - try - { - stream << str; - } - catch (...) - { - VERIFY( false ); - } -} - -int -main() -{ - test01(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/inserters/wchar_t/1.cc b/gdb/unittests/basic_string_view/inserters/wchar_t/1.cc deleted file mode 100644 index 6975425..0000000 --- a/gdb/unittests/basic_string_view/inserters/wchar_t/1.cc +++ /dev/null @@ -1,70 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// inserters - -// NB: This file is predicated on sstreams, and ostreams -// working, not to mention other major details like char_traits, and -// all of the string_view class. - -#include <string_view> -#include <stdexcept> -#include <sstream> -#include <fstream> -#include <iostream> -#include <testsuite_hooks.h> - -void -test01() -{ - typedef std::wstring_view::size_type csize_type; - typedef std::wstring_view::const_reference cref; - typedef std::wstring_view::reference ref; - - const std::wstring_view str01(L"sailing grand traverse bay\n" - L"\t\t\t from Elk Rapids to the point reminds me of miles"); - const std::wstring_view str02(L"sailing"); - const std::wstring_view str03(L"grand"); - const std::wstring_view str04(L"traverse"); - const std::wstring_view str05; - std::wstring_view str10; - - // ostream& operator<<(ostream&, const basic_string_view&) - std::wostringstream ostrs01; - try - { - ostrs01 << str01; - VERIFY( ostrs01.str() == str01 ); - } - catch(std::exception& fail) - { - VERIFY( false ); - } - - std::wstring_view hello_world; - std::wcout << hello_world; -} - -int -main() -{ - test01(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/inserters/wchar_t/2.cc b/gdb/unittests/basic_string_view/inserters/wchar_t/2.cc deleted file mode 100644 index 5cc3e93..0000000 --- a/gdb/unittests/basic_string_view/inserters/wchar_t/2.cc +++ /dev/null @@ -1,91 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// inserters - -// NB: This file is predicated on sstreams, istreams, and ostreams -// working, not to mention other major details like char_traits, and -// all of the string_view class. - -#include <string_view> -#include <string> -#include <fstream> -#include <iostream> -#include <testsuite_hooks.h> - -// testing basic_filebuf::xsputn via stress testing with large string_views -// based on a bug report libstdc++ 9 -// mode == out -void -test05(std::size_t size) -{ - bool test = true; - - const char filename[] = "inserters_extractors-2.txt"; - const wchar_t fillc = L'f'; - std::wofstream ofs(filename); - std::wstring str(size, fillc); - std::wstring_view strv(str); - - // sanity checks - VERIFY( str.size() == size ); - VERIFY( ofs.good() ); - - // stress test - ofs << str << std::endl; - if (!ofs.good()) - test = false; - - ofs << str << std::endl; - if (!ofs.good()) - test = false; - - VERIFY( str.size() == size ); - VERIFY( ofs.good() ); - - ofs.close(); - - // sanity check on the written file - std::wifstream ifs(filename); - std::size_t count = 0; - wchar_t c; - while (count <= (2 * size) + 4) - { - ifs >> c; - if (ifs.good() && c == fillc) - { - ++count; - c = '0'; - } - else - break; - } - - VERIFY( count == 2 * size ); -} - -int -main() -{ - test05(1); - test05(1000); - test05(10000); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/inserters/wchar_t/3.cc b/gdb/unittests/basic_string_view/inserters/wchar_t/3.cc deleted file mode 100644 index 5eabf46..0000000 --- a/gdb/unittests/basic_string_view/inserters/wchar_t/3.cc +++ /dev/null @@ -1,53 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// inserters - -// NB: This file is predicated on sstreams, istreams, and ostreams -// working, not to mention other major details like char_traits, and -// all of the string_view class. - -#include <string_view> -#include <sstream> -#include <iomanip> -#include <testsuite_hooks.h> - -void -test09() -{ - std::wstring_view foo{L"peace\0\0\0& love"}; - - std::wostringstream oss1; - oss1 << foo; - VERIFY( oss1.str() == foo ); - - std::wostringstream oss2; - oss2.width(20); - oss2 << foo; - VERIFY( oss2.str() != foo ); - VERIFY( oss2.str().size() == 20 ); -} - -int -main() -{ - test09(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/literals/types.cc b/gdb/unittests/basic_string_view/literals/types.cc deleted file mode 100644 index de0aa1e..0000000 --- a/gdb/unittests/basic_string_view/literals/types.cc +++ /dev/null @@ -1,45 +0,0 @@ -// { dg-options "-std=gnu++17" } -// { dg-do compile } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -#include <string_view> -#include <type_traits> - -void -test01() -{ - using namespace std::literals::string_view_literals; - - static_assert(std::is_same<decltype("Hello"sv), std::string_view>::value, - "\"Hello\"s is std::string_view"); - - static_assert(std::is_same<decltype(u8"Hello"sv), std::string_view>::value, - "u8\"Hello\"s is std::string_view"); - -#ifdef _GLIBCXX_USE_WCHAR_T - static_assert(std::is_same<decltype(L"Hello"sv), std::wstring_view>::value, - "L\"Hello\"s is std::wstring_view"); -#endif - - static_assert(std::is_same<decltype(u"Hello"sv), std::u16string_view>::value, - "u\"Hello\"s is std::u16string_view"); - - static_assert(std::is_same<decltype(U"Hello"sv), std::u32string_view>::value, - "U\"Hello\"s is std::u32string_view"); -} diff --git a/gdb/unittests/basic_string_view/literals/values.cc b/gdb/unittests/basic_string_view/literals/values.cc deleted file mode 100644 index ebd69b8..0000000 --- a/gdb/unittests/basic_string_view/literals/values.cc +++ /dev/null @@ -1,72 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -#include <string_view> -#include <testsuite_hooks.h> - -void -test01() -{ - using namespace std::literals::string_view_literals; - - std::string_view planet = "Mercury"sv; -#ifdef _GLIBCXX_USE_WCHAR_T - std::wstring_view wplanet = L"Venus"sv; -#endif - std::string_view u8planet = u8"Mars"sv; - std::u16string_view u16planet = u"Jupiter"sv; - std::u32string_view u32planet = U"Saturn"sv; - - VERIFY( planet == std::string_view("Mercury") ); -#ifdef _GLIBCXX_USE_WCHAR_T - VERIFY( wplanet == std::wstring_view(L"Venus") ); -#endif - VERIFY( u8planet == std::string_view(u8"Mars") ); - VERIFY( u16planet == std::u16string_view(u"Jupiter") ); - VERIFY( u32planet == std::u32string_view(U"Saturn") ); -} - -void -test02() -{ - using namespace std::literals::string_view_literals; - - std::string_view planet_cratered = "Mercury\0cratered"sv; -#ifdef _GLIBCXX_USE_WCHAR_T - std::wstring_view wplanet_cratered = L"Venus\0cratered"sv; -#endif - std::string_view u8planet_cratered = u8"Mars\0cratered"sv; - std::u16string_view u16planet_cratered = u"Jupiter\0cratered"sv; - std::u32string_view u32planet_cratered = U"Saturn\0cratered"sv; - - VERIFY( planet_cratered == std::string_view("Mercury\0cratered", 16) ); -#ifdef _GLIBCXX_USE_WCHAR_T - VERIFY( wplanet_cratered == std::wstring_view(L"Venus\0cratered", 14) ); -#endif - VERIFY( u8planet_cratered == std::string_view(u8"Mars\0cratered", 13) ); - VERIFY( u16planet_cratered == std::u16string_view(u"Jupiter\0cratered", 16) ); - VERIFY( u32planet_cratered == std::u32string_view(U"Saturn\0cratered", 15) ); -} - -int -main() -{ - test01(); - test02(); -} diff --git a/gdb/unittests/basic_string_view/modifiers/remove_prefix/char/1.cc b/gdb/unittests/basic_string_view/modifiers/remove_prefix/char/1.cc deleted file mode 100644 index 4ebf4c0..0000000 --- a/gdb/unittests/basic_string_view/modifiers/remove_prefix/char/1.cc +++ /dev/null @@ -1,66 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -namespace modifiers_remove_prefix { - -static void -test01 () -{ - using gdb::string_view; - - string_view str0{"olympus mons"}; - string_view::pointer p = str0.data(); - str0.remove_prefix(4); - VERIFY( str0.data() == p + 4); - VERIFY( str0.length() == 8 ); - VERIFY( str0 == string_view{"pus mons"} ); -} - -#ifndef GDB_STRING_VIEW -constexpr bool -test02() -{ - using std::string_view; - - string_view str0{"olympus mons"}; - string_view::pointer p = str0.data(); - str0.remove_prefix(4); - if ( str0.data() != p + 4) - return false; - if ( str0.length() != 8 ) - return false; - if ( str0 != string_view{"pus mons"} ) - return false; - - return true; -} -#endif - -static int -main () -{ - test01(); -#ifndef GDB_STRING_VIEW - static_assert( test02() ); -#endif - - return 0; -} - -} // namespace modifiers_remove_prefix diff --git a/gdb/unittests/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc b/gdb/unittests/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc deleted file mode 100644 index 3503dcb..0000000 --- a/gdb/unittests/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc +++ /dev/null @@ -1,61 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -#include <string_view> -#include <testsuite_hooks.h> - -void -test01() -{ - using std::wstring_view; - - wstring_view str0{L"olympus mons"}; - wstring_view::pointer p = str0.data(); - str0.remove_prefix(4); - VERIFY( str0.data() == p + 4); - VERIFY( str0.length() == 8 ); - VERIFY( str0 == wstring_view{L"pus mons"} ); -} - -constexpr bool -test02() -{ - using std::wstring_view; - - wstring_view str0{L"olympus mons"}; - wstring_view::pointer p = str0.data(); - str0.remove_prefix(4); - if ( str0.data() != p + 4) - return false; - if ( str0.length() != 8 ) - return false; - if ( str0 != wstring_view{L"pus mons"} ) - return false; - - return true; -} - -int -main() -{ - test01(); - static_assert( test02() ); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/modifiers/remove_suffix/char/1.cc b/gdb/unittests/basic_string_view/modifiers/remove_suffix/char/1.cc deleted file mode 100644 index 5e9259e..0000000 --- a/gdb/unittests/basic_string_view/modifiers/remove_suffix/char/1.cc +++ /dev/null @@ -1,66 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -namespace modifiers_remove_suffix { - -static void -test01 () -{ - using gdb::string_view; - - string_view str0{"olympus mons"}; - string_view::pointer p = str0.data(); - str0.remove_suffix(2); - VERIFY( str0.data() == p); - VERIFY( str0.length() == 10 ); - VERIFY( str0 == string_view{"olympus mo"} ); -} - -#ifndef GDB_STRING_VIEW -constexpr bool -test02() -{ - using std::string_view; - - string_view str0{"olympus mons"}; - string_view::pointer p = str0.data(); - str0.remove_suffix(2); - if ( str0.data() != p) - return false; - if ( str0.length() != 10 ) - return false; - if ( str0 != string_view{"olympus mo"} ) - return false; - - return true; -} -#endif - -static int -main () -{ - test01(); -#ifndef GDB_STRING_VIEW - static_assert( test02() ); -#endif - - return 0; -} - -} // namespace modifiers_remove_suffix diff --git a/gdb/unittests/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc b/gdb/unittests/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc deleted file mode 100644 index 7f9e051..0000000 --- a/gdb/unittests/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc +++ /dev/null @@ -1,61 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -#include <string_view> -#include <testsuite_hooks.h> - -void -test01() -{ - using std::wstring_view; - - wstring_view str0{L"olympus mons"}; - wstring_view::pointer p = str0.data(); - str0.remove_suffix(2); - VERIFY( str0.data() == p); - VERIFY( str0.length() == 10 ); - VERIFY( str0 == wstring_view{L"olympus mo"} ); -} - -constexpr bool -test02() -{ - using std::wstring_view; - - wstring_view str0{L"olympus mons"}; - wstring_view::pointer p = str0.data(); - str0.remove_suffix(2); - if ( str0.data() != p) - return false; - if ( str0.length() != 10 ) - return false; - if ( str0 != wstring_view{L"olympus mo"} ) - return false; - - return true; -} - -int -main() -{ - test01(); - static_assert( test02() ); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/modifiers/swap/char/1.cc b/gdb/unittests/basic_string_view/modifiers/swap/char/1.cc deleted file mode 100644 index d583566..0000000 --- a/gdb/unittests/basic_string_view/modifiers/swap/char/1.cc +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (C) 2017-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// { dg-options "-std=gnu++17" } -// { dg-do compile { target c++17 } } - -namespace modifiers_swap { - -static void -test01 () -{ - using gdb::string_view; - - string_view s1{"last"}; - string_view s2{"first"}; - - s1.swap(s2); - VERIFY( s1 == "first" ); - VERIFY( s2 == "last" ); -} - -} // namespace modifiers_swap diff --git a/gdb/unittests/basic_string_view/modifiers/swap/wchar_t/1.cc b/gdb/unittests/basic_string_view/modifiers/swap/wchar_t/1.cc deleted file mode 100644 index b986088..0000000 --- a/gdb/unittests/basic_string_view/modifiers/swap/wchar_t/1.cc +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (C) 2017-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// { dg-options "-std=gnu++17" } -// { dg-do compile { target c++17 } } - -#include <string_view> - -constexpr bool -test01() -{ - using std::wstring_view; - - wstring_view s1{L"last"}; - wstring_view s2{L"first"}; - - s1.swap(s2); - return s1 == L"first" && s2 == L"last"; -} - -static_assert( test01() ); diff --git a/gdb/unittests/basic_string_view/operations/compare/char/1.cc b/gdb/unittests/basic_string_view/operations/compare/char/1.cc deleted file mode 100644 index d824c8e..0000000 --- a/gdb/unittests/basic_string_view/operations/compare/char/1.cc +++ /dev/null @@ -1,132 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view::compare -// int compare(const basic_string_view& str) const; -// int compare(size_type pos1, size_type n1, const basic_string_view& str) const; -// int compare(size_type pos1, size_type n1, const basic_string_view& str, -// size_type pos2, size_type n2) const; -// int compare(const charT* s) const; -// int compare(size_type pos1, size_type n1, -// const charT* s, size_type n2 = npos) const; - -// NB compare should be thought of as a lexographical compare, ie how -// things would be sorted in a dictionary. - -namespace operations_compare_1 { - -enum want_value {lt=0, z=1, gt=2}; - -int -test_value(int result, want_value expected); - -int -test_value(int result, want_value expected) -{ - bool pass = false; - - switch (expected) { - case lt: - if (result < 0) - pass = true; - break; - case z: - if (!result) - pass = true; - break; - case gt: - if (result > 0) - pass = true; - break; - default: - pass = false; //should not get here - } - VERIFY(pass); - return 0; -} - -static int -test01 () -{ - using gdb::string_view; - - string_view str_0("costa rica"); - string_view str_1("costa marbella"); - string_view str_2; - - //sanity check - test_value(strcmp("costa marbella", "costa rica"), lt); - test_value(strcmp("costa rica", "costa rica"), z); - test_value(strcmp(str_1.data(), str_0.data()), lt); - test_value(strcmp(str_0.data(), str_1.data()), gt); - test_value(strncmp(str_1.data(), str_0.data(), 6), z); - test_value(strncmp(str_1.data(), str_0.data(), 14), lt); - test_value(memcmp(str_1.data(), str_0.data(), 6), z); - test_value(memcmp(str_1.data(), str_0.data(), 10), lt); - test_value(memcmp("costa marbella", "costa rica", 10), lt); - - // int compare(const basic_string_view& str) const; - test_value(str_0.compare(str_1), gt); //because r>m - test_value(str_1.compare(str_0), lt); //because m<r - str_2 = str_0; - test_value(str_2.compare(str_0), z); - str_2 = "cost"; - test_value(str_2.compare(str_0), lt); - str_2 = "costa ricans"; - test_value(str_2.compare(str_0), gt); - - // int compare(size_type pos1, size_type n1, const basic_string_view& str) const; - test_value(str_1.compare(0, 6, str_0), lt); - str_2 = "cost"; - test_value(str_1.compare(0, 4, str_2), z); - test_value(str_1.compare(0, 5, str_2), gt); - - // int compare(size_type pos1, size_type n1, const basic_string_view& str, - // size_type pos2, size_type n2) const; - test_value(str_1.compare(0, 6, str_0, 0, 6), z); - test_value(str_1.compare(0, 7, str_0, 0, 7), lt); - test_value(str_0.compare(0, 7, str_1, 0, 7), gt); - - // int compare(const charT* s) const; - test_value(str_0.compare("costa marbella"), gt); - test_value(str_1.compare("costa rica"), lt); - str_2 = str_0; - test_value(str_2.compare("costa rica"), z); - test_value(str_2.compare("cost"), gt); - test_value(str_2.compare("costa ricans"), lt); - - // int compare(size_type pos, size_type n1, const charT* str, - // size_type n2 = npos) const; - test_value(str_1.compare(0, 6, "costa rica", 0, 6), z); - test_value(str_1.compare(0, 7, "costa rica", 0, 7), lt); - test_value(str_0.compare(0, 7, "costa marbella", 0, 7), gt); - - return 0; -} - - -static int -main () -{ - test01(); - - return 0; -} - -} // namespace operations_compare_1 diff --git a/gdb/unittests/basic_string_view/operations/compare/char/13650.cc b/gdb/unittests/basic_string_view/operations/compare/char/13650.cc deleted file mode 100644 index cbfe4a0..0000000 --- a/gdb/unittests/basic_string_view/operations/compare/char/13650.cc +++ /dev/null @@ -1,50 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view::compare [lib.string_view::compare] - -namespace operations_compare_13650 { - -// libstdc++/13650 -static void -test01 () -{ - using gdb::string_view; - - const char lit_01[]{ 'w', 'e', '\0', 'r', 'd' }; - const char lit_02[]{ 'w', 'e', 'i', '\0', 'd' }; - - const char lit_ref_a[]{ 'w', 'e', '\0', 'q', 'd' }; - const string_view str_a(lit_ref_a, 5); - VERIFY( str_a.compare(0, 5, lit_01, 5) < 0 ); - - const char lit_ref_b[]{ 'w', 'e', 'i' }; - const string_view str_b(lit_ref_b, 3); - VERIFY( str_b.compare(0, 3, lit_02, 5) < 0 ); -} - -static int -main() -{ - test01(); - - return 0; -} - -} // namespace operations_compare_13650 diff --git a/gdb/unittests/basic_string_view/operations/compare/char/2.cc b/gdb/unittests/basic_string_view/operations/compare/char/2.cc deleted file mode 100644 index f0b76af..0000000 --- a/gdb/unittests/basic_string_view/operations/compare/char/2.cc +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (C) 2017-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// { dg-options "-std=gnu++17" } -// { dg-do compile { target c++17 } } - -#include <string_view> - -constexpr char c1[] = "one"; -constexpr char c2[] = "two"; - -constexpr std::string_view s1{c1}; -constexpr std::string_view s2{c2}; - -constexpr int n1 = s1.compare(s1); -constexpr int n2 = s1.compare(s2); diff --git a/gdb/unittests/basic_string_view/operations/compare/char/70483.cc b/gdb/unittests/basic_string_view/operations/compare/char/70483.cc deleted file mode 100644 index 259f95f..0000000 --- a/gdb/unittests/basic_string_view/operations/compare/char/70483.cc +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright (C) 2017-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// { dg-options "-std=gnu++17" } -// { dg-do compile { target c++17 } } - -#include <string_view> - -struct constexpr_char_traits : std::char_traits<char> -{ - static constexpr size_t - length(const char* val) - { - size_t res = 0; - for (; val[res] != '\0'; ++res) - ; - return res; - } - - static constexpr int - compare(const char* lhs, const char* rhs, std::size_t count) - { - for (size_t pos = 0; pos < count; ++pos) - { - if (lhs[pos] != rhs[pos]) - return lhs[pos] - rhs[pos]; - } - return 0; - } -}; - -using string_view = std::basic_string_view<char, constexpr_char_traits>; - -constexpr -string_view get() -{ - string_view res = "x::"; - string_view start_pattern = "x"; - res = res.substr(res.find(start_pattern) + start_pattern.size()); - res = res.substr(0, res.find_first_of(";]")); - res = res.substr(res.rfind("::")); - return res; -} - -static_assert( get() == get() ); - -using std::u16string_view; - -constexpr -u16string_view get16() -{ - u16string_view res = u"x::"; - u16string_view start_pattern = u"x"; - res = res.substr(res.find(start_pattern) + start_pattern.size()); - res = res.substr(0, res.find_first_of(u";]")); - res = res.substr(res.rfind(u"::")); - return res; -} - -static_assert( get16() == get16() ); - -using std::u32string_view; - -constexpr -u32string_view get32() -{ - u32string_view res = U"x::"; - u32string_view start_pattern = U"x"; - res = res.substr(res.find(start_pattern) + start_pattern.size()); - res = res.substr(0, res.find_first_of(U";]")); - res = res.substr(res.rfind(U"::")); - return res; -} - -static_assert( get32() == get32() ); diff --git a/gdb/unittests/basic_string_view/operations/compare/wchar_t/1.cc b/gdb/unittests/basic_string_view/operations/compare/wchar_t/1.cc deleted file mode 100644 index 8a05a40..0000000 --- a/gdb/unittests/basic_string_view/operations/compare/wchar_t/1.cc +++ /dev/null @@ -1,133 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view::compare -// int compare(const basic_string_view& str) const; -// int compare(size_type pos1, size_type n1, const basic_string_view& str) const; -// int compare(size_type pos1, size_type n1, const basic_string_view& str, -// size_type pos2, size_type n2) const; -// int compare(const charT* s) const; -// int compare(size_type pos1, size_type n1, -// const charT* s, size_type n2 = npos) const; - -// NB compare should be thought of as a lexographical compare, ie how -// things would be sorted in a dictionary. - -#include <string_view> -#include <testsuite_hooks.h> - -enum want_value {lt=0, z=1, gt=2}; - -int -test_value(int result, want_value expected); - -int -test_value(int result, want_value expected) -{ - bool pass = false; - - switch (expected) { - case lt: - if (result < 0) - pass = true; - break; - case z: - if (!result) - pass = true; - break; - case gt: - if (result > 0) - pass = true; - break; - default: - pass = false; //should not get here - } - - VERIFY(pass); - return 0; -} - - -int -test01() -{ - using std::wstring_view; - - wstring_view str_0(L"costa rica"); - wstring_view str_1(L"costa marbella"); - wstring_view str_2; - - //sanity check - test_value(wcscmp(L"costa marbella", L"costa rica"), lt); - test_value(wcscmp(L"costa rica", L"costa rica"), z); - test_value(wcscmp(str_1.data(), str_0.data()), lt); - test_value(wcscmp(str_0.data(), str_1.data()), gt); - test_value(wcsncmp(str_1.data(), str_0.data(), 6), z); - test_value(wcsncmp(str_1.data(), str_0.data(), 14), lt); - test_value(wmemcmp(str_1.data(), str_0.data(), 6), z); - test_value(wmemcmp(str_1.data(), str_0.data(), 14), lt); - test_value(wmemcmp(L"costa marbella", L"costa rica", 14), lt); - - // int compare(const basic_string_view& str) const; - test_value(str_0.compare(str_1), gt); //because r>m - test_value(str_1.compare(str_0), lt); //because m<r - str_2 = str_0; - test_value(str_2.compare(str_0), z); - str_2 = L"cost"; - test_value(str_2.compare(str_0), lt); - str_2 = L"costa ricans"; - test_value(str_2.compare(str_0), gt); - - // int compare(size_type pos1, size_type n1, const basic_string_view& str) const; - test_value(str_1.compare(0, 6, str_0), lt); - str_2 = L"cost"; - test_value(str_1.compare(0, 4, str_2), z); - test_value(str_1.compare(0, 5, str_2), gt); - - // int compare(size_type pos1, size_type n1, const basic_string_view& str, - // size_type pos2, size_type n2) const; - test_value(str_1.compare(0, 6, str_0, 0, 6), z); - test_value(str_1.compare(0, 7, str_0, 0, 7), lt); - test_value(str_0.compare(0, 7, str_1, 0, 7), gt); - - // int compare(const charT* s) const; - test_value(str_0.compare(L"costa marbella"), gt); - test_value(str_1.compare(L"costa rica"), lt); - str_2 = str_0; - test_value(str_2.compare(L"costa rica"), z); - test_value(str_2.compare(L"cost"), gt); - test_value(str_2.compare(L"costa ricans"), lt); - - // int compare(size_type pos, size_type n1, const charT* str, - // size_type n2 = npos) const; - test_value(str_1.compare(0, 6, L"costa rica", 0, 6), z); - test_value(str_1.compare(0, 7, L"costa rica", 0, 7), lt); - test_value(str_0.compare(0, 7, L"costa marbella", 0, 7), gt); - - return 0; -} - - -int -main() -{ - test01(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/operations/compare/wchar_t/13650.cc b/gdb/unittests/basic_string_view/operations/compare/wchar_t/13650.cc deleted file mode 100644 index 86df7d0..0000000 --- a/gdb/unittests/basic_string_view/operations/compare/wchar_t/13650.cc +++ /dev/null @@ -1,49 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view::compare [lib.string_view::compare] - -#include <string_view> -#include <testsuite_hooks.h> - -// libstdc++/13650 -void -test01() -{ - using std::wstring_view; - - const wchar_t lit_01[] = { L'w', L'e', L'\0', L'r', L'd' }; - const wchar_t lit_02[] = { L'w', L'e', L'i', L'\0', L'd' }; - - const wchar_t lit_ref_a[] = { L'w', L'e', L'\0', L'q', L'd' }; - const wstring_view str_a(lit_ref_a, 5); - VERIFY( str_a.compare(0, 5, lit_01, 5) < 0 ); - - const wchar_t lit_ref_b[] = { L'w', L'e', L'i' }; - const wstring_view str_b(lit_ref_b, 3); - VERIFY( str_b.compare(0, 3, lit_02, 5) < 0 ); -} - -int -main() -{ - test01(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/operations/compare/wchar_t/2.cc b/gdb/unittests/basic_string_view/operations/compare/wchar_t/2.cc deleted file mode 100644 index c6b6eb9..0000000 --- a/gdb/unittests/basic_string_view/operations/compare/wchar_t/2.cc +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (C) 2017-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// { dg-options "-std=gnu++17" } -// { dg-do compile { target c++17 } } - -#include <string_view> - -constexpr wchar_t c1[] = L"one"; -constexpr wchar_t c2[] = L"two"; - -constexpr std::wstring_view s1{c1}; -constexpr std::wstring_view s2{c2}; - -constexpr int n1 = s1.compare(s1); -constexpr int n2 = s1.compare(s2); diff --git a/gdb/unittests/basic_string_view/operations/copy/char/1.cc b/gdb/unittests/basic_string_view/operations/copy/char/1.cc deleted file mode 100644 index f124f3a..0000000 --- a/gdb/unittests/basic_string_view/operations/copy/char/1.cc +++ /dev/null @@ -1,46 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view::copy - -namespace operations_copy_1 { - -static void -test01 () -{ - typedef gdb::string_view::size_type csize_type; - - const char str_lit01[] = "123456789A"; - const gdb::string_view str01(str_lit01); - char buffer[4] = { 0 }; - - csize_type len = str01.copy(buffer, sizeof(buffer), 8); - VERIFY( 2 == len ); - VERIFY( '9' == buffer[0] ); -} - -static int -main () -{ - test01(); - - return 0; -} - -} // namespace operations_copy_1 diff --git a/gdb/unittests/basic_string_view/operations/copy/wchar_t/1.cc b/gdb/unittests/basic_string_view/operations/copy/wchar_t/1.cc deleted file mode 100644 index 56a4884..0000000 --- a/gdb/unittests/basic_string_view/operations/copy/wchar_t/1.cc +++ /dev/null @@ -1,46 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view::copy - -#include <string_view> -#include <testsuite_hooks.h> - -void -test01() -{ - typedef std::wstring_view::size_type csize_type; - csize_type csz01; - - const wchar_t str_lit01[] = L"123456789A"; - const std::wstring_view str01(str_lit01); - wchar_t buffer[4] = { 0 }; - - csize_type len = str01.copy(buffer, sizeof(buffer), 8); - VERIFY( 2 == len ); - VERIFY( L'9' == buffer[0] ); -} - -int -main() -{ - test01(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/operations/data/char/1.cc b/gdb/unittests/basic_string_view/operations/data/char/1.cc deleted file mode 100644 index 0309f5f..0000000 --- a/gdb/unittests/basic_string_view/operations/data/char/1.cc +++ /dev/null @@ -1,44 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// string_view operations - -namespace operations_data_1 { - -static int -test01 () -{ - gdb::string_view empty; - - VERIFY( empty.size() == 0 ); - const gdb::string_view::value_type* p = empty.data(); - VERIFY( p == nullptr ); - - return 0; -} - -static int -main () -{ - test01(); - - return 0; -} - -} // namespace operations_data_1 diff --git a/gdb/unittests/basic_string_view/operations/data/wchar_t/1.cc b/gdb/unittests/basic_string_view/operations/data/wchar_t/1.cc deleted file mode 100644 index 31c58b6..0000000 --- a/gdb/unittests/basic_string_view/operations/data/wchar_t/1.cc +++ /dev/null @@ -1,43 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// string_view operations - -#include <string_view> -#include <testsuite_hooks.h> - -int -test01() -{ - std::wstring_view empty; - - VERIFY( empty.size() == 0 ); - const std::wstring_view::value_type* p = empty.data(); - VERIFY( p == nullptr ); - - return 0; -} - -int -main() -{ - test01(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/operations/find/char/1.cc b/gdb/unittests/basic_string_view/operations/find/char/1.cc deleted file mode 100644 index 79706e0..0000000 --- a/gdb/unittests/basic_string_view/operations/find/char/1.cc +++ /dev/null @@ -1,168 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view find - -namespace operations_find_1 { - -static void -test01 () -{ - typedef gdb::string_view::size_type csize_type; - typedef gdb::string_view::const_reference cref; - typedef gdb::string_view::reference ref; - csize_type npos = gdb::string_view::npos; - csize_type csz01, csz02; - - const char str_lit01[] = "mave"; - const gdb::string_view str01("mavericks, santa cruz"); - gdb::string_view str02(str_lit01); - gdb::string_view str03("s, s"); - gdb::string_view str04; - - // size_type find(const string_view&, size_type pos = 0) const; - csz01 = str01.find(str01); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str01, 4); - VERIFY( csz01 == npos ); - csz01 = str01.find(str02, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str02, 3); - VERIFY( csz01 == npos ); - csz01 = str01.find(str03, 0); - VERIFY( csz01 == 8 ); - csz01 = str01.find(str03, 3); - VERIFY( csz01 == 8 ); - csz01 = str01.find(str03, 12); - VERIFY( csz01 == npos ); - - // An empty string_view consists of no characters - // therefore it should be found at every point in a string_view, - // except beyond the end - csz01 = str01.find(str04, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str04, 5); - VERIFY( csz01 == 5 ); - csz01 = str01.find(str04, str01.size()); - VERIFY( csz01 == str01.size() ); - csz01 = str01.find(str04, str01.size()+1); - VERIFY( csz01 == npos ); - - // size_type find(const char* s, size_type pos, size_type n) const; - csz01 = str01.find(str_lit01, 0, 3); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str_lit01, 3, 0); - VERIFY( csz01 == 3 ); - - // size_type find(const char* s, size_type pos = 0) const; - csz01 = str01.find(str_lit01); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str_lit01, 3); - VERIFY( csz01 == npos ); - - // size_type find(char c, size_type pos = 0) const; - csz01 = str01.find('z'); - csz02 = str01.size() - 1; - VERIFY( csz01 == csz02 ); - csz01 = str01.find('/'); - VERIFY( csz01 == npos ); -} - -#ifndef GDB_STRING_VIEW -constexpr bool -test02() -{ - typedef std::string_view::size_type csize_type; - typedef std::string_view::const_reference cref; - typedef std::string_view::reference ref; - csize_type npos = std::string_view::npos; - csize_type csz01 = 0, csz02 = 0; - - const char str_lit01[] = "mave"; - const std::string_view str01("mavericks, santa cruz"); - std::string_view str02(str_lit01); - std::string_view str03("s, s"); - std::string_view str04; - -#undef VERIFY -#define VERIFY(x) if(!(x)) return false - - // size_type find(const string_view&, size_type pos = 0) const; - csz01 = str01.find(str01); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str01, 4); - VERIFY( csz01 == npos ); - csz01 = str01.find(str02, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str02, 3); - VERIFY( csz01 == npos ); - csz01 = str01.find(str03, 0); - VERIFY( csz01 == 8 ); - csz01 = str01.find(str03, 3); - VERIFY( csz01 == 8 ); - csz01 = str01.find(str03, 12); - VERIFY( csz01 == npos ); - - // An empty string_view consists of no characters - // therefore it should be found at every point in a string_view, - // except beyond the end - csz01 = str01.find(str04, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str04, 5); - VERIFY( csz01 == 5 ); - csz01 = str01.find(str04, str01.size()); - VERIFY( csz01 == str01.size() ); - csz01 = str01.find(str04, str01.size()+1); - VERIFY( csz01 == npos ); - - // size_type find(const char* s, size_type pos, size_type n) const; - csz01 = str01.find(str_lit01, 0, 3); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str_lit01, 3, 0); - VERIFY( csz01 == 3 ); - - // size_type find(const char* s, size_type pos = 0) const; - csz01 = str01.find(str_lit01); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str_lit01, 3); - VERIFY( csz01 == npos ); - - // size_type find(char c, size_type pos = 0) const; - csz01 = str01.find('z'); - csz02 = str01.size() - 1; - VERIFY( csz01 == csz02 ); - csz01 = str01.find('/'); - VERIFY( csz01 == npos ); - - return true; -} -#endif - -static int -main () -{ - test01(); -#ifndef GDB_STRING_VIEW - static_assert( test02() ); -#endif - - return 0; -} - -} // namespace operations_find_1 diff --git a/gdb/unittests/basic_string_view/operations/find/char/2.cc b/gdb/unittests/basic_string_view/operations/find/char/2.cc deleted file mode 100644 index c6bb97f..0000000 --- a/gdb/unittests/basic_string_view/operations/find/char/2.cc +++ /dev/null @@ -1,166 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view find_first_of - -namespace operations_find_2 { - -static void -test02 () -{ - typedef gdb::string_view::size_type csize_type; - csize_type npos = gdb::string_view::npos; - csize_type csz01, csz02; - - const char str_lit01[] = "mave"; - const gdb::string_view str01("mavericks, santa cruz"); - gdb::string_view str02(str_lit01); - gdb::string_view str03("s, s"); - gdb::string_view str04; - - // size_type find_first_of(const string_view&, size_type pos = 0) const; - gdb::string_view str05("xena rulez"); - csz01 = str01.find_first_of(str01); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_of(str01, 4); - VERIFY( csz01 == 4 ); - csz01 = str01.find_first_of(str02, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_of(str02, 3); - VERIFY( csz01 == 3 ); - csz01 = str01.find_first_of(str03, 0); - VERIFY( csz01 == 8 ); - csz01 = str01.find_first_of(str03, 3); - VERIFY( csz01 == 8 ); - csz01 = str01.find_first_of(str03, 12); - VERIFY( csz01 == 16 ); - csz01 = str01.find_first_of(str05, 0); - VERIFY( csz01 == 1 ); - csz01 = str01.find_first_of(str05, 4); - VERIFY( csz01 == 4 ); - - // An empty string_view consists of no characters - // therefore it should be found at every point in a string_view, - // except beyond the end - // However, str1.find_first_of(str2,pos) finds the first character in - // str1 (starting at pos) that exists in str2, which is none for empty str2 - csz01 = str01.find_first_of(str04, 0); - VERIFY( csz01 == npos ); - csz01 = str01.find_first_of(str04, 5); - VERIFY( csz01 == npos ); - - // size_type find_first_of(const char* s, size_type pos, size_type n) const; - csz01 = str01.find_first_of(str_lit01, 0, 3); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_of(str_lit01, 3, 0); - VERIFY( csz01 == npos ); - - // size_type find_first_of(const char* s, size_type pos = 0) const; - csz01 = str01.find_first_of(str_lit01); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_of(str_lit01, 3); - VERIFY( csz01 == 3 ); - - // size_type find_first_of(char c, size_type pos = 0) const; - csz01 = str01.find_first_of('z'); - csz02 = str01.size() - 1; - VERIFY( csz01 == csz02 ); -} - -#ifndef GDB_STRING_VIEW -constexpr bool -test03() -{ - typedef std::string_view::size_type csize_type; - csize_type npos = std::string_view::npos; - csize_type csz01 = 0, csz02 = 0; - - const char str_lit01[] = "mave"; - const std::string_view str01("mavericks, santa cruz"); - std::string_view str02(str_lit01); - std::string_view str03("s, s"); - std::string_view str04; - -#undef VERIFY -#define VERIFY(x) if(!(x)) return false - - // size_type find_first_of(const string_view&, size_type pos = 0) const; - std::string_view str05("xena rulez"); - csz01 = str01.find_first_of(str01); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_of(str01, 4); - VERIFY( csz01 == 4 ); - csz01 = str01.find_first_of(str02, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_of(str02, 3); - VERIFY( csz01 == 3 ); - csz01 = str01.find_first_of(str03, 0); - VERIFY( csz01 == 8 ); - csz01 = str01.find_first_of(str03, 3); - VERIFY( csz01 == 8 ); - csz01 = str01.find_first_of(str03, 12); - VERIFY( csz01 == 16 ); - csz01 = str01.find_first_of(str05, 0); - VERIFY( csz01 == 1 ); - csz01 = str01.find_first_of(str05, 4); - VERIFY( csz01 == 4 ); - - // An empty string_view consists of no characters - // therefore it should be found at every point in a string_view, - // except beyond the end - // However, str1.find_first_of(str2,pos) finds the first character in - // str1 (starting at pos) that exists in str2, which is none for empty str2 - csz01 = str01.find_first_of(str04, 0); - VERIFY( csz01 == npos ); - csz01 = str01.find_first_of(str04, 5); - VERIFY( csz01 == npos ); - - // size_type find_first_of(const char* s, size_type pos, size_type n) const; - csz01 = str01.find_first_of(str_lit01, 0, 3); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_of(str_lit01, 3, 0); - VERIFY( csz01 == npos ); - - // size_type find_first_of(const char* s, size_type pos = 0) const; - csz01 = str01.find_first_of(str_lit01); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_of(str_lit01, 3); - VERIFY( csz01 == 3 ); - - // size_type find_first_of(char c, size_type pos = 0) const; - csz01 = str01.find_first_of('z'); - csz02 = str01.size() - 1; - VERIFY( csz01 == csz02 ); - - return true; -} -#endif - -static int -main () -{ - test02(); -#ifndef GDB_STRING_VIEW - static_assert( test03() ); -#endif - - return 0; -} - -} // namespace operations_find_2 { diff --git a/gdb/unittests/basic_string_view/operations/find/char/3.cc b/gdb/unittests/basic_string_view/operations/find/char/3.cc deleted file mode 100644 index 078fda3..0000000 --- a/gdb/unittests/basic_string_view/operations/find/char/3.cc +++ /dev/null @@ -1,166 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view find_first_not_of - -namespace operations_find_3 { - -static void -test03 () -{ - typedef gdb::string_view::size_type csize_type; - csize_type npos = gdb::string_view::npos; - csize_type csz01; - - const gdb::string_view str01("Bob Rock, per me"); - const char str_lit01[] = "Bob Rock"; - gdb::string_view str02("ovvero Trivi"); - gdb::string_view str03(str_lit01); - gdb::string_view str04; - - // size_type find_first_not_of(const string_view&, size_type pos = 0) const; - csz01 = str01.find_first_not_of(str01); - VERIFY( csz01 == npos ); - csz01 = str01.find_first_not_of(str02, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_not_of(str02, 10); - VERIFY( csz01 == 10 ); - csz01 = str01.find_first_not_of(str02, 12); - VERIFY( csz01 == 14 ); - csz01 = str01.find_first_not_of(str03, 0); - VERIFY( csz01 == 8 ); - csz01 = str01.find_first_not_of(str03, 15); - VERIFY( csz01 == 15 ); - csz01 = str01.find_first_not_of(str03, 16); - VERIFY( csz01 == npos ); - csz01 = str01.find_first_not_of(str04, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_not_of(str04, 12); - VERIFY( csz01 == 12 ); - csz01 = str03.find_first_not_of(str01, 0); - VERIFY( csz01 == npos ); - csz01 = str04.find_first_not_of(str02, 0); - VERIFY( csz01 == npos ); - - // size_type find_first_not_of(const char* s, size_type pos, size_type n) const; - csz01 = str01.find_first_not_of(str_lit01, 0, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_not_of(str_lit01, 0, 8); - VERIFY( csz01 == 8 ); - csz01 = str01.find_first_not_of(str_lit01, 10, 0); - VERIFY( csz01 == 10 ); - - // size_type find_first_not_of(const char* s, size_type pos = 0) const; - csz01 = str01.find_first_not_of(str_lit01); - VERIFY( csz01 == 8 ); - csz01 = str02.find_first_not_of(str_lit01, 2); - VERIFY( csz01 == 2 ); - - // size_type find_first_not_of(char c, size_type pos = 0) const; - csz01 = str01.find_first_not_of('B'); - VERIFY( csz01 == 1 ); - csz01 = str01.find_first_not_of('o', 1); - VERIFY( csz01 == 2 ); - csz01 = str02.find_first_not_of('z'); - VERIFY( csz01 == 0 ); - csz01 = str04.find_first_not_of('S'); - VERIFY( csz01 == npos ); -} - -#ifndef GDB_STRING_VIEW -constexpr bool -test04() -{ - typedef std::string_view::size_type csize_type; - csize_type npos = std::string_view::npos; - csize_type csz01 = 0; - - const std::string_view str01("Bob Rock, per me"); - const char str_lit01[] = "Bob Rock"; - std::string_view str02("ovvero Trivi"); - std::string_view str03(str_lit01); - std::string_view str04; - -#undef VERIFY -#define VERIFY(x) if(!(x)) return false - - // size_type find_first_not_of(const string_view&, size_type pos = 0) const; - csz01 = str01.find_first_not_of(str01); - VERIFY( csz01 == npos ); - csz01 = str01.find_first_not_of(str02, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_not_of(str02, 10); - VERIFY( csz01 == 10 ); - csz01 = str01.find_first_not_of(str02, 12); - VERIFY( csz01 == 14 ); - csz01 = str01.find_first_not_of(str03, 0); - VERIFY( csz01 == 8 ); - csz01 = str01.find_first_not_of(str03, 15); - VERIFY( csz01 == 15 ); - csz01 = str01.find_first_not_of(str03, 16); - VERIFY( csz01 == npos ); - csz01 = str01.find_first_not_of(str04, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_not_of(str04, 12); - VERIFY( csz01 == 12 ); - csz01 = str03.find_first_not_of(str01, 0); - VERIFY( csz01 == npos ); - csz01 = str04.find_first_not_of(str02, 0); - VERIFY( csz01 == npos ); - - // size_type find_first_not_of(const char* s, size_type pos, size_type n) const; - csz01 = str01.find_first_not_of(str_lit01, 0, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_not_of(str_lit01, 0, 8); - VERIFY( csz01 == 8 ); - csz01 = str01.find_first_not_of(str_lit01, 10, 0); - VERIFY( csz01 == 10 ); - - // size_type find_first_not_of(const char* s, size_type pos = 0) const; - csz01 = str01.find_first_not_of(str_lit01); - VERIFY( csz01 == 8 ); - csz01 = str02.find_first_not_of(str_lit01, 2); - VERIFY( csz01 == 2 ); - - // size_type find_first_not_of(char c, size_type pos = 0) const; - csz01 = str01.find_first_not_of('B'); - VERIFY( csz01 == 1 ); - csz01 = str01.find_first_not_of('o', 1); - VERIFY( csz01 == 2 ); - csz01 = str02.find_first_not_of('z'); - VERIFY( csz01 == 0 ); - csz01 = str04.find_first_not_of('S'); - VERIFY( csz01 == npos ); - - return true; -} -#endif - -static int -main () -{ - test03(); -#ifndef GDB_STRING_VIEW - static_assert( test04() ); -#endif - - return 0; -} - -} // namespace operations_find_3 diff --git a/gdb/unittests/basic_string_view/operations/find/char/4.cc b/gdb/unittests/basic_string_view/operations/find/char/4.cc deleted file mode 100644 index 9e19c01..0000000 --- a/gdb/unittests/basic_string_view/operations/find/char/4.cc +++ /dev/null @@ -1,45 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view find - -namespace operations_find_4 { - -// libstdc++/31401 -static void -test01() -{ - typedef gdb::string_view::size_type csize_type; - csize_type npos = gdb::string_view::npos; - - gdb::string_view use = "anu"; - csize_type pos1 = use.find("a", npos); - - VERIFY( pos1 == npos ); -} - -static int -main () -{ - test01(); - - return 0; -} - -} // namespace operations_find_4 diff --git a/gdb/unittests/basic_string_view/operations/find/wchar_t/1.cc b/gdb/unittests/basic_string_view/operations/find/wchar_t/1.cc deleted file mode 100644 index 08e9e72..0000000 --- a/gdb/unittests/basic_string_view/operations/find/wchar_t/1.cc +++ /dev/null @@ -1,163 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view find - -#include <string_view> -#include <testsuite_hooks.h> - -void -test01() -{ - typedef std::wstring_view::size_type csize_type; - typedef std::wstring_view::const_reference cref; - typedef std::wstring_view::reference ref; - csize_type npos = std::wstring_view::npos; - csize_type csz01, csz02; - - const wchar_t str_lit01[] = L"mave"; - const std::wstring_view str01(L"mavericks, santa cruz"); - std::wstring_view str02(str_lit01); - std::wstring_view str03(L"s, s"); - std::wstring_view str04; - - // size_type find(const wstring_view&, size_type pos = 0) const; - csz01 = str01.find(str01); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str01, 4); - VERIFY( csz01 == npos ); - csz01 = str01.find(str02, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str02, 3); - VERIFY( csz01 == npos ); - csz01 = str01.find(str03, 0); - VERIFY( csz01 == 8 ); - csz01 = str01.find(str03, 3); - VERIFY( csz01 == 8 ); - csz01 = str01.find(str03, 12); - VERIFY( csz01 == npos ); - - // An empty string_view consists of no characters - // therefore it should be found at every point in a string_view, - // except beyond the end - csz01 = str01.find(str04, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str04, 5); - VERIFY( csz01 == 5 ); - csz01 = str01.find(str04, str01.size()); - VERIFY( csz01 == str01.size() ); - csz01 = str01.find(str04, str01.size()+1); - VERIFY( csz01 == npos ); - - // size_type find(const wchar_t* s, size_type pos, size_type n) const; - csz01 = str01.find(str_lit01, 0, 3); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str_lit01, 3, 0); - VERIFY( csz01 == 3 ); - - // size_type find(const wchar_t* s, size_type pos = 0) const; - csz01 = str01.find(str_lit01); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str_lit01, 3); - VERIFY( csz01 == npos ); - - // size_type find(wchar_t c, size_type pos = 0) const; - csz01 = str01.find(L'z'); - csz02 = str01.size() - 1; - VERIFY( csz01 == csz02 ); - csz01 = str01.find(L'/'); - VERIFY( csz01 == npos ); -} - -constexpr bool -test02() -{ - typedef std::wstring_view::size_type csize_type; - typedef std::wstring_view::const_reference cref; - typedef std::wstring_view::reference ref; - csize_type npos = std::wstring_view::npos; - csize_type csz01 = 0, csz02 = 0; - - const wchar_t str_lit01[] = L"mave"; - const std::wstring_view str01(L"mavericks, santa cruz"); - std::wstring_view str02(str_lit01); - std::wstring_view str03(L"s, s"); - std::wstring_view str04; - -#undef VERIFY -#define VERIFY(x) if(!(x)) return false - - // size_type find(const wstring_view&, size_type pos = 0) const; - csz01 = str01.find(str01); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str01, 4); - VERIFY( csz01 == npos ); - csz01 = str01.find(str02, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str02, 3); - VERIFY( csz01 == npos ); - csz01 = str01.find(str03, 0); - VERIFY( csz01 == 8 ); - csz01 = str01.find(str03, 3); - VERIFY( csz01 == 8 ); - csz01 = str01.find(str03, 12); - VERIFY( csz01 == npos ); - - // An empty string_view consists of no characters - // therefore it should be found at every point in a string_view, - // except beyond the end - csz01 = str01.find(str04, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str04, 5); - VERIFY( csz01 == 5 ); - csz01 = str01.find(str04, str01.size()); - VERIFY( csz01 == str01.size() ); - csz01 = str01.find(str04, str01.size()+1); - VERIFY( csz01 == npos ); - - // size_type find(const wchar_t* s, size_type pos, size_type n) const; - csz01 = str01.find(str_lit01, 0, 3); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str_lit01, 3, 0); - VERIFY( csz01 == 3 ); - - // size_type find(const wchar_t* s, size_type pos = 0) const; - csz01 = str01.find(str_lit01); - VERIFY( csz01 == 0 ); - csz01 = str01.find(str_lit01, 3); - VERIFY( csz01 == npos ); - - // size_type find(wchar_t c, size_type pos = 0) const; - csz01 = str01.find(L'z'); - csz02 = str01.size() - 1; - VERIFY( csz01 == csz02 ); - csz01 = str01.find(L'/'); - VERIFY( csz01 == npos ); - - return true; -} - -int -main() -{ - test01(); - static_assert( test02() ); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/operations/find/wchar_t/2.cc b/gdb/unittests/basic_string_view/operations/find/wchar_t/2.cc deleted file mode 100644 index fa38fe8..0000000 --- a/gdb/unittests/basic_string_view/operations/find/wchar_t/2.cc +++ /dev/null @@ -1,161 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view find_first_of - -#include <string_view> -#include <testsuite_hooks.h> - -void -test02() -{ - typedef std::wstring_view::size_type csize_type; - csize_type npos = std::wstring_view::npos; - csize_type csz01, csz02; - - const wchar_t str_lit01[] = L"mave"; - const std::wstring_view str01(L"mavericks, santa cruz"); - std::wstring_view str02(str_lit01); - std::wstring_view str03(L"s, s"); - std::wstring_view str04; - - // size_type find_first_of(const wstring_view&, size_type pos = 0) const; - std::wstring_view str05(L"xena rulez"); - csz01 = str01.find_first_of(str01); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_of(str01, 4); - VERIFY( csz01 == 4 ); - csz01 = str01.find_first_of(str02, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_of(str02, 3); - VERIFY( csz01 == 3 ); - csz01 = str01.find_first_of(str03, 0); - VERIFY( csz01 == 8 ); - csz01 = str01.find_first_of(str03, 3); - VERIFY( csz01 == 8 ); - csz01 = str01.find_first_of(str03, 12); - VERIFY( csz01 == 16 ); - csz01 = str01.find_first_of(str05, 0); - VERIFY( csz01 == 1 ); - csz01 = str01.find_first_of(str05, 4); - VERIFY( csz01 == 4 ); - - // An empty string_view consists of no characters - // therefore it should be found at every point in a string_view, - // except beyond the end - // However, str1.find_first_of(str2,pos) finds the first character in - // str1 (starting at pos) that exists in str2, which is none for empty str2 - csz01 = str01.find_first_of(str04, 0); - VERIFY( csz01 == npos ); - csz01 = str01.find_first_of(str04, 5); - VERIFY( csz01 == npos ); - - // size_type find_first_of(const wchar_t* s, size_type pos, size_type n) const; - csz01 = str01.find_first_of(str_lit01, 0, 3); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_of(str_lit01, 3, 0); - VERIFY( csz01 == npos ); - - // size_type find_first_of(const wchar_t* s, size_type pos = 0) const; - csz01 = str01.find_first_of(str_lit01); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_of(str_lit01, 3); - VERIFY( csz01 == 3 ); - - // size_type find_first_of(wchar_t c, size_type pos = 0) const; - csz01 = str01.find_first_of(L'z'); - csz02 = str01.size() - 1; - VERIFY( csz01 == csz02 ); -} - -constexpr bool -test04() -{ - typedef std::wstring_view::size_type csize_type; - csize_type npos = std::wstring_view::npos; - csize_type csz01 = 0, csz02 = 0; - - const wchar_t str_lit01[] = L"mave"; - const std::wstring_view str01(L"mavericks, santa cruz"); - std::wstring_view str02(str_lit01); - std::wstring_view str03(L"s, s"); - std::wstring_view str04; - -#undef VERIFY -#define VERIFY(x) if(!(x)) return false - - // size_type find_first_of(const wstring_view&, size_type pos = 0) const; - std::wstring_view str05(L"xena rulez"); - csz01 = str01.find_first_of(str01); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_of(str01, 4); - VERIFY( csz01 == 4 ); - csz01 = str01.find_first_of(str02, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_of(str02, 3); - VERIFY( csz01 == 3 ); - csz01 = str01.find_first_of(str03, 0); - VERIFY( csz01 == 8 ); - csz01 = str01.find_first_of(str03, 3); - VERIFY( csz01 == 8 ); - csz01 = str01.find_first_of(str03, 12); - VERIFY( csz01 == 16 ); - csz01 = str01.find_first_of(str05, 0); - VERIFY( csz01 == 1 ); - csz01 = str01.find_first_of(str05, 4); - VERIFY( csz01 == 4 ); - - // An empty string_view consists of no characters - // therefore it should be found at every point in a string_view, - // except beyond the end - // However, str1.find_first_of(str2,pos) finds the first character in - // str1 (starting at pos) that exists in str2, which is none for empty str2 - csz01 = str01.find_first_of(str04, 0); - VERIFY( csz01 == npos ); - csz01 = str01.find_first_of(str04, 5); - VERIFY( csz01 == npos ); - - // size_type find_first_of(const wchar_t* s, size_type pos, size_type n) const; - csz01 = str01.find_first_of(str_lit01, 0, 3); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_of(str_lit01, 3, 0); - VERIFY( csz01 == npos ); - - // size_type find_first_of(const wchar_t* s, size_type pos = 0) const; - csz01 = str01.find_first_of(str_lit01); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_of(str_lit01, 3); - VERIFY( csz01 == 3 ); - - // size_type find_first_of(wchar_t c, size_type pos = 0) const; - csz01 = str01.find_first_of(L'z'); - csz02 = str01.size() - 1; - VERIFY( csz01 == csz02 ); - - return true; -} - -int -main() -{ - test02(); - static_assert( test04() ); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/operations/find/wchar_t/3.cc b/gdb/unittests/basic_string_view/operations/find/wchar_t/3.cc deleted file mode 100644 index 93a238c..0000000 --- a/gdb/unittests/basic_string_view/operations/find/wchar_t/3.cc +++ /dev/null @@ -1,161 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view find_first_not_of - -#include <string_view> -#include <testsuite_hooks.h> - -void -test03() -{ - typedef std::wstring_view::size_type csize_type; - csize_type npos = std::wstring_view::npos; - csize_type csz01; - - const std::wstring_view str01(L"Bob Rock, per me"); - const wchar_t str_lit01[] = L"Bob Rock"; - std::wstring_view str02(L"ovvero Trivi"); - std::wstring_view str03(str_lit01); - std::wstring_view str04; - - // size_type find_first_not_of(const string_view&, size_type pos = 0) const; - csz01 = str01.find_first_not_of(str01); - VERIFY( csz01 == npos ); - csz01 = str01.find_first_not_of(str02, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_not_of(str02, 10); - VERIFY( csz01 == 10 ); - csz01 = str01.find_first_not_of(str02, 12); - VERIFY( csz01 == 14 ); - csz01 = str01.find_first_not_of(str03, 0); - VERIFY( csz01 == 8 ); - csz01 = str01.find_first_not_of(str03, 15); - VERIFY( csz01 == 15 ); - csz01 = str01.find_first_not_of(str03, 16); - VERIFY( csz01 == npos ); - csz01 = str01.find_first_not_of(str04, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_not_of(str04, 12); - VERIFY( csz01 == 12 ); - csz01 = str03.find_first_not_of(str01, 0); - VERIFY( csz01 == npos ); - csz01 = str04.find_first_not_of(str02, 0); - VERIFY( csz01 == npos ); - - // size_type find_first_not_of(const char* s, size_type pos, size_type n) const; - csz01 = str01.find_first_not_of(str_lit01, 0, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_not_of(str_lit01, 0, 8); - VERIFY( csz01 == 8 ); - csz01 = str01.find_first_not_of(str_lit01, 10, 0); - VERIFY( csz01 == 10 ); - - // size_type find_first_not_of(const char* s, size_type pos = 0) const; - csz01 = str01.find_first_not_of(str_lit01); - VERIFY( csz01 == 8 ); - csz01 = str02.find_first_not_of(str_lit01, 2); - VERIFY( csz01 == 2 ); - - // size_type find_first_not_of(char c, size_type pos = 0) const; - csz01 = str01.find_first_not_of(L'B'); - VERIFY( csz01 == 1 ); - csz01 = str01.find_first_not_of(L'o', 1); - VERIFY( csz01 == 2 ); - csz01 = str02.find_first_not_of(L'z'); - VERIFY( csz01 == 0 ); - csz01 = str04.find_first_not_of(L'S'); - VERIFY( csz01 == npos ); -} - -constexpr bool -test04() -{ - typedef std::wstring_view::size_type csize_type; - csize_type npos = std::wstring_view::npos; - csize_type csz01 = 0; - - const std::wstring_view str01(L"Bob Rock, per me"); - const wchar_t str_lit01[] = L"Bob Rock"; - std::wstring_view str02(L"ovvero Trivi"); - std::wstring_view str03(str_lit01); - std::wstring_view str04; - -#undef VERIFY -#define VERIFY(x) if(!(x)) return false - - // size_type find_first_not_of(const string_view&, size_type pos = 0) const; - csz01 = str01.find_first_not_of(str01); - VERIFY( csz01 == npos ); - csz01 = str01.find_first_not_of(str02, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_not_of(str02, 10); - VERIFY( csz01 == 10 ); - csz01 = str01.find_first_not_of(str02, 12); - VERIFY( csz01 == 14 ); - csz01 = str01.find_first_not_of(str03, 0); - VERIFY( csz01 == 8 ); - csz01 = str01.find_first_not_of(str03, 15); - VERIFY( csz01 == 15 ); - csz01 = str01.find_first_not_of(str03, 16); - VERIFY( csz01 == npos ); - csz01 = str01.find_first_not_of(str04, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_not_of(str04, 12); - VERIFY( csz01 == 12 ); - csz01 = str03.find_first_not_of(str01, 0); - VERIFY( csz01 == npos ); - csz01 = str04.find_first_not_of(str02, 0); - VERIFY( csz01 == npos ); - - // size_type find_first_not_of(const char* s, size_type pos, size_type n) const; - csz01 = str01.find_first_not_of(str_lit01, 0, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.find_first_not_of(str_lit01, 0, 8); - VERIFY( csz01 == 8 ); - csz01 = str01.find_first_not_of(str_lit01, 10, 0); - VERIFY( csz01 == 10 ); - - // size_type find_first_not_of(const char* s, size_type pos = 0) const; - csz01 = str01.find_first_not_of(str_lit01); - VERIFY( csz01 == 8 ); - csz01 = str02.find_first_not_of(str_lit01, 2); - VERIFY( csz01 == 2 ); - - // size_type find_first_not_of(char c, size_type pos = 0) const; - csz01 = str01.find_first_not_of(L'B'); - VERIFY( csz01 == 1 ); - csz01 = str01.find_first_not_of(L'o', 1); - VERIFY( csz01 == 2 ); - csz01 = str02.find_first_not_of(L'z'); - VERIFY( csz01 == 0 ); - csz01 = str04.find_first_not_of(L'S'); - VERIFY( csz01 == npos ); - - return true; -} - -int -main() -{ - test03(); - static_assert( test04() ); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/operations/find/wchar_t/4.cc b/gdb/unittests/basic_string_view/operations/find/wchar_t/4.cc deleted file mode 100644 index 7b484bd..0000000 --- a/gdb/unittests/basic_string_view/operations/find/wchar_t/4.cc +++ /dev/null @@ -1,44 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view find - -#include <string_view> -#include <testsuite_hooks.h> - -// libstdc++/31401 -void -test01() -{ - typedef std::wstring_view::size_type csize_type; - csize_type npos = std::wstring_view::npos; - - std::wstring_view use = L"anu"; - csize_type pos1 = use.find(L"a", npos); - - VERIFY( pos1 == npos ); -} - -int -main() -{ - test01(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/operations/rfind/char/1.cc b/gdb/unittests/basic_string_view/operations/rfind/char/1.cc deleted file mode 100644 index b764cd9..0000000 --- a/gdb/unittests/basic_string_view/operations/rfind/char/1.cc +++ /dev/null @@ -1,95 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -namespace operations_rfind_1 { - -// basic_string_view rfind - -static void -test01 () -{ - typedef gdb::string_view::size_type csize_type; - typedef gdb::string_view::const_reference cref; - typedef gdb::string_view::reference ref; - csize_type npos = gdb::string_view::npos; - csize_type csz01, csz02; - - const char str_lit01[] = "mave"; - const gdb::string_view str01("mavericks, santa cruz"); - gdb::string_view str02(str_lit01); - gdb::string_view str03("s, s"); - gdb::string_view str04; - - // size_type rfind(const string_view&, size_type pos = 0) const; - csz01 = str01.rfind(str01); - VERIFY( csz01 == 0 ); - csz01 = str01.rfind(str01, 4); - VERIFY( csz01 == 0 ); - csz01 = str01.rfind(str02,3); - VERIFY( csz01 == 0 ); - csz01 = str01.rfind(str02); - VERIFY( csz01 == 0 ); - csz01 = str01.rfind(str03); - VERIFY( csz01 == 8 ); - csz01 = str01.rfind(str03, 3); - VERIFY( csz01 == npos ); - csz01 = str01.rfind(str03, 12); - VERIFY( csz01 == 8 ); - - // An empty string_view consists of no characters - // therefore it should be found at every point in a string_view, - // except beyond the end - csz01 = str01.rfind(str04, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.rfind(str04, 5); - VERIFY( csz01 == 5 ); - csz01 = str01.rfind(str04, str01.size()); - VERIFY( csz01 == str01.size() ); - csz01 = str01.rfind(str04, str01.size()+1); - VERIFY( csz01 == str01.size() ); - - // size_type rfind(const char* s, size_type pos, size_type n) const; - csz01 = str01.rfind(str_lit01, 0, 3); - VERIFY( csz01 == 0 ); - csz01 = str01.rfind(str_lit01, 3, 0); - VERIFY( csz01 == 3 ); - - // size_type rfind(const char* s, size_type pos = 0) const; - csz01 = str01.rfind(str_lit01); - VERIFY( csz01 == 0 ); - csz01 = str01.rfind(str_lit01, 3); - VERIFY( csz01 == 0 ); - - // size_type rfind(char c, size_type pos = 0) const; - csz01 = str01.rfind('z'); - csz02 = str01.size() - 1; - VERIFY( csz01 == csz02 ); - csz01 = str01.rfind('/'); - VERIFY( csz01 == npos ); -} - -static int -main () -{ - test01(); - - return 0; -} - -} // namespace operations_rfind_1 diff --git a/gdb/unittests/basic_string_view/operations/rfind/char/2.cc b/gdb/unittests/basic_string_view/operations/rfind/char/2.cc deleted file mode 100644 index 915a111..0000000 --- a/gdb/unittests/basic_string_view/operations/rfind/char/2.cc +++ /dev/null @@ -1,53 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -namespace operations_rfind_2 { - -// basic_string_view::find_last_of - -static void -test02 () -{ - gdb::string_view z("ab"); - gdb::string_view::size_type pos; - pos = z.find_last_of("ab"); - VERIFY( pos == 1 ); - pos = z.find_last_of("Xa"); - VERIFY( pos == 0 ); - pos = z.find_last_of("Xb"); - VERIFY( pos == 1 ); - pos = z.find_last_of("XYZ"); - VERIFY( pos == gdb::string_view::npos ); - pos = z.find_last_of('a'); - VERIFY( pos == 0 ); - pos = z.find_last_of('b'); - VERIFY( pos == 1 ); - pos = z.find_last_of('X'); - VERIFY( pos == gdb::string_view::npos ); -} - -static int -main () -{ - test02(); - - return 0; -} - -} // namespace operations_rfind_2 diff --git a/gdb/unittests/basic_string_view/operations/rfind/char/3.cc b/gdb/unittests/basic_string_view/operations/rfind/char/3.cc deleted file mode 100644 index a15debf..0000000 --- a/gdb/unittests/basic_string_view/operations/rfind/char/3.cc +++ /dev/null @@ -1,68 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -namespace operations_rfind_3 { - -// basic_string_view::find_last_not_of - -static void -test03 () -{ - typedef gdb::string_view::size_type csize_type; - gdb::string_view::size_type pos; - csize_type npos = gdb::string_view::npos; - - gdb::string_view x; - pos = x.find_last_not_of('X'); - VERIFY( pos == npos ); - pos = x.find_last_not_of("XYZ"); - VERIFY( pos == npos ); - - gdb::string_view y("a"); - pos = y.find_last_not_of('X'); - VERIFY( pos == 0 ); - pos = y.find_last_not_of('a'); - VERIFY( pos == npos ); - pos = y.find_last_not_of("XYZ"); - VERIFY( pos == 0 ); - pos = y.find_last_not_of("a"); - VERIFY( pos == npos ); - - gdb::string_view z("ab"); - pos = z.find_last_not_of('X'); - VERIFY( pos == 1 ); - pos = z.find_last_not_of("XYZ"); - VERIFY( pos == 1 ); - pos = z.find_last_not_of('b'); - VERIFY( pos == 0 ); - pos = z.find_last_not_of("Xb"); - VERIFY( pos == 0 ); - pos = z.find_last_not_of("Xa"); - VERIFY( pos == 1 ); -} - -static int -main () -{ - test03(); - - return 0; -} - -} // namespace operations_rfind_3 diff --git a/gdb/unittests/basic_string_view/operations/rfind/wchar_t/1.cc b/gdb/unittests/basic_string_view/operations/rfind/wchar_t/1.cc deleted file mode 100644 index d5ad681..0000000 --- a/gdb/unittests/basic_string_view/operations/rfind/wchar_t/1.cc +++ /dev/null @@ -1,94 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -#include <string_view> -#include <testsuite_hooks.h> - -// basic_string_view rfind - -void -test01() -{ - typedef std::wstring_view::size_type csize_type; - typedef std::wstring_view::const_reference cref; - typedef std::wstring_view::reference ref; - csize_type npos = std::wstring_view::npos; - csize_type csz01, csz02; - - const wchar_t str_lit01[] = L"mave"; - const std::wstring_view str01(L"mavericks, santa cruz"); - std::wstring_view str02(str_lit01); - std::wstring_view str03(L"s, s"); - std::wstring_view str04; - - // size_type rfind(const wstring_view&, size_type pos = 0) const; - csz01 = str01.rfind(str01); - VERIFY( csz01 == 0 ); - csz01 = str01.rfind(str01, 4); - VERIFY( csz01 == 0 ); - csz01 = str01.rfind(str02,3); - VERIFY( csz01 == 0 ); - csz01 = str01.rfind(str02); - VERIFY( csz01 == 0 ); - csz01 = str01.rfind(str03); - VERIFY( csz01 == 8 ); - csz01 = str01.rfind(str03, 3); - VERIFY( csz01 == npos ); - csz01 = str01.rfind(str03, 12); - VERIFY( csz01 == 8 ); - - // An empty string_view consists of no characters - // therefore it should be found at every point in a string_view, - // except beyond the end - csz01 = str01.rfind(str04, 0); - VERIFY( csz01 == 0 ); - csz01 = str01.rfind(str04, 5); - VERIFY( csz01 == 5 ); - csz01 = str01.rfind(str04, str01.size()); - VERIFY( csz01 == str01.size() ); - csz01 = str01.rfind(str04, str01.size()+1); - VERIFY( csz01 == str01.size() ); - - // size_type rfind(const wchar_t* s, size_type pos, size_type n) const; - csz01 = str01.rfind(str_lit01, 0, 3); - VERIFY( csz01 == 0 ); - csz01 = str01.rfind(str_lit01, 3, 0); - VERIFY( csz01 == 3 ); - - // size_type rfind(const wchar_t* s, size_type pos = 0) const; - csz01 = str01.rfind(str_lit01); - VERIFY( csz01 == 0 ); - csz01 = str01.rfind(str_lit01, 3); - VERIFY( csz01 == 0 ); - - // size_type rfind(wchar_t c, size_type pos = 0) const; - csz01 = str01.rfind(L'z'); - csz02 = str01.size() - 1; - VERIFY( csz01 == csz02 ); - csz01 = str01.rfind(L'/'); - VERIFY( csz01 == npos ); -} - -int -main() -{ - test01(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/operations/rfind/wchar_t/2.cc b/gdb/unittests/basic_string_view/operations/rfind/wchar_t/2.cc deleted file mode 100644 index 6f3dc74..0000000 --- a/gdb/unittests/basic_string_view/operations/rfind/wchar_t/2.cc +++ /dev/null @@ -1,52 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -#include <string_view> -#include <testsuite_hooks.h> - -// basic_string_view::find_last_of - -void -test02() -{ - std::wstring_view::size_type pos; - std::wstring_view z(L"ab"); - pos = z.find_last_of(L"ab"); - VERIFY( pos == 1 ); - pos = z.find_last_of(L"Xa"); - VERIFY( pos == 0 ); - pos = z.find_last_of(L"Xb"); - VERIFY( pos == 1 ); - pos = z.find_last_of(L"XYZ"); - VERIFY( pos == std::wstring_view::npos ); - pos = z.find_last_of(L'a'); - VERIFY( pos == 0 ); - pos = z.find_last_of(L'b'); - VERIFY( pos == 1 ); - pos = z.find_last_of(L'X'); - VERIFY( pos == std::wstring_view::npos ); -} - -int -main() -{ - test02(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/operations/rfind/wchar_t/3.cc b/gdb/unittests/basic_string_view/operations/rfind/wchar_t/3.cc deleted file mode 100644 index b67f8ec..0000000 --- a/gdb/unittests/basic_string_view/operations/rfind/wchar_t/3.cc +++ /dev/null @@ -1,66 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -#include <string_view> -#include <testsuite_hooks.h> - -// basic_string_view::find_last_not_of - -void -test03() -{ - typedef std::wstring_view::size_type csize_type; - std::wstring_view::size_type pos; - csize_type npos = std::wstring_view::npos; - - std::wstring_view x; - pos = x.find_last_not_of(L'X'); - VERIFY( pos == npos ); - pos = x.find_last_not_of(L"XYZ"); - VERIFY( pos == npos ); - - std::wstring_view y(L"a"); - pos = y.find_last_not_of(L'X'); - VERIFY( pos == 0 ); - pos = y.find_last_not_of(L'a'); - VERIFY( pos == npos ); - pos = y.find_last_not_of(L"XYZ"); - VERIFY( pos == 0 ); - pos = y.find_last_not_of(L"a"); - VERIFY( pos == npos ); - - std::wstring_view z(L"ab"); - pos = z.find_last_not_of(L'X'); - VERIFY( pos == 1 ); - pos = z.find_last_not_of(L"XYZ"); - VERIFY( pos == 1 ); - pos = z.find_last_not_of(L'b'); - VERIFY( pos == 0 ); - pos = z.find_last_not_of(L"Xb"); - VERIFY( pos == 0 ); - pos = z.find_last_not_of(L"Xa"); - VERIFY( pos == 1 ); -} -int -main() -{ - test03(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/operations/string_conversion/1.cc b/gdb/unittests/basic_string_view/operations/string_conversion/1.cc deleted file mode 100644 index 3378423..0000000 --- a/gdb/unittests/basic_string_view/operations/string_conversion/1.cc +++ /dev/null @@ -1,51 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2014-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view::to_string - -#include <string_view> -#include <string> -#include <algorithm> -#include <testsuite_hooks.h> -#include <testsuite_allocator.h> - -void -test01() -{ - const char str_lit[] = "123456789A"; - const std::string_view sv(str_lit); - char buffer[4] = { 0 }; - - std::string s1{sv}; - VERIFY( s1 == str_lit ); - using test_alloc = __gnu_test::tracker_allocator<char>; - std::basic_string<char, std::char_traits<char>, test_alloc> - s2{sv, test_alloc{}}; - static_assert( std::is_same<decltype(s2)::allocator_type, test_alloc>::value, - "to_string() uses custom allocator" ); - VERIFY( std::equal(s1.begin(), s1.end(), s2.begin(), s2.end()) ); - auto s3 = static_cast<std::string>(sv); - VERIFY( s3 == s1 ); -} - -int -main() -{ - test01(); -} diff --git a/gdb/unittests/basic_string_view/operations/substr/char/1.cc b/gdb/unittests/basic_string_view/operations/substr/char/1.cc deleted file mode 100644 index 1945446..0000000 --- a/gdb/unittests/basic_string_view/operations/substr/char/1.cc +++ /dev/null @@ -1,79 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view::substr - -namespace operations_substr_1 { - -static void -test01 () -{ - typedef gdb::string_view::size_type csize_type; - typedef gdb::string_view::const_reference cref; - typedef gdb::string_view::reference ref; - csize_type csz01; - - const char str_lit01[] = "rockaway, pacifica"; - const gdb::string_view str01(str_lit01); - gdb::string_view str02; - - // basic_string_view<charT, _Traits, _Alloc> - // substr(size_type pos = 0, size_type n = npos) const; - csz01 = str01.size(); - str02 = str01.substr(0, 1); - VERIFY( str02 == "r" ); - str02 = str01.substr(10); - VERIFY( str02 == "pacifica" ); - - try - { - str02 = str01.substr(csz01 + 1); - VERIFY( false ); - } - catch(gdb_exception& fail) - { - VERIFY( true ); - } - catch(...) - { - VERIFY( false ); - } - - try - { - str02 = str01.substr(csz01); - VERIFY( str02.size() == 0 ); - VERIFY( str02.begin() == str01.end() ); - VERIFY( true ); - } - catch(...) - { - VERIFY( false ); - } -} - -static int -main () -{ - test01(); - - return 0; -} - -} // namespace operations_substr_1 diff --git a/gdb/unittests/basic_string_view/operations/substr/wchar_t/1.cc b/gdb/unittests/basic_string_view/operations/substr/wchar_t/1.cc deleted file mode 100644 index bfe79ac..0000000 --- a/gdb/unittests/basic_string_view/operations/substr/wchar_t/1.cc +++ /dev/null @@ -1,79 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view::substr - -#include <string_view> -#include <stdexcept> -#include <testsuite_hooks.h> - -void -test01() -{ - typedef std::wstring_view::size_type csize_type; - typedef std::wstring_view::const_reference cref; - typedef std::wstring_view::reference ref; - csize_type csz01; - - const wchar_t str_lit01[] = L"rockaway, pacifica"; - const std::wstring_view str01(str_lit01); - std::wstring_view str02; - - // basic_string_view<charT, _Traits, _Alloc> - // substr(size_type pos = 0, size_type n = npos) const; - csz01 = str01.size(); - str02 = str01.substr(0, 1); - VERIFY( str02 == L"r" ); - str02 = str01.substr(10); - VERIFY( str02 == L"pacifica" ); - - try - { - str02 = str01.substr(csz01 + 1); - VERIFY( false ); - } - catch(std::out_of_range& fail) - { - VERIFY( true ); - } - catch(...) - { - VERIFY( false ); - } - - try - { - str02 = str01.substr(csz01); - VERIFY( str02.size() == 0 ); - VERIFY( str02.begin() == str01.end() ); - VERIFY( true ); - } - catch(...) - { - VERIFY( false ); - } -} - -int -main() -{ - test01(); - - return 0; -} diff --git a/gdb/unittests/basic_string_view/operators/char/2.cc b/gdb/unittests/basic_string_view/operators/char/2.cc deleted file mode 100644 index 30e557f..0000000 --- a/gdb/unittests/basic_string_view/operators/char/2.cc +++ /dev/null @@ -1,373 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string non-member functions - -// operator== -/* -template<class charT, class traits, class Allocator> - bool operator==(const basic_string<charT,traits,Allocator>& lhs, - const basic_string<charT,traits,Allocator>& rhs); - -template<class charT, class traits, class Allocator> - bool operator==(const charT* lhs, - const basic_string<charT,traits,Allocator>& rhs); - -template<class charT, class traits, class Allocator> - bool operator==(const basic_string<charT,traits,Allocator>& lhs, - const charT* rhs); -*/ - -// operator!= -/* -template<class charT, class traits, class Allocator> - bool operator!=(const basic_string<charT,traits,Allocator>& lhs, - const basic_string<charT,traits,Allocator>& rhs); - -template<class charT, class traits, class Allocator> - bool operator!=(const charT* lhs, - const basic_string<charT,traits,Allocator>& rhs); - -template<class charT, class traits, class Allocator> - bool operator!=(const basic_string<charT,traits,Allocator>& lhs, - const charT* rhs); -*/ - -// operator< -/* -template<class charT, class traits, class Allocator> - bool operator< (const basic_string<charT,traits,Allocator>& lhs, - const basic_string<charT,traits,Allocator>& rhs); - -template<class charT, class traits, class Allocator> - bool operator< (const basic_string<charT,traits,Allocator>& lhs, - const charT* rhs); - -template<class charT, class traits, class Allocator> - bool operator< (const charT* lhs, - const basic_string<charT,traits,Allocator>& rhs); -*/ - -// operator> -/* -template<class charT, class traits, class Allocator> - bool operator> (const basic_string<charT,traits,Allocator>& lhs, - const basic_string<charT,traits,Allocator>& rhs); - -template<class charT, class traits, class Allocator> - bool operator> (const basic_string<charT,traits,Allocator>& lhs, - const charT* rhs); - -template<class charT, class traits, class Allocator> - bool operator> (const charT* lhs, - const basic_string<charT,traits,Allocator>& rhs); -*/ - -// operator<= -/* -template<class charT, class traits, class Allocator> - bool operator<=(const basic_string<charT,traits,Allocator>& lhs, - const basic_string<charT,traits,Allocator>& rhs); - -template<class charT, class traits, class Allocator> - bool operator<=(const basic_string<charT,traits,Allocator>& lhs, - const charT* rhs); - -template<class charT, class traits, class Allocator> - bool operator<=(const charT* lhs, - const basic_string<charT,traits,Allocator>& rhs); -*/ - -// operator>= -/* -template<class charT, class traits, class Allocator> - bool operator>=(const basic_string<charT,traits,Allocator>& lhs, - const basic_string<charT,traits,Allocator>& rhs); - -template<class charT, class traits, class Allocator> - bool operator>=(const basic_string<charT,traits,Allocator>& lhs, - const charT* rhs); - -template<class charT, class traits, class Allocator> - bool operator>=(const charT* lhs, - const basic_string<charT,traits,Allocator>& rhs); -*/ - -namespace operators_2 { - -static void -test01() -{ - gdb::string_view str_0("costa rica"); - gdb::string_view str_1("costa marbella"); - gdb::string_view str_2("cost"); - gdb::string_view str_3("costa ricans"); - gdb::string_view str_4; - - str_4 = str_0; - //comparisons between string objects - VERIFY( !(str_0 == str_1) ); - VERIFY( !(str_0 == str_2) ); - VERIFY( !(str_0 == str_3) ); - VERIFY( !(str_1 == str_0) ); - VERIFY( !(str_2 == str_0) ); - VERIFY( !(str_3 == str_0) ); - VERIFY( str_4 == str_0 ); - VERIFY( str_0 == str_4 ); - - VERIFY( str_0 != str_1 ); - VERIFY( str_0 != str_2 ); - VERIFY( str_0 != str_3 ); - VERIFY( str_1 != str_0 ); - VERIFY( str_2 != str_0 ); - VERIFY( str_3 != str_0 ); - VERIFY( !(str_0 != str_4) ); - VERIFY( !(str_4 != str_0) ); - - VERIFY( str_0 > str_1 ); //true cuz r>m - VERIFY( str_0 > str_2 ); - VERIFY( !(str_0 > str_3) ); - VERIFY( !(str_1 > str_0) ); //false cuz m<r - VERIFY( !(str_2 > str_0) ); - VERIFY( str_3 > str_0 ); - VERIFY( !(str_0 > str_4) ); - VERIFY( !(str_4 > str_0) ); - - VERIFY( !(str_0 < str_1) ); //false cuz r>m - VERIFY( !(str_0 < str_2) ); - VERIFY( str_0 < str_3 ); - VERIFY( str_1 < str_0 ); //true cuz m<r - VERIFY( str_2 < str_0 ); - VERIFY( !(str_3 < str_0) ); - VERIFY( !(str_0 < str_4) ); - VERIFY( !(str_4 < str_0) ); - - VERIFY( str_0 >= str_1 ); //true cuz r>m - VERIFY( str_0 >= str_2 ); - VERIFY( !(str_0 >= str_3) ); - VERIFY( !(str_1 >= str_0) );//false cuz m<r - VERIFY( !(str_2 >= str_0) ); - VERIFY( str_3 >= str_0 ); - VERIFY( str_0 >= str_4 ); - VERIFY( str_4 >= str_0 ); - - VERIFY( !(str_0 <= str_1) );//false cuz r>m - VERIFY( !(str_0 <= str_2) ); - VERIFY( str_0 <= str_3 ); - VERIFY( str_1 <= str_0 );//true cuz m<r - VERIFY( str_2 <= str_0 ); - VERIFY( !(str_3 <= str_0) ); - VERIFY( str_0 <= str_4 ); - VERIFY( str_4 <= str_0 ); - - //comparisons between string object and string literal - VERIFY( !(str_0 == "costa marbella") ); - VERIFY( !(str_0 == "cost") ); - VERIFY( !(str_0 == "costa ricans") ); - VERIFY( !("costa marbella" == str_0) ); - VERIFY( !("cost" == str_0) ); - VERIFY( !("costa ricans" == str_0) ); - VERIFY( "costa rica" == str_0 ); - VERIFY( str_0 == "costa rica" ); - - VERIFY( str_0 != "costa marbella" ); - VERIFY( str_0 != "cost" ); - VERIFY( str_0 != "costa ricans" ); - VERIFY( "costa marbella" != str_0 ); - VERIFY( "cost" != str_0 ); - VERIFY( "costa ricans" != str_0 ); - VERIFY( !("costa rica" != str_0) ); - VERIFY( !(str_0 != "costa rica") ); - - VERIFY( str_0 > "costa marbella" ); //true cuz r>m - VERIFY( str_0 > "cost" ); - VERIFY( !(str_0 > "costa ricans") ); - VERIFY( !("costa marbella" > str_0) );//false cuz m<r - VERIFY( !("cost" > str_0) ); - VERIFY( "costa ricans" > str_0 ); - VERIFY( !("costa rica" > str_0) ); - VERIFY( !(str_0 > "costa rica") ); - - VERIFY( !(str_0 < "costa marbella") );//false cuz r>m - VERIFY( !(str_0 < "cost") ); - VERIFY( str_0 < "costa ricans" ); - VERIFY( "costa marbella" < str_0 );//true cuz m<r - VERIFY( "cost" < str_0 ); - VERIFY( !("costa ricans" < str_0) ); - VERIFY( !("costa rica" < str_0) ); - VERIFY( !(str_0 < "costa rica") ); - - VERIFY( str_0 >= "costa marbella" );//true cuz r>m - VERIFY( str_0 >= "cost" ); - VERIFY( !(str_0 >= "costa ricans") ); - VERIFY( !("costa marbella" >= str_0) );//false cuz m<r - VERIFY( !("cost" >= str_0) ); - VERIFY( "costa ricans" >= str_0 ); - VERIFY( "costa rica" >= str_0 ); - VERIFY( str_0 >= "costa rica" ); - - VERIFY( !(str_0 <= "costa marbella") );//false cuz r>m - VERIFY( !(str_0 <= "cost") ); - VERIFY( str_0 <= "costa ricans" ); - VERIFY( "costa marbella" <= str_0 );//true cuz m<r - VERIFY( "cost" <= str_0 ); - VERIFY( !("costa ricans" <= str_0) ); - VERIFY( "costa rica" <= str_0 ); - VERIFY( str_0 <= "costa rica" ); -} - -#ifndef GDB_STRING_VIEW -constexpr bool -test02() -{ - std::string_view str_0("costa rica"); - std::string_view str_1("costa marbella"); - std::string_view str_2("cost"); - std::string_view str_3("costa ricans"); - std::string_view str_4; - -#undef VERIFY -#define VERIFY(x) if (!(x)) return false - - str_4 = str_0; - //comparisons between string objects - VERIFY( !(str_0 == str_1) ); - VERIFY( !(str_0 == str_2) ); - VERIFY( !(str_0 == str_3) ); - VERIFY( !(str_1 == str_0) ); - VERIFY( !(str_2 == str_0) ); - VERIFY( !(str_3 == str_0) ); - VERIFY( str_4 == str_0 ); - VERIFY( str_0 == str_4 ); - - VERIFY( str_0 != str_1 ); - VERIFY( str_0 != str_2 ); - VERIFY( str_0 != str_3 ); - VERIFY( str_1 != str_0 ); - VERIFY( str_2 != str_0 ); - VERIFY( str_3 != str_0 ); - VERIFY( !(str_0 != str_4) ); - VERIFY( !(str_4 != str_0) ); - - VERIFY( str_0 > str_1 ); //true cuz r>m - VERIFY( str_0 > str_2 ); - VERIFY( !(str_0 > str_3) ); - VERIFY( !(str_1 > str_0) ); //false cuz m<r - VERIFY( !(str_2 > str_0) ); - VERIFY( str_3 > str_0 ); - VERIFY( !(str_0 > str_4) ); - VERIFY( !(str_4 > str_0) ); - - VERIFY( !(str_0 < str_1) ); //false cuz r>m - VERIFY( !(str_0 < str_2) ); - VERIFY( str_0 < str_3 ); - VERIFY( str_1 < str_0 ); //true cuz m<r - VERIFY( str_2 < str_0 ); - VERIFY( !(str_3 < str_0) ); - VERIFY( !(str_0 < str_4) ); - VERIFY( !(str_4 < str_0) ); - - VERIFY( str_0 >= str_1 ); //true cuz r>m - VERIFY( str_0 >= str_2 ); - VERIFY( !(str_0 >= str_3) ); - VERIFY( !(str_1 >= str_0) );//false cuz m<r - VERIFY( !(str_2 >= str_0) ); - VERIFY( str_3 >= str_0 ); - VERIFY( str_0 >= str_4 ); - VERIFY( str_4 >= str_0 ); - - VERIFY( !(str_0 <= str_1) );//false cuz r>m - VERIFY( !(str_0 <= str_2) ); - VERIFY( str_0 <= str_3 ); - VERIFY( str_1 <= str_0 );//true cuz m<r - VERIFY( str_2 <= str_0 ); - VERIFY( !(str_3 <= str_0) ); - VERIFY( str_0 <= str_4 ); - VERIFY( str_4 <= str_0 ); - - //comparisons between string object and string literal - VERIFY( !(str_0 == "costa marbella") ); - VERIFY( !(str_0 == "cost") ); - VERIFY( !(str_0 == "costa ricans") ); - VERIFY( !("costa marbella" == str_0) ); - VERIFY( !("cost" == str_0) ); - VERIFY( !("costa ricans" == str_0) ); - VERIFY( "costa rica" == str_0 ); - VERIFY( str_0 == "costa rica" ); - - VERIFY( str_0 != "costa marbella" ); - VERIFY( str_0 != "cost" ); - VERIFY( str_0 != "costa ricans" ); - VERIFY( "costa marbella" != str_0 ); - VERIFY( "cost" != str_0 ); - VERIFY( "costa ricans" != str_0 ); - VERIFY( !("costa rica" != str_0) ); - VERIFY( !(str_0 != "costa rica") ); - - VERIFY( str_0 > "costa marbella" ); //true cuz r>m - VERIFY( str_0 > "cost" ); - VERIFY( !(str_0 > "costa ricans") ); - VERIFY( !("costa marbella" > str_0) );//false cuz m<r - VERIFY( !("cost" > str_0) ); - VERIFY( "costa ricans" > str_0 ); - VERIFY( !("costa rica" > str_0) ); - VERIFY( !(str_0 > "costa rica") ); - - VERIFY( !(str_0 < "costa marbella") );//false cuz r>m - VERIFY( !(str_0 < "cost") ); - VERIFY( str_0 < "costa ricans" ); - VERIFY( "costa marbella" < str_0 );//true cuz m<r - VERIFY( "cost" < str_0 ); - VERIFY( !("costa ricans" < str_0) ); - VERIFY( !("costa rica" < str_0) ); - VERIFY( !(str_0 < "costa rica") ); - - VERIFY( str_0 >= "costa marbella" );//true cuz r>m - VERIFY( str_0 >= "cost" ); - VERIFY( !(str_0 >= "costa ricans") ); - VERIFY( !("costa marbella" >= str_0) );//false cuz m<r - VERIFY( !("cost" >= str_0) ); - VERIFY( "costa ricans" >= str_0 ); - VERIFY( "costa rica" >= str_0 ); - VERIFY( str_0 >= "costa rica" ); - - VERIFY( !(str_0 <= "costa marbella") );//false cuz r>m - VERIFY( !(str_0 <= "cost") ); - VERIFY( str_0 <= "costa ricans" ); - VERIFY( "costa marbella" <= str_0 );//true cuz m<r - VERIFY( "cost" <= str_0 ); - VERIFY( !("costa ricans" <= str_0) ); - VERIFY( "costa rica" <= str_0 ); - VERIFY( str_0 <= "costa rica" ); - - return true; -} -#endif - -static int -main () -{ - test01(); -#ifndef GDB_STRING_VIEW - static_assert( test02() ); -#endif - return 0; -} - -} // namespace operators_2 diff --git a/gdb/unittests/basic_string_view/operators/wchar_t/2.cc b/gdb/unittests/basic_string_view/operators/wchar_t/2.cc deleted file mode 100644 index 5e043bc..0000000 --- a/gdb/unittests/basic_string_view/operators/wchar_t/2.cc +++ /dev/null @@ -1,367 +0,0 @@ -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// basic_string_view non-member functions - -// operator== -/* -template<class charT, class traits, class Allocator> - bool operator==(const basic_string_view<charT,traits,Allocator>& lhs, - const basic_string_view<charT,traits,Allocator>& rhs); - -template<class charT, class traits, class Allocator> - bool operator==(const charT* lhs, - const basic_string_view<charT,traits,Allocator>& rhs); - -template<class charT, class traits, class Allocator> - bool operator==(const basic_string_view<charT,traits,Allocator>& lhs, - const charT* rhs); -*/ - -// operator!= -/* -template<class charT, class traits, class Allocator> - bool operator!=(const basic_string_view<charT,traits,Allocator>& lhs, - const basic_string_view<charT,traits,Allocator>& rhs); - -template<class charT, class traits, class Allocator> - bool operator!=(const charT* lhs, - const basic_string_view<charT,traits,Allocator>& rhs); - -template<class charT, class traits, class Allocator> - bool operator!=(const basic_string_view<charT,traits,Allocator>& lhs, - const charT* rhs); -*/ - -// operator< -/* -template<class charT, class traits, class Allocator> - bool operator< (const basic_string_view<charT,traits,Allocator>& lhs, - const basic_string_view<charT,traits,Allocator>& rhs); - -template<class charT, class traits, class Allocator> - bool operator< (const basic_string_view<charT,traits,Allocator>& lhs, - const charT* rhs); - -template<class charT, class traits, class Allocator> - bool operator< (const charT* lhs, - const basic_string_view<charT,traits,Allocator>& rhs); -*/ - -// operator> -/* -template<class charT, class traits, class Allocator> - bool operator> (const basic_string_view<charT,traits,Allocator>& lhs, - const basic_string_view<charT,traits,Allocator>& rhs); - -template<class charT, class traits, class Allocator> - bool operator> (const basic_string_view<charT,traits,Allocator>& lhs, - const charT* rhs); - -template<class charT, class traits, class Allocator> - bool operator> (const charT* lhs, - const basic_string_view<charT,traits,Allocator>& rhs); -*/ - -// operator<= -/* -template<class charT, class traits, class Allocator> - bool operator<=(const basic_string_view<charT,traits,Allocator>& lhs, - const basic_string_view<charT,traits,Allocator>& rhs); - -template<class charT, class traits, class Allocator> - bool operator<=(const basic_string_view<charT,traits,Allocator>& lhs, - const charT* rhs); - -template<class charT, class traits, class Allocator> - bool operator<=(const charT* lhs, - const basic_string_view<charT,traits,Allocator>& rhs); -*/ - -// operator>= -/* -template<class charT, class traits, class Allocator> - bool operator>=(const basic_string_view<charT,traits,Allocator>& lhs, - const basic_string_view<charT,traits,Allocator>& rhs); - -template<class charT, class traits, class Allocator> - bool operator>=(const basic_string_view<charT,traits,Allocator>& lhs, - const charT* rhs); - -template<class charT, class traits, class Allocator> - bool operator>=(const charT* lhs, - const basic_string_view<charT,traits,Allocator>& rhs); -*/ - -#include <string_view> -#include <testsuite_hooks.h> - -void -test01() -{ - std::wstring_view str_0(L"costa rica"); - std::wstring_view str_1(L"costa marbella"); - std::wstring_view str_2(L"cost"); - std::wstring_view str_3(L"costa ricans"); - std::wstring_view str_4; - - str_4 = str_0; - //comparisons between string_view objects - VERIFY( !(str_0 == str_1) ); - VERIFY( !(str_0 == str_2) ); - VERIFY( !(str_0 == str_3) ); - VERIFY( !(str_1 == str_0) ); - VERIFY( !(str_2 == str_0) ); - VERIFY( !(str_3 == str_0) ); - VERIFY( str_4 == str_0 ); - VERIFY( str_0 == str_4 ); - - VERIFY( str_0 != str_1 ); - VERIFY( str_0 != str_2 ); - VERIFY( str_0 != str_3 ); - VERIFY( str_1 != str_0 ); - VERIFY( str_2 != str_0 ); - VERIFY( str_3 != str_0 ); - VERIFY( !(str_0 != str_4) ); - VERIFY( !(str_4 != str_0) ); - - VERIFY( str_0 > str_1 ); //true cuz r>m - VERIFY( str_0 > str_2 ); - VERIFY( !(str_0 > str_3) ); - VERIFY( !(str_1 > str_0) ); //false cuz m<r - VERIFY( !(str_2 > str_0) ); - VERIFY( str_3 > str_0 ); - VERIFY( !(str_0 > str_4) ); - VERIFY( !(str_4 > str_0) ); - - VERIFY( !(str_0 < str_1) ); //false cuz r>m - VERIFY( !(str_0 < str_2) ); - VERIFY( str_0 < str_3 ); - VERIFY( str_1 < str_0 ); //true cuz m<r - VERIFY( str_2 < str_0 ); - VERIFY( !(str_3 < str_0) ); - VERIFY( !(str_0 < str_4) ); - VERIFY( !(str_4 < str_0) ); - - VERIFY( str_0 >= str_1 ); //true cuz r>m - VERIFY( str_0 >= str_2 ); - VERIFY( !(str_0 >= str_3) ); - VERIFY( !(str_1 >= str_0) );//false cuz m<r - VERIFY( !(str_2 >= str_0) ); - VERIFY( str_3 >= str_0 ); - VERIFY( str_0 >= str_4 ); - VERIFY( str_4 >= str_0 ); - - VERIFY( !(str_0 <= str_1) );//false cuz r>m - VERIFY( !(str_0 <= str_2) ); - VERIFY( str_0 <= str_3 ); - VERIFY( str_1 <= str_0 );//true cuz m<r - VERIFY( str_2 <= str_0 ); - VERIFY( !(str_3 <= str_0) ); - VERIFY( str_0 <= str_4 ); - VERIFY( str_4 <= str_0 ); - - //comparisons between string_view object and string_view literal - VERIFY( !(str_0 == L"costa marbella") ); - VERIFY( !(str_0 == L"cost") ); - VERIFY( !(str_0 == L"costa ricans") ); - VERIFY( !(L"costa marbella" == str_0) ); - VERIFY( !(L"cost" == str_0) ); - VERIFY( !(L"costa ricans" == str_0) ); - VERIFY( L"costa rica" == str_0 ); - VERIFY( str_0 == L"costa rica" ); - - VERIFY( str_0 != L"costa marbella" ); - VERIFY( str_0 != L"cost" ); - VERIFY( str_0 != L"costa ricans" ); - VERIFY( L"costa marbella" != str_0 ); - VERIFY( L"cost" != str_0 ); - VERIFY( L"costa ricans" != str_0 ); - VERIFY( !(L"costa rica" != str_0) ); - VERIFY( !(str_0 != L"costa rica") ); - - VERIFY( str_0 > L"costa marbella" ); //true cuz r>m - VERIFY( str_0 > L"cost" ); - VERIFY( !(str_0 > L"costa ricans") ); - VERIFY( !(L"costa marbella" > str_0) );//false cuz m<r - VERIFY( !(L"cost" > str_0) ); - VERIFY( L"costa ricans" > str_0 ); - VERIFY( !(L"costa rica" > str_0) ); - VERIFY( !(str_0 > L"costa rica") ); - - VERIFY( !(str_0 < L"costa marbella") );//false cuz r>m - VERIFY( !(str_0 < L"cost") ); - VERIFY( str_0 < L"costa ricans" ); - VERIFY( L"costa marbella" < str_0 );//true cuz m<r - VERIFY( L"cost" < str_0 ); - VERIFY( !(L"costa ricans" < str_0) ); - VERIFY( !(L"costa rica" < str_0) ); - VERIFY( !(str_0 < L"costa rica") ); - - VERIFY( str_0 >= L"costa marbella" );//true cuz r>m - VERIFY( str_0 >= L"cost" ); - VERIFY( !(str_0 >= L"costa ricans") ); - VERIFY( !(L"costa marbella" >= str_0) );//false cuz m<r - VERIFY( !(L"cost" >= str_0) ); - VERIFY( L"costa ricans" >= str_0 ); - VERIFY( L"costa rica" >= str_0 ); - VERIFY( str_0 >= L"costa rica" ); - - VERIFY( !(str_0 <= L"costa marbella") );//false cuz r>m - VERIFY( !(str_0 <= L"cost") ); - VERIFY( str_0 <= L"costa ricans" ); - VERIFY( L"costa marbella" <= str_0 );//true cuz m<r - VERIFY( L"cost" <= str_0 ); - VERIFY( !(L"costa ricans" <= str_0) ); - VERIFY( L"costa rica" <= str_0 ); - VERIFY( str_0 <= L"costa rica" ); -} - -constexpr bool -test02() -{ - std::wstring_view str_0(L"costa rica"); - std::wstring_view str_1(L"costa marbella"); - std::wstring_view str_2(L"cost"); - std::wstring_view str_3(L"costa ricans"); - std::wstring_view str_4; - -#undef VERIFY -#define VERIFY(x) if (!(x)) return false - - str_4 = str_0; - //comparisons between string_view objects - VERIFY( !(str_0 == str_1) ); - VERIFY( !(str_0 == str_2) ); - VERIFY( !(str_0 == str_3) ); - VERIFY( !(str_1 == str_0) ); - VERIFY( !(str_2 == str_0) ); - VERIFY( !(str_3 == str_0) ); - VERIFY( str_4 == str_0 ); - VERIFY( str_0 == str_4 ); - - VERIFY( str_0 != str_1 ); - VERIFY( str_0 != str_2 ); - VERIFY( str_0 != str_3 ); - VERIFY( str_1 != str_0 ); - VERIFY( str_2 != str_0 ); - VERIFY( str_3 != str_0 ); - VERIFY( !(str_0 != str_4) ); - VERIFY( !(str_4 != str_0) ); - - VERIFY( str_0 > str_1 ); //true cuz r>m - VERIFY( str_0 > str_2 ); - VERIFY( !(str_0 > str_3) ); - VERIFY( !(str_1 > str_0) ); //false cuz m<r - VERIFY( !(str_2 > str_0) ); - VERIFY( str_3 > str_0 ); - VERIFY( !(str_0 > str_4) ); - VERIFY( !(str_4 > str_0) ); - - VERIFY( !(str_0 < str_1) ); //false cuz r>m - VERIFY( !(str_0 < str_2) ); - VERIFY( str_0 < str_3 ); - VERIFY( str_1 < str_0 ); //true cuz m<r - VERIFY( str_2 < str_0 ); - VERIFY( !(str_3 < str_0) ); - VERIFY( !(str_0 < str_4) ); - VERIFY( !(str_4 < str_0) ); - - VERIFY( str_0 >= str_1 ); //true cuz r>m - VERIFY( str_0 >= str_2 ); - VERIFY( !(str_0 >= str_3) ); - VERIFY( !(str_1 >= str_0) );//false cuz m<r - VERIFY( !(str_2 >= str_0) ); - VERIFY( str_3 >= str_0 ); - VERIFY( str_0 >= str_4 ); - VERIFY( str_4 >= str_0 ); - - VERIFY( !(str_0 <= str_1) );//false cuz r>m - VERIFY( !(str_0 <= str_2) ); - VERIFY( str_0 <= str_3 ); - VERIFY( str_1 <= str_0 );//true cuz m<r - VERIFY( str_2 <= str_0 ); - VERIFY( !(str_3 <= str_0) ); - VERIFY( str_0 <= str_4 ); - VERIFY( str_4 <= str_0 ); - - //comparisons between string_view object and string_view literal - VERIFY( !(str_0 == L"costa marbella") ); - VERIFY( !(str_0 == L"cost") ); - VERIFY( !(str_0 == L"costa ricans") ); - VERIFY( !(L"costa marbella" == str_0) ); - VERIFY( !(L"cost" == str_0) ); - VERIFY( !(L"costa ricans" == str_0) ); - VERIFY( L"costa rica" == str_0 ); - VERIFY( str_0 == L"costa rica" ); - - VERIFY( str_0 != L"costa marbella" ); - VERIFY( str_0 != L"cost" ); - VERIFY( str_0 != L"costa ricans" ); - VERIFY( L"costa marbella" != str_0 ); - VERIFY( L"cost" != str_0 ); - VERIFY( L"costa ricans" != str_0 ); - VERIFY( !(L"costa rica" != str_0) ); - VERIFY( !(str_0 != L"costa rica") ); - - VERIFY( str_0 > L"costa marbella" ); //true cuz r>m - VERIFY( str_0 > L"cost" ); - VERIFY( !(str_0 > L"costa ricans") ); - VERIFY( !(L"costa marbella" > str_0) );//false cuz m<r - VERIFY( !(L"cost" > str_0) ); - VERIFY( L"costa ricans" > str_0 ); - VERIFY( !(L"costa rica" > str_0) ); - VERIFY( !(str_0 > L"costa rica") ); - - VERIFY( !(str_0 < L"costa marbella") );//false cuz r>m - VERIFY( !(str_0 < L"cost") ); - VERIFY( str_0 < L"costa ricans" ); - VERIFY( L"costa marbella" < str_0 );//true cuz m<r - VERIFY( L"cost" < str_0 ); - VERIFY( !(L"costa ricans" < str_0) ); - VERIFY( !(L"costa rica" < str_0) ); - VERIFY( !(str_0 < L"costa rica") ); - - VERIFY( str_0 >= L"costa marbella" );//true cuz r>m - VERIFY( str_0 >= L"cost" ); - VERIFY( !(str_0 >= L"costa ricans") ); - VERIFY( !(L"costa marbella" >= str_0) );//false cuz m<r - VERIFY( !(L"cost" >= str_0) ); - VERIFY( L"costa ricans" >= str_0 ); - VERIFY( L"costa rica" >= str_0 ); - VERIFY( str_0 >= L"costa rica" ); - - VERIFY( !(str_0 <= L"costa marbella") );//false cuz r>m - VERIFY( !(str_0 <= L"cost") ); - VERIFY( str_0 <= L"costa ricans" ); - VERIFY( L"costa marbella" <= str_0 );//true cuz m<r - VERIFY( L"cost" <= str_0 ); - VERIFY( !(L"costa ricans" <= str_0) ); - VERIFY( L"costa rica" <= str_0 ); - VERIFY( str_0 <= L"costa rica" ); - - return true; -} - -int -main() -{ - test01(); - static_assert( test02() ); -} diff --git a/gdb/unittests/basic_string_view/range_access/char/1.cc b/gdb/unittests/basic_string_view/range_access/char/1.cc deleted file mode 100644 index 4b9e0bd..0000000 --- a/gdb/unittests/basic_string_view/range_access/char/1.cc +++ /dev/null @@ -1,47 +0,0 @@ -// { dg-do compile } -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// C++17 27.7, range access [iterator.range] - -#include <string_view> - -void -test01() -{ - std::string_view s("Hello, World!"); - std::begin(s); - std::end(s); - std::rbegin(s); - std::rend(s); -} - -void -test02() -{ - constexpr std::string_view s("Hello, World!"); - [[maybe_unused]] constexpr auto b = std::begin(s); - [[maybe_unused]] constexpr auto e = std::end(s); - [[maybe_unused]] constexpr auto cb = std::cbegin(s); - [[maybe_unused]] constexpr auto ce = std::cend(s); - [[maybe_unused]] constexpr auto rb = std::rbegin(s); - [[maybe_unused]] constexpr auto re = std::rend(s); - [[maybe_unused]] constexpr auto crb = std::crbegin(s); - [[maybe_unused]] constexpr auto cre = std::crend(s); -} diff --git a/gdb/unittests/basic_string_view/range_access/wchar_t/1.cc b/gdb/unittests/basic_string_view/range_access/wchar_t/1.cc deleted file mode 100644 index 68b6b1c..0000000 --- a/gdb/unittests/basic_string_view/range_access/wchar_t/1.cc +++ /dev/null @@ -1,47 +0,0 @@ -// { dg-do compile } -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -// C++17 27.7, range access [iterator.range] - -#include <string_view> - -void -test01() -{ - std::wstring_view ws(L"Hello, World!"); - std::begin(ws); - std::end(ws); - std::rbegin(ws); - std::rend(ws); -} - -void -test02() -{ - constexpr std::wstring_view ws(L"Hello, World!"); - [[maybe_unused]] constexpr auto b = std::begin(ws); - [[maybe_unused]] constexpr auto e = std::end(ws); - [[maybe_unused]] constexpr auto cb = std::cbegin(ws); - [[maybe_unused]] constexpr auto ce = std::cend(ws); - [[maybe_unused]] constexpr auto rb = std::rbegin(ws); - [[maybe_unused]] constexpr auto re = std::rend(ws); - [[maybe_unused]] constexpr auto crb = std::crbegin(ws); - [[maybe_unused]] constexpr auto cre = std::crend(ws); -} diff --git a/gdb/unittests/basic_string_view/requirements/explicit_instantiation/1.cc b/gdb/unittests/basic_string_view/requirements/explicit_instantiation/1.cc deleted file mode 100644 index afea994..0000000 --- a/gdb/unittests/basic_string_view/requirements/explicit_instantiation/1.cc +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - - -// This file tests explicit instantiation of basic_string - -#include <string_view> - -// { dg-do compile } -// { dg-options "-std=gnu++17" } - -template class std::basic_string_view<int, std::char_traits<int>>; diff --git a/gdb/unittests/basic_string_view/requirements/explicit_instantiation/char/1.cc b/gdb/unittests/basic_string_view/requirements/explicit_instantiation/char/1.cc deleted file mode 100644 index 7db0e92..0000000 --- a/gdb/unittests/basic_string_view/requirements/explicit_instantiation/char/1.cc +++ /dev/null @@ -1,23 +0,0 @@ -// { dg-do compile } -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. -// -// You should have received a copy of the GNU General Public License -// along with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -#include <string_view> - -template class std::basic_string_view<char>; diff --git a/gdb/unittests/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc b/gdb/unittests/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc deleted file mode 100644 index 5eb588f..0000000 --- a/gdb/unittests/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc +++ /dev/null @@ -1,24 +0,0 @@ -// { dg-do compile } -// { dg-options "-std=gnu++17" } -// { dg-require-cstdint "" } - -// Copyright (C) 2013-2023 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. -// -// You should have received a copy of the GNU General Public License -// along with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -#include <string_view> - -template class std::basic_string_view<char16_t>; diff --git a/gdb/unittests/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc b/gdb/unittests/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc deleted file mode 100644 index 2c64602..0000000 --- a/gdb/unittests/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc +++ /dev/null @@ -1,24 +0,0 @@ -// { dg-do compile } -// { dg-options "-std=gnu++17" } -// { dg-require-cstdint "" } - -// Copyright (C) 2013-2023 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. -// -// You should have received a copy of the GNU General Public License -// along with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -#include <string_view> - -template class std::basic_string_view<char32_t>; diff --git a/gdb/unittests/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc b/gdb/unittests/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc deleted file mode 100644 index 213615f..0000000 --- a/gdb/unittests/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc +++ /dev/null @@ -1,23 +0,0 @@ -// { dg-do compile } -// { dg-options "-std=gnu++17" } - -// Copyright (C) 2013-2023 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. -// -// You should have received a copy of the GNU General Public License -// along with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -#include <string_view> - -template class std::basic_string_view<wchar_t>; diff --git a/gdb/unittests/basic_string_view/requirements/typedefs.cc b/gdb/unittests/basic_string_view/requirements/typedefs.cc deleted file mode 100644 index 2bb08ab..0000000 --- a/gdb/unittests/basic_string_view/requirements/typedefs.cc +++ /dev/null @@ -1,47 +0,0 @@ - -// { dg-options "-std=gnu++17" } -// { dg-do compile } - -// Copyright (C) 2013-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -#include <string_view> -#include <testsuite_containers.h> - -namespace __gnu_test -{ - template<typename _Tp1, typename _Tp2> - struct traits<std::basic_string_view<_Tp1, _Tp2>> : public traits_base - { - typedef std::true_type is_container; - typedef std::true_type is_reversible; - }; -} - -#include <testsuite_containers.h> - -// Check container for required typedefs. - -__gnu_test::basic_types<std::string_view> t1b; -__gnu_test::reversible_types<std::string_view> t1r; -typedef typename std::string_view::traits_type traits_type1; - -#ifdef _GLIBCXX_USE_WCHAR_T -__gnu_test::basic_types<std::wstring_view> t2b; -__gnu_test::reversible_types<std::wstring_view> t2r; -typedef typename std::wstring_view::traits_type traits_type2; -#endif diff --git a/gdb/unittests/basic_string_view/typedefs.cc b/gdb/unittests/basic_string_view/typedefs.cc deleted file mode 100644 index c4222bf..0000000 --- a/gdb/unittests/basic_string_view/typedefs.cc +++ /dev/null @@ -1,36 +0,0 @@ -// { dg-options "-std=gnu++17" } -// { dg-do compile } - -// Copyright (C) 2014-2023 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. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. - -#include <string_view> - -template<typename C, typename T> - using check1_t = std::basic_string_view<C, T>; - -using check2_t = std::string_view; - -#ifdef _GLIBCXX_USE_C99_STDINT_TR1 -using check3_t = std::u16string_view; -using check4_t = std::u32string_view; -#endif - -#ifdef _GLIBCXX_USE_WCHAR_T -using check5_t = std::wstring_view; -#endif - diff --git a/gdb/unittests/basic_string_view/types/1.cc b/gdb/unittests/basic_string_view/types/1.cc deleted file mode 100644 index d742df2..0000000 --- a/gdb/unittests/basic_string_view/types/1.cc +++ /dev/null @@ -1,43 +0,0 @@ -// -// Copyright (C) 2013-2023 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. -// -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// <http://www.gnu.org/licenses/>. -// - -// { dg-options "-std=gnu++17" } -// { dg-do compile } - -#include <string_view> - -struct T -{ - typedef std::string_view String_view; - typedef String_view::iterator iterator; - typedef String_view::const_iterator const_iterator; - - char t(iterator f) { return *f; } - char t(const_iterator f) const { return *f; } -}; - -void -f() -{ - std::string_view s; - T t; - T::const_iterator i = s.begin(); - - t.t(i); -} diff --git a/gdb/unittests/string_view-selftests.c b/gdb/unittests/string_view-selftests.c deleted file mode 100644 index cf43d29..0000000 --- a/gdb/unittests/string_view-selftests.c +++ /dev/null @@ -1,193 +0,0 @@ -/* Self tests for string_view for GDB, the GNU debugger. - - Copyright (C) 2018-2023 Free Software Foundation, Inc. - - This file is part of GDB. - - This program 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 of the License, or - (at your option) any later version. - - This program 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. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -/* No need to test string_view if we're using C++17, since we're going to use - the "real" version. */ -#if __cplusplus < 201703L - -#define GNULIB_NAMESPACE gnulib - -#include "diagnostics.h" - -/* Since this file uses GNULIB_NAMESPACE, some code defined in headers ends up - using system functions rather than gnulib replacements. This is not really - a problem for this test, but it generates some warnings with Clang, silence - them. */ -DIAGNOSTIC_PUSH -DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS - -#include "defs.h" -#include "gdbsupport/selftest.h" -#include "gdbsupport/gdb_string_view.h" - -/* Used by the included .cc files below. Included here because the - included test files are wrapped in a namespace. */ -#include <string> -#include <sstream> -#include <fstream> -#include <iostream> - -DIAGNOSTIC_POP - -/* libstdc++'s testsuite uses VERIFY. */ -#define VERIFY SELF_CHECK - -/* Used to disable testing features not supported by - gdb::string_view. */ -#define GDB_STRING_VIEW - -namespace selftests { -namespace string_view { - -/* The actual tests live in separate files, which were originally - copied over from libstdc++'s testsuite. To preserve the structure - and help with comparison with the original tests, the file names - have been preserved, and only minimal modification was done to have - them compile against gdb::string_view instead of std::string_view: - - - std::string_view->gdb::string_view, etc. - - ATTRIBUTE_UNUSED in a few places - - wrap each file in a namespace so they can all be compiled as a - single unit. - - libstdc++'s license and formatting style was preserved. -*/ - -#include "basic_string_view/capacity/1.cc" -#include "basic_string_view/cons/char/1.cc" -#include "basic_string_view/cons/char/2.cc" -#include "basic_string_view/cons/char/3.cc" -#include "basic_string_view/element_access/char/1.cc" -#include "basic_string_view/element_access/char/empty.cc" -#include "basic_string_view/element_access/char/front_back.cc" -#include "basic_string_view/inserters/char/2.cc" -#include "basic_string_view/modifiers/remove_prefix/char/1.cc" -#include "basic_string_view/modifiers/remove_suffix/char/1.cc" -#include "basic_string_view/modifiers/swap/char/1.cc" -#include "basic_string_view/operations/compare/char/1.cc" -#include "basic_string_view/operations/compare/char/13650.cc" -#include "basic_string_view/operations/copy/char/1.cc" -#include "basic_string_view/operations/data/char/1.cc" -#include "basic_string_view/operations/find/char/1.cc" -#include "basic_string_view/operations/find/char/2.cc" -#include "basic_string_view/operations/find/char/3.cc" -#include "basic_string_view/operations/find/char/4.cc" -#include "basic_string_view/operations/rfind/char/1.cc" -#include "basic_string_view/operations/rfind/char/2.cc" -#include "basic_string_view/operations/rfind/char/3.cc" -#include "basic_string_view/operations/substr/char/1.cc" -#include "basic_string_view/operators/char/2.cc" - -static void -run_tests () -{ - capacity_1::main (); - cons_1::main (); - cons_2::main (); - cons_3::main (); - element_access_1::main (); - element_access_empty::main (); - element_access_front_back::main (); - inserters_2::main (); - modifiers_remove_prefix::main (); - modifiers_remove_suffix::main (); - modifiers_swap::test01 (); - operations_compare_1::main (); - operations_compare_13650::main (); - operations_copy_1::main (); - operations_data_1::main (); - operations_find_1::main (); - operations_find_2::main (); - operations_find_3::main (); - operations_find_4::main (); - operations_rfind_1::main (); - operations_rfind_2::main (); - operations_rfind_3::main (); - operations_substr_1::main (); - operators_2::main (); - - constexpr gdb::string_view sv_empty; - SELF_CHECK (sv_empty.empty ()); - - std::string std_string = "fika"; - gdb::string_view sv1 (std_string); - SELF_CHECK (sv1 == "fika"); - - constexpr const char *fika = "fika"; - gdb::string_view sv2 (fika); - SELF_CHECK (sv2 == "fika"); - - constexpr gdb::string_view sv3 (fika, 3); - SELF_CHECK (sv3 == "fik"); - - constexpr gdb::string_view sv4 (sv3); - SELF_CHECK (sv4 == "fik"); - - constexpr gdb::string_view::iterator it_begin = sv4.begin (); - static_assert (*it_begin == 'f', ""); - - constexpr gdb::string_view::iterator it_end = sv4.end (); - static_assert (*it_end == 'a', ""); - - const gdb::string_view::reverse_iterator it_rbegin = sv4.rbegin (); - SELF_CHECK (*it_rbegin == 'k'); - - const gdb::string_view::reverse_iterator it_rend = sv4.rend (); - SELF_CHECK (*(it_rend - 1) == 'f'); - - constexpr gdb::string_view::size_type size = sv4.size (); - static_assert (size == 3, ""); - - constexpr gdb::string_view::size_type length = sv4.length (); - static_assert (length == 3, ""); - - constexpr gdb::string_view::size_type max_size = sv4.max_size (); - static_assert (max_size > 0, ""); - - constexpr bool empty = sv4.empty (); - static_assert (!empty, ""); - - constexpr char c1 = sv4[1]; - static_assert (c1 == 'i', ""); - - constexpr char c2 = sv4.at (2); - static_assert (c2 == 'k', ""); - - constexpr char front = sv4.front (); - static_assert (front == 'f', ""); - - constexpr char back = sv4.back (); - static_assert (back == 'k', ""); - - constexpr const char *data = sv4.data (); - static_assert (data == fika, ""); -} - -} /* namespace string_view */ -} /* namespace selftests */ - -#endif /* __cplusplus < 201703L */ - -void _initialize_string_view_selftests (); -void -_initialize_string_view_selftests () -{ -#if defined(GDB_STRING_VIEW) - selftests::register_test ("string_view", selftests::string_view::run_tests); -#endif -} diff --git a/gdbsupport/gdb_string_view.h b/gdbsupport/gdb_string_view.h deleted file mode 100644 index cf7af62..0000000 --- a/gdbsupport/gdb_string_view.h +++ /dev/null @@ -1,566 +0,0 @@ -// Components for manipulating non-owning sequences of characters -*- C++ -*- - - -#ifndef COMMON_GDB_STRING_VIEW_H -#define COMMON_GDB_STRING_VIEW_H - -// Note: This file has been stolen from the gcc repo -// (libstdc++-v3/include/experimental/string_view) and has local modifications. - -// Copyright (C) 2013-2023 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/>. - -// -// N3762 basic_string_view library -// - - -#if __cplusplus >= 201703L - -#include <string_view> - -namespace gdb { - using string_view = std::string_view; -} /* namespace gdb */ - -#else /* __cplusplus < 201703L */ - -#include <string> -#include <limits> -#include "gdb_assert.h" - -namespace gdb { - - /** - * @class basic_string_view <experimental/string_view> - * @brief A non-owning reference to a string. - * - * @ingroup strings - * @ingroup sequences - * @ingroup experimental - * - * @tparam _CharT Type of character - * @tparam _Traits Traits for character type, defaults to - * char_traits<_CharT>. - * - * A basic_string_view looks like this: - * - * @code - * _CharT* _M_str - * size_t _M_len - * @endcode - */ - template<typename _CharT, typename _Traits = std::char_traits<_CharT>> - class basic_string_view - { - public: - - // types - using traits_type = _Traits; - using value_type = _CharT; - using pointer = const _CharT*; - using const_pointer = const _CharT*; - using reference = const _CharT&; - using const_reference = const _CharT&; - using const_iterator = const _CharT*; - using iterator = const_iterator; - using const_reverse_iterator = std::reverse_iterator<const_iterator>; - using reverse_iterator = const_reverse_iterator; - using size_type = size_t; - using difference_type = ptrdiff_t; - static constexpr size_type npos = size_type(-1); - - // [string.view.cons], construct/copy - - constexpr - basic_string_view() noexcept - : _M_len{0}, _M_str{nullptr} - { } - - constexpr basic_string_view(const basic_string_view&) noexcept = default; - - template<typename _Allocator> - basic_string_view(const std::basic_string<_CharT, _Traits, - _Allocator>& __str) noexcept - : _M_len{__str.length()}, _M_str{__str.data()} - { } - - /*constexpr*/ basic_string_view(const _CharT* __str) - : _M_len{__str == nullptr ? 0 : traits_type::length(__str)}, - _M_str{__str} - { } - - constexpr basic_string_view(const _CharT* __str, size_type __len) - : _M_len{__len}, - _M_str{__str} - { } - - basic_string_view& - operator=(const basic_string_view&) noexcept = default; - - // [string.view.iterators], iterators - - constexpr const_iterator - begin() const noexcept - { return this->_M_str; } - - constexpr const_iterator - end() const noexcept - { return this->_M_str + this->_M_len; } - - constexpr const_iterator - cbegin() const noexcept - { return this->_M_str; } - - constexpr const_iterator - cend() const noexcept - { return this->_M_str + this->_M_len; } - - const_reverse_iterator - rbegin() const noexcept - { return const_reverse_iterator(this->end()); } - - const_reverse_iterator - rend() const noexcept - { return const_reverse_iterator(this->begin()); } - - const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(this->end()); } - - const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(this->begin()); } - - // [string.view.capacity], capacity - - constexpr size_type - size() const noexcept - { return this->_M_len; } - - constexpr size_type - length() const noexcept - { return _M_len; } - - constexpr size_type - max_size() const noexcept - { - return (npos - sizeof(size_type) - sizeof(void*)) - / sizeof(value_type) / 4; - } - - constexpr bool - empty() const noexcept - { return this->_M_len == 0; } - - // [string.view.access], element access - - constexpr const _CharT& - operator[](size_type __pos) const - { - // TODO: Assert to restore in a way compatible with the constexpr. - // __glibcxx_assert(__pos < this->_M_len); - return *(this->_M_str + __pos); - } - - constexpr const _CharT& - at(size_type __pos) const - { - return __pos < this->_M_len - ? *(this->_M_str + __pos) - : (error (_("basic_string_view::at: __pos " - "(which is %zu) >= this->size() " - "(which is %zu)"), - __pos, this->size()), - *this->_M_str); - } - - constexpr const _CharT& - front() const - { - // TODO: Assert to restore in a way compatible with the constexpr. - // __glibcxx_assert(this->_M_len > 0); - return *this->_M_str; - } - - constexpr const _CharT& - back() const - { - // TODO: Assert to restore in a way compatible with the constexpr. - // __glibcxx_assert(this->_M_len > 0); - return *(this->_M_str + this->_M_len - 1); - } - - constexpr const _CharT* - data() const noexcept - { return this->_M_str; } - - // [string.view.modifiers], modifiers: - - /*constexpr*/ void - remove_prefix(size_type __n) - { - gdb_assert (this->_M_len >= __n); - this->_M_str += __n; - this->_M_len -= __n; - } - - /*constexpr*/ void - remove_suffix(size_type __n) - { this->_M_len -= __n; } - - /*constexpr*/ void - swap(basic_string_view& __sv) noexcept - { - auto __tmp = *this; - *this = __sv; - __sv = __tmp; - } - - - // [string.view.ops], string operations: - - template<typename _Allocator> - explicit operator std::basic_string<_CharT, _Traits, _Allocator>() const - { - return { this->_M_str, this->_M_len }; - } - - size_type - copy(_CharT* __str, size_type __n, size_type __pos = 0) const - { - gdb_assert (__str != nullptr || __n == 0); - if (__pos > this->_M_len) - error (_("basic_string_view::copy: __pos " - "(which is %zu) > this->size() " - "(which is %zu)"), - __pos, this->size()); - size_type __rlen{std::min(__n, size_type{this->_M_len - __pos})}; - for (auto __begin = this->_M_str + __pos, - __end = __begin + __rlen; __begin != __end;) - *__str++ = *__begin++; - return __rlen; - } - - - // [string.view.ops], string operations: - - /*constexpr*/ basic_string_view - substr(size_type __pos, size_type __n=npos) const - { - return __pos <= this->_M_len - ? basic_string_view{this->_M_str + __pos, - std::min(__n, size_type{this->_M_len - __pos})} - : (error (_("basic_string_view::substr: __pos " - "(which is %zu) > this->size() " - "(which is %zu)"), - __pos, this->size()), basic_string_view{}); - } - - /*constexpr*/ int - compare(basic_string_view __str) const noexcept - { - int __ret = traits_type::compare(this->_M_str, __str._M_str, - std::min(this->_M_len, __str._M_len)); - if (__ret == 0) - __ret = _S_compare(this->_M_len, __str._M_len); - return __ret; - } - - /*constexpr*/ int - compare(size_type __pos1, size_type __n1, basic_string_view __str) const - { return this->substr(__pos1, __n1).compare(__str); } - - /*constexpr*/ int - compare(size_type __pos1, size_type __n1, - basic_string_view __str, size_type __pos2, size_type __n2) const - { return this->substr(__pos1, __n1).compare(__str.substr(__pos2, __n2)); } - - /*constexpr*/ int - compare(const _CharT* __str) const noexcept - { return this->compare(basic_string_view{__str}); } - - /*constexpr*/ int - compare(size_type __pos1, size_type __n1, const _CharT* __str) const - { return this->substr(__pos1, __n1).compare(basic_string_view{__str}); } - - /*constexpr*/ int - compare(size_type __pos1, size_type __n1, - const _CharT* __str, size_type __n2) const - { - return this->substr(__pos1, __n1) - .compare(basic_string_view(__str, __n2)); - } - - /*constexpr*/ size_type - find(basic_string_view __str, size_type __pos = 0) const noexcept - { return this->find(__str._M_str, __pos, __str._M_len); } - - /*constexpr*/ size_type - find(_CharT __c, size_type __pos=0) const noexcept; - - /*constexpr*/ size_type - find(const _CharT* __str, size_type __pos, size_type __n) const noexcept; - - /*constexpr*/ size_type - find(const _CharT* __str, size_type __pos=0) const noexcept - { return this->find(__str, __pos, traits_type::length(__str)); } - - /*constexpr*/ size_type - rfind(basic_string_view __str, size_type __pos = npos) const noexcept - { return this->rfind(__str._M_str, __pos, __str._M_len); } - - /*constexpr*/ size_type - rfind(_CharT __c, size_type __pos = npos) const noexcept; - - /*constexpr*/ size_type - rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept; - - /*constexpr*/ size_type - rfind(const _CharT* __str, size_type __pos = npos) const noexcept - { return this->rfind(__str, __pos, traits_type::length(__str)); } - - /*constexpr*/ size_type - find_first_of(basic_string_view __str, size_type __pos = 0) const noexcept - { return this->find_first_of(__str._M_str, __pos, __str._M_len); } - - /*constexpr*/ size_type - find_first_of(_CharT __c, size_type __pos = 0) const noexcept - { return this->find(__c, __pos); } - - /*constexpr*/ size_type - find_first_of(const _CharT* __str, size_type __pos, size_type __n) const; - - /*constexpr*/ size_type - find_first_of(const _CharT* __str, size_type __pos = 0) const noexcept - { return this->find_first_of(__str, __pos, traits_type::length(__str)); } - - /*constexpr*/ size_type - find_last_of(basic_string_view __str, - size_type __pos = npos) const noexcept - { return this->find_last_of(__str._M_str, __pos, __str._M_len); } - - size_type - find_last_of(_CharT __c, size_type __pos=npos) const noexcept - { return this->rfind(__c, __pos); } - - /*constexpr*/ size_type - find_last_of(const _CharT* __str, size_type __pos, size_type __n) const; - - /*constexpr*/ size_type - find_last_of(const _CharT* __str, size_type __pos = npos) const noexcept - { return this->find_last_of(__str, __pos, traits_type::length(__str)); } - - /*constexpr*/ size_type - find_first_not_of(basic_string_view __str, - size_type __pos = 0) const noexcept - { return this->find_first_not_of(__str._M_str, __pos, __str._M_len); } - - /*constexpr*/ size_type - find_first_not_of(_CharT __c, size_type __pos = 0) const noexcept; - - /*constexpr*/ size_type - find_first_not_of(const _CharT* __str, - size_type __pos, size_type __n) const; - - /*constexpr*/ size_type - find_first_not_of(const _CharT* __str, size_type __pos = 0) const noexcept - { - return this->find_first_not_of(__str, __pos, - traits_type::length(__str)); - } - - /*constexpr*/ size_type - find_last_not_of(basic_string_view __str, - size_type __pos = npos) const noexcept - { return this->find_last_not_of(__str._M_str, __pos, __str._M_len); } - - /*constexpr*/ size_type - find_last_not_of(_CharT __c, size_type __pos = npos) const noexcept; - - /*constexpr*/ size_type - find_last_not_of(const _CharT* __str, - size_type __pos, size_type __n) const; - - /*constexpr*/ size_type - find_last_not_of(const _CharT* __str, - size_type __pos = npos) const noexcept - { - return this->find_last_not_of(__str, __pos, - traits_type::length(__str)); - } - - private: - - static constexpr int - _S_compare(size_type __n1, size_type __n2) noexcept - { - return difference_type(__n1 - __n2) > std::numeric_limits<int>::max() - ? std::numeric_limits<int>::max() - : difference_type(__n1 - __n2) < std::numeric_limits<int>::min() - ? std::numeric_limits<int>::min() - : static_cast<int>(difference_type(__n1 - __n2)); - } - - size_t _M_len; - const _CharT* _M_str; - }; - - // [string.view.comparison], non-member basic_string_view comparison functions - - namespace __detail - { - // Identity transform to create a non-deduced context, so that only one - // argument participates in template argument deduction and the other - // argument gets implicitly converted to the deduced type. See n3766.html. - template<typename _Tp> - using __idt = typename std::common_type<_Tp>::type; - } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator==(basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.size() == __y.size() && __x.compare(__y) == 0; } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator==(basic_string_view<_CharT, _Traits> __x, - __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept - { return __x.size() == __y.size() && __x.compare(__y) == 0; } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator==(__detail::__idt<basic_string_view<_CharT, _Traits>> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.size() == __y.size() && __x.compare(__y) == 0; } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator!=(basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return !(__x == __y); } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator!=(basic_string_view<_CharT, _Traits> __x, - __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept - { return !(__x == __y); } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator!=(__detail::__idt<basic_string_view<_CharT, _Traits>> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return !(__x == __y); } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator< (basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) < 0; } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator< (basic_string_view<_CharT, _Traits> __x, - __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept - { return __x.compare(__y) < 0; } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator< (__detail::__idt<basic_string_view<_CharT, _Traits>> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) < 0; } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator> (basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) > 0; } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator> (basic_string_view<_CharT, _Traits> __x, - __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept - { return __x.compare(__y) > 0; } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator> (__detail::__idt<basic_string_view<_CharT, _Traits>> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) > 0; } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator<=(basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) <= 0; } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator<=(basic_string_view<_CharT, _Traits> __x, - __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept - { return __x.compare(__y) <= 0; } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator<=(__detail::__idt<basic_string_view<_CharT, _Traits>> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) <= 0; } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator>=(basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) >= 0; } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator>=(basic_string_view<_CharT, _Traits> __x, - __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept - { return __x.compare(__y) >= 0; } - - template<typename _CharT, typename _Traits> - /*constexpr*/ bool - operator>=(__detail::__idt<basic_string_view<_CharT, _Traits>> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) >= 0; } - - // basic_string_view typedef names - - using string_view = basic_string_view<char>; -} /* namespace gdb */ - -#include "gdb_string_view.tcc" - -#endif // __cplusplus < 201703L - -namespace gdb { - -static inline std::string -to_string(const std::string_view &view) -{ - return { view.data (), view.size () }; -} - -} - -#endif /* COMMON_GDB_STRING_VIEW_H */ diff --git a/gdbsupport/gdb_string_view.tcc b/gdbsupport/gdb_string_view.tcc deleted file mode 100644 index 0798105..0000000 --- a/gdbsupport/gdb_string_view.tcc +++ /dev/null @@ -1,219 +0,0 @@ -// Components for manipulating non-owning sequences of characters -*- C++ -*- - -// Note: This file has been stolen from the gcc repo -// (libstdc++-v3/include/experimental/bits/string_view.tcc) and has local -// modifications. - -// Copyright (C) 2013-2023 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 experimental/bits/string_view.tcc - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{experimental/string_view} - */ - -// -// N3762 basic_string_view library -// - -#ifndef GDB_STRING_VIEW_TCC -#define GDB_STRING_VIEW_TCC 1 - -namespace gdb -{ - 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 - { - gdb_assert (__str != nullptr || __n == 0); - - 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 - { - gdb_assert (__str != nullptr || __n == 0); - - 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 - { - gdb_assert (__str != nullptr || __n == 0); - 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 - { - gdb_assert (__str != nullptr || __n == 0); - 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 - { - gdb_assert (__str != nullptr || __n == 0); - 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 - { - gdb_assert (__str != nullptr || __n == 0); - 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; - } -} // namespace gdb - -#endif // GDB_STRING_VIEW_TCC |