1*7c82a1ecSDimitry Andric// -*- C++ -*-
2*7c82a1ecSDimitry Andric//===----------------------------- regex ----------------------------------===//
3*7c82a1ecSDimitry Andric//
4*7c82a1ecSDimitry Andric//                     The LLVM Compiler Infrastructure
5*7c82a1ecSDimitry Andric//
6*7c82a1ecSDimitry Andric// This file is dual licensed under the MIT and the University of Illinois Open
7*7c82a1ecSDimitry Andric// Source Licenses. See LICENSE.TXT for details.
8*7c82a1ecSDimitry Andric//
9*7c82a1ecSDimitry Andric//===----------------------------------------------------------------------===//
10*7c82a1ecSDimitry Andric
11*7c82a1ecSDimitry Andric#ifndef _LIBCPP_EXPERIMENTAL_REGEX
12*7c82a1ecSDimitry Andric#define _LIBCPP_EXPERIMENTAL_REGEX
13*7c82a1ecSDimitry Andric/*
14*7c82a1ecSDimitry Andric    experimental/regex synopsis
15*7c82a1ecSDimitry Andric
16*7c82a1ecSDimitry Andric// C++1z
17*7c82a1ecSDimitry Andricnamespace std {
18*7c82a1ecSDimitry Andricnamespace experimental {
19*7c82a1ecSDimitry Andricinline namespace fundamentals_v1 {
20*7c82a1ecSDimitry Andricnamespace pmr {
21*7c82a1ecSDimitry Andric
22*7c82a1ecSDimitry Andric  template <class BidirectionalIterator>
23*7c82a1ecSDimitry Andric  using match_results =
24*7c82a1ecSDimitry Andric    std::match_results<BidirectionalIterator,
25*7c82a1ecSDimitry Andric                       polymorphic_allocator<sub_match<BidirectionalIterator>>>;
26*7c82a1ecSDimitry Andric
27*7c82a1ecSDimitry Andric  typedef match_results<const char*> cmatch;
28*7c82a1ecSDimitry Andric  typedef match_results<const wchar_t*> wcmatch;
29*7c82a1ecSDimitry Andric  typedef match_results<string::const_iterator> smatch;
30*7c82a1ecSDimitry Andric  typedef match_results<wstring::const_iterator> wsmatch;
31*7c82a1ecSDimitry Andric
32*7c82a1ecSDimitry Andric} // namespace pmr
33*7c82a1ecSDimitry Andric} // namespace fundamentals_v1
34*7c82a1ecSDimitry Andric} // namespace experimental
35*7c82a1ecSDimitry Andric} // namespace std
36*7c82a1ecSDimitry Andric
37*7c82a1ecSDimitry Andric */
38*7c82a1ecSDimitry Andric
39*7c82a1ecSDimitry Andric#include <experimental/__config>
40*7c82a1ecSDimitry Andric#include <regex>
41*7c82a1ecSDimitry Andric#include <experimental/string>
42*7c82a1ecSDimitry Andric#include <experimental/memory_resource>
43*7c82a1ecSDimitry Andric
44*7c82a1ecSDimitry Andric#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
45*7c82a1ecSDimitry Andric#pragma GCC system_header
46*7c82a1ecSDimitry Andric#endif
47*7c82a1ecSDimitry Andric
48*7c82a1ecSDimitry Andric_LIBCPP_BEGIN_NAMESPACE_LFTS_PMR
49*7c82a1ecSDimitry Andric
50*7c82a1ecSDimitry Andrictemplate <class _BiDirIter>
51*7c82a1ecSDimitry Andricusing match_results =
52*7c82a1ecSDimitry Andric    _VSTD::match_results<_BiDirIter,
53*7c82a1ecSDimitry Andric        polymorphic_allocator<_VSTD::sub_match<_BiDirIter>>>;
54*7c82a1ecSDimitry Andric
55*7c82a1ecSDimitry Andrictypedef match_results<const char*> cmatch;
56*7c82a1ecSDimitry Andrictypedef match_results<const wchar_t*> wcmatch;
57*7c82a1ecSDimitry Andrictypedef match_results<_VSTD_LFTS_PMR::string::const_iterator> smatch;
58*7c82a1ecSDimitry Andrictypedef match_results<_VSTD_LFTS_PMR::wstring::const_iterator> wsmatch;
59*7c82a1ecSDimitry Andric
60*7c82a1ecSDimitry Andric_LIBCPP_END_NAMESPACE_LFTS_PMR
61*7c82a1ecSDimitry Andric
62*7c82a1ecSDimitry Andric#endif /* _LIBCPP_EXPERIMENTAL_REGEX */
63