idx-view.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
00035
00036 #ifndef __GECODE_INT_IDX_VIEW_HH__
00037 #define __GECODE_INT_IDX_VIEW_HH__
00038
00039 #include <gecode/int.hh>
00040
00041 namespace Gecode { namespace Int {
00042
00047 template<class View>
00048 class IdxView {
00049 public:
00051 int idx;
00053 View view;
00055 static IdxView* allocate(Space& home, int n);
00056 };
00057
00059 template<class View>
00060 class ViewToVarArg {};
00061
00066 template<class View>
00067 class IdxViewArray {
00068 private:
00070 IdxView<View>* xs;
00072 int n;
00073 public:
00075 IdxViewArray(void);
00077 IdxViewArray(const IdxViewArray<View>&);
00079 IdxViewArray(Space& home, const typename ViewToVarArg<View>::argtype& x);
00081 IdxViewArray(Space& home, int n);
00082
00084 int size(void) const;
00086 void size(int n);
00087
00089 IdxView<View>& operator [](int n);
00091 const IdxView<View>& operator [](int) const;
00092
00097 void subscribe(Space& home, Propagator& p, PropCond pc, bool process=true);
00102 void cancel(Space& home, Propagator& p, PropCond pc);
00104 void reschedule(Space& home, Propagator& p, PropCond pc);
00105
00107 void update(Space& home, IdxViewArray<View>& x);
00108 };
00109
00114 template<class Char, class Traits, class View>
00115 std::basic_ostream<Char,Traits>&
00116 operator <<(std::basic_ostream<Char,Traits>& os,
00117 const IdxViewArray<View>& x);
00118
00119 }}
00120
00121 #include <gecode/int/idx-view.hpp>
00122
00123 #endif
00124
00125
00126
00127