1// <regex> -*- C++ -*- 2 3// Copyright (C) 2007-2021 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 <algorithm> 39#include <bitset> 40#ifdef _GLIBCXX_DEBUG 41# include <iosfwd> 42#endif 43#include <iterator> 44#include <locale> 45#include <memory> 46#include <sstream> 47#include <stack> 48#include <stdexcept> 49#include <string> 50#include <utility> 51#include <vector> 52#include <map> 53#include <cstring> 54 55#include <ext/aligned_buffer.h> 56#include <ext/numeric_traits.h> 57#include <bits/std_function.h> 58#include <bits/regex_constants.h> 59#include <bits/regex_error.h> 60#include <bits/regex_automaton.h> 61#include <bits/regex_scanner.h> 62#include <bits/regex_compiler.h> 63#include <bits/regex.h> 64#include <bits/regex_executor.h> 65 66#if __cplusplus >= 201703L && _GLIBCXX_USE_CXX11_ABI 67namespace std _GLIBCXX_VISIBILITY(default) 68{ 69_GLIBCXX_BEGIN_NAMESPACE_VERSION 70 namespace pmr 71 { 72 template<typename _Tp> class polymorphic_allocator; 73 template<typename _BidirectionalIterator> 74 using match_results 75 = std::match_results<_BidirectionalIterator, polymorphic_allocator< 76 sub_match<_BidirectionalIterator>>>; 77 using cmatch = match_results<const char*>; 78 // Use __normal_iterator directly, because pmr::string::const_iterator 79 // would require pmr::polymorphic_allocator to be complete. 80 using smatch 81 = match_results<__gnu_cxx::__normal_iterator<const char*, string>>; 82#ifdef _GLIBCXX_USE_WCHAR_T 83 using wcmatch = match_results<const wchar_t*>; 84 using wsmatch 85 = match_results<__gnu_cxx::__normal_iterator<const wchar_t*, wstring>>; 86#endif 87 } // namespace pmr 88_GLIBCXX_END_NAMESPACE_VERSION 89} // namespace std 90#endif // C++17 91#endif // C++11 92 93#endif // _GLIBCXX_REGEX 94