view-sel.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/set/branch.hh>
00039
00040 namespace Gecode { namespace Set { namespace Branch {
00041
00042 ViewSel<SetView>*
00043 viewsel(Space& home, const SetVarBranch& svb) {
00044 switch (svb.select()) {
00045 case SetVarBranch::SEL_NONE:
00046 return new (home) ViewSelNone<SetView>(home,svb);
00047 case SetVarBranch::SEL_RND:
00048 return new (home) ViewSelRnd<SetView>(home,svb);
00049 default: break;
00050 }
00051 if (svb.tbl() != NULL) {
00052 switch (svb.select()) {
00053 case SetVarBranch::SEL_MERIT_MIN:
00054 return new (home) ViewSelMinTbl<MeritFunction<SetView> >(home,svb);
00055 case SetVarBranch::SEL_MERIT_MAX:
00056 return new (home) ViewSelMaxTbl<MeritFunction<SetView> >(home,svb);
00057 case SetVarBranch::SEL_MIN_MIN:
00058 return new (home) ViewSelMinTbl<MeritMin>(home,svb);
00059 case SetVarBranch::SEL_MIN_MAX:
00060 return new (home) ViewSelMaxTbl<MeritMin>(home,svb);
00061 case SetVarBranch::SEL_MAX_MIN:
00062 return new (home) ViewSelMinTbl<MeritMax>(home,svb);
00063 case SetVarBranch::SEL_MAX_MAX:
00064 return new (home) ViewSelMaxTbl<MeritMax>(home,svb);
00065 case SetVarBranch::SEL_SIZE_MIN:
00066 return new (home) ViewSelMinTbl<MeritSize>(home,svb);
00067 case SetVarBranch::SEL_SIZE_MAX:
00068 return new (home) ViewSelMaxTbl<MeritSize>(home,svb);
00069 case SetVarBranch::SEL_DEGREE_MIN:
00070 return new (home) ViewSelMinTbl<MeritDegree<SetView> >(home,svb);
00071 case SetVarBranch::SEL_DEGREE_MAX:
00072 return new (home) ViewSelMaxTbl<MeritDegree<SetView> >(home,svb);
00073 case SetVarBranch::SEL_AFC_MIN:
00074 return new (home) ViewSelMinTbl<MeritAFC<SetView> >(home,svb);
00075 case SetVarBranch::SEL_AFC_MAX:
00076 return new (home) ViewSelMaxTbl<MeritAFC<SetView> >(home,svb);
00077 case SetVarBranch::SEL_ACTIVITY_MIN:
00078 return new (home) ViewSelMinTbl<MeritActivity<SetView> >(home,svb);
00079 case SetVarBranch::SEL_ACTIVITY_MAX:
00080 return new (home) ViewSelMaxTbl<MeritActivity<SetView> >(home,svb);
00081 case SetVarBranch::SEL_DEGREE_SIZE_MIN:
00082 return new (home) ViewSelMinTbl<MeritDegreeSize>(home,svb);
00083 case SetVarBranch::SEL_DEGREE_SIZE_MAX:
00084 return new (home) ViewSelMaxTbl<MeritDegreeSize>(home,svb);
00085 case SetVarBranch::SEL_AFC_SIZE_MIN:
00086 return new (home) ViewSelMinTbl<MeritAFCSize>(home,svb);
00087 case SetVarBranch::SEL_AFC_SIZE_MAX:
00088 return new (home) ViewSelMaxTbl<MeritAFCSize>(home,svb);
00089 case SetVarBranch::SEL_ACTIVITY_SIZE_MIN:
00090 return new (home) ViewSelMinTbl<MeritActivitySize>(home,svb);
00091 case SetVarBranch::SEL_ACTIVITY_SIZE_MAX:
00092 return new (home) ViewSelMaxTbl<MeritActivitySize>(home,svb);
00093 default:
00094 throw UnknownBranching("Set::branch");
00095 }
00096 } else {
00097 switch (svb.select()) {
00098 case SetVarBranch::SEL_MERIT_MIN:
00099 return new (home) ViewSelMin<MeritFunction<SetView> >(home,svb);
00100 case SetVarBranch::SEL_MERIT_MAX:
00101 return new (home) ViewSelMax<MeritFunction<SetView> >(home,svb);
00102 case SetVarBranch::SEL_MIN_MIN:
00103 return new (home) ViewSelMin<MeritMin>(home,svb);
00104 case SetVarBranch::SEL_MIN_MAX:
00105 return new (home) ViewSelMax<MeritMin>(home,svb);
00106 case SetVarBranch::SEL_MAX_MIN:
00107 return new (home) ViewSelMin<MeritMax>(home,svb);
00108 case SetVarBranch::SEL_MAX_MAX:
00109 return new (home) ViewSelMax<MeritMax>(home,svb);
00110 case SetVarBranch::SEL_SIZE_MIN:
00111 return new (home) ViewSelMin<MeritSize>(home,svb);
00112 case SetVarBranch::SEL_SIZE_MAX:
00113 return new (home) ViewSelMax<MeritSize>(home,svb);
00114 case SetVarBranch::SEL_DEGREE_MIN:
00115 return new (home) ViewSelMin<MeritDegree<SetView> >(home,svb);
00116 case SetVarBranch::SEL_DEGREE_MAX:
00117 return new (home) ViewSelMax<MeritDegree<SetView> >(home,svb);
00118 case SetVarBranch::SEL_AFC_MIN:
00119 return new (home) ViewSelMin<MeritAFC<SetView> >(home,svb);
00120 case SetVarBranch::SEL_AFC_MAX:
00121 return new (home) ViewSelMax<MeritAFC<SetView> >(home,svb);
00122 case SetVarBranch::SEL_ACTIVITY_MIN:
00123 return new (home) ViewSelMin<MeritActivity<SetView> >(home,svb);
00124 case SetVarBranch::SEL_ACTIVITY_MAX:
00125 return new (home) ViewSelMax<MeritActivity<SetView> >(home,svb);
00126 case SetVarBranch::SEL_DEGREE_SIZE_MIN:
00127 return new (home) ViewSelMin<MeritDegreeSize>(home,svb);
00128 case SetVarBranch::SEL_DEGREE_SIZE_MAX:
00129 return new (home) ViewSelMax<MeritDegreeSize>(home,svb);
00130 case SetVarBranch::SEL_AFC_SIZE_MIN:
00131 return new (home) ViewSelMin<MeritAFCSize>(home,svb);
00132 case SetVarBranch::SEL_AFC_SIZE_MAX:
00133 return new (home) ViewSelMax<MeritAFCSize>(home,svb);
00134 case SetVarBranch::SEL_ACTIVITY_SIZE_MIN:
00135 return new (home) ViewSelMin<MeritActivitySize>(home,svb);
00136 case SetVarBranch::SEL_ACTIVITY_SIZE_MAX:
00137 return new (home) ViewSelMax<MeritActivitySize>(home,svb);
00138 default:
00139 throw UnknownBranching("Set::branch");
00140 }
00141 }
00142 GECODE_NEVER;
00143 return NULL;
00144 }
00145
00146 }}}
00147
00148
00149
00150