DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
DepthFirstVisitor.h
1
16
17
#pragma once
18
32
33
#if defined(DepthFirstVisitor_RECURSES)
34
#error Recursive header files inclusion detected in DepthFirstVisitor.h
35
#else
// defined(DepthFirstVisitor_RECURSES)
37
#define DepthFirstVisitor_RECURSES
38
39
#if !defined DepthFirstVisitor_h
41
#define DepthFirstVisitor_h
42
44
// Inclusions
45
#include <iostream>
46
#include <stack>
47
#include "DGtal/base/Common.h"
48
#include "DGtal/base/CountedPtr.h"
49
#include "DGtal/base/ConstAlias.h"
50
#include "DGtal/kernel/sets/DigitalSetSelector.h"
51
#include "DGtal/kernel/sets/DigitalSetDomain.h"
52
#include "DGtal/topology/DomainAdjacency.h"
53
#include "DGtal/graph/CUndirectedSimpleLocalGraph.h"
55
56
namespace
DGtal
57
{
58
60
// template class DepthFirstVisitor
93
template
<
typename
TGraph,
94
typename
TMarkSet =
typename
TGraph::VertexSet >
95
class
DepthFirstVisitor
96
{
97
// ----------------------- Associated types ------------------------------
98
public
:
99
typedef
DepthFirstVisitor<TGraph,TMarkSet>
Self
;
100
typedef
TGraph
Graph
;
101
typedef
TMarkSet
MarkSet
;
102
typedef
typename
Graph::Size
Size
;
103
typedef
typename
Graph::Vertex
Vertex
;
104
typedef
Size
Data
;
105
106
//BOOST_CONCEPT_ASSERT(( CUndirectedSimpleLocalGraph< Graph > ));
107
// Cannot check this since some types using it are incomplete.
108
//BOOST_CONCEPT_ASSERT(( CSet< MarkSet, Vertex > ));
109
110
// ----------------------- defined types ------------------------------
111
public
:
112
115
typedef
std::pair< Vertex, Data >
Node
;
117
typedef
std::stack< Node >
NodeQueue
;
119
typedef
std::vector< Vertex >
VertexList
;
120
121
122
// ----------------------- Standard services ------------------------------
123
public
:
124
128
~DepthFirstVisitor
();
129
134
DepthFirstVisitor
(
const
DepthFirstVisitor
& other );
135
142
DepthFirstVisitor
(
ConstAlias<Graph>
graph
);
143
151
DepthFirstVisitor
(
ConstAlias<Graph>
graph
,
const
Vertex
& p );
152
165
template
<
typename
VertexIterator>
166
DepthFirstVisitor
(
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
DepthFirstVisitor
();
299
300
private
:
301
308
DepthFirstVisitor
&
operator=
(
const
DepthFirstVisitor
& other );
309
310
// ------------------------- Internals ------------------------------------
311
private
:
312
313
};
// end of class DepthFirstVisitor
314
315
322
template
<
typename
TGraph,
typename
TMarkSet >
323
std::ostream&
324
operator<<
( std::ostream & out,
325
const
DepthFirstVisitor<TGraph, TMarkSet >
&
object
);
326
327
}
// namespace DGtal
328
329
331
// Includes inline functions.
332
#include "DGtal/graph/DepthFirstVisitor.ih"
333
334
// //
336
337
#endif
// !defined DepthFirstVisitor_h
338
339
#undef DepthFirstVisitor_RECURSES
340
#endif
// else defined(DepthFirstVisitor_RECURSES)
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::DepthFirstVisitor
Aim: This class is useful to perform a depth-first exploration of a graph given a starting point or s...
Definition
DepthFirstVisitor.h:96
DGtal::DepthFirstVisitor::DepthFirstVisitor
DepthFirstVisitor(ConstAlias< Graph > graph, const Vertex &p)
DGtal::DepthFirstVisitor::isValid
bool isValid() const
DGtal::DepthFirstVisitor< Surface >::Vertex
Graph::Vertex Vertex
Definition
DepthFirstVisitor.h:103
DGtal::DepthFirstVisitor::DepthFirstVisitor
DepthFirstVisitor()
DGtal::DepthFirstVisitor< Surface >::NodeQueue
std::stack< Node > NodeQueue
Definition
DepthFirstVisitor.h:117
DGtal::DepthFirstVisitor< Surface >::Self
DepthFirstVisitor< Surface, typename Surface::VertexSet > Self
Definition
DepthFirstVisitor.h:99
DGtal::DepthFirstVisitor::DepthFirstVisitor
DepthFirstVisitor(ConstAlias< Graph > graph)
DGtal::DepthFirstVisitor< Surface >::myQueue
NodeQueue myQueue
Definition
DepthFirstVisitor.h:289
DGtal::DepthFirstVisitor< Surface >::myMarkedVertices
MarkSet myMarkedVertices
Definition
DepthFirstVisitor.h:283
DGtal::DepthFirstVisitor::markedVertices
const MarkSet & markedVertices() const
DGtal::DepthFirstVisitor::terminate
void terminate()
DGtal::DepthFirstVisitor::operator=
DepthFirstVisitor & operator=(const DepthFirstVisitor &other)
DGtal::DepthFirstVisitor< Surface >::Data
Size Data
Definition
DepthFirstVisitor.h:104
DGtal::DepthFirstVisitor< Surface >::VertexList
std::vector< Vertex > VertexList
Definition
DepthFirstVisitor.h:119
DGtal::DepthFirstVisitor::~DepthFirstVisitor
~DepthFirstVisitor()
DGtal::DepthFirstVisitor::finished
bool finished() const
DGtal::DepthFirstVisitor< Surface >::Graph
Surface Graph
Definition
DepthFirstVisitor.h:100
DGtal::DepthFirstVisitor< Surface >::MarkSet
typename Surface::VertexSet MarkSet
Definition
DepthFirstVisitor.h:101
DGtal::DepthFirstVisitor::visitedVertices
MarkSet visitedVertices() const
DGtal::DepthFirstVisitor::expand
void expand(const VertexPredicate &authorized_vtx)
DGtal::DepthFirstVisitor::expand
void expand()
DGtal::DepthFirstVisitor< Surface >::myGraph
const Graph & myGraph
Definition
DepthFirstVisitor.h:276
DGtal::DepthFirstVisitor< Surface >::Node
std::pair< Vertex, Data > Node
Definition
DepthFirstVisitor.h:115
DGtal::DepthFirstVisitor::selfDisplay
void selfDisplay(std::ostream &out) const
DGtal::DepthFirstVisitor< Surface >::Size
Graph::Size Size
Definition
DepthFirstVisitor.h:102
DGtal::DepthFirstVisitor< Surface >::graph
const Graph & graph() const
DGtal::DepthFirstVisitor::current
const Node & current() const
DGtal::DepthFirstVisitor::DepthFirstVisitor
DepthFirstVisitor(ConstAlias< Graph > graph, VertexIterator b, VertexIterator e)
DGtal::DepthFirstVisitor::DepthFirstVisitor
DepthFirstVisitor(const DepthFirstVisitor &other)
DGtal::DepthFirstVisitor::ignore
void ignore()
DGtal::DigitalSurface< ExplicitSurfaceContainer >::Size
KSpace::Size Size
Definition
DigitalSurface.h:179
DGtal::DigitalSurface< ExplicitSurfaceContainer >::Vertex
Surfel Vertex
Definition
DigitalSurface.h:177
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
DepthFirstVisitor.h
Generated on
for DGtal by
1.18.0