]>
Commit | Line | Data |
---|---|---|
36fed23c | 1 | // -*- C++ -*- |
2 | ||
71e45bc2 | 3 | // Copyright (C) 2005, 2006, 2009, 2010, 2011 Free Software Foundation, Inc. |
36fed23c | 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 terms | |
7 | // of the GNU General Public License as published by the Free Software | |
6bc9506f | 8 | // Foundation; either version 3, or (at your option) any later |
36fed23c | 9 | // version. |
10 | ||
11 | // This library is distributed in the hope that it will be useful, but | |
12 | // WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | // General Public License for more details. | |
15 | ||
6bc9506f | 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. | |
36fed23c | 19 | |
6bc9506f | 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/>. | |
36fed23c | 24 | |
25 | // Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. | |
26 | ||
27 | // Permission to use, copy, modify, sell, and distribute this software | |
28 | // is hereby granted without fee, provided that the above copyright | |
29 | // notice appears in all copies, and that both that copyright notice | |
30 | // and this permission notice appear in supporting documentation. None | |
31 | // of the above authors, nor IBM Haifa Research Laboratories, make any | |
32 | // representation about the suitability of this software for any | |
33 | // purpose. It is provided "as is" without express or implied | |
34 | // warranty. | |
35 | ||
36 | /** | |
37 | * @file point_iterator.hpp | |
38 | * Contains an iterator class returned by the tables' find and insert | |
39 | * methods. | |
40 | */ | |
41 | ||
3f2eba6f | 42 | /// Find type iterator. |
36fed23c | 43 | class point_iterator_ |
44 | { | |
36fed23c | 45 | public: |
3f2eba6f | 46 | /// Category. |
36fed23c | 47 | typedef trivial_iterator_tag iterator_category; |
48 | ||
3f2eba6f | 49 | /// Difference type. |
36fed23c | 50 | typedef trivial_iterator_difference_type difference_type; |
51 | ||
3f2eba6f | 52 | /// Iterator's value type. |
36fed23c | 53 | typedef value_type_ value_type; |
54 | ||
3f2eba6f | 55 | /// Iterator's pointer type. |
36fed23c | 56 | typedef pointer_ pointer; |
57 | ||
3f2eba6f | 58 | /// Iterator's const pointer type. |
36fed23c | 59 | typedef const_pointer_ const_pointer; |
60 | ||
3f2eba6f | 61 | /// Iterator's reference type. |
36fed23c | 62 | typedef reference_ reference; |
63 | ||
3f2eba6f | 64 | /// Iterator's const reference type. |
36fed23c | 65 | typedef const_reference_ const_reference; |
66 | ||
3f2eba6f | 67 | /// Default constructor. |
36fed23c | 68 | inline |
69 | point_iterator_() | |
3f2eba6f | 70 | : m_p_value(0) |
36fed23c | 71 | { } |
72 | ||
3f2eba6f | 73 | /// Copy constructor. |
36fed23c | 74 | inline |
75 | point_iterator_(const point_iterator_& other) | |
3f2eba6f | 76 | : m_p_value(other.m_p_value) |
36fed23c | 77 | { } |
78 | ||
3f2eba6f | 79 | /// Access. |
80 | pointer | |
36fed23c | 81 | operator->() const |
82 | { | |
e4bb1925 | 83 | _GLIBCXX_DEBUG_ASSERT(m_p_value != 0); |
36fed23c | 84 | return (m_p_value); |
85 | } | |
86 | ||
3f2eba6f | 87 | /// Access. |
88 | reference | |
36fed23c | 89 | operator*() const |
90 | { | |
e4bb1925 | 91 | _GLIBCXX_DEBUG_ASSERT(m_p_value != 0); |
36fed23c | 92 | return (*m_p_value); |
93 | } | |
94 | ||
3f2eba6f | 95 | /// Compares content to a different iterator object. |
96 | bool | |
36fed23c | 97 | operator==(const point_iterator_& other) const |
3f2eba6f | 98 | { return m_p_value == other.m_p_value; } |
36fed23c | 99 | |
3f2eba6f | 100 | /// Compares content to a different iterator object. |
101 | bool | |
4f4a327e | 102 | operator==(const point_const_iterator_& other) const |
3f2eba6f | 103 | { return m_p_value == other.m_p_value; } |
36fed23c | 104 | |
3f2eba6f | 105 | /// Compares content to a different iterator object. |
106 | bool | |
36fed23c | 107 | operator!=(const point_iterator_& other) const |
3f2eba6f | 108 | { return m_p_value != other.m_p_value; } |
36fed23c | 109 | |
3f2eba6f | 110 | /// Compares content (negatively) to a different iterator object. |
111 | bool | |
4f4a327e | 112 | operator!=(const point_const_iterator_& other) const |
3f2eba6f | 113 | { return m_p_value != other.m_p_value; } |
36fed23c | 114 | |
115 | inline | |
116 | point_iterator_(pointer p_value) : m_p_value(p_value) | |
117 | { } | |
118 | ||
119 | protected: | |
4f4a327e | 120 | friend class point_const_iterator_; |
36fed23c | 121 | |
122 | friend class PB_DS_CLASS_C_DEC; | |
123 | ||
124 | protected: | |
125 | pointer m_p_value; | |
126 | }; |