ranges-size.icc
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 namespace Gecode { namespace Iter { namespace Ranges {
00023
00034 template <class I>
00035 class Size {
00036 protected:
00038 I i;
00040 unsigned int _size;
00041 public:
00043
00044
00045 Size(void);
00047 Size(I& i);
00049 void init(I& i);
00051
00053
00054
00055 bool operator()(void);
00057 void operator++(void);
00059
00061
00062
00063 int min(void) const;
00065 int max(void) const;
00067 unsigned int width(void) const;
00069
00071
00072
00073 unsigned int size(void) const;
00075 };
00076
00077
00078 template <class I>
00079 forceinline
00080 Size<I>::Size(void)
00081 : _size(0) {}
00082
00083 template <class I>
00084 inline void
00085 Size<I>::init(I& i0) {
00086 i.init(i0);
00087 _size = 0;
00088 }
00089
00090 template <class I>
00091 inline
00092 Size<I>::Size(I& i0) : i(i0), _size(0) {}
00093
00094 template <class I>
00095 forceinline void
00096 Size<I>::operator++(void) {
00097 _size += i.width();
00098 ++i;
00099 }
00100 template <class I>
00101 forceinline bool
00102 Size<I>::operator()(void) {
00103 return i();
00104 }
00105
00106 template <class I>
00107 forceinline int
00108 Size<I>::min(void) const {
00109 return i.min();
00110 }
00111 template <class I>
00112 forceinline int
00113 Size<I>::max(void) const {
00114 return i.max();
00115 }
00116 template <class I>
00117 forceinline unsigned int
00118 Size<I>::width(void) const {
00119 return i.width();
00120 }
00121
00122 template <class I>
00123 forceinline unsigned int
00124 Size<I>::size(void) const {
00125 return _size;
00126 }
00127
00128 }}}
00129
00130
00131