main page
modules
namespaces
classes
files
Gecode home
Generated on Tue Mar 24 2020 14:04:04 for Gecode by
doxygen
1.8.17
gecode
set
channel.cpp
Go to the documentation of this file.
1
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
/*
3
* Main authors:
4
* Denys Duchier <denys.duchier@univ-orleans.fr>
5
* Guido Tack <tack@gecode.org>
6
* Christian Schulte <schulte@gecode.org>
7
*
8
* Copyright:
9
* Denys Duchier, 2011
10
* Guido Tack, 2004
11
* Christian Schulte, 2004
12
*
13
* This file is part of Gecode, the generic constraint
14
* development environment:
15
* http://www.gecode.org
16
*
17
* Permission is hereby granted, free of charge, to any person obtaining
18
* a copy of this software and associated documentation files (the
19
* "Software"), to deal in the Software without restriction, including
20
* without limitation the rights to use, copy, modify, merge, publish,
21
* distribute, sublicense, and/or sell copies of the Software, and to
22
* permit persons to whom the Software is furnished to do so, subject to
23
* the following conditions:
24
*
25
* The above copyright notice and this permission notice shall be
26
* included in all copies or substantial portions of the Software.
27
*
28
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35
*
36
*/
37
38
#include <
gecode/set.hh
>
39
40
#include <
gecode/set/channel.hh
>
41
42
namespace
Gecode
{
43
44
void
45
channelSorted
(
Home
home,
const
IntVarArgs
&
x
,
SetVar
y
) {
46
GECODE_POST
;
47
ViewArray<Int::IntView>
xa(home,
x
);
48
GECODE_ES_FAIL
(
Set::Channel::ChannelSorted<Set::SetView>::post
(home,
y
,xa));
49
}
50
51
void
52
channel
(
Home
home,
const
IntVarArgs
&
x
,
const
SetVarArgs
&
y
) {
53
GECODE_POST
;
54
ViewArray<Int::CachedView<Int::IntView>
> xa(home,
x
.size());
55
for
(
int
i
=
x
.size();
i
--;)
56
new
(&xa[
i
])
Int::CachedView<Int::IntView>
(
x
[
i
]);
57
ViewArray<Set::CachedView<Set::SetView>
> ya(home,
y
.size());
58
for
(
int
i
=
y
.size();
i
--;)
59
new
(&ya[
i
])
Set::CachedView<Set::SetView>
(
y
[
i
]);
60
GECODE_ES_FAIL
((
Set::Channel::ChannelInt<Set::SetView>::post
(home,xa,ya)));
61
}
62
63
void
64
channel
(
Home
home,
const
BoolVarArgs
&
x
,
SetVar
y
) {
65
GECODE_POST
;
66
ViewArray<Int::BoolView>
xv(home,
x
);
67
GECODE_ES_FAIL
((
Set::Channel::ChannelBool<Set::SetView>
68
::
post
(home,xv,
y
)));
69
}
70
71
void
72
channel
(
Home
home,
const
SetVarArgs
&
x
,
const
SetVarArgs
&
y
)
73
{
74
GECODE_POST
;
75
ViewArray<Set::CachedView<Set::SetView>
> xa(home,
x
.size());
76
for
(
int
i
=
x
.size();
i
--;)
77
new
(&xa[
i
])
Int::CachedView<Set::SetView>
(
x
[
i
]);
78
ViewArray<Set::CachedView<Set::SetView>
> ya(home,
y
.size());
79
for
(
int
i
=
y
.size();
i
--;)
80
new
(&ya[
i
])
Set::CachedView<Set::SetView>
(
y
[
i
]);
81
GECODE_ES_FAIL
((
Set::Channel::ChannelSet<Set::SetView>::post
(home,xa,ya)));
82
}
83
84
}
85
86
// STATISTICS: set-post
Gecode::x
Post propagator for SetVar x
Definition:
set.hh:767
Gecode::y
Post propagator for SetVar SetOpType SetVar y
Definition:
set.hh:767
GECODE_ES_FAIL
#define GECODE_ES_FAIL(es)
Check whether execution status es is failed, and fail space home.
Definition:
macros.hpp:103
Gecode::Set::Channel::ChannelSorted
Propagator for the sorted channel constraint
Definition:
channel.hh:60
Gecode::IntVarArgs
Passing integer variables.
Definition:
int.hh:656
Gecode::channelSorted
void channelSorted(Home home, const IntVarArgs &x, SetVar y)
Definition:
channel.cpp:45
Gecode::SetVarArgs
Passing set variables.
Definition:
set.hh:488
Gecode
Gecode toplevel namespace
Gecode::BoolVarArgs
Passing Boolean variables.
Definition:
int.hh:712
Gecode::Home
Home class for posting propagators
Definition:
core.hpp:856
Gecode::Set::Channel::ChannelInt
Propagator for channelling between variable-value-dual models
Definition:
channel.hh:105
Gecode::Set::Channel::ChannelSet
Propagator for successors/predecessors channelling
Definition:
channel.hh:226
Gecode::post
TFE post(PropagatorGroup g)
Only post functions (but not propagators) from g are considered.
Definition:
filter.cpp:138
Gecode::SetVar
Set variables
Definition:
set.hh:127
Gecode::Set::Channel::ChannelBool
Propagator for channelling between set variable and its characteristic function
Definition:
channel.hh:148
Gecode::channel
void channel(Home home, FloatVar x0, IntVar x1)
Post propagator for channeling a float and an integer variable .
Definition:
channel.cpp:41
channel.hh
GECODE_POST
#define GECODE_POST
Check for failure in a constraint post function.
Definition:
macros.hpp:40
set.hh
Gecode::Int::CachedView
Cached integer view.
Definition:
view.hpp:1166
Gecode::ViewArray< Int::IntView >
Test::Int::Basic::i
Gecode::IntArgs i({1, 2, 3, 4})