ranges-size.hpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 namespace Gecode { namespace Iter { namespace Ranges {
00039
00049 template<class I>
00050 class Size {
00051 protected:
00053 I i;
00055 unsigned int _size;
00056 public:
00058
00059
00060 Size(void);
00062 Size(I& i);
00064 void init(I& i);
00066
00068
00069
00070 bool operator ()(void);
00072 void operator ++(void);
00074
00076
00077
00078 int min(void) const;
00080 int max(void) const;
00082 unsigned int width(void) const;
00084
00086
00087
00088 unsigned int size(void) const;
00090 };
00091
00092
00093 template<class I>
00094 forceinline
00095 Size<I>::Size(void)
00096 : _size(0) {}
00097
00098 template<class I>
00099 inline void
00100 Size<I>::init(I& i0) {
00101 i.init(i0);
00102 _size = 0;
00103 }
00104
00105 template<class I>
00106 inline
00107 Size<I>::Size(I& i0) : i(i0), _size(0) {}
00108
00109 template<class I>
00110 forceinline void
00111 Size<I>::operator ++(void) {
00112 _size += i.width();
00113 ++i;
00114 }
00115 template<class I>
00116 forceinline bool
00117 Size<I>::operator ()(void) {
00118 return i();
00119 }
00120
00121 template<class I>
00122 forceinline int
00123 Size<I>::min(void) const {
00124 return i.min();
00125 }
00126 template<class I>
00127 forceinline int
00128 Size<I>::max(void) const {
00129 return i.max();
00130 }
00131 template<class I>
00132 forceinline unsigned int
00133 Size<I>::width(void) const {
00134 return i.width();
00135 }
00136
00137 template<class I>
00138 forceinline unsigned int
00139 Size<I>::size(void) const {
00140 return _size;
00141 }
00142
00143 }}}
00144
00145
00146