00001 /* iterator_to_const and const_iterator_to_const class implementations: 00002 inline functions. 00003 Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it> 00004 Copyright (C) 2010-2011 BUGSENG srl (http://bugseng.com) 00005 00006 This file is part of the Parma Polyhedra Library (PPL). 00007 00008 The PPL is free software; you can redistribute it and/or modify it 00009 under the terms of the GNU General Public License as published by the 00010 Free Software Foundation; either version 3 of the License, or (at your 00011 option) any later version. 00012 00013 The PPL is distributed in the hope that it will be useful, but WITHOUT 00014 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00015 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 00016 for more details. 00017 00018 You should have received a copy of the GNU General Public License 00019 along with this program; if not, write to the Free Software Foundation, 00020 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA. 00021 00022 For the most up-to-date information see the Parma Polyhedra Library 00023 site: http://www.cs.unipr.it/ppl/ . */ 00024 00025 #ifndef PPL_iterator_to_const_inlines_hh 00026 #define PPL_iterator_to_const_inlines_hh 1 00027 00028 namespace Parma_Polyhedra_Library { 00029 00030 template <typename Container> 00031 inline 00032 iterator_to_const<Container>::iterator_to_const() 00033 : base() { 00034 } 00035 00036 template <typename Container> 00037 inline 00038 iterator_to_const<Container>::iterator_to_const(const iterator_to_const& y) 00039 : base(y.base) { 00040 } 00041 00042 template <typename Container> 00043 inline 00044 iterator_to_const<Container>::iterator_to_const(const Base& b) 00045 : base(b) { 00046 } 00047 00048 template <typename Container> 00049 inline typename iterator_to_const<Container>::reference 00050 iterator_to_const<Container>::operator*() const { 00051 return *base; 00052 } 00053 00054 template <typename Container> 00055 inline typename iterator_to_const<Container>::pointer 00056 iterator_to_const<Container>::operator->() const { 00057 return &*base; 00058 } 00059 00060 template <typename Container> 00061 inline iterator_to_const<Container>& 00062 iterator_to_const<Container>::operator++() { 00063 ++base; 00064 return *this; 00065 } 00066 00067 template <typename Container> 00068 inline iterator_to_const<Container> 00069 iterator_to_const<Container>::operator++(int) { 00070 iterator_to_const tmp = *this; 00071 operator++(); 00072 return tmp; 00073 } 00074 00075 template <typename Container> 00076 inline iterator_to_const<Container>& 00077 iterator_to_const<Container>::operator--() { 00078 --base; 00079 return *this; 00080 } 00081 00082 template <typename Container> 00083 inline iterator_to_const<Container> 00084 iterator_to_const<Container>::operator--(int) { 00085 iterator_to_const tmp = *this; 00086 operator--(); 00087 return tmp; 00088 } 00089 00090 template <typename Container> 00091 inline bool 00092 iterator_to_const<Container>::operator==(const iterator_to_const& y) const { 00093 return base == y.base; 00094 } 00095 00096 template <typename Container> 00097 inline bool 00098 iterator_to_const<Container>::operator!=(const iterator_to_const& y) const { 00099 return !operator==(y); 00100 } 00101 00102 template <typename Container> 00103 inline 00104 const_iterator_to_const<Container>::const_iterator_to_const() 00105 : base() { 00106 } 00107 00108 template <typename Container> 00109 inline 00110 const_iterator_to_const<Container> 00111 ::const_iterator_to_const(const const_iterator_to_const& y) 00112 : base(y.base) { 00113 } 00114 00115 template <typename Container> 00116 inline 00117 const_iterator_to_const<Container>::const_iterator_to_const(const Base& b) 00118 : base(b) { 00119 } 00120 00121 template <typename Container> 00122 inline typename const_iterator_to_const<Container>::reference 00123 const_iterator_to_const<Container>::operator*() const { 00124 return *base; 00125 } 00126 00127 template <typename Container> 00128 inline typename const_iterator_to_const<Container>::pointer 00129 const_iterator_to_const<Container>::operator->() const { 00130 return &*base; 00131 } 00132 00133 template <typename Container> 00134 inline const_iterator_to_const<Container>& 00135 const_iterator_to_const<Container>::operator++() { 00136 ++base; 00137 return *this; 00138 } 00139 00140 template <typename Container> 00141 inline const_iterator_to_const<Container> 00142 const_iterator_to_const<Container>::operator++(int) { 00143 const_iterator_to_const tmp = *this; 00144 operator++(); 00145 return tmp; 00146 } 00147 00148 template <typename Container> 00149 inline const_iterator_to_const<Container>& 00150 const_iterator_to_const<Container>::operator--() { 00151 --base; 00152 return *this; 00153 } 00154 00155 template <typename Container> 00156 inline const_iterator_to_const<Container> 00157 const_iterator_to_const<Container>::operator--(int) { 00158 const_iterator_to_const tmp = *this; 00159 operator--(); 00160 return tmp; 00161 } 00162 00163 template <typename Container> 00164 inline bool 00165 const_iterator_to_const<Container> 00166 ::operator==(const const_iterator_to_const& y) const { 00167 return base == y.base; 00168 } 00169 00170 template <typename Container> 00171 inline bool 00172 const_iterator_to_const<Container> 00173 ::operator!=(const const_iterator_to_const& y) const { 00174 return !operator==(y); 00175 } 00176 00177 template <typename Container> 00178 inline 00179 const_iterator_to_const<Container> 00180 ::const_iterator_to_const(const iterator_to_const<Container>& y) 00181 : base(y.base) { 00182 } 00183 00185 template <typename Container> 00186 inline bool 00187 operator==(const iterator_to_const<Container>& x, 00188 const const_iterator_to_const<Container>& y) { 00189 return const_iterator_to_const<Container>(x).operator==(y); 00190 } 00191 00193 template <typename Container> 00194 inline bool 00195 operator!=(const iterator_to_const<Container>& x, 00196 const const_iterator_to_const<Container>& y) { 00197 return !(x == y); 00198 } 00199 00200 } // namespace Parma_Polyhedra_Library 00201 00202 #endif // !defined(PPL_iterator_to_const_inlines_hh)
1.6.3