ranges-offset.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
00030 template <class I>
00031 class Offset {
00032 protected:
00034 I i;
00036 int c;
00037 public:
00039
00040
00041 Offset(void);
00043 Offset(I& i, int c);
00045 void init(I& i, int c);
00047
00049
00050
00051 bool operator()(void) const;
00053 void operator++(void);
00055
00057
00058
00059 int min(void) const;
00061 int max(void) const;
00063 unsigned int width(void) const;
00065 };
00066
00067
00068 template <class I>
00069 forceinline
00070 Offset<I>::Offset(void) {}
00071
00072 template <class I>
00073 inline void
00074 Offset<I>::init(I& i0, int c0) {
00075 i = i0; c = c0;
00076 }
00077
00078 template <class I>
00079 inline
00080 Offset<I>::Offset(I& i0, int c0) : i(i0), c(c0) {}
00081
00082 template <class I>
00083 forceinline void
00084 Offset<I>::operator++(void) {
00085 ++i;
00086 }
00087 template <class I>
00088 forceinline bool
00089 Offset<I>::operator()(void) const {
00090 return i();
00091 }
00092
00093 template <class I>
00094 forceinline int
00095 Offset<I>::min(void) const {
00096 return i.min()+c;
00097 }
00098 template <class I>
00099 forceinline int
00100 Offset<I>::max(void) const {
00101 return i.max()+c;
00102 }
00103 template <class I>
00104 forceinline unsigned int
00105 Offset<I>::width(void) const {
00106 return i.width();
00107 }
00108
00109 }}}
00110
00111
00112