aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
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-2025 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-2025 *
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
60
61namespace gum {
62
68
69# ifdef GUM_MULTI_DIM_OPERATOR_NAME
70# define GUM_MULTI_DIM_OPERATOR_TYPE GUM_SCALAR
71
72 template < typename GUM_SCALAR >
74 GUM_MULTI_DIM_OPERATOR_NAME(const MultiDimFunctionGraph< GUM_SCALAR >* dg1,
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_SCALAR
82 template <typename GUM_SCALAR>
84 GUM_MULTI_DIM_OPERATOR_IMPL2DECISION_GRAPH_NAME(
87#endif
88
89 // clang-format on
90
91 {
92
93# ifdef GUM_MULTI_DIM_OPERATOR_IMPL2DECISION_GRAPH_NAME
95 = reinterpret_cast< const MultiDimFunctionGraph< GUM_SCALAR >* >(tt1);
97 = reinterpret_cast< const MultiDimFunctionGraph< GUM_SCALAR >* >(tt2);
98# endif
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 */
Class used to perform Function Graph Operations.
Class implementingting a function graph.
<agrum/base/multidim/multiDimImplementation.h>
This files contains several function objects that are not (yet) defined in the STL.
Class used to compute the operation between two decision diagrams.
gum is the global namespace for all aGrUM entities
Definition agrum.h:46