support-values.hh
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 #ifndef __GECODE_INT_SUPPORT_VALUES_HH__
00035 #define __GECODE_INT_SUPPORT_VALUES_HH__
00036
00037 #include <gecode/int.hh>
00038
00039 namespace Gecode { namespace Int {
00040
00047 template<class View, class A>
00048 class SupportValues {
00049 private:
00051 A& a;
00053 class RangePos {
00054 public:
00055 int min;
00056 unsigned int pos;
00057 };
00059 class Unsupported {
00060 private:
00062 RangePos* rp;
00064 unsigned int p;
00066 SupportValues& sv;
00068 void find(void);
00069 public:
00071
00072
00073 Unsupported(SupportValues& sv0);
00075
00077
00078
00079 bool operator ()(void) const;
00081 void operator ++(void);
00083
00085
00086
00087 int val(void) const;
00089 };
00090
00092 View x;
00094 Gecode::Support::BitSetBase bs;
00096 RangePos* rp_fst;
00098 RangePos* rp_lst;
00100 RangePos* rp;
00102 int v;
00104 int max;
00105
00107 bool _support(int n);
00108 public:
00110 SupportValues(A& a, View x);
00112 ~SupportValues(void);
00113
00115
00116
00117 void reset(void);
00119 bool operator ()(void) const;
00121 void operator ++(void);
00123
00125
00126
00127 int val(void) const;
00129
00131
00132
00133 void support(void);
00135 bool support(int n);
00137 bool support(long long int n);
00139 ModEvent tell(Space& home);
00141 };
00142
00143 }}
00144
00145 #include <gecode/int/support-values.hpp>
00146
00147 #endif
00148
00149
00150