main page
modules
namespaces
classes
files
Gecode home
Generated on Mon Jul 27 2020 00:00:00 for Gecode by
doxygen
1.8.18
gecode
kernel
data
shared-data.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
* Copyright:
7
* Christian Schulte, 2017
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
namespace
Gecode
{
35
37
template
<
class
Data>
38
class
SharedData
:
public
SharedHandle
{
39
protected
:
41
class
SDO
:
public
SharedHandle::Object
{
42
public
:
44
const
Data
d
;
46
SDO
(
const
Data& d0);
48
virtual
~SDO
(
void
);
49
};
50
public
:
52
SharedData
(
const
Data&
d
);
54
SharedData
(
void
);
56
SharedData
(
const
SharedData
& sd);
58
SharedData
&
operator =
(
const
SharedData
& sd);
60
const
Data&
operator ()
(
void
)
const
;
62
~SharedData
(
void
);
63
};
64
65
66
template
<
class
Data>
67
forceinline
68
SharedData<Data>::SDO::SDO
(
const
Data& d0)
69
:
d
(d0) {}
70
71
template
<
class
Data>
72
forceinline
73
SharedData<Data>::SDO::~SDO
(
void
) {}
74
75
76
template
<
class
Data>
77
forceinline
78
SharedData<Data>::SharedData
(
const
Data&
d
)
79
:
SharedHandle
(new
SDO
(
d
)) {}
80
81
template
<
class
Data>
82
forceinline
83
SharedData<Data>::SharedData
(
void
) {}
84
85
template
<
class
Data>
86
forceinline
87
SharedData<Data>::SharedData
(
const
SharedData<Data>
& sd)
88
:
SharedHandle
(sd) {}
89
90
template
<
class
Data>
91
forceinline
SharedData<Data>
&
92
SharedData<Data>::operator =
(
const
SharedData<Data>
& sd) {
93
return
static_cast<
SharedData
&
>
(
SharedHandle::operator =
(sd));
94
}
95
96
template
<
class
Data>
97
forceinline
const
Data&
98
SharedData<Data>::operator ()
(
void
)
const
{
99
return
static_cast<
SDO
*
>
(object())->
d
;
100
}
101
102
template
<
class
Data>
103
forceinline
104
SharedData<Data>::~SharedData
(
void
) {}
105
106
}
107
108
// STATISTICS: kernel-other
Gecode::SharedData
Class for sharing data between spaces.
Definition:
shared-data.hpp:38
Gecode::SharedHandle::Object
The shared object.
Definition:
shared-object.hpp:53
Gecode::SharedData::SDO::~SDO
virtual ~SDO(void)
Destructor.
Definition:
shared-data.hpp:73
Gecode::SharedData::operator()
const Data & operator()(void) const
Provide access to data.
Definition:
shared-data.hpp:98
Gecode::SharedData::SharedData
SharedData(const SharedData &sd)
Copy constructor.
Definition:
shared-data.hpp:87
Gecode::SharedData::operator=
SharedData & operator=(const SharedData &sd)
Assignment operator.
Definition:
shared-data.hpp:92
Gecode
Gecode toplevel namespace
Gecode::SharedData::SDO::d
const Data d
Data to be shared.
Definition:
shared-data.hpp:44
Gecode::SharedData::SDO
The object storing the actual data.
Definition:
shared-data.hpp:41
Test::Int::Distinct::d
Gecode::IntSet d(v, 7)
forceinline
#define forceinline
Definition:
config.hpp:185
Gecode::SharedHandle::operator=
SharedHandle & operator=(const SharedHandle &sh)
Assignment operator maintaining reference count.
Definition:
shared-object.hpp:132
Gecode::SharedData::SharedData
SharedData(void)
Create as uninitialized.
Definition:
shared-data.hpp:83
Gecode::SharedHandle
The shared handle.
Definition:
shared-object.hpp:46
Gecode::SharedData::~SharedData
~SharedData(void)
Destructors.
Definition:
shared-data.hpp:104
Gecode::SharedData::SharedData
SharedData(const Data &d)
Initialize with data d.
Definition:
shared-data.hpp:78
Gecode::SharedData::SDO::SDO
SDO(const Data &d0)
Initialization.
Definition:
shared-data.hpp:68