val-sel-commit.cpp
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
00037
00038 #include <gecode/float/branch.hh>
00039
00040 namespace Gecode { namespace Float { namespace Branch {
00041
00042 ValSelCommitBase<FloatView,FloatNumBranch>*
00043 valselcommit(Space& home, const FloatValBranch& fvb) {
00044 switch (fvb.select()) {
00045 case FloatValBranch::SEL_SPLIT_MIN:
00046 return new (home) ValSelCommit<ValSelLq,ValCommitLqGq>(home,fvb);
00047 case FloatValBranch::SEL_SPLIT_MAX:
00048 return new (home) ValSelCommit<ValSelGq,ValCommitLqGq>(home,fvb);
00049 case FloatValBranch::SEL_SPLIT_RND:
00050 return new (home) ValSelCommit<ValSelRnd,ValCommitLqGq>(home,fvb);
00051 case FloatValBranch::SEL_VAL_COMMIT:
00052 if (fvb.commit() == NULL) {
00053 return new (home)
00054 ValSelCommit<ValSelFunction<FloatView>,ValCommitLqGq>(home,fvb);
00055 } else {
00056 return new (home)
00057 ValSelCommit<ValSelFunction<FloatView>,ValCommitFunction<FloatView> >(home,fvb);
00058 }
00059 default:
00060 throw UnknownBranching("Float::branch");
00061 }
00062 }
00063
00064 ValSelCommitBase<FloatView,FloatNumBranch>*
00065 valselcommit(Space& home, const FloatAssign& fa) {
00066 switch (fa.select()) {
00067 case FloatAssign::SEL_MIN:
00068 return new (home) ValSelCommit<ValSelLq,ValCommitLqGq>(home,fa);
00069 case FloatAssign::SEL_MAX:
00070 return new (home) ValSelCommit<ValSelGq,ValCommitLqGq>(home,fa);
00071 case FloatAssign::SEL_RND:
00072 return new (home) ValSelCommit<ValSelRnd,ValCommitLqGq>(home,fa);
00073 case FloatAssign::SEL_VAL_COMMIT:
00074 if (fa.commit() == NULL) {
00075 return new (home)
00076 ValSelCommit<ValSelFunction<FloatView>,ValCommitLqGq>(home,fa);
00077 } else {
00078 return new (home)
00079 ValSelCommit<ValSelFunction<FloatView>,ValCommitFunction<FloatView> >(home,fa);
00080 }
00081 default:
00082 throw UnknownBranching("Float::assign");
00083 }
00084 }
00085
00086 }}}
00087
00088
00089