VR-Forces 4.0.4 Class Documentation
include/gdb/networkEdgeSegmentIter.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 2004 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: networkEdgeSegmentIter.h,v $ $Revision: 1.5 $ $State: Exp $
00007 *********************************************************************/
00008 #ifndef networkEdgeSegmentIter_H_
00009 #define networkEdgeSegmentIter_H_
00010 
00011 //
00012 // \file networkEdgeSegmentIter.h
00013 // \brief Contains the DtNetworkEdgeSegmentIter class declaration.
00014 //
00015 
00016 #include "gdb/gdbDefines.h"
00017 #include "gdb/netwrkEdge.h"
00018 
00019 class DtSegment;
00020 class DtString;
00021 
00022 
00023 //
00024 // DtNetworkEdgeSegmentIter is an ABC representing
00025 // an iterator over the segments of a DtNetworkEdge.
00026 // \invariant At all times, this iterator must point to a valid DtNetworkEdge.
00027 class DT_DLL_gdb DtNetworkEdgeSegmentIter 
00028 {
00029 public:
00030    // \param an edge to iterate over.
00031    DtNetworkEdgeSegmentIter(DtNetworkEdge& edge);
00032 
00033    // copy constructor
00034    DtNetworkEdgeSegmentIter(const DtNetworkEdgeSegmentIter& orig);
00035 
00036    // destructor
00037    virtual ~DtNetworkEdgeSegmentIter();
00038 
00039    // \return A DtPoint representing the starting or ending point of 
00040    // the segment as defined in the direction of iteration.
00041    virtual DtPoint startPoint() const = 0;
00042    virtual DtPoint endPoint() const = 0;
00043 
00044    virtual const DtNetworkEdge& edge() const;
00045 
00046    // Increments/Decrements to the next/previous segment in the edge as defined
00047    // by the direction of iteration.
00048    virtual void operator++() = 0; 
00049    virtual void operator--() = 0; 
00050    virtual DtNetworkSegment& operator*() const = 0;
00051    virtual DtNetworkSegment& operator->()  const = 0;
00052 
00053    virtual bool operator==(const DtNetworkEdgeSegmentIter& other) const;
00054    virtual bool operator!=(const DtNetworkEdgeSegmentIter& other) const;
00055 
00056    // \return The DtString "DtNetworkEdgeSegmentIter"
00057    virtual const DtString type() const;
00058    
00059 protected:
00060    // Tests the invariant of the iterator as defined above.
00061    // \return a boolean signifying true if the invariant is valid
00062    // and false otherwise.
00063    bool testInvariant() const;
00064 
00065    // default constructor
00066    DtNetworkEdgeSegmentIter();
00067 
00068    DtNetworkEdge* myEdge;
00069 };
00070 
00071 
00072 inline DtNetworkEdgeSegmentIter::DtNetworkEdgeSegmentIter(DtNetworkEdge& edge):
00073 myEdge(&edge)
00074 {
00075    assert(testInvariant());
00076 }
00077 
00078 inline DtNetworkEdgeSegmentIter::~DtNetworkEdgeSegmentIter()
00079 {
00080 }
00081 
00082 inline DtNetworkEdgeSegmentIter::DtNetworkEdgeSegmentIter(const DtNetworkEdgeSegmentIter& orig)
00083 {
00084    assert(testInvariant());
00085 
00086    myEdge = orig.myEdge;
00087    
00088    assert(testInvariant());
00089 }
00090 
00091 
00092 inline const DtString DtNetworkEdgeSegmentIter::type() const
00093 {
00094    assert(testInvariant());
00095 
00096    return "DtNetworkEdgeSegmentIter";
00097 }
00098 
00099 
00100 #endif

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)