Generated on Wed Jan 4 17:49:14 2006 for Gecode by doxygen 1.4.6

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: 2005-11-15 20:13:55 +0100 (Tue, 15 Nov 2005) $ by $Author: tack $
00016  *     $Revision: 2583 $
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 namespace Gecode { namespace Set { namespace Rel {
00029 
00030 #define GECODE_ME_CHECK_B(modified, tell)       \
00031   {                                             \
00032     ModEvent me = (tell);                       \
00033     modified |= me_modified(me);                \
00034     GECODE_ME_CHECK(me);                        \
00035   }
00036 
00037   forceinline
00038   bool subsumesME(ModEvent me0, ModEvent me1, ModEvent me2, ModEvent me) {
00039     ModEvent cme = SetView::combine(me0,SetView::combine(me1, me2));
00040     return SetView::combine(cme, me)==cme;
00041   }
00042   forceinline
00043   bool subsumesME(ModEvent me0, ModEvent me1, ModEvent me) {
00044     ModEvent cme = SetView::combine(me0, me1);
00045     return SetView::combine(cme, me)==cme;
00046   }
00047   forceinline
00048   bool subsumesME(ModEvent me0, ModEvent me) {
00049     return SetView::combine(me0, me)==me0;
00050   }
00051 
00052   forceinline
00053   bool testSetEventLB(ModEvent me0, ModEvent me1, ModEvent me2) {
00054     return subsumesME(me0, me1, me2, ME_SET_GLB);
00055   }
00056   forceinline
00057   bool testSetEventUB(ModEvent me0, ModEvent me1, ModEvent me2) {
00058     return subsumesME(me0, me1, me2, ME_SET_LUB);
00059   }
00060   forceinline
00061   bool testSetEventAnyB(ModEvent me0, ModEvent me1, ModEvent me2) {
00062     return ( me0!=ME_SET_CARD || me1!=ME_SET_CARD || me2!=ME_SET_CARD );
00063   }
00064   forceinline
00065   bool testSetEventCard(ModEvent me0, ModEvent me1, ModEvent me2) {
00066     return subsumesME(me0, me1, me2, ME_SET_CARD);
00067   }
00068   forceinline
00069   bool testSetEventLB(ModEvent me0, ModEvent me1) {
00070     return subsumesME(me0, me1, ME_SET_GLB);
00071   }
00072   forceinline
00073   bool testSetEventUB(ModEvent me0, ModEvent me1) {
00074     return subsumesME(me0, me1, ME_SET_LUB);
00075   }
00076   forceinline
00077   bool testSetEventAnyB(ModEvent me0, ModEvent me1) {
00078     return ( me0!=ME_SET_CARD || me1!=ME_SET_CARD );
00079   }
00080   forceinline
00081   bool testSetEventCard(ModEvent me0, ModEvent me1) {
00082     return subsumesME(me0, me1, ME_SET_CARD);
00083   }
00084   forceinline
00085   bool testSetEventLB(ModEvent me0) {
00086     return subsumesME(me0, ME_SET_GLB);
00087   }
00088   forceinline
00089   bool testSetEventUB(ModEvent me0) {
00090     return subsumesME(me0, ME_SET_LUB);
00091   }
00092   forceinline
00093   bool testSetEventAnyB(ModEvent me0) {
00094     return ( me0!=ME_SET_CARD );
00095   }
00096   forceinline
00097   bool testSetEventCard(ModEvent me0) {
00098     return subsumesME(me0, ME_SET_CARD);
00099   }
00100 
00101 }}}
00102 
00103 // STATISTICS: set-prop