Tulip
4.4.0
Better Visualization Through Research
Main Page
Related Pages
Modules
Classes
Files
Examples
File List
All
Classes
Namespaces
Files
Functions
Variables
Enumerations
Enumerator
Properties
Groups
Pages
Edge.h
1
/*
2
*
3
* This file is part of Tulip (www.tulip-software.org)
4
*
5
* Authors: David Auber and the Tulip development Team
6
* from LaBRI, University of Bordeaux 1 and Inria Bordeaux - Sud Ouest
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 <tulip/tuliphash.h>
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 node is valid.
32
* A node 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 tlp::Graph object.
35
*
36
* @see tlp::node
37
* @see tlp::Graph
38
*/
39
struct
edge
{
40
/**
41
* @brief id The identifier of the edge.
42
*/
43
unsigned
int
id
;
44
45
/**
46
* @brief edge creates an invalid edge.
47
*/
48
edge
():
id
(UINT_MAX) {}
49
50
/**
51
* @brief edge Create an edge of given identifier.
52
* It is your responsibility to make sure an edge of this ID exists when you create the edge.
53
* If you want to make sure this edge exists, use Graph::isElement(), as isValid() will only tell is the edge was correctly initialized.
54
*
55
* @param j the identifier this edge will use.
56
*/
57
explicit
edge
(
unsigned
int
j):
id
(j) {}
58
59
/**
60
* @brief operator unsigned int A convenience function to get the id of an edge.
61
*/
62
operator
unsigned
int()
const
{
63
return
id
;
64
}
65
66
/**
67
* @brief operator != Compares two edges, checking that they are different..
68
* @param n The other edge to compare this one to.
69
* @return Whether or not the two edges are different.
70
*/
71
bool
operator==
(
const
edge
e)
const
{
72
return
id
==e.
id
;
73
}
74
75
/**
76
* @brief operator != Compares two edges, checking that they are identical.
77
* @param n The other edge to compare this one to.
78
* @return Whether or not the two edges are the same.
79
*/
80
bool
operator!=
(
const
edge
e)
const
{
81
return
id
!=e.
id
;
82
}
83
84
/**
85
* @brief isValid checks if the edge is valid.
86
* An invalid edge is an edge whose id is UINT_MAX.
87
*
88
* @return whether the edge is valid or not.
89
*/
90
bool
isValid
()
const
{
91
return
id
!=UINT_MAX;
92
}
93
};
94
95
}
96
97
#ifndef DOXYGEN_NOTFOR_DEVEL
98
//these three functions allow to use tlp::edge as a key in a hash-based data structure (e.g. hashmap).
99
TLP_BEGIN_HASH_NAMESPACE {
100
template
<>
101
struct
hash<tlp::edge>{
102
size_t
operator()(
const
tlp::edge
e)
const
{
return
e.
id
;}
103
};
104
} TLP_END_HASH_NAMESPACE
105
106
namespace
std {
107
template
<>
108
struct
equal_to<tlp::edge> {
109
size_t
operator()(
const
tlp::edge
e,
const
tlp::edge
e2)
const
{
110
return
e.
id
==e2.
id
;
111
}
112
};
113
template
<>
114
struct
less<tlp::edge> {
115
size_t
operator()(
const
tlp::edge
e,
const
tlp::edge
e2)
const
{
116
return
e.
id
<e2.
id
;
117
}
118
};
119
}
120
#endif
121
#endif
library
tulip-core
include
tulip
Edge.h
Generated on Tue Nov 19 2013 23:02:13 for Tulip by
1.8.2