Generated on Wed Nov 1 15:04:40 2006 for Gecode by doxygen 1.4.5

imp-body.icc

Go to the documentation of this file.
00001 /*
00002  *  CAUTION:
00003  *    This file has been automatically generated.
00004  *    Do not edit, edit the file "../trunk/gecode/set/var-imp.vis" instead.
00005  *
00006  *  This file contains generated code fragments which are 
00007  *  copyrighted as follows:
00008  *
00009  *  Main author:
00010  *     Christian Schulte <schulte@gecode.org>
00011  *
00012  *  Copyright:
00013  *     Christian Schulte, 2006
00014  *
00015  *  The generated code fragments are part of Gecode, the generic
00016  *  constraint development environment:
00017  *     http://www.gecode.org
00018  *
00019  *  See the file "LICENSE" for information on usage and
00020  *  redistribution of this file, and for a
00021  *     DISCLAIMER OF ALL WARRANTIES.
00022  *
00023  */
00024 
00025 
00026 namespace Gecode { namespace Set {
00027 
00028 
00029   /*
00030    * Modification event difference for Set-variable implementations
00031    *
00032    */
00033   const Gecode::ModEvent SetMeDiff::med[ME_SET_CBB+1][ME_SET_CBB+1] = {
00034     {
00035       ME_SET_NONE ^ ME_SET_NONE, // [ME_SET_NONE][ME_SET_NONE]
00036       ME_SET_VAL ^ ME_SET_VAL, // [ME_SET_NONE][ME_SET_VAL]
00037       ME_SET_CARD ^ ME_SET_CARD, // [ME_SET_NONE][ME_SET_CARD]
00038       ME_SET_LUB ^ ME_SET_LUB, // [ME_SET_NONE][ME_SET_LUB]
00039       ME_SET_GLB ^ ME_SET_GLB, // [ME_SET_NONE][ME_SET_GLB]
00040       ME_SET_BB ^ ME_SET_BB, // [ME_SET_NONE][ME_SET_BB]
00041       ME_SET_CLUB ^ ME_SET_CLUB, // [ME_SET_NONE][ME_SET_CLUB]
00042       ME_SET_CGLB ^ ME_SET_CGLB, // [ME_SET_NONE][ME_SET_CGLB]
00043       ME_SET_CBB ^ ME_SET_CBB  // [ME_SET_NONE][ME_SET_CBB]
00044     },
00045     {
00046       ME_SET_NONE ^ ME_SET_VAL, // [ME_SET_VAL][ME_SET_NONE]
00047       ME_SET_VAL ^ ME_SET_VAL, // [ME_SET_VAL][ME_SET_VAL]
00048       ME_SET_CARD ^ ME_SET_VAL, // [ME_SET_VAL][ME_SET_CARD]
00049       ME_SET_LUB ^ ME_SET_VAL, // [ME_SET_VAL][ME_SET_LUB]
00050       ME_SET_GLB ^ ME_SET_VAL, // [ME_SET_VAL][ME_SET_GLB]
00051       ME_SET_BB ^ ME_SET_VAL, // [ME_SET_VAL][ME_SET_BB]
00052       ME_SET_CLUB ^ ME_SET_VAL, // [ME_SET_VAL][ME_SET_CLUB]
00053       ME_SET_CGLB ^ ME_SET_VAL, // [ME_SET_VAL][ME_SET_CGLB]
00054       ME_SET_CBB ^ ME_SET_VAL  // [ME_SET_VAL][ME_SET_CBB]
00055     },
00056     {
00057       ME_SET_NONE ^ ME_SET_CARD, // [ME_SET_CARD][ME_SET_NONE]
00058       ME_SET_VAL ^ ME_SET_VAL, // [ME_SET_CARD][ME_SET_VAL]
00059       ME_SET_CARD ^ ME_SET_CARD, // [ME_SET_CARD][ME_SET_CARD]
00060       ME_SET_LUB ^ ME_SET_CLUB, // [ME_SET_CARD][ME_SET_LUB]
00061       ME_SET_GLB ^ ME_SET_CGLB, // [ME_SET_CARD][ME_SET_GLB]
00062       ME_SET_BB ^ ME_SET_CBB, // [ME_SET_CARD][ME_SET_BB]
00063       ME_SET_CLUB ^ ME_SET_CLUB, // [ME_SET_CARD][ME_SET_CLUB]
00064       ME_SET_CGLB ^ ME_SET_CGLB, // [ME_SET_CARD][ME_SET_CGLB]
00065       ME_SET_CBB ^ ME_SET_CBB  // [ME_SET_CARD][ME_SET_CBB]
00066     },
00067     {
00068       ME_SET_NONE ^ ME_SET_LUB, // [ME_SET_LUB][ME_SET_NONE]
00069       ME_SET_VAL ^ ME_SET_VAL, // [ME_SET_LUB][ME_SET_VAL]
00070       ME_SET_CARD ^ ME_SET_CLUB, // [ME_SET_LUB][ME_SET_CARD]
00071       ME_SET_LUB ^ ME_SET_LUB, // [ME_SET_LUB][ME_SET_LUB]
00072       ME_SET_GLB ^ ME_SET_BB, // [ME_SET_LUB][ME_SET_GLB]
00073       ME_SET_BB ^ ME_SET_BB, // [ME_SET_LUB][ME_SET_BB]
00074       ME_SET_CLUB ^ ME_SET_CLUB, // [ME_SET_LUB][ME_SET_CLUB]
00075       ME_SET_CGLB ^ ME_SET_CBB, // [ME_SET_LUB][ME_SET_CGLB]
00076       ME_SET_CBB ^ ME_SET_CBB  // [ME_SET_LUB][ME_SET_CBB]
00077     },
00078     {
00079       ME_SET_NONE ^ ME_SET_GLB, // [ME_SET_GLB][ME_SET_NONE]
00080       ME_SET_VAL ^ ME_SET_VAL, // [ME_SET_GLB][ME_SET_VAL]
00081       ME_SET_CARD ^ ME_SET_CGLB, // [ME_SET_GLB][ME_SET_CARD]
00082       ME_SET_LUB ^ ME_SET_BB, // [ME_SET_GLB][ME_SET_LUB]
00083       ME_SET_GLB ^ ME_SET_GLB, // [ME_SET_GLB][ME_SET_GLB]
00084       ME_SET_BB ^ ME_SET_BB, // [ME_SET_GLB][ME_SET_BB]
00085       ME_SET_CLUB ^ ME_SET_CBB, // [ME_SET_GLB][ME_SET_CLUB]
00086       ME_SET_CGLB ^ ME_SET_CGLB, // [ME_SET_GLB][ME_SET_CGLB]
00087       ME_SET_CBB ^ ME_SET_CBB  // [ME_SET_GLB][ME_SET_CBB]
00088     },
00089     {
00090       ME_SET_NONE ^ ME_SET_BB, // [ME_SET_BB][ME_SET_NONE]
00091       ME_SET_VAL ^ ME_SET_VAL, // [ME_SET_BB][ME_SET_VAL]
00092       ME_SET_CARD ^ ME_SET_CBB, // [ME_SET_BB][ME_SET_CARD]
00093       ME_SET_LUB ^ ME_SET_BB, // [ME_SET_BB][ME_SET_LUB]
00094       ME_SET_GLB ^ ME_SET_BB, // [ME_SET_BB][ME_SET_GLB]
00095       ME_SET_BB ^ ME_SET_BB, // [ME_SET_BB][ME_SET_BB]
00096       ME_SET_CLUB ^ ME_SET_CBB, // [ME_SET_BB][ME_SET_CLUB]
00097       ME_SET_CGLB ^ ME_SET_CBB, // [ME_SET_BB][ME_SET_CGLB]
00098       ME_SET_CBB ^ ME_SET_CBB  // [ME_SET_BB][ME_SET_CBB]
00099     },
00100     {
00101       ME_SET_NONE ^ ME_SET_CLUB, // [ME_SET_CLUB][ME_SET_NONE]
00102       ME_SET_VAL ^ ME_SET_VAL, // [ME_SET_CLUB][ME_SET_VAL]
00103       ME_SET_CARD ^ ME_SET_CLUB, // [ME_SET_CLUB][ME_SET_CARD]
00104       ME_SET_LUB ^ ME_SET_CLUB, // [ME_SET_CLUB][ME_SET_LUB]
00105       ME_SET_GLB ^ ME_SET_CBB, // [ME_SET_CLUB][ME_SET_GLB]
00106       ME_SET_BB ^ ME_SET_CBB, // [ME_SET_CLUB][ME_SET_BB]
00107       ME_SET_CLUB ^ ME_SET_CLUB, // [ME_SET_CLUB][ME_SET_CLUB]
00108       ME_SET_CGLB ^ ME_SET_CBB, // [ME_SET_CLUB][ME_SET_CGLB]
00109       ME_SET_CBB ^ ME_SET_CBB  // [ME_SET_CLUB][ME_SET_CBB]
00110     },
00111     {
00112       ME_SET_NONE ^ ME_SET_CGLB, // [ME_SET_CGLB][ME_SET_NONE]
00113       ME_SET_VAL ^ ME_SET_VAL, // [ME_SET_CGLB][ME_SET_VAL]
00114       ME_SET_CARD ^ ME_SET_CGLB, // [ME_SET_CGLB][ME_SET_CARD]
00115       ME_SET_LUB ^ ME_SET_CBB, // [ME_SET_CGLB][ME_SET_LUB]
00116       ME_SET_GLB ^ ME_SET_CGLB, // [ME_SET_CGLB][ME_SET_GLB]
00117       ME_SET_BB ^ ME_SET_CBB, // [ME_SET_CGLB][ME_SET_BB]
00118       ME_SET_CLUB ^ ME_SET_CBB, // [ME_SET_CGLB][ME_SET_CLUB]
00119       ME_SET_CGLB ^ ME_SET_CGLB, // [ME_SET_CGLB][ME_SET_CGLB]
00120       ME_SET_CBB ^ ME_SET_CBB  // [ME_SET_CGLB][ME_SET_CBB]
00121     },
00122     {
00123       ME_SET_NONE ^ ME_SET_CBB, // [ME_SET_CBB][ME_SET_NONE]
00124       ME_SET_VAL ^ ME_SET_VAL, // [ME_SET_CBB][ME_SET_VAL]
00125       ME_SET_CARD ^ ME_SET_CBB, // [ME_SET_CBB][ME_SET_CARD]
00126       ME_SET_LUB ^ ME_SET_CBB, // [ME_SET_CBB][ME_SET_LUB]
00127       ME_SET_GLB ^ ME_SET_CBB, // [ME_SET_CBB][ME_SET_GLB]
00128       ME_SET_BB ^ ME_SET_CBB, // [ME_SET_CBB][ME_SET_BB]
00129       ME_SET_CLUB ^ ME_SET_CBB, // [ME_SET_CBB][ME_SET_CLUB]
00130       ME_SET_CGLB ^ ME_SET_CBB, // [ME_SET_CBB][ME_SET_CGLB]
00131       ME_SET_CBB ^ ME_SET_CBB  // [ME_SET_CBB][ME_SET_CBB]
00132     }
00133   };
00134 
00135 
00136   /*
00137    * The variable processor for SetVarImpBase
00138    *
00139    */
00140 
00141   void
00142   SetVarImpBase::Processor::process(Space* home, VarBase* _x) {
00143     // Process modified variables
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         // Conditions: CARD CLUB CGLB ANY 
00153         x->process(home,PC_SET_CARD,PC_SET_ANY,ME_SET_CARD);
00154         break;
00155       case ME_SET_LUB:
00156         // Conditions: CLUB ANY 
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         // Conditions: CGLB ANY 
00162         x->process(home,PC_SET_CGLB,PC_SET_ANY,ME_SET_GLB);
00163         break;
00164       case ME_SET_BB:
00165         // Conditions: CLUB CGLB ANY 
00166         x->process(home,PC_SET_CLUB,PC_SET_ANY,ME_SET_BB);
00167         break;
00168       case ME_SET_CLUB:
00169         // Conditions: CARD CLUB CGLB ANY 
00170         x->process(home,PC_SET_CARD,PC_SET_ANY,ME_SET_CLUB);
00171         break;
00172       case ME_SET_CGLB:
00173         // Conditions: CARD CLUB CGLB ANY 
00174         x->process(home,PC_SET_CARD,PC_SET_ANY,ME_SET_CGLB);
00175         break;
00176       case ME_SET_CBB:
00177         // Conditions: CARD CLUB CGLB ANY 
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 // STATISTICS: set-var