macros.hpp
Go to the documentation of this file.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
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00045 #define GECODE_ME_CHECK(me) do { \
00046 if (::Gecode::me_failed(me)) \
00047 return ::Gecode::ES_FAILED; \
00048 } while (0)
00049
00057 #define GECODE_ME_CHECK_MODIFIED(modified, me) do { \
00058 ModEvent __me__ ## __LINE__ = (me); \
00059 if (::Gecode::me_failed(__me__ ## __LINE__)) \
00060 return ::Gecode::ES_FAILED; \
00061 modified |= ::Gecode::me_modified(__me__ ## __LINE__); \
00062 } while (0)
00063
00070 #define GECODE_ME_FAIL(me) do { \
00071 if (::Gecode::me_failed(me)) { \
00072 (home).fail(); \
00073 return; \
00074 }} while (0)
00075
00076
00077
00084 #define GECODE_ES_CHECK(es) do { \
00085 ::Gecode::ExecStatus __es__ ## __LINE__ = (es); \
00086 if (__es__ ## __LINE__ < ::Gecode::ES_OK) \
00087 return __es__ ## __LINE__; \
00088 } while (0)
00089
00096 #define GECODE_ES_FAIL(es) do { \
00097 ::Gecode::ExecStatus __es__ ## __LINE__ = (es); \
00098 assert(__es__ ## __LINE__ != ::Gecode::__ES_SUBSUMED); \
00099 if (__es__ ## __LINE__ < ::Gecode::ES_OK) { \
00100 (home).fail(); return; \
00101 } \
00102 } while (0)
00103
00109 #define GECODE_REWRITE(prop,post) do { \
00110 Propagator& __p__ ## __LINE__ = (prop); \
00111 size_t __s__ ## __LINE__ = __p__ ## __LINE__.dispose(home); \
00112 ExecStatus __es__ ## __LINE__ = (post); \
00113 if (__es__ ## __LINE__ != ::Gecode::ES_OK) \
00114 return ::Gecode::ES_FAILED; \
00115 return home.ES_SUBSUMED_DISPOSED(__p__ ## __LINE__,__s__ ## __LINE__); \
00116 } while (0)
00117
00118