1#
2#  Main authors:
3#     Guido Tack <tack@gecode.org>
4#
5#  Contributing authors:
6#     Christian Schulte <schulte@gecode.org>
7#
8#  Copyright:
9#     Guido Tack, 2004
10#     Christian Schulte, 2006
11#
12#  This file is part of Gecode, the generic constraint
13#  development environment:
14#     http://www.gecode.org
15#
16#  Permission is hereby granted, free of charge, to any person obtaining
17#  a copy of this software and associated documentation files (the
18#  "Software"), to deal in the Software without restriction, including
19#  without limitation the rights to use, copy, modify, merge, publish,
20#  distribute, sublicense, and/or sell copies of the Software, and to
21#  permit persons to whom the Software is furnished to do so, subject to
22#  the following conditions:
23#
24#  The above copyright notice and this permission notice shall be
25#  included in all copies or substantial portions of the Software.
26#
27#  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
28#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
29#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
30#  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
31#  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
32#  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
33#  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34#
35
36[General]
37Name:           Set
38Namespace:      Gecode::Set
39Ifdef:          GECODE_HAS_SET_VARS
40Bits:           0
41Dispose:        false
42[ModEventHeader]
43  /**
44   * \defgroup TaskActorSetMEPC Set modification events and propagation conditions
45   * \ingroup TaskActorSet
46   */
47  //@{
48[ModEvent]
49Name:           FAILED=FAILED
50  /// Domain operation has resulted in failure
51[ModEvent]
52Name:           NONE=NONE
53  /// Domain operation has not changed domain
54[ModEvent]
55Name:           VAL=ASSIGNED
56Combine:        VAL=VAL,CARD=VAL,LUB=VAL,GLB=VAL,BB=VAL,CLUB=VAL,CGLB=VAL,CBB=VAL
57  /// Domain operation has resulted in a value (assigned variable)
58[ModEvent]
59Name:           CARD
60Combine:        VAL=VAL,CARD=CARD,LUB=CLUB,GLB=CGLB,BB=CBB,CLUB=CLUB,CGLB=CGLB,CBB=CBB
61  /**
62   * \brief Domain operation has changed the variable cardinality
63   *
64   * Note that this implies that the domain has not resulted in a value.
65   */
66[ModEvent]
67Name:           LUB
68Combine:        VAL=VAL,CARD=CLUB,LUB=LUB,GLB=BB,BB=BB,CLUB=CLUB,CGLB=CGLB,CBB=CBB
69  /**
70   * \brief Domain operation has changed the least upper bound
71   *
72   * Note that this implies that the domain has not resulted in a value
73   * and that also neither cardinality nor the greatest lower bound
74   * have changed.
75   */
76[ModEvent]
77Name:           GLB
78Combine:        VAL=VAL,CARD=CGLB,LUB=BB,GLB=GLB,BB=BB,CLUB=CBB,CGLB=CGLB,CBB=CBB
79  /**
80   * \brief Domain operation has changed the greatest lower bound
81   *
82   * Note that this implies that the domain has not resulted in a value
83   * and that also neither cardinality nor the least upper bound
84   * have changed.
85   */
86[ModEvent]
87Name:           BB
88Combine:        VAL=VAL,CARD=CBB,LUB=BB,GLB=BB,BB=BB,CLUB=CBB,CGLB=CBB,CBB=CBB
89  /**
90   * \brief Domain operation has changed both greatest lower and least
91   * upper bound
92   *
93   * Note that this implies that the domain has not resulted in a value
94   * and that also the cardinality has not changed.
95   */
96[ModEvent]
97Name:           CLUB
98Combine:        VAL=VAL,CARD=CLUB,LUB=CLUB,GLB=CBB,BB=CBB,CLUB=CLUB,CGLB=CBB,CBB=CBB
99  /**
100   * \brief Domain operation has changed the least upper bound and the cardinality
101   *
102   * Note that this implies that the domain has not resulted in a value
103   * and that also the greatest lower bound has not changed.
104   */
105[ModEvent]
106Name:           CGLB
107Combine:        VAL=VAL,CARD=CGLB,LUB=CBB,GLB=CGLB,BB=CBB,CLUB=CBB,CGLB=CGLB,CBB=CBB
108  /**
109   * \brief Domain operation has changed the greatest lower bound and the cardinality
110   *
111   * Note that this implies that the domain has not resulted in a value
112   * and that also the least upper bound has not changed.
113   */
114[ModEvent]
115Name:           CBB=SUBSCRIBE
116Combine:        VAL=VAL,CARD=CBB,LUB=CBB,GLB=CBB,BB=CBB,CLUB=CBB,CGLB=CBB,CBB=CBB
117  /**
118   * \brief Domain operation has changed both the greatest lower bound and
119   * the least upper bound, as well as the cardinality
120   *
121   * Note that this implies that the domain has not resulted in a value.
122   *
123   * If a propagator subscribes to this variable, it will be processed
124   * assuming a ME_SET_CBB modification event.
125   *
126   */
127[ModEventFooter]
128[PropCondHeader]
129[PropCond]
130Name:           NONE=NONE
131  /// Propagation condition to be ignored (convenience)
132[PropCond]
133Name:           VAL=ASSIGNED
134ScheduledBy:    VAL
135  /**
136   * \brief Propagate when a view becomes assigned (single value)
137   *
138   * If a propagator \a p depends on a view \a x with propagation
139   * condition PC_SET_VAL, then \a p is propagated when a domain
140   * update operation on \a x returns the modification event ME_SET_VAL.
141   */
142[PropCond]
143Name:           CARD
144ScheduledBy:    VAL,CARD,CGLB,CLUB,CBB
145  /**
146   * \brief Propagate when the cardinality of a view changes
147   *
148   * If a propagator \a p depends on a view \a x with propagation
149   * condition PC_SET_CARD, then \a p is propagated when a domain
150   * update operation on \a x returns the modification event ME_SET_VAL,
151   * ME_SET_CARD, ME_SET_CGLB, ME_SET_CLUB, or ME_SET_CBB.
152   */
153[PropCond]
154Name:           CLUB
155ScheduledBy:    VAL,CARD,LUB,BB,CLUB,CGLB,CBB
156  /**
157   * \brief Propagate when the cardinality or the least upper bound
158   * of a view changes
159   *
160   * If a propagator \a p depends on a view \a x with propagation
161   * condition PC_SET_CLUB, then \a p is propagated when a domain
162   * update operation on \a x returns the modification event ME_SET_VAL,
163   * ME_SET_LUB, ME_SET_BB, ME_SET_CARD, ME_SET_CGLB, ME_SET_CLUB,
164   * or ME_SET_CBB.
165   */
166[PropCond]
167Name:           CGLB
168ScheduledBy:    VAL,CARD,GLB,BB,CLUB,CGLB,CBB
169  /**
170   * \brief Propagate when the cardinality or the greatest lower bound
171   * of a view changes
172   *
173   * If a propagator \a p depends on a view \a x with propagation
174   * condition PC_SET_CGLB, then \a p is propagated when a domain
175   * update operation on \a x returns the modification event ME_SET_VAL,
176   * ME_SET_GLB, ME_SET_BB, ME_SET_CARD, ME_SET_CGLB, ME_SET_CLUB,
177   * or ME_SET_CBB.
178   */
179[PropCond]
180Name:           ANY
181ScheduledBy:    VAL,CARD,LUB,GLB,BB,CLUB,CGLB,CBB
182  /**
183   * \brief Propagate when any bound or the cardinality
184   * of a view changes
185   *
186   * If a propagator \a p depends on a view \a x with propagation
187   * condition PC_SET_ANY, then \a p is propagated when a domain
188   * update operation on \a x returns any modification event but ME_SET_FAILED
189   * and ME_SET_NONE.
190   */
191[PropCondFooter]
192  //@}
193[End]
194