main page
modules
namespaces
classes
files
Gecode home
Generated on Sat May 25 2013 18:00:34 for Gecode by
doxygen
1.8.3.1
gecode
float
var-imp.hpp
Go to the documentation of this file.
1
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
/*
3
* Main authors:
4
* Filip Konvicka <filip.konvicka@logis.cz>
5
* Lubomir Moric <lubomir.moric@logis.cz>
6
* Vincent Barichard <Vincent.Barichard@univ-angers.fr>
7
*
8
* Contributing authors:
9
* Christian Schulte <schulte@gecode.org>
10
*
11
* Copyright:
12
* LOGIS, s.r.o., 2008
13
* Christian Schulte, 2010
14
* Vincent Barichard, 2012
15
*
16
* Last modified:
17
* $Date: 2013-02-04 17:54:05 +0100 (Mon, 04 Feb 2013) $ by $Author: schulte $
18
* $Revision: 13260 $
19
*
20
* This file is part of Gecode, the generic constraint
21
* development environment:
22
* http://www.gecode.org
23
*
24
* Permission is hereby granted, free of charge, to any person obtaining
25
* a copy of this software and associated documentation files (the
26
* "Software"), to deal in the Software without restriction, including
27
* without limitation the rights to use, copy, modify, merge, publish,
28
* distribute, sublicense, and/or sell copies of the Software, and to
29
* permit persons to whom the Software is furnished to do so, subject to
30
* the following conditions:
31
*
32
* The above copyright notice and this permission notice shall be
33
* included in all copies or substantial portions of the Software.
34
*
35
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
36
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
37
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
38
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
39
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
40
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
41
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
42
*
43
*/
44
45
#include <cmath>
46
47
namespace
Gecode {
namespace
Float {
48
49
class
FloatVarImp;
50
52
class
FloatDelta
:
public
Delta
{
53
friend
class
FloatVarImp
;
54
private
:
55
FloatNum
_min
;
56
FloatNum
_max
;
57
public
:
59
FloatDelta
(
void
);
61
FloatDelta
(
FloatNum
min
,
FloatNum
max
);
62
private
:
64
FloatNum
min
(
void
)
const
;
66
FloatNum
max
(
void
)
const
;
67
};
68
69
}}
70
71
#include <
gecode/float/var-imp/delta.hpp
>
72
73
namespace
Gecode {
namespace
Float {
74
80
class
FloatVarImp
:
public
FloatVarImpBase
{
81
protected
:
83
FloatVal
dom
;
85
FloatVarImp
(
Space
& home,
bool
share,
FloatVarImp
&
x
);
86
public
:
88
FloatVarImp
(
Space
& home,
const
FloatVal
&
d
);
89
91
92
93
FloatVal
domain
(
void
)
const
;
95
FloatNum
min
(
void
)
const
;
97
FloatNum
max
(
void
)
const
;
99
FloatVal
val
(
void
)
const
;
101
FloatNum
med
(
void
)
const
;
102
104
FloatNum
size
(
void
)
const
;
106
108
109
110
bool
assigned
(
void
)
const
;
111
113
bool
zero_in
(
void
)
const
;
115
bool
in
(
FloatNum
n
)
const
;
117
bool
in
(
const
FloatVal
&
n
)
const
;
119
121
122
123
ModEvent
eq
(
Space
& home,
FloatNum
n
);
125
ModEvent
eq
(
Space
& home,
const
FloatVal
&
n
);
127
ModEvent
lq
(
Space
& home,
FloatNum
n
);
129
ModEvent
lq
(
Space
& home,
const
FloatVal
&
n
);
131
ModEvent
gq
(
Space
& home,
FloatNum
n
);
133
ModEvent
gq
(
Space
& home,
const
FloatVal
&
n
);
135
137
138
146
void
subscribe
(
Space
& home,
Propagator
&
p
,
PropCond
pc,
bool
schedule
=
true
);
148
void
cancel
(
Space
& home,
Propagator
&
p
,
PropCond
pc);
150
void
subscribe
(
Space
& home,
Advisor
&
a
);
152
void
cancel
(
Space
& home,
Advisor
&
a
);
154
156
157
158
static
ModEventDelta
med
(
ModEvent
me
);
160
161
162
private
:
164
GECODE_FLOAT_EXPORT
FloatVarImp
* perform_copy(
Space
& home,
bool
share);
165
public
:
167
168
169
FloatVarImp
*
copy
(
Space
& home,
bool
share);
171
173
174
175
static
FloatNum
min
(
const
Delta
&
d
);
177
static
FloatNum
max
(
const
Delta
&
d
);
179
};
180
181
}}
182
183
#include <
gecode/float/var-imp/float.hpp
>
184
185
// STATISTICS: float-var
186