Tulip
5.7.0
Large graphs analysis and drawing
Edge.h
1
/*
2
*
3
* This file is part of Tulip (https://tulip.labri.fr)
4
*
5
* Authors: David Auber and the Tulip development Team
6
* from LaBRI, University of Bordeaux
7
*
8
* Tulip is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU Lesser General Public License
10
* as published by the Free Software Foundation, either version 3
11
* of the License, or (at your option) any later version.
12
*
13
* Tulip is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16
* See the GNU General Public License for more details.
17
*
18
*/
19
20
#ifndef Tulip_EDGE_H
21
#define Tulip_EDGE_H
22
#include <climits>
23
#include <functional>
24
25
namespace
tlp
{
26
27
/**
28
* @ingroup Graph
29
* @brief The edge struct represents an edge in a Graph object.
30
*
31
* This structure only contains an identifier, and a function to check if the edge is valid.
32
* A edge is considered invalid when its id has the UINT_MAX value.
33
*
34
* Most operations performed on an edge (getting the source, target, etc) are available into the
35
* tlp::Graph object.
36
*
37
* @see tlp::node
38
* @see tlp::Graph
39
*/
40
struct
edge
{
41
/**
42
* @brief id The identifier of the edge.
43
*/
44
unsigned
int
id
;
45
46
/**
47
* @brief edge creates an invalid edge.
48
*/
49
edge
() :
id
(UINT_MAX) {}
50
51
/**
52
* @brief edge Create an edge of given identifier.
53
* It is your responsibility to make sure an edge of this ID exists when you create the edge.
54
* If you want to make sure this edge exists, use Graph::isElement(), as isValid() will only tell
55
* is the edge was correctly initialized.
56
*
57
* @param j the identifier this edge will use.
58
*/
59
explicit
edge
(
unsigned
int
j) :
id
(j) {}
60
61
/**
62
* @brief operator unsigned int A convenience function to get the id of an edge.
63
*/
64
operator
unsigned
int()
const
{
65
return
id
;
66
}
67
68
/**
69
* @brief operator == checks if two edges are equals.
70
* @param n The other edge to compare this one to.
71
* @return Whether or not the two edges are equal.
72
*/
73
bool
operator==
(
const
edge
e)
const
{
74
return
id
== e.
id
;
75
}
76
77
/**
78
* @brief operator != checks if two edges are different.
79
* @param n The other edge to compare this one to.
80
* @return Whether or not the two edges are different.
81
*/
82
bool
operator!=
(
const
edge
e)
const
{
83
return
id
!= e.
id
;
84
}
85
86
/**
87
* @brief isValid checks if the edge is valid.
88
* An invalid edge is an edge whose id is UINT_MAX.
89
*
90
* @return whether the edge is valid or not.
91
*/
92
bool
isValid
()
const
{
93
return
id
!= UINT_MAX;
94
}
95
};
96
}
// namespace tlp
97
98
#ifdef _MSC_VER
99
#include <vector>
100
#include <tulip/tulipconf.h>
101
// needed by MSVC to avoid multiple definitions
102
struct
TLP_SCOPE __tlp_vector_edge :
public
std::vector<tlp::edge> {};
103
#endif
104
105
///@cond DOXYGEN_HIDDEN
106
// these three functions allow to use tlp::edge as a key in a hash-based data structure (e.g.
107
// hashmap).
108
namespace
std {
109
template
<>
110
struct
hash<
tlp
::edge> {
111
size_t
operator()(
const
tlp::edge
e)
const
{
112
return
e.
id
;
113
}
114
};
115
template
<>
116
struct
equal_to<
tlp
::edge> {
117
size_t
operator()(
const
tlp::edge
e,
const
tlp::edge
e2)
const
{
118
return
e.
id
== e2.
id
;
119
}
120
};
121
template
<>
122
struct
less<
tlp
::edge> {
123
size_t
operator()(
const
tlp::edge
e,
const
tlp::edge
e2)
const
{
124
return
e.
id
< e2.
id
;
125
}
126
};
127
}
// namespace std
128
///@endcond
129
130
#endif
tlp::edge::edge
edge(unsigned int j)
edge Create an edge of given identifier. It is your responsibility to make sure an edge of this ID ex...
Definition:
Edge.h:59
tlp::edge::id
unsigned int id
id The identifier of the edge.
Definition:
Edge.h:44
tlp::edge::operator!=
bool operator!=(const edge e) const
operator != checks if two edges are different.
Definition:
Edge.h:82
tlp
Definition:
AbstractProperty.h:34
tlp::edge::isValid
bool isValid() const
isValid checks if the edge is valid. An invalid edge is an edge whose id is UINT_MAX.
Definition:
Edge.h:92
tlp::edge
The edge struct represents an edge in a Graph object.
Definition:
Edge.h:40
tlp::edge::edge
edge()
edge creates an invalid edge.
Definition:
Edge.h:49
tlp::edge::operator==
bool operator==(const edge e) const
operator == checks if two edges are equals.
Definition:
Edge.h:73
library
tulip-core
include
tulip
Edge.h
Generated on Sat Dec 17 2022 09:20:20 for Tulip by
1.8.17