regular.hh
Go to the documentation of this file.00001 /* 00002 * Main authors: 00003 * Christian Schulte <schulte@gecode.org> 00004 * 00005 * Copyright: 00006 * Christian Schulte, 2004 00007 * 00008 * Last modified: 00009 * $Date: 2006-08-04 16:03:26 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $ 00010 * $Revision: 3512 $ 00011 * 00012 * This file is part of Gecode, the generic constraint 00013 * development environment: 00014 * http://www.gecode.org 00015 * 00016 * See the file "LICENSE" for information on usage and 00017 * redistribution of this file, and for a 00018 * DISCLAIMER OF ALL WARRANTIES. 00019 * 00020 */ 00021 00022 #ifndef __GECODE_INT_REGULAR_HH__ 00023 #define __GECODE_INT_REGULAR_HH__ 00024 00025 #include "gecode/int.hh" 00026 00032 namespace Gecode { namespace Int { namespace Regular { 00033 00045 template <class View> 00046 class Dom : public NaryPropagator<View,PC_INT_DOM> { 00047 protected: 00049 DFA dfa; 00051 class LayeredGraph; 00053 LayeredGraph* lg; 00054 00056 Dom(Space* home, bool shared, Dom<View>& p); 00058 Dom(Space* home, ViewArray<View>& x, DFA& d); 00059 public: 00061 virtual Actor* copy(Space* home, bool share); 00063 virtual PropCost cost(void) const; 00065 virtual ExecStatus propagate(Space* home); 00067 virtual void flush(void); 00069 virtual size_t size(void) const; 00071 virtual size_t dispose(Space* home); 00073 static ExecStatus post(Space* home, ViewArray<View>& x, DFA& d); 00074 }; 00075 00076 }}} 00077 00078 #include "gecode/int/regular/dom.icc" 00079 00080 #endif 00081 00082 // STATISTICS: int-prop 00083