1// <regex> -*- C++ -*- 2 3// Copyright (C) 2007-2020 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 <bits/std_function.h> 57#include <bits/regex_constants.h> 58#include <bits/regex_error.h> 59#include <bits/regex_automaton.h> 60#include <bits/regex_scanner.h> 61#include <bits/regex_compiler.h> 62#include <bits/regex.h> 63#include <bits/regex_executor.h> 64 65#if __cplusplus >= 201703L && _GLIBCXX_USE_CXX11_ABI 66namespace std _GLIBCXX_VISIBILITY(default) 67{ 68_GLIBCXX_BEGIN_NAMESPACE_VERSION 69 namespace pmr 70 { 71 template<typename _Tp> class polymorphic_allocator; 72 template<typename _BidirectionalIterator> 73 using match_results 74 = std::match_results<_BidirectionalIterator, polymorphic_allocator< 75 sub_match<_BidirectionalIterator>>>; 76 using cmatch = match_results<const char*>; 77 // Use __normal_iterator directly, because pmr::string::const_iterator 78 // would require pmr::polymorphic_allocator to be complete. 79 using smatch 80 = match_results<__gnu_cxx::__normal_iterator<const char*, string>>; 81#ifdef _GLIBCXX_USE_WCHAR_T 82 using wcmatch = match_results<const wchar_t*>; 83 using wsmatch 84 = match_results<__gnu_cxx::__normal_iterator<const wchar_t*, wstring>>; 85#endif 86 } // namespace pmr 87_GLIBCXX_END_NAMESPACE_VERSION 88} // namespace std 89#endif // C++17 90#endif // C++11 91 92#endif // _GLIBCXX_REGEX 93