DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
BreadthFirstVisitor.h
1
16
17
#pragma once
18
30
31
#if defined(BreadthFirstVisitor_RECURSES)
32
#error Recursive header files inclusion detected in BreadthFirstVisitor.h
33
#else
// defined(BreadthFirstVisitor_RECURSES)
35
#define BreadthFirstVisitor_RECURSES
36
37
#if !defined BreadthFirstVisitor_h
39
#define BreadthFirstVisitor_h
40
42
// Inclusions
43
#include <iostream>
44
#include <queue>
45
#include "DGtal/base/Common.h"
46
#include "DGtal/base/CountedPtr.h"
47
#include "DGtal/base/ConstAlias.h"
48
#include "DGtal/kernel/sets/DigitalSetSelector.h"
49
#include "DGtal/kernel/sets/DigitalSetDomain.h"
50
#include "DGtal/topology/DomainAdjacency.h"
51
#include "DGtal/graph/CUndirectedSimpleLocalGraph.h"
53
54
namespace
DGtal
55
{
56
58
// template class BreadthFirstVisitor
92
template
<
typename
TGraph,
93
typename
TMarkSet =
typename
TGraph::VertexSet >
94
class
BreadthFirstVisitor
95
{
96
// ----------------------- Associated types ------------------------------
97
public
:
98
typedef
BreadthFirstVisitor<TGraph,TMarkSet>
Self
;
99
typedef
TGraph
Graph
;
100
typedef
TMarkSet
MarkSet
;
101
typedef
typename
Graph::Size
Size
;
102
typedef
typename
Graph::Vertex
Vertex
;
103
typedef
Size
Data
;
104
105
// Cannot check this since some types using it are incomplete.
107
// BOOST_CONCEPT_ASSERT(( concepts::CUndirectedSimpleLocalGraph< Graph > ));
108
// BOOST_CONCEPT_ASSERT(( CSet< MarkSet, Vertex > ));
109
110
// ----------------------- defined types ------------------------------
111
public
:
112
115
typedef
std::pair< Vertex, Data >
Node
;
117
typedef
std::queue< Node >
NodeQueue
;
119
typedef
std::vector< Vertex >
VertexList
;
120
121
122
// ----------------------- Standard services ------------------------------
123
public
:
124
128
~BreadthFirstVisitor
();
129
134
BreadthFirstVisitor
(
const
BreadthFirstVisitor
& other );
135
142
BreadthFirstVisitor
(
ConstAlias<Graph>
graph
);
143
151
BreadthFirstVisitor
(
ConstAlias<Graph>
graph
,
const
Vertex
& p );
152
165
template
<
typename
VertexIterator>
166
BreadthFirstVisitor
(
ConstAlias<Graph>
graph
,
167
VertexIterator b, VertexIterator e );
168
169
173
const
Graph
&
graph
()
const
;
174
175
// ----------------------- traversal services ------------------------------
176
public
:
177
185
const
Node
&
current
()
const
;
186
194
void
ignore
();
195
201
void
expand
();
202
214
template
<
typename
VertexPredicate>
215
void
expand
(
const
VertexPredicate & authorized_vtx );
216
220
bool
finished
()
const
;
221
229
void
terminate
();
230
236
const
MarkSet
&
markedVertices
()
const
;
237
250
MarkSet
visitedVertices
()
const
;
251
252
253
// ----------------------- Interface --------------------------------------
254
public
:
255
260
void
selfDisplay
( std::ostream & out )
const
;
261
266
bool
isValid
()
const
;
267
268
// ------------------------- Protected Data ------------------------------
269
private
:
270
// ------------------------- Private Data --------------------------------
271
private
:
272
276
const
Graph
&
myGraph
;
277
283
MarkSet
myMarkedVertices
;
284
289
NodeQueue
myQueue
;
290
291
// ------------------------- Hidden services ------------------------------
292
protected
:
293
298
BreadthFirstVisitor
();
299
300
private
:
301
308
BreadthFirstVisitor
&
operator=
(
const
BreadthFirstVisitor
& other );
309
310
// ------------------------- Internals ------------------------------------
311
private
:
312
313
};
// end of class BreadthFirstVisitor
314
315
322
template
<
typename
TGraph,
typename
TMarkSet >
323
std::ostream&
324
operator<<
( std::ostream & out,
325
const
BreadthFirstVisitor<TGraph, TMarkSet >
&
object
);
326
327
}
// namespace DGtal
328
329
331
// Includes inline functions.
332
#include "DGtal/graph/BreadthFirstVisitor.ih"
333
334
// //
336
337
#endif
// !defined BreadthFirstVisitor_h
338
339
#undef BreadthFirstVisitor_RECURSES
340
#endif
// else defined(BreadthFirstVisitor_RECURSES)
DGtal::BreadthFirstVisitor
Aim: This class is useful to perform a breadth-first exploration of a graph given a starting point or...
Definition
BreadthFirstVisitor.h:95
DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::NodeQueue
std::queue< Node > NodeQueue
Definition
BreadthFirstVisitor.h:117
DGtal::BreadthFirstVisitor::operator=
BreadthFirstVisitor & operator=(const BreadthFirstVisitor &other)
DGtal::BreadthFirstVisitor::BreadthFirstVisitor
BreadthFirstVisitor(ConstAlias< Graph > graph, const Vertex &p)
DGtal::BreadthFirstVisitor::BreadthFirstVisitor
BreadthFirstVisitor(const BreadthFirstVisitor &other)
DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::myQueue
NodeQueue myQueue
Definition
BreadthFirstVisitor.h:289
DGtal::BreadthFirstVisitor::current
const Node & current() const
DGtal::BreadthFirstVisitor::selfDisplay
void selfDisplay(std::ostream &out) const
DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::myMarkedVertices
MarkSet myMarkedVertices
Definition
BreadthFirstVisitor.h:283
DGtal::BreadthFirstVisitor::finished
bool finished() const
DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::Data
Size Data
Definition
BreadthFirstVisitor.h:103
DGtal::BreadthFirstVisitor::expand
void expand(const VertexPredicate &authorized_vtx)
DGtal::BreadthFirstVisitor::~BreadthFirstVisitor
~BreadthFirstVisitor()
DGtal::BreadthFirstVisitor::ignore
void ignore()
DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::Size
Graph::Size Size
Definition
BreadthFirstVisitor.h:101
DGtal::BreadthFirstVisitor::Self
BreadthFirstVisitor< TGraph, TMarkSet > Self
Definition
BreadthFirstVisitor.h:98
DGtal::BreadthFirstVisitor::markedVertices
const MarkSet & markedVertices() const
DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::VertexList
std::vector< Vertex > VertexList
Definition
BreadthFirstVisitor.h:119
DGtal::BreadthFirstVisitor::BreadthFirstVisitor
BreadthFirstVisitor()
DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::graph
const Graph & graph() const
DGtal::BreadthFirstVisitor::visitedVertices
MarkSet visitedVertices() const
DGtal::BreadthFirstVisitor::terminate
void terminate()
DGtal::BreadthFirstVisitor::BreadthFirstVisitor
BreadthFirstVisitor(ConstAlias< Graph > graph)
DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::myGraph
const Graph & myGraph
Definition
BreadthFirstVisitor.h:276
DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::Vertex
Graph::Vertex Vertex
Definition
BreadthFirstVisitor.h:102
DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::Node
std::pair< Vertex, Data > Node
Definition
BreadthFirstVisitor.h:115
DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::Graph
TGraph Graph
Definition
BreadthFirstVisitor.h:99
DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::MarkSet
TMarkSet MarkSet
Definition
BreadthFirstVisitor.h:100
DGtal::BreadthFirstVisitor::expand
void expand()
DGtal::BreadthFirstVisitor::isValid
bool isValid() const
DGtal::BreadthFirstVisitor::BreadthFirstVisitor
BreadthFirstVisitor(ConstAlias< Graph > graph, VertexIterator b, VertexIterator e)
DGtal::ConstAlias
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
Definition
ConstAlias.h:187
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition
ClosedIntegerHalfPlane.h:49
DGtal::operator<<
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
src
DGtal
graph
BreadthFirstVisitor.h
Generated on
for DGtal by
1.18.0