select-view.icc
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
00039
00040
00041
00042
00043
00044 namespace Gecode { namespace Set { namespace Branch {
00045
00046 forceinline ViewSelStatus
00047 ByNone::init(const Space*, SetView) {
00048 return VSS_COMMIT;
00049 }
00050 forceinline ViewSelStatus
00051 ByNone::select(const Space*, SetView) {
00052 GECODE_NEVER;
00053 return VSS_NONE;
00054 }
00055 inline Support::Symbol
00056 ByNone::type(void) {
00057 return Support::Symbol("Gecode::Set::Branch::ByNone");
00058 }
00059
00060 forceinline ViewSelStatus
00061 ByMinCard::init(const Space*, SetView x) {
00062 minCard = x.unknownSize();
00063 return (minCard == 1) ? VSS_COMMIT : VSS_SELECT;
00064 }
00065 forceinline ViewSelStatus
00066 ByMinCard::select(const Space*, SetView x) {
00067 unsigned int us = x.unknownSize();
00068 if (us < minCard) {
00069 minCard = us;
00070 return (minCard == 1) ? VSS_COMMIT : VSS_SELECT;
00071 }
00072 return VSS_NONE;
00073 }
00074 inline Support::Symbol
00075 ByMinCard::type(void) {
00076 return Support::Symbol("Gecode::Set::Branch::ByMinCard");
00077 }
00078
00079 forceinline ViewSelStatus
00080 ByMaxCard::init(const Space*, SetView x) {
00081 maxCard = x.unknownSize();
00082 return VSS_SELECT;
00083 }
00084 forceinline ViewSelStatus
00085 ByMaxCard::select(const Space*, SetView x) {
00086 unsigned int us = x.unknownSize();
00087 if (us > maxCard) {
00088 maxCard = us; return VSS_SELECT;
00089 }
00090 return VSS_NONE;
00091 }
00092 inline Support::Symbol
00093 ByMaxCard::type(void) {
00094 return Support::Symbol("Gecode::Set::Branch::ByMaxCard");
00095 }
00096
00097 forceinline ViewSelStatus
00098 ByMinUnknown::init(const Space*, SetView x) {
00099 UnknownRanges<SetView> unknown(x);
00100 minUnknown = unknown.min();
00101 return VSS_SELECT;
00102 }
00103 forceinline ViewSelStatus
00104 ByMinUnknown::select(const Space*, SetView x) {
00105 UnknownRanges<SetView> unknown(x);
00106 int um = unknown.min();
00107 if (um < minUnknown) {
00108 minUnknown = um; return VSS_SELECT;
00109 }
00110 return VSS_NONE;
00111 }
00112 inline Support::Symbol
00113 ByMinUnknown::type(void) {
00114 return Support::Symbol("Gecode::Set::Branch::ByMinUnknown");
00115 }
00116
00117 forceinline ViewSelStatus
00118 ByMaxUnknown::init(const Space*, SetView x) {
00119 UnknownRanges<SetView> unknown(x);
00120 do {
00121 maxUnknown = unknown.max();
00122 ++unknown;
00123 } while(unknown());
00124 return VSS_SELECT;
00125 }
00126 forceinline ViewSelStatus
00127 ByMaxUnknown::select(const Space*, SetView x) {
00128 UnknownRanges<SetView> unknown(x);
00129 int um = 0;
00130 assert(unknown());
00131 do {
00132 um = unknown.max();
00133 ++unknown;
00134 } while(unknown());
00135 if (um > maxUnknown) {
00136 maxUnknown = um; return VSS_SELECT;
00137 }
00138 return VSS_NONE;
00139 }
00140 inline Support::Symbol
00141 ByMaxUnknown::type(void) {
00142 return Support::Symbol("Gecode::Set::Branch::ByMaxUnknown");
00143 }
00144
00145 }}}
00146
00147
00148