aGrUM
3.2.0
a C++ library for (probabilistic) graphical models
Toggle main menu visibility
operatorPattern4MultiDimFunctionGraph.h
Go to the documentation of this file.
1
/****************************************************************************
2
* This file is part of the aGrUM/pyAgrum library. *
3
* *
4
* Copyright (c) 2005-2026 by *
5
* - Pierre-Henri WUILLEMIN(_at_LIP6) *
6
* - Christophe GONZALES(_at_AMU) *
7
* *
8
* The aGrUM/pyAgrum library is free software; you can redistribute it *
9
* and/or modify it under the terms of either : *
10
* *
11
* - the GNU Lesser General Public License as published by *
12
* the Free Software Foundation, either version 3 of the License, *
13
* or (at your option) any later version, *
14
* - the MIT license (MIT), *
15
* - or both in dual license, as here. *
16
* *
17
* (see https://agrum.gitlab.io/articles/dual-licenses-lgplv3mit.html) *
18
* *
19
* This aGrUM/pyAgrum library is distributed in the hope that it will be *
20
* useful, but WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
21
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES MERCHANTABILITY or FITNESS *
22
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
23
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
24
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
25
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
26
* OTHER DEALINGS IN THE SOFTWARE. *
27
* *
28
* See LICENCES for more details. *
29
* *
30
* SPDX-FileCopyrightText: Copyright 2005-2026 *
31
* - Pierre-Henri WUILLEMIN(_at_LIP6) *
32
* - Christophe GONZALES(_at_AMU) *
33
* SPDX-License-Identifier: LGPL-3.0-or-later OR MIT *
34
* *
35
* Contact : info_at_agrum_dot_org *
36
* homepage : http://agrum.gitlab.io *
37
* gitlab : https://gitlab.com/agrumery/agrum *
38
* *
39
****************************************************************************/
40
41
49
50
// check if we allowed these patterns to be used
51
#ifndef GUM_OPERATOR_PATTERN_ALLOWED
52
53
// #warning To use operatorPattern4MultiDimFunctionGraph.h, you must define
54
// GUM_OPERATOR_PATTERN_ALLOWED
55
56
#else
57
58
# include <
agrum/base/core/functors.h
>
59
# include <
agrum/base/multidim/utils/FunctionGraphUtilities/operators/multiDimFunctionGraphOperator.h
>
60
61
namespace
gum
{
62
68
69
# ifdef GUM_MULTI_DIM_OPERATOR_NAME
70
# define GUM_MULTI_DIM_OPERATOR_TYPE GUM_ELEMENT
71
72
template
<
typename
GUM_ELEMENT >
73
MultiDimFunctionGraph< GUM_ELEMENT >
*
74
GUM_MULTI_DIM_OPERATOR_NAME(
const
MultiDimFunctionGraph< GUM_ELEMENT >
* dg1,
75
const
MultiDimFunctionGraph< GUM_ELEMENT >
* dg2)
76
# endif
77
78
// clang-format off
79
80
#ifdef GUM_MULTI_DIM_OPERATOR_IMPL2DECISION_GRAPH_NAME
81
#define GUM_MULTI_DIM_OPERATOR_TYPE GUM_ELEMENT
82
template
<
typename
GUM_ELEMENT>
83
MultiDimImplementation<GUM_ELEMENT>
*
84
GUM_MULTI_DIM_OPERATOR_IMPL2DECISION_GRAPH_NAME(
85
const
MultiDimImplementation<GUM_ELEMENT>
* tt1,
86
const
MultiDimImplementation<GUM_ELEMENT>
* tt2 )
87
#endif
88
89
// clang-format on
90
91
{
92
93
# ifdef GUM_MULTI_DIM_OPERATOR_IMPL2DECISION_GRAPH_NAME
94
const
MultiDimFunctionGraph< GUM_ELEMENT >
* dg1
95
=
reinterpret_cast<
const
MultiDimFunctionGraph< GUM_ELEMENT >
*
>
(tt1);
96
const
MultiDimFunctionGraph< GUM_ELEMENT >
* dg2
97
=
reinterpret_cast<
const
MultiDimFunctionGraph< GUM_ELEMENT >
*
>
(tt2);
98
# endif
99
MultiDimFunctionGraphOperator< GUM_MULTI_DIM_OPERATOR_TYPE, GUM_MULTI_DIM_OPERATOR >
ope(dg1,
100
dg2);
101
102
return
ope.compute();
103
}
104
105
# undef GUM_MULTI_DIM_OPERATOR_TYPE
106
107
}
// End of namespace gum
108
#endif
/* GUM_OPERATOR_PATTERN_ALLOWED */
gum::MultiDimFunctionGraphOperator
Class used to perform Function Graph Operations.
Definition
multiDimFunctionGraphOperator.h:73
gum::MultiDimFunctionGraph
Class implementingting a function graph.
Definition
multiDimFunctionGraph.h:91
gum::MultiDimImplementation
<agrum/base/multidim/multiDimImplementation.h>
Definition
multiDimImplementation.h:85
functors.h
This files contains several function objects that are not (yet) defined in the STL.
multiDimFunctionGraphOperator.h
Class used to compute the operation between two decision diagrams.
gum
gum is the global namespace for all aGrUM entities
Definition
agrum.h:46
aGrUM
3.2.0
© PHW&CG&others - 2022
DoXyGeN 1.18.0