OpenCores
URL https://opencores.org/ocsvn/altor32/altor32/trunk

Subversion Repositories altor32

[/] [altor32/] [trunk/] [gcc-x64/] [or1knd-elf/] [or1knd-elf/] [include/] [c++/] [4.8.0/] [bits/] [regex_cursor.h] - Blame information for rev 35

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 35 ultra_embe
// class template regex -*- C++ -*-
2
 
3
// Copyright (C) 2010, 2011, 2012 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
/**
26
 *  @file bits/regex_cursor.h
27
 *  This is an internal header file, included by other library headers.
28
 *  Do not attempt to use it directly. @headername{regex}
29
 */
30
 
31
namespace std _GLIBCXX_VISIBILITY(default)
32
{
33
namespace __detail
34
{
35
_GLIBCXX_BEGIN_NAMESPACE_VERSION
36
 
37
  /**
38
   *  @defgroup regex-detail Base and Implementation Classes
39
   *  @ingroup regex
40
   *  @{
41
   */
42
 
43
  /// ABC for pattern matching
44
  struct _PatternCursor
45
  {
46
    virtual ~_PatternCursor() { };
47
    virtual void _M_next() = 0;
48
    virtual bool _M_at_end() const = 0;
49
  };
50
 
51
  /// Provides a cursor into the specific target string.
52
  template<typename _FwdIterT>
53
    class _SpecializedCursor
54
    : public _PatternCursor
55
    {
56
    public:
57
      _SpecializedCursor(const _FwdIterT& __b, const _FwdIterT __e)
58
      : _M_b(__b), _M_c(__b), _M_e(__e)
59
      { }
60
 
61
      typename std::iterator_traits<_FwdIterT>::value_type
62
      _M_current() const
63
      { return *_M_c; }
64
 
65
      void
66
      _M_next()
67
      { ++_M_c; }
68
 
69
      _FwdIterT
70
      _M_pos() const
71
      { return _M_c; }
72
 
73
      const _FwdIterT&
74
      _M_begin() const
75
      { return _M_b; }
76
 
77
      const _FwdIterT&
78
      _M_end() const
79
      { return _M_e; }
80
 
81
      bool
82
      _M_at_end() const
83
      { return _M_c == _M_e; }
84
 
85
    private:
86
      _FwdIterT _M_b;
87
      _FwdIterT _M_c;
88
      _FwdIterT _M_e;
89
    };
90
 
91
  // Helper function to create a cursor specialized for an iterator class.
92
  template<typename _FwdIterT>
93
    inline _SpecializedCursor<_FwdIterT>
94
    __cursor(const _FwdIterT& __b, const _FwdIterT __e)
95
    { return _SpecializedCursor<_FwdIterT>(__b, __e); }
96
 
97
 //@} regex-detail
98
_GLIBCXX_END_NAMESPACE_VERSION
99
} // namespace __detail
100
} // namespace

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.