aGrUM
0.20.3
a C++ library for (probabilistic) graphical models
o4DGContext_inl.h
Go to the documentation of this file.
1
/**
2
*
3
* Copyright (c) 2005-2021 by Pierre-Henri WUILLEMIN(@LIP6) & Christophe GONZALES(@AMU)
4
* info_at_agrum_dot_org
5
*
6
* This library is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU Lesser General Public License as published by
8
* the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
10
*
11
* This library is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public License
17
* along with this library. If not, see <http://www.gnu.org/licenses/>.
18
*
19
*/
20
21
22
/**
23
* @file
24
* @brief Class used to manipulate o4DGContext in Function Graph Operations
25
*
26
* @author Christophe GONZALES(@AMU) and Pierre-Henri WUILLEMIN(@LIP6)
27
* @author Pierre-Henri WUILLEMIN(@LIP6) and Jean-Christophe MAGNAN and Christophe
28
* GONZALES(@AMU)
29
*/
30
31
#
include
<
agrum
/
tools
/
multidim
/
utils
/
FunctionGraphUtilities
/
operators
/
o4DGContext
.
h
>
32
33
namespace
gum
{
34
35
// Set DG1 diagram current explored Node
36
INLINE
void
O4DGContext
::
setDG1Node
(
const
NodeId
&
exploredNode
) {
37
_DG1ExploredNode_
=
exploredNode
;
38
}
39
40
// Set DG2 diagram current explored Node
41
INLINE
void
O4DGContext
::
setDG2Node
(
const
NodeId
&
exploredNode
) {
42
_DG2ExploredNode_
=
exploredNode
;
43
}
44
45
// Changes given variable modality
46
INLINE
void
O4DGContext
::
chgVarModality
(
Idx
varIndex
,
Idx
newModality
) {
47
_varInstantiation_
[
varIndex
] =
newModality
;
48
}
49
50
// Changes given variable modality
51
INLINE Idx
O4DGContext
::
varModality
(
Idx
varIndex
) {
return
_varInstantiation_
[
varIndex
]; }
52
53
// Returns o4DGContext key
54
INLINE
const
double
&
O4DGContext
::
key
(
short
int
*
instNeeded
) {
55
_key_
=
_DG1ExploredNode_
*
_logPrime_
[
_offset1_
] +
_DG2ExploredNode_
*
_logPrime_
[
_offset2_
];
56
57
for
(
Idx
varPos
= 0,
offset
=
_offsetv_
;
varPos
<
_nbVar_
;
varPos
++,
offset
--)
58
if
(
instNeeded
[
varPos
])
_key_
+=
_varInstantiation_
[
varPos
] *
_logPrime_
[
offset
];
59
60
return
_key_
;
61
}
62
63
INLINE
void
*
O4DGContext
::
operator
new
(
size_t
s
) {
64
return
SmallObjectAllocator
::
instance
().
allocate
(
s
);
65
}
66
67
INLINE
void
O4DGContext
::
operator
delete
(
void
*
p
) {
68
SmallObjectAllocator
::
instance
().
deallocate
(
p
,
sizeof
(
O4DGContext
));
69
}
70
/// @}
71
72
73
}
/* end of namespace gum */
gum::Set::emplace
INLINE void emplace(Args &&... args)
Definition:
set_tpl.h:643