Generated on Thu Jul 6 07:06:50 2006 for Gecode by doxygen 1.4.7

common.icc

Go to the documentation of this file.
00001 /*
00002  *  Main authors:
00003  *     Guido Tack <tack@gecode.org>
00004  *     Christian Schulte <schulte@gecode.org>
00005  *
00006  *  Contributing authors:
00007  *     Gabor Szokoli <szokoli@gecode.org>
00008  *
00009  *  Copyright:
00010  *     Guido Tack, 2004
00011  *     Christian Schulte, 2004
00012  *     Gabor Szokoli, 2004
00013  *
00014  *  Last modified:
00015  *     $Date: 2006-03-29 14:18:06 +0200 (Wed, 29 Mar 2006) $ by $Author: tack $
00016  *     $Revision: 3130 $
00017  *
00018  *  This file is part of Gecode, the generic constraint
00019  *  development environment:
00020  *     http://www.gecode.org
00021  *
00022  *  See the file "LICENSE" for information on usage and
00023  *  redistribution of this file, and for a
00024  *     DISCLAIMER OF ALL WARRANTIES.
00025  *
00026  */
00027 
00028 #define GECODE_ME_CHECK_B(modified, tell)       \
00029   {                                             \
00030     ModEvent me = (tell);                       \
00031     if (me_modified(me))                        \
00032       modified = true;                          \
00033     else                                        \
00034       GECODE_ME_CHECK(me);                      \
00035   }
00036 
00037 #define GECODE_ME_CHECK_VAL(p,f) {                              \
00038     ModEvent __me__ ## __LINE__ = (p);                          \
00039     if (me_failed(__me__ ## __LINE__)) return ES_FAILED;        \
00040     if (ME_GEN_ASSIGNED==(__me__ ## __LINE__))f=true; }
00041 
00042 #define GECODE_ME_CHECK_VAL_B(modified, tell, f)        \
00043   {                                                     \
00044     ModEvent me = (tell);                               \
00045     modified |= me_modified(me);                        \
00046     if (ME_GEN_ASSIGNED==(me))f=true;                   \
00047     GECODE_ME_CHECK(me);                                \
00048   }
00049 
00050 namespace Gecode { namespace Set { namespace Rel {
00051 
00052   forceinline
00053   bool subsumesME(ModEvent me0, ModEvent me1, ModEvent me2, ModEvent me) {
00054     ModEvent cme = SetView::combine(me0,SetView::combine(me1, me2));
00055     return SetView::combine(cme, me)==cme;
00056   }
00057   forceinline
00058   bool subsumesME(ModEvent me0, ModEvent me1, ModEvent me) {
00059     ModEvent cme = SetView::combine(me0, me1);
00060     return SetView::combine(cme, me)==cme;
00061   }
00062   forceinline
00063   bool subsumesME(ModEvent me0, ModEvent me) {
00064     return SetView::combine(me0, me)==me0;
00065   }
00066 
00067   forceinline
00068   bool testSetEventLB(ModEvent me0, ModEvent me1, ModEvent me2) {
00069     return subsumesME(me0, me1, me2, ME_SET_GLB);
00070   }
00071   forceinline
00072   bool testSetEventUB(ModEvent me0, ModEvent me1, ModEvent me2) {
00073     return subsumesME(me0, me1, me2, ME_SET_LUB);
00074   }
00075   forceinline
00076   bool testSetEventAnyB(ModEvent me0, ModEvent me1, ModEvent me2) {
00077     return ( me0!=ME_SET_CARD || me1!=ME_SET_CARD || me2!=ME_SET_CARD );
00078   }
00079   forceinline
00080   bool testSetEventCard(ModEvent me0, ModEvent me1, ModEvent me2) {
00081     return subsumesME(me0, me1, me2, ME_SET_CARD);
00082   }
00083   forceinline
00084   bool testSetEventLB(ModEvent me0, ModEvent me1) {
00085     return subsumesME(me0, me1, ME_SET_GLB);
00086   }
00087   forceinline
00088   bool testSetEventUB(ModEvent me0, ModEvent me1) {
00089     return subsumesME(me0, me1, ME_SET_LUB);
00090   }
00091   forceinline
00092   bool testSetEventAnyB(ModEvent me0, ModEvent me1) {
00093     return ( me0!=ME_SET_CARD || me1!=ME_SET_CARD );
00094   }
00095   forceinline
00096   bool testSetEventCard(ModEvent me0, ModEvent me1) {
00097     return subsumesME(me0, me1, ME_SET_CARD);
00098   }
00099   forceinline
00100   bool testSetEventLB(ModEvent me0) {
00101     return subsumesME(me0, ME_SET_GLB);
00102   }
00103   forceinline
00104   bool testSetEventUB(ModEvent me0) {
00105     return subsumesME(me0, ME_SET_LUB);
00106   }
00107   forceinline
00108   bool testSetEventAnyB(ModEvent me0) {
00109     return ( me0!=ME_SET_CARD );
00110   }
00111   forceinline
00112   bool testSetEventCard(ModEvent me0) {
00113     return subsumesME(me0, ME_SET_CARD);
00114   }
00115 
00116 }}}
00117 
00118 // STATISTICS: set-prop