bool-expr.icc
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
00038 namespace Gecode { namespace MiniModel {
00039
00040
00041
00042
00043
00044
00045 forceinline
00046 BoolExpr::BoolExpr(const BoolExpr& e) : n(e.n) {
00047 n->use++;
00048 }
00049
00050 forceinline BoolVar
00051 BoolExpr::post(Space* home, IntConLevel icl, PropKind pk) const {
00052 return n->post(home,icl,pk);
00053 }
00054
00055 forceinline void
00056 BoolExpr::post(Space* home, bool t, IntConLevel icl, PropKind pk) const {
00057 n->post(home,t,icl,pk);
00058 }
00059
00060 }}
00061
00062 inline Gecode::MiniModel::BoolExpr
00063 operator&&(const Gecode::MiniModel::BoolExpr& l,
00064 const Gecode::MiniModel::BoolExpr& r) {
00065 return Gecode::MiniModel::BoolExpr(l,
00066 Gecode::MiniModel::BoolExpr::NT_AND,
00067 r);
00068 }
00069
00070 inline Gecode::MiniModel::BoolExpr
00071 operator||(const Gecode::MiniModel::BoolExpr& l,
00072 const Gecode::MiniModel::BoolExpr& r) {
00073 return Gecode::MiniModel::BoolExpr(l,
00074 Gecode::MiniModel::BoolExpr::NT_OR,
00075 r);
00076 }
00077
00078 inline Gecode::MiniModel::BoolExpr
00079 operator^(const Gecode::MiniModel::BoolExpr& l,
00080 const Gecode::MiniModel::BoolExpr& r) {
00081 return Gecode::MiniModel::BoolExpr(l,
00082 Gecode::MiniModel::BoolExpr::NT_XOR,
00083 r);
00084 }
00085
00086 template <class Var>
00087 inline Gecode::MiniModel::BoolExpr
00088 operator~(const Gecode::MiniModel::LinRel<Var>& rl) {
00089 return Gecode::MiniModel::BoolExpr(rl);
00090 }
00091
00092 inline Gecode::MiniModel::BoolExpr
00093 operator!(const Gecode::MiniModel::BoolExpr& e) {
00094 return Gecode::MiniModel::BoolExpr(e,
00095 Gecode::MiniModel::BoolExpr::NT_NOT);
00096 }
00097
00098 namespace Gecode {
00099
00100 inline MiniModel::BoolExpr
00101 eqv(const MiniModel::BoolExpr& l,
00102 const MiniModel::BoolExpr& r) {
00103 return MiniModel::BoolExpr(l,
00104 MiniModel::BoolExpr::NT_EQV,
00105 r);
00106 }
00107
00108 inline MiniModel::BoolExpr
00109 imp(const MiniModel::BoolExpr& l,
00110 const MiniModel::BoolExpr& r) {
00111 return MiniModel::BoolExpr(l,
00112 MiniModel::BoolExpr::NT_IMP,
00113 r);
00114 }
00115
00116
00117 inline BoolVar
00118 post(Space* home, const MiniModel::BoolExpr& e,
00119 IntConLevel icl, PropKind pk) {
00120 return e.post(home,icl,pk);
00121 }
00122
00123 inline BoolVar
00124 post(Space*, const BoolVar& b, IntConLevel, PropKind) {
00125 return b;
00126 }
00127
00128
00129 }
00130
00131