VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
networkEdgeTraverser.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2004 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 /*********************************************************************
6 ** $RCSfile: networkEdgeTraverser.h,v $ $Revision: 1.5 $ $State: Exp $
7 *********************************************************************/
8 #ifndef networkEdgeTraverser_H_
9 #define networkEdgeTraverser_H_
10 
11 //
12 // \file networkEdgeTraverser.h
13 // \brief Contains the DtNetworkEdgeTraverser class declaration.
14 //
15 
16 #include "gdb/gdbDefines.h"
17 #include "gdb/networkEdge.h"
18 
19 class DtNetworkNode;
24 class DtPoint;
25 class DtString;
26 
27 //
28 // DtNetworkEdgeTraverser represents an object that knows how to traverse in the
29 // specified direction over an DtNetworkEdge. Used for traversing the
30 // vector network.
32 {
33 public:
34 
35  // constructor
37  DtNetworkEdge::DtTraversalDirection traversalDirection);
38 
39  // destructor
40  virtual ~DtNetworkEdgeTraverser();
41 
42  // copy constructor
44 
45  // assignment operator
46  DtNetworkEdgeTraverser& operator=(const DtNetworkEdgeTraverser& orig);
47 
48 
49  // \return a const reference to the traverser's edge
50  DtNetworkEdge& edge();
51  const DtNetworkEdge& edge() const;
52 
53  DtNetworkNode& startNode();
54  DtNetworkNode& endNode();
55 
56  const DtNetworkNode& startNode() const;
57  const DtNetworkNode& endNode() const;
58 
59  const DtPoint startPoint() const;
60  const DtPoint endPoint() const;
61 
62  // \return an iterator, const or non-const, to the beginning or
63  // the end of the segments
64  // \note - These are not necessarily forward or reverse in the traditional interator sense.
65  // It depends on the direction of traversal. If traversing in reverse, a reverse iterator request
66  // will return a *foward* iterator.
67  std::auto_ptr<DtNetworkEdgeSegmentIter> segmentsBegin();
68  std::auto_ptr<DtNetworkEdgeSegmentConstIter> segmentsBegin() const;
69 
70  std::auto_ptr<DtNetworkEdgeSegmentIter> segmentsEnd();
71  std::auto_ptr<DtNetworkEdgeSegmentConstIter> segmentsEnd() const;
72 
73  std::auto_ptr<DtNetworkEdgeSegmentIter> getIterForSegment(const DtNetworkSegment& segment);
74  std::auto_ptr<DtNetworkEdgeSegmentConstIter> getIterForSegment(const DtNetworkSegment& segment) const;
75 
76  // \return An auto_ptr to a DtNetworkEdgeSegmentIter that can be used to iterate over the segments
77  // of the edge, in the specified traversal direction.
78  std::auto_ptr<DtNetworkEdgeSegmentIter> segmentIter(const DtNetworkSegment& segment);
79  std::auto_ptr<DtNetworkEdgeSegmentConstIter> segmentIter(const DtNetworkSegment& segment) const;
80 
81 
82  // \return an iterator, const or non-const, to the beginning or
83  // the end of the points in the edge.
84  // \note - These are not necessarily beginning/end or forward/reverse in the traditional interator sense.
85  // It depends on the direction of traversal. If traversing in reverse, a reverse iterator request
86  // will return a *foward* iterator.
87  std::auto_ptr<DtNetworkEdgePointIter> pointsBegin();
88  std::auto_ptr<DtNetworkEdgePointConstIter> pointsBegin() const;
89 
90  std::auto_ptr<DtNetworkEdgePointIter> pointsEnd();
91  std::auto_ptr<DtNetworkEdgePointConstIter> pointsEnd() const;
92 
93  // \return a point iterator initialized to the point in the edge specified.
94  // If the point is NOT in the edge, the iterator will be initialized to the
95  // starting point in the appropriate direction of traversal.
96  std::auto_ptr<DtNetworkEdgePointIter> pointIter(const DtPoint& pointInEdge);
97  std::auto_ptr<DtNetworkEdgePointConstIter> pointIter(const DtPoint& pointInEdge) const;
98 
99  // \return the DtString "DtNetworkEdgeTraverser"
100  virtual DtString type();
101 
102  virtual DtNetworkEdge::DtTraversalDirection direction() const;
103  virtual void setDirection(DtNetworkEdge::DtTraversalDirection newDirection);
104 
105 protected:
106  // Tests to see if the class invariant is valid.
107  // \return a boolean indicating whether or not the invariant
108  // is valid.
109  bool testInvariant() const;
110 
111  bool traversingForward() const;
112 
114 
116 
117 };
118 
119 
120 #endif
Definition: networkEdgeSegmentConstIter.h:28
Definition: networkEdgeTraverser.h:31
*bool testInvariant() const
Definition: networkSegment.h:26
#define DT_DLL_gdb
Definition: gdbDefines.h:25
Definition: networkNode.h:38
DtTraversalDirection
Definition: networkEdge.h:44
DtNetworkEdge * myEdge
Definition: networkEdgeTraverser.h:115
Definition: networkEdgeSegmentIter.h:27
DtNetworkEdge::DtTraversalDirection myTraversalDirection
Definition: networkEdgeTraverser.h:113
Definition: networkEdgePointConstIter.h:27
Definition: networkEdge.h:28
Definition: networkEdgePointIter.h:26
Definition: point.h:34

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)