VR-Forces 4.0.4 Class Documentation
include/gdb/networkEdgePointIter.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 2004 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: networkEdgePointIter.h,v $ $Revision: 1.5 $ $State: Exp $
00007 *********************************************************************/
00008 #ifndef networkEdgePointIter_H_
00009 #define networkEdgePointIter_H_
00010 
00011 //
00012 // \file networkEdgePointIter.h
00013 // \brief Contains the DtNetworkEdgePointIter class declaration.
00014 //
00015 
00016 #include "gdb/gdbDefines.h"
00017 #include "gdb/netwrkEdge.h"
00018 
00019 class DtPoint;
00020 class DtString;
00021 
00022 //
00023 // DtNetworkEdgePointIter is an ABC representing
00024 // an iterator over the points representing a DtNetworkEdge.
00025 // \invariant At all times, this iterator must point to a valid DtNetworkEdge.
00026 class DT_DLL_gdb DtNetworkEdgePointIter 
00027 {
00028 public:
00029 
00030    // constructor
00031    // \param edge The DtNetworkEdge to iterate over
00032    DtNetworkEdgePointIter(DtNetworkEdge& edge);
00033 
00034    // constructor that allows the user to specify that
00035    // the iterator is initialized to the end of the 
00036    // points of the edge.
00037    // \param edge The DtNetworkEdge to iterate over
00038    // \param isEnd Is the iterator at the end or not.
00039    DtNetworkEdgePointIter(DtNetworkEdge& edge, bool isEnd);
00040 
00041    // destructor
00042    virtual ~DtNetworkEdgePointIter();
00043 
00044    // copy constructor
00045    DtNetworkEdgePointIter(const DtNetworkEdgePointIter& orig);
00046 
00047    // assignment operator
00048    virtual DtNetworkEdgePointIter& operator=(const DtNetworkEdgePointIter& orig);
00049 
00050    // Increment/Decrement to the next/previous points.
00051    // \note Incrementing is defined as moving to the next point in the direction
00052    // in which the iterator is iterating over the edge, NOT necessarily the
00053    // next point in the order in which they are defined in the edge itself.
00054    virtual void operator++() = 0; 
00055    virtual void operator--() = 0; 
00056 
00057    // \return A reference to a const DtPoint in the edge
00058    virtual const DtPoint& operator*() const = 0;
00059    // \return A pointer to a const DtPoint in the edge
00060    virtual const DtPoint* operator->()  const = 0;
00061 
00062    // \return A boolean signifying whether the iteration is equal to the other 
00063    // iterator or not.
00064    virtual bool operator==(const DtNetworkEdgePointIter& other) const;
00065    virtual bool operator!=(const DtNetworkEdgePointIter& other) const;
00066 
00067    // \return The DtString "DtNetworkEdgePointIter"
00068    virtual const DtString type() const;
00069    
00070 protected:
00071    // Tests the invariant for the class (described above)
00072    // \return true if the invariant is valid.
00073    // false otherwise.
00074    bool testInvariant() const;
00075 
00076    DtNetworkEdge* myEdge;
00077    bool           myIsEnd;
00078 
00079 private:
00080    // default constructor
00081    DtNetworkEdgePointIter();
00082 };
00083 
00084 
00085 inline DtNetworkEdgePointIter::DtNetworkEdgePointIter(DtNetworkEdge& edge):
00086 myEdge(&edge),
00087 myIsEnd(false)
00088 {
00089 }
00090 
00091 inline DtNetworkEdgePointIter::DtNetworkEdgePointIter(DtNetworkEdge& edge, bool isEnd):
00092 myEdge(&edge),
00093 myIsEnd(isEnd)
00094 {
00095 }
00096 
00097 
00098 inline DtNetworkEdgePointIter::~DtNetworkEdgePointIter()
00099 {
00100 }
00101 
00102 inline DtNetworkEdgePointIter::DtNetworkEdgePointIter(const DtNetworkEdgePointIter& orig)
00103 {
00104    myEdge = orig.myEdge;
00105    myIsEnd = orig.myIsEnd;
00106 }
00107 
00108 inline DtNetworkEdgePointIter& DtNetworkEdgePointIter::operator=(const DtNetworkEdgePointIter& orig)
00109 {
00110    if (*this != orig)
00111    {
00112       myEdge = orig.myEdge;
00113       myIsEnd = orig.myIsEnd;
00114    }
00115 
00116    return *this;
00117 }
00118 
00119 inline const DtString DtNetworkEdgePointIter::type() const
00120 {
00121    return "DtNetworkEdgePointIter";
00122 }
00123 
00124 
00125 #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)