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/] [profile/] [forward_list] - Blame information for rev 35

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 35 ultra_embe
//  -*- C++ -*-
2
 
3
// Copyright (C) 2010-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
// .
24
 
25
/** @file profile/forward_list
26
 *  This file is a GNU debug extension to the Standard C++ Library.
27
 */
28
 
29
#ifndef _GLIBCXX_PROFILE_FORWARD_LIST
30
#define _GLIBCXX_PROFILE_FORWARD_LIST 1
31
 
32
#if __cplusplus < 201103L
33
# include 
34
#else
35
 
36
#include 
37
 
38
namespace std _GLIBCXX_VISIBILITY(default)
39
{
40
namespace __profile
41
{
42
  /// Class std::forward_list wrapper with performance instrumentation.
43
  template >
44
    class forward_list
45
    : public _GLIBCXX_STD_C::forward_list<_Tp, _Alloc>
46
    {
47
      typedef _GLIBCXX_STD_C::forward_list<_Tp, _Alloc> _Base;
48
 
49
      typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
50
        rebind<_GLIBCXX_STD_C::_Fwd_list_node<_Tp>>::other _Node_alloc_type;
51
 
52
      typedef __gnu_cxx::__alloc_traits<_Node_alloc_type> _Node_alloc_traits;
53
 
54
    public:
55
      typedef typename _Base::size_type             size_type;
56
 
57
      // 23.2.3.1 construct/copy/destroy:
58
      explicit
59
      forward_list(const _Alloc& __al = _Alloc())
60
      : _Base(__al) { }
61
 
62
      forward_list(const forward_list& __list, const _Alloc& __al)
63
      : _Base(__list, __al)
64
      { }
65
 
66
      forward_list(forward_list&& __list, const _Alloc& __al)
67
      : _Base(std::move(__list), __al)
68
      { }
69
 
70
      explicit
71
      forward_list(size_type __n, const _Alloc& __al = _Alloc())
72
      : _Base(__n, __al)
73
      { }
74
 
75
      forward_list(size_type __n, const _Tp& __value,
76
                   const _Alloc& __al = _Alloc())
77
      : _Base(__n, __value, __al)
78
      { }
79
 
80
      template
81
               typename = std::_RequireInputIter<_InputIterator>>
82
        forward_list(_InputIterator __first, _InputIterator __last,
83
                     const _Alloc& __al = _Alloc())
84
        : _Base(__first, __last, __al)
85
        { }
86
 
87
      forward_list(const forward_list& __list)
88
      : _Base(__list)
89
      { }
90
 
91
      forward_list(forward_list&& __list) noexcept
92
      : _Base(std::move(__list)) { }
93
 
94
      forward_list(std::initializer_list<_Tp> __il,
95
                   const _Alloc& __al = _Alloc())
96
      : _Base(__il, __al)
97
      { }
98
 
99
      ~forward_list() noexcept
100
      { }
101
 
102
      forward_list&
103
      operator=(const forward_list& __list)
104
      {
105
        static_cast<_Base&>(*this) = __list;
106
        return *this;
107
      }
108
 
109
      forward_list&
110
      operator=(forward_list&& __list)
111
      noexcept(_Node_alloc_traits::_S_nothrow_move())
112
      {
113
        static_cast<_Base&>(*this) = std::move(__list);
114
        return *this;
115
      }
116
 
117
      forward_list&
118
      operator=(std::initializer_list<_Tp> __il)
119
      {
120
        static_cast<_Base&>(*this) = __il;
121
        return *this;
122
      }
123
 
124
      _Base&
125
      _M_base() noexcept       { return *this; }
126
 
127
      const _Base&
128
      _M_base() const noexcept { return *this; }
129
    };
130
 
131
  template
132
    inline bool
133
    operator==(const forward_list<_Tp, _Alloc>& __lx,
134
               const forward_list<_Tp, _Alloc>& __ly)
135
    { return __lx._M_base() == __ly._M_base(); }
136
 
137
  template
138
    inline bool
139
    operator<(const forward_list<_Tp, _Alloc>& __lx,
140
              const forward_list<_Tp, _Alloc>& __ly)
141
    { return __lx._M_base() < __ly._M_base(); }
142
 
143
  template
144
    inline bool
145
    operator!=(const forward_list<_Tp, _Alloc>& __lx,
146
               const forward_list<_Tp, _Alloc>& __ly)
147
    { return !(__lx == __ly); }
148
 
149
  /// Based on operator<
150
  template
151
    inline bool
152
    operator>(const forward_list<_Tp, _Alloc>& __lx,
153
              const forward_list<_Tp, _Alloc>& __ly)
154
    { return (__ly < __lx); }
155
 
156
  /// Based on operator<
157
  template
158
    inline bool
159
    operator>=(const forward_list<_Tp, _Alloc>& __lx,
160
               const forward_list<_Tp, _Alloc>& __ly)
161
    { return !(__lx < __ly); }
162
 
163
  /// Based on operator<
164
  template
165
    inline bool
166
    operator<=(const forward_list<_Tp, _Alloc>& __lx,
167
               const forward_list<_Tp, _Alloc>& __ly)
168
    { return !(__ly < __lx); }
169
 
170
  /// See std::forward_list::swap().
171
  template
172
    inline void
173
    swap(forward_list<_Tp, _Alloc>& __lx,
174
         forward_list<_Tp, _Alloc>& __ly)
175
    { __lx.swap(__ly); }
176
 
177
} // namespace __profile
178
} // namespace std
179
 
180
#endif // C++11
181
 
182
#endif

powered by: WebSVN 2.1.0

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