aGrUM
3.2.0
a C++ library for (probabilistic) graphical models
Toggle main menu visibility
edgeCode_inl.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
#pragma once
42
49
50
#include <
agrum/PRM/gspan/edgeCode.h
>
// to ease IDE parser
51
52
namespace
gum
{
53
namespace
prm
{
54
namespace
gspan
{
55
56
INLINE
57
EdgeCode::EdgeCode
(
NodeId
my_i,
NodeId
my_j,
Size
my_l_i,
Size
my_l_ij,
Size
my_l_j) :
58
i
(my_i),
j
(my_j),
l_i
(my_l_i),
l_ij
(my_l_ij),
l_j
(my_l_j) {
59
GUM_CONSTRUCTOR(
EdgeCode
);
60
name
= std::format(
"{}{}{}{}{}"
,
i
,
j
,
l_i
,
l_ij
,
l_j
);
61
}
62
63
INLINE
64
EdgeCode::EdgeCode
(
const
EdgeCode
& source) :
65
i
(source.
i
),
j
(source.
j
),
l_i
(source.
l_i
),
l_ij
(source.
l_ij
),
l_j
(source.
l_j
),
66
name
(source.
name
) {
67
GUM_CONS_CPY(
EdgeCode
);
68
}
69
70
INLINE
EdgeCode::~EdgeCode
() {
71
GUM_DESTRUCTOR(
EdgeCode
);
72
;
73
}
74
75
INLINE
76
bool
EdgeCode::isForward
()
const
{
return
i
<
j
; }
77
78
INLINE
79
bool
EdgeCode::isBackward
()
const
{
return
i
>
j
; }
80
81
INLINE
82
EdgeCode
&
EdgeCode::operator=
(
const
EdgeCode
& source) {
83
i
= source.
i
;
84
j
= source.
j
;
85
l_i
= source.
l_i
;
86
l_ij
= source.
l_ij
;
87
l_j
= source.
l_j
;
88
return
*
this
;
89
}
90
91
INLINE
92
bool
EdgeCode::operator==
(
const
EdgeCode
& code)
const
{
93
return
((
i
== code.
i
) && (
j
== code.
j
) && (
l_i
== code.
l_i
) && (
l_ij
== code.
l_ij
)
94
&& (
l_j
== code.
l_j
));
95
}
96
97
INLINE
98
bool
EdgeCode::operator!=
(
const
EdgeCode
& code)
const
{
99
return
((
i
!= code.
i
) || (
j
!= code.
j
) || (
l_i
!= code.
l_i
) || (
l_ij
!= code.
l_ij
)
100
|| (
l_j
!= code.
l_j
));
101
}
102
103
INLINE
104
bool
EdgeCode::operator<
(
const
EdgeCode
& code)
const
{
105
if
((
i
== code.
i
) && (
j
== code.
j
)) {
106
return
(
l_i
< code.
l_i
) || ((
l_i
== code.
l_i
) && (
l_ij
< code.
l_ij
))
107
|| ((
l_i
== code.
l_i
) && (
l_ij
== code.
l_ij
) && (
l_j
< code.
l_j
));
108
}
else
{
109
return
((
i
== code.
i
) && (
j
< code.
j
)) || ((
i
< code.
j
) && (
j
== code.
i
));
110
}
111
}
112
113
}
// namespace gspan
114
}
// namespace prm
115
}
// namespace gum
edgeCode.h
Headers of the EdgeCode class.
gum::Size
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition
types.h:74
gum::NodeId
Size NodeId
Type for node ids.
Definition
graphElements.h:117
gum::prm::gspan
Definition
DFSCode.cpp:57
gum::prm
namespace for all probabilistic relational models entities
Definition
agrum.h:68
gum
gum is the global namespace for all aGrUM entities
Definition
agrum.h:46
gum::prm::gspan::EdgeCode::l_i
Size l_i
The label of the first node in the code.
Definition
edgeCode.h:103
gum::prm::gspan::EdgeCode::i
NodeId i
The DFS subscript of the first node in the code.
Definition
edgeCode.h:97
gum::prm::gspan::EdgeCode::operator==
bool operator==(const EdgeCode &code) const
Equality operator.
Definition
edgeCode_inl.h:92
gum::prm::gspan::EdgeCode::l_ij
Size l_ij
The label of the edge in the code.
Definition
edgeCode.h:106
gum::prm::gspan::EdgeCode::name
std::string name
The string version of this EdgeCode.
Definition
edgeCode.h:112
gum::prm::gspan::EdgeCode::~EdgeCode
~EdgeCode()
Destructor.
Definition
edgeCode_inl.h:70
gum::prm::gspan::EdgeCode::isForward
bool isForward() const
Returns true if this EdgeCode is a forward edge.
Definition
edgeCode_inl.h:76
gum::prm::gspan::EdgeCode::EdgeCode
EdgeCode(NodeId i, NodeId j, Size l_i, Size l_ij, Size l_j)
Default constructor.
Definition
edgeCode_inl.h:57
gum::prm::gspan::EdgeCode::j
NodeId j
The DFS subscript of the second node in the code.
Definition
edgeCode.h:100
gum::prm::gspan::EdgeCode::isBackward
bool isBackward() const
Returns true if this EdgeCode is a backward edge.
Definition
edgeCode_inl.h:79
gum::prm::gspan::EdgeCode::operator=
EdgeCode & operator=(const EdgeCode &source)
Copy operator.
Definition
edgeCode_inl.h:82
gum::prm::gspan::EdgeCode::operator<
bool operator<(const EdgeCode &code) const
Lesser than operator.
Definition
edgeCode_inl.h:104
gum::prm::gspan::EdgeCode::operator!=
bool operator!=(const EdgeCode &code) const
Difference operator.
Definition
edgeCode_inl.h:98
gum::prm::gspan::EdgeCode::l_j
Size l_j
The label of the second node in the code.
Definition
edgeCode.h:109
aGrUM
3.2.0
© PHW&CG&others - 2022
DoXyGeN 1.18.0