Generated on Thu Jan 16 2025 00:00:00 for Gecode by doxygen 1.14.0
val-commit.hpp
Go to the documentation of this file.
1/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2/*
3 * Main authors:
4 * Christian Schulte <schulte@gecode.org>
5 *
6 * Contributing authors:
7 * Gabor Szokoli <szokoli@gecode.org>
8 * Guido Tack <tack@gecode.org>
9 *
10 * Copyright:
11 * Christian Schulte, 2012
12 * Gabor Szokoli, 2004
13 * Guido Tack, 2004
14 *
15 * This file is part of Gecode, the generic constraint
16 * development environment:
17 * http://www.gecode.org
18 *
19 * Permission is hereby granted, free of charge, to any person obtaining
20 * a copy of this software and associated documentation files (the
21 * "Software"), to deal in the Software without restriction, including
22 * without limitation the rights to use, copy, modify, merge, publish,
23 * distribute, sublicense, and/or sell copies of the Software, and to
24 * permit persons to whom the Software is furnished to do so, subject to
25 * the following conditions:
26 *
27 * The above copyright notice and this permission notice shall be
28 * included in all copies or substantial portions of the Software.
29 *
30 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
31 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
32 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
33 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
34 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
35 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
36 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
37 *
38 */
39
40namespace Gecode { namespace Set { namespace Branch {
41
44 : ValCommit<SetView,int>(home,vb) {}
49 ValCommitInc::commit(Space& home, unsigned int a, SetView x, int, int n) {
50 return (a == 0) ? x.include(home,n) : x.exclude(home,n);
51 }
53 ValCommitInc::ngl(Space& home, unsigned int a, SetView x, int n) const {
54 if (a == 0)
55 return new (home) IncNGL(home,x,n);
56 else
57 return NULL;
58 }
59 forceinline void
60 ValCommitInc::print(const Space&, unsigned int a, SetView, int i, int n,
61 std::ostream& o) const {
62 o << "var[" << i << "]."
63 << ((a == 0) ? "include" : "exclude") << "(" << n << ")";
64 }
65
68 : ValCommit<SetView,int>(home,vb) {}
73 ValCommitExc::commit(Space& home, unsigned int a, SetView x, int, int n) {
74 return (a == 0) ? x.exclude(home,n) : x.include(home,n);
75 }
77 ValCommitExc::ngl(Space& home, unsigned int a, SetView x, int n) const {
78 if (a == 0)
79 return new (home) ExcNGL(home,x,n);
80 else
81 return NULL;
82 }
83 forceinline void
84 ValCommitExc::print(const Space&, unsigned int a, SetView, int i, int n,
85 std::ostream& o) const {
86 o << "var[" << i << "]."
87 << ((a == 0) ? "exclude" : "include") << "(" << n << ")";
88 }
89
90}}}
91
92// STATISTICS: set-branch
93
No-good literal recorded during search.
Definition core.hpp:1342
No-good literal for exclusion.
Definition branch.hh:319
No-good literal for inclusion.
Definition branch.hh:301
NGL * ngl(Space &home, unsigned int a, View x, int n) const
Create no-good literal for alternative a.
void print(const Space &home, unsigned int a, SetView x, int i, int n, std::ostream &o) const
Print on o the alternative with view x at position i and value n.
ValCommitExc(Space &home, const ValBranch< Var > &vb)
Constructor for initialization.
ModEvent commit(Space &home, unsigned int a, SetView x, int i, int n)
Commit view x at position i to value n for alternative a.
ModEvent commit(Space &home, unsigned int a, SetView x, int i, int n)
Commit view x at position i to value n for alternative a.
ValCommitInc(Space &home, const ValBranch< Var > &vb)
Constructor for initialization.
void print(const Space &home, unsigned int a, SetView x, int i, int n, std::ostream &o) const
Print on o the alternative with view x at position i and value n.
NGL * ngl(Space &home, unsigned int a, View x, int n) const
Create no-good literal for alternative a.
Set view for set variables
Definition view.hpp:56
Computation spaces.
Definition core.hpp:1744
Value branching information.
Definition val.hpp:41
ValCommit(Space &home, const ValBranch< Var > &vb)
Set branchings
Finite integer sets.
Definition var-imp.hpp:137
Gecode toplevel namespace
Post propagator for SetVar x
Definition set.hh:773
int ModEvent
Type for modification events.
Definition core.hpp:62
#define forceinline
Definition config.hpp:194