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 namespace Gecode { namespace Set {
00027
00028
00029
00030
00031
00032
00033 const Gecode::ModEvent SetMeDiff::med[ME_SET_CBB+1][ME_SET_CBB+1] = {
00034 {
00035 ME_SET_NONE ^ ME_SET_NONE,
00036 ME_SET_VAL ^ ME_SET_VAL,
00037 ME_SET_CARD ^ ME_SET_CARD,
00038 ME_SET_LUB ^ ME_SET_LUB,
00039 ME_SET_GLB ^ ME_SET_GLB,
00040 ME_SET_BB ^ ME_SET_BB,
00041 ME_SET_CLUB ^ ME_SET_CLUB,
00042 ME_SET_CGLB ^ ME_SET_CGLB,
00043 ME_SET_CBB ^ ME_SET_CBB
00044 },
00045 {
00046 ME_SET_NONE ^ ME_SET_VAL,
00047 ME_SET_VAL ^ ME_SET_VAL,
00048 ME_SET_CARD ^ ME_SET_VAL,
00049 ME_SET_LUB ^ ME_SET_VAL,
00050 ME_SET_GLB ^ ME_SET_VAL,
00051 ME_SET_BB ^ ME_SET_VAL,
00052 ME_SET_CLUB ^ ME_SET_VAL,
00053 ME_SET_CGLB ^ ME_SET_VAL,
00054 ME_SET_CBB ^ ME_SET_VAL
00055 },
00056 {
00057 ME_SET_NONE ^ ME_SET_CARD,
00058 ME_SET_VAL ^ ME_SET_VAL,
00059 ME_SET_CARD ^ ME_SET_CARD,
00060 ME_SET_LUB ^ ME_SET_CLUB,
00061 ME_SET_GLB ^ ME_SET_CGLB,
00062 ME_SET_BB ^ ME_SET_CBB,
00063 ME_SET_CLUB ^ ME_SET_CLUB,
00064 ME_SET_CGLB ^ ME_SET_CGLB,
00065 ME_SET_CBB ^ ME_SET_CBB
00066 },
00067 {
00068 ME_SET_NONE ^ ME_SET_LUB,
00069 ME_SET_VAL ^ ME_SET_VAL,
00070 ME_SET_CARD ^ ME_SET_CLUB,
00071 ME_SET_LUB ^ ME_SET_LUB,
00072 ME_SET_GLB ^ ME_SET_BB,
00073 ME_SET_BB ^ ME_SET_BB,
00074 ME_SET_CLUB ^ ME_SET_CLUB,
00075 ME_SET_CGLB ^ ME_SET_CBB,
00076 ME_SET_CBB ^ ME_SET_CBB
00077 },
00078 {
00079 ME_SET_NONE ^ ME_SET_GLB,
00080 ME_SET_VAL ^ ME_SET_VAL,
00081 ME_SET_CARD ^ ME_SET_CGLB,
00082 ME_SET_LUB ^ ME_SET_BB,
00083 ME_SET_GLB ^ ME_SET_GLB,
00084 ME_SET_BB ^ ME_SET_BB,
00085 ME_SET_CLUB ^ ME_SET_CBB,
00086 ME_SET_CGLB ^ ME_SET_CGLB,
00087 ME_SET_CBB ^ ME_SET_CBB
00088 },
00089 {
00090 ME_SET_NONE ^ ME_SET_BB,
00091 ME_SET_VAL ^ ME_SET_VAL,
00092 ME_SET_CARD ^ ME_SET_CBB,
00093 ME_SET_LUB ^ ME_SET_BB,
00094 ME_SET_GLB ^ ME_SET_BB,
00095 ME_SET_BB ^ ME_SET_BB,
00096 ME_SET_CLUB ^ ME_SET_CBB,
00097 ME_SET_CGLB ^ ME_SET_CBB,
00098 ME_SET_CBB ^ ME_SET_CBB
00099 },
00100 {
00101 ME_SET_NONE ^ ME_SET_CLUB,
00102 ME_SET_VAL ^ ME_SET_VAL,
00103 ME_SET_CARD ^ ME_SET_CLUB,
00104 ME_SET_LUB ^ ME_SET_CLUB,
00105 ME_SET_GLB ^ ME_SET_CBB,
00106 ME_SET_BB ^ ME_SET_CBB,
00107 ME_SET_CLUB ^ ME_SET_CLUB,
00108 ME_SET_CGLB ^ ME_SET_CBB,
00109 ME_SET_CBB ^ ME_SET_CBB
00110 },
00111 {
00112 ME_SET_NONE ^ ME_SET_CGLB,
00113 ME_SET_VAL ^ ME_SET_VAL,
00114 ME_SET_CARD ^ ME_SET_CGLB,
00115 ME_SET_LUB ^ ME_SET_CBB,
00116 ME_SET_GLB ^ ME_SET_CGLB,
00117 ME_SET_BB ^ ME_SET_CBB,
00118 ME_SET_CLUB ^ ME_SET_CBB,
00119 ME_SET_CGLB ^ ME_SET_CGLB,
00120 ME_SET_CBB ^ ME_SET_CBB
00121 },
00122 {
00123 ME_SET_NONE ^ ME_SET_CBB,
00124 ME_SET_VAL ^ ME_SET_VAL,
00125 ME_SET_CARD ^ ME_SET_CBB,
00126 ME_SET_LUB ^ ME_SET_CBB,
00127 ME_SET_GLB ^ ME_SET_CBB,
00128 ME_SET_BB ^ ME_SET_CBB,
00129 ME_SET_CLUB ^ ME_SET_CBB,
00130 ME_SET_CGLB ^ ME_SET_CBB,
00131 ME_SET_CBB ^ ME_SET_CBB
00132 }
00133 };
00134
00135
00136
00137
00138
00139
00140
00141 void
00142 SetVarImpBase::Processor::process(Space* home, VarBase* _x) {
00143
00144 Gecode::Variable<VTI_SET,PC_SET_ANY,SetMeDiff>* x =
00145 static_cast<Gecode::Variable<VTI_SET,PC_SET_ANY,SetMeDiff>*>(_x);
00146 do {
00147 switch (x->modevent()) {
00148 case ME_SET_VAL:
00149 x->process(home);
00150 break;
00151 case ME_SET_CARD:
00152
00153 x->process(home,PC_SET_CARD,PC_SET_ANY,ME_SET_CARD);
00154 break;
00155 case ME_SET_LUB:
00156
00157 x->process(home,PC_SET_CLUB,PC_SET_CLUB,ME_SET_LUB);
00158 x->process(home,PC_SET_ANY,PC_SET_ANY,ME_SET_LUB);
00159 break;
00160 case ME_SET_GLB:
00161
00162 x->process(home,PC_SET_CGLB,PC_SET_ANY,ME_SET_GLB);
00163 break;
00164 case ME_SET_BB:
00165
00166 x->process(home,PC_SET_CLUB,PC_SET_ANY,ME_SET_BB);
00167 break;
00168 case ME_SET_CLUB:
00169
00170 x->process(home,PC_SET_CARD,PC_SET_ANY,ME_SET_CLUB);
00171 break;
00172 case ME_SET_CGLB:
00173
00174 x->process(home,PC_SET_CARD,PC_SET_ANY,ME_SET_CGLB);
00175 break;
00176 case ME_SET_CBB:
00177
00178 x->process(home,PC_SET_CARD,PC_SET_ANY,ME_SET_CBB);
00179 break;
00180 default: GECODE_NEVER;
00181 }
00182 x = x->next();
00183 } while (x != NULL);
00184 }
00185
00186
00187 SetVarImpBase::Processor SetVarImpBase::p;
00188
00189
00190 }}
00191
00192