1// <regex> -*- C++ -*- 2 3// Copyright (C) 2007-2022 Free Software Foundation, Inc. 4// 5// This file is part of the GNU ISO C++ Library. This library is free 6// software; you can redistribute it and/or modify it under the 7// terms of the GNU General Public License as published by the 8// Free Software Foundation; either version 3, or (at your option) 9// any later version. 10 11// This library is distributed in the hope that it will be useful, 12// but WITHOUT ANY WARRANTY; without even the implied warranty of 13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14// GNU General Public License for more details. 15 16// Under Section 7 of GPL version 3, you are granted additional 17// permissions described in the GCC Runtime Library Exception, version 18// 3.1, as published by the Free Software Foundation. 19 20// You should have received a copy of the GNU General Public License and 21// a copy of the GCC Runtime Library Exception along with this program; 22// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23// <http://www.gnu.org/licenses/>. 24 25/** @file include/regex 26 * This is a Standard C++ Library header. 27 */ 28 29#ifndef _GLIBCXX_REGEX 30#define _GLIBCXX_REGEX 1 31 32#pragma GCC system_header 33 34#if __cplusplus < 201103L 35# include <bits/c++0x_warning.h> 36#else 37 38#include <bitset> 39#include <locale> 40#include <sstream> 41#include <stack> 42#include <stdexcept> 43#include <string> 44 45#include <ext/aligned_buffer.h> 46#include <ext/numeric_traits.h> 47#include <bits/shared_ptr.h> 48#include <bits/std_function.h> 49#include <bits/stl_algobase.h> // std::copy, std::fill_n 50#include <bits/stl_algo.h> // std::sort, std::unique 51#include <bits/stl_iterator_base_types.h> // std::iterator_traits 52#include <bits/stl_pair.h> 53#include <bits/stl_tree.h> 54#include <bits/stl_map.h> 55#include <bits/stl_vector.h> 56#include <bits/stl_bvector.h> 57#include <bits/vector.tcc> 58#ifdef _GLIBCXX_DEBUG 59# include <debug/vector> 60#endif 61#include <bits/regex_constants.h> 62#include <bits/regex_error.h> 63#include <bits/regex_automaton.h> 64#include <bits/regex_scanner.h> 65#include <bits/regex_compiler.h> 66#include <bits/regex.h> 67#include <bits/regex_executor.h> 68 69#if __cplusplus >= 201703L && _GLIBCXX_USE_CXX11_ABI 70namespace std _GLIBCXX_VISIBILITY(default) 71{ 72_GLIBCXX_BEGIN_NAMESPACE_VERSION 73 namespace pmr 74 { 75 template<typename _Tp> class polymorphic_allocator; 76 template<typename _BidirectionalIterator> 77 using match_results 78 = std::match_results<_BidirectionalIterator, polymorphic_allocator< 79 sub_match<_BidirectionalIterator>>>; 80 using cmatch = match_results<const char*>; 81 // Use __normal_iterator directly, because pmr::string::const_iterator 82 // would require pmr::polymorphic_allocator to be complete. 83 using smatch 84 = match_results<__gnu_cxx::__normal_iterator<const char*, string>>; 85#ifdef _GLIBCXX_USE_WCHAR_T 86 using wcmatch = match_results<const wchar_t*>; 87 using wsmatch 88 = match_results<__gnu_cxx::__normal_iterator<const wchar_t*, wstring>>; 89#endif 90 } // namespace pmr 91_GLIBCXX_END_NAMESPACE_VERSION 92} // namespace std 93#endif // C++17 94#endif // C++11 95 96#endif // _GLIBCXX_REGEX 97