14fee23f9Smrg// <regex> -*- C++ -*- 24fee23f9Smrg 3*b1e83836Smrg// Copyright (C) 2007-2022 Free Software Foundation, Inc. 44fee23f9Smrg// 54fee23f9Smrg// This file is part of the GNU ISO C++ Library. This library is free 64fee23f9Smrg// software; you can redistribute it and/or modify it under the 74fee23f9Smrg// terms of the GNU General Public License as published by the 84fee23f9Smrg// Free Software Foundation; either version 3, or (at your option) 94fee23f9Smrg// any later version. 104fee23f9Smrg 114fee23f9Smrg// This library is distributed in the hope that it will be useful, 124fee23f9Smrg// but WITHOUT ANY WARRANTY; without even the implied warranty of 134fee23f9Smrg// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 144fee23f9Smrg// GNU General Public License for more details. 154fee23f9Smrg 164fee23f9Smrg// Under Section 7 of GPL version 3, you are granted additional 174fee23f9Smrg// permissions described in the GCC Runtime Library Exception, version 184fee23f9Smrg// 3.1, as published by the Free Software Foundation. 194fee23f9Smrg 204fee23f9Smrg// You should have received a copy of the GNU General Public License and 214fee23f9Smrg// a copy of the GCC Runtime Library Exception along with this program; 224fee23f9Smrg// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 234fee23f9Smrg// <http://www.gnu.org/licenses/>. 244fee23f9Smrg 254fee23f9Smrg/** @file include/regex 264fee23f9Smrg * This is a Standard C++ Library header. 274fee23f9Smrg */ 284fee23f9Smrg 294fee23f9Smrg#ifndef _GLIBCXX_REGEX 304fee23f9Smrg#define _GLIBCXX_REGEX 1 314fee23f9Smrg 324fee23f9Smrg#pragma GCC system_header 334fee23f9Smrg 3448fb7bfaSmrg#if __cplusplus < 201103L 354fee23f9Smrg# include <bits/c++0x_warning.h> 364fee23f9Smrg#else 374fee23f9Smrg 384fee23f9Smrg#include <bitset> 394fee23f9Smrg#include <locale> 4048fb7bfaSmrg#include <sstream> 4148fb7bfaSmrg#include <stack> 424fee23f9Smrg#include <stdexcept> 434fee23f9Smrg#include <string> 444fee23f9Smrg 45f9a78e0eSmrg#include <ext/aligned_buffer.h> 46*b1e83836Smrg#include <ext/numeric_traits.h> 47*b1e83836Smrg#include <bits/shared_ptr.h> 48b17d1066Smrg#include <bits/std_function.h> 49*b1e83836Smrg#include <bits/stl_algobase.h> // std::copy, std::fill_n 50*b1e83836Smrg#include <bits/stl_algo.h> // std::sort, std::unique 51*b1e83836Smrg#include <bits/stl_iterator_base_types.h> // std::iterator_traits 52*b1e83836Smrg#include <bits/stl_pair.h> 53*b1e83836Smrg#include <bits/stl_tree.h> 54*b1e83836Smrg#include <bits/stl_map.h> 55*b1e83836Smrg#include <bits/stl_vector.h> 56*b1e83836Smrg#include <bits/stl_bvector.h> 57*b1e83836Smrg#include <bits/vector.tcc> 58*b1e83836Smrg#ifdef _GLIBCXX_DEBUG 59*b1e83836Smrg# include <debug/vector> 60*b1e83836Smrg#endif 6148fb7bfaSmrg#include <bits/regex_constants.h> 6248fb7bfaSmrg#include <bits/regex_error.h> 634d5abbe8Smrg#include <bits/regex_automaton.h> 644d5abbe8Smrg#include <bits/regex_scanner.h> 6548fb7bfaSmrg#include <bits/regex_compiler.h> 6648fb7bfaSmrg#include <bits/regex.h> 674d5abbe8Smrg#include <bits/regex_executor.h> 684fee23f9Smrg 69181254a7Smrg#if __cplusplus >= 201703L && _GLIBCXX_USE_CXX11_ABI 70181254a7Smrgnamespace std _GLIBCXX_VISIBILITY(default) 71181254a7Smrg{ 72181254a7Smrg_GLIBCXX_BEGIN_NAMESPACE_VERSION 73fb8a8121Smrg namespace pmr 74fb8a8121Smrg { 75181254a7Smrg template<typename _Tp> class polymorphic_allocator; 76181254a7Smrg template<typename _BidirectionalIterator> 77181254a7Smrg using match_results 78181254a7Smrg = std::match_results<_BidirectionalIterator, polymorphic_allocator< 79181254a7Smrg sub_match<_BidirectionalIterator>>>; 80181254a7Smrg using cmatch = match_results<const char*>; 81fb8a8121Smrg // Use __normal_iterator directly, because pmr::string::const_iterator 82fb8a8121Smrg // would require pmr::polymorphic_allocator to be complete. 83fb8a8121Smrg using smatch 84fb8a8121Smrg = match_results<__gnu_cxx::__normal_iterator<const char*, string>>; 85181254a7Smrg#ifdef _GLIBCXX_USE_WCHAR_T 86181254a7Smrg using wcmatch = match_results<const wchar_t*>; 87fb8a8121Smrg using wsmatch 88fb8a8121Smrg = match_results<__gnu_cxx::__normal_iterator<const wchar_t*, wstring>>; 89181254a7Smrg#endif 90181254a7Smrg } // namespace pmr 91181254a7Smrg_GLIBCXX_END_NAMESPACE_VERSION 92181254a7Smrg} // namespace std 93181254a7Smrg#endif // C++17 9448fb7bfaSmrg#endif // C++11 954fee23f9Smrg 964fee23f9Smrg#endif // _GLIBCXX_REGEX 97