main page
modules
namespaces
classes
files
Gecode home
Generated on Fri Jan 10 2020 11:38:25 for Gecode by
doxygen
1.8.16
gecode
kernel
branch
action.cpp
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
* Copyright:
7
* Christian Schulte, 2012
8
*
9
* This file is part of Gecode, the generic constraint
10
* development environment:
11
* http://www.gecode.org
12
*
13
* Permission is hereby granted, free of charge, to any person obtaining
14
* a copy of this software and associated documentation files (the
15
* "Software"), to deal in the Software without restriction, including
16
* without limitation the rights to use, copy, modify, merge, publish,
17
* distribute, sublicense, and/or sell copies of the Software, and to
18
* permit persons to whom the Software is furnished to do so, subject to
19
* the following conditions:
20
*
21
* The above copyright notice and this permission notice shall be
22
* included in all copies or substantial portions of the Software.
23
*
24
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
*
32
*/
33
34
#include <
gecode/kernel.hh
>
35
36
namespace
Gecode
{
37
38
Support::Mutex
Action::Storage::m
;
39
40
Action::Storage::~Storage
(
void
) {
41
heap
.
free
<
double
>(
a
,
n
);
42
}
43
44
const
Action
Action::def
;
45
46
Action::Action
(
const
Action
&
a
)
47
:
SharedHandle
(
a
) {}
48
49
Action
&
50
Action::operator =
(
const
Action
&
a
) {
51
(void) SharedHandle::operator =(
a
);
52
return
*
this
;
53
}
54
55
Action::~Action
(
void
) {}
56
57
void
58
Action::decay
(
Space
&,
double
d
) {
59
if
((
d
< 0.0) || (
d
> 1.0))
60
throw
IllegalDecay
(
"Action"
);
61
acquire
();
62
object
().
invd
= 1.0 /
d
;
63
release
();
64
}
65
66
double
67
Action::decay
(
const
Space
&)
const
{
68
double
d
;
69
const_cast<Action*>(
this
)->acquire();
70
d
= 1.0 /
object
().
invd
;
71
const_cast<Action*>(
this
)->release();
72
return
d
;
73
}
74
75
}
76
77
// STATISTICS: kernel-branch
Gecode::Action
Class for action management.
Definition:
action.hpp:42
kernel.hh
Gecode::Space
Computation spaces.
Definition:
core.hpp:1742
Gecode
Gecode toplevel namespace
Gecode::Action::operator=
Action & operator=(const Action &a)
Assignment operator.
Definition:
action.cpp:50
a
struct Gecode::@602::NNF::@65::@67 a
For atomic nodes.
Gecode::Action::def
static const Action def
Default (empty) action information.
Definition:
action.hpp:103
Gecode::Action::Action
Action(void)
Construct as not yet intialized.
Definition:
action.hpp:323
Gecode::Action::Storage::n
int n
Number of action values.
Definition:
action.hpp:52
Gecode::Action::Storage::~Storage
~Storage(void)
Delete object.
Definition:
action.cpp:40
Gecode::Action::acquire
void acquire(void)
Acquire mutex.
Definition:
action.hpp:313
Gecode::Action::~Action
~Action(void)
Destructor.
Definition:
action.cpp:55
Gecode::heap
Heap heap
The single global heap.
Definition:
heap.cpp:44
Gecode::Action::Storage::a
double * a
Action values (more follow)
Definition:
action.hpp:56
Gecode::Action::Storage::m
static Support::Mutex m
Mutex to synchronize globally shared access.
Definition:
action.hpp:50
Gecode::Action::release
void release(void)
Release mutex.
Definition:
action.hpp:317
Test::Int::Distinct::d
Gecode::IntSet d(v, 7)
Gecode::Heap::free
void free(T *b, long unsigned int n)
Delete n objects starting at b.
Definition:
heap.hpp:457
Gecode::IllegalDecay
Exception: illegal decay factor
Definition:
exception.hpp:107
Gecode::Action::Storage::invd
double invd
Inverse decay factor.
Definition:
action.hpp:54
Gecode::Action::object
Storage & object(void) const
Return object of correct type.
Definition:
action.hpp:290
Gecode::SharedHandle
The shared handle.
Definition:
shared-object.hpp:46
Gecode::Action::decay
void decay(Space &home, double d)
Set decay factor to d.
Definition:
action.cpp:58