main page
modules
namespaces
classes
files
Gecode home
Generated on Tue Oct 22 2013 00:49:04 for Gecode by
doxygen
1.8.4
gecode
set
ldsb.hh
Go to the documentation of this file.
1
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
/*
3
* Main authors:
4
* Christopher Mears <chris.mears@monash.edu>
5
*
6
* Copyright:
7
* Christopher Mears, 2012
8
*
9
* Last modified:
10
* $Date: 2013-05-08 13:30:48 +0200 (Wed, 08 May 2013) $ by $Author: schulte $
11
* $Revision: 13622 $
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
#ifndef __GECODE_SET_LDSB_HH__
39
#define __GECODE_SET_LDSB_HH__
40
41
#include <
gecode/set.hh
>
42
#include <
gecode/int/ldsb.hh
>
43
48
namespace
Gecode {
namespace
Set {
namespace
LDSB {
49
50
using namespace
Int::LDSB;
51
60
template
<
class
View,
int
n,
class
Val,
unsigned
int
a>
61
class
LDSBSetBrancher
:
public
LDSBBrancher
<View,n,Val,a> {
62
public
:
64
typedef
void (*VarValPrint)(
const
Space
& home,
const
BrancherHandle
&
bh
,
65
unsigned
int
b
,
66
typename
View::VarType
x
,
int
i
,
67
const
Val& m,
68
std::ostream& o);
70
int
_prevPos
;
72
int
_nNonValueSymmetries
;
74
int
_nValueSymmetries
;
77
ValueSymmetryImp<View>
**
_copiedSyms
;
79
int
_nCopiedSyms
;
81
IntSet
_leftBranchValues
;
90
bool
_stable
;
91
93
LDSBSetBrancher
(
Space
& home,
bool
share,
LDSBSetBrancher
&
b
);
95
LDSBSetBrancher
(
Home
home,
96
ViewArray<View>
&
x
,
97
ViewSel<View>
* vs[
n
],
98
ValSelCommitBase<View,Val>
* vsc,
99
SymmetryImp<View>
** syms,
int
nsyms,
100
SetBranchFilter
bf,
101
VarValPrint vvp);
103
virtual
const
Choice
* choice(
Space
& home);
105
virtual
ExecStatus
commit(
Space
& home,
const
Choice
&
c
,
unsigned
int
b
);
107
virtual
Actor
* copy(
Space
& home,
bool
share);
109
static
BrancherHandle
post
(
Home
home,
110
ViewArray<View>
&
x
,
111
ViewSel<View>
* vs[
n
],
112
ValSelCommitBase<View,Val>
* vsc,
113
SymmetryImp<View>
** _syms,
114
int
_nsyms,
115
SetBranchFilter
bf,
116
VarValPrint vvp);
117
126
void
updatePart1(
Space
& home,
int
choicePos);
127
};
128
129
}}}
130
131
namespace
Gecode {
namespace
Int {
namespace
LDSB {
132
template
<>
133
ArgArray<Literal>
134
VariableSequenceSymmetryImp<Set::SetView>
135
::symmetric
(Literal
l
,
const
ViewArray<Set::SetView>&
x
)
const
;
136
}}}
137
138
#include <
gecode/set/ldsb/brancher.hpp
>
139
140
#endif
141
142
// STATISTICS: set-branch