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 Int { namespace Branch {
00039
00041 template<class SelView>
00042 void
00043 post(Space& home, ViewArray<IntView>& x, SelView& v,
00044 IntValBranch vals, const ValBranchOptions& o_vals, BranchFilter bf) {
00045 switch (vals) {
00046 case INT_VAL_MIN:
00047 {
00048 ValMin<IntView> a(home,o_vals);
00049 ViewValBrancher<SelView,ValMin<IntView> >::post(home,x,v,a,bf);
00050 }
00051 break;
00052 case INT_VAL_MED:
00053 {
00054 ValMed<IntView> a(home,o_vals);
00055 ViewValBrancher<SelView,ValMed<IntView> >::post(home,x,v,a,bf);
00056 }
00057 break;
00058 case INT_VAL_MAX:
00059 {
00060 ValMin<MinusView> a(home,o_vals);
00061 ViewValBrancher<SelView,ValMin<MinusView> >::post(home,x,v,a,bf);
00062 }
00063 break;
00064 case INT_VAL_RND:
00065 {
00066 ValRnd<IntView> a(home,o_vals);
00067 ViewValBrancher<SelView,ValRnd<IntView> >::post(home,x,v,a,bf);
00068 }
00069 break;
00070 case INT_VAL_SPLIT_MIN:
00071 {
00072 ValSplitMin<IntView> a(home,o_vals);
00073 ViewValBrancher<SelView,ValSplitMin<IntView> >::post(home,x,v,a,bf);
00074 }
00075 break;
00076 case INT_VAL_SPLIT_MAX:
00077 {
00078 ValSplitMin<MinusView> a(home,o_vals);
00079 ViewValBrancher<SelView,ValSplitMin<MinusView> >::post(home,x,v,a,bf);
00080 }
00081 break;
00082 case INT_VAL_RANGE_MIN:
00083 {
00084 ValRangeMin<IntView> a(home,o_vals);
00085 ViewValBrancher<SelView,ValRangeMin<IntView> >::post(home,x,v,a,bf);
00086 }
00087 break;
00088 case INT_VAL_RANGE_MAX:
00089 {
00090 ValRangeMin<MinusView> a(home,o_vals);
00091 ViewValBrancher<SelView,ValRangeMin<MinusView> >::post(home,x,v,a,bf);
00092 }
00093 break;
00094 case INT_VALUES_MIN:
00095 ViewValuesBrancher<SelView,IntView>::post(home,x,v,bf);
00096 break;
00097 case INT_VALUES_MAX:
00098 ViewValuesBrancher<SelView,MinusView>::post(home,x,v,bf);
00099 break;
00100 default:
00101 throw UnknownBranching("Int::branch");
00102 }
00103 }
00104
00105 }}}
00106
00107