EdgeIterator Class Reference

allows an iteration trough all edges of a vertex More...

#include <EdgeIterator.h>

List of all members.

Public Types

enum  ITERATIONMODE { SAMPLEOCCURENCE, SAMPLEVALUE }

Public Member Functions

 EdgeIterator (void)
 EdgeIterator (Vertex *v, ITERATIONMODE m=SAMPLEOCCURENCE)
 EdgeIterator (const EdgeIterator &eit)
 ~EdgeIterator (void)
const Edgeoperator * (void) const
void operator++ (void)
void reset (Vertex *v, ITERATIONMODE m=SAMPLEOCCURENCE)
void reset (ITERATIONMODE m=SAMPLEOCCURENCE)
bool isFinished (void) const
VertexLabel getPartnerVertexLabel (void) const
void print (unsigned short spc=0) const

Static Public Member Functions

static UWORD32 getMaxNumEdges (void)
static void setMaxNumEdges (UWORD32 mne)

Private Member Functions

void findNextEdge (void)
bool isDestSampleValueOK (const SampleValue *sv)

Private Attributes

Edge CurrentEdge
 the current edge (is returned by operator*)
ITERATIONMODE Mode
 mode of iteration
unsigned long * SVALIndices
 contains (for every sample value) an index to the current opposite neighbour
UWORD32 EdgeIndex
 the index/number of the edge that is currently returned by operator*
bool Finished
 is true iff there are no more edges for this source vertex
std::list< SampleOccurence
>::const_iterator 
SampleOccurenceIt

Static Private Attributes

static UWORD32 MaxNumEdges
 the maximum number of edges the EdgeIterator should iterate through


Detailed Description

The Vertex that is the source for all edges is called "source vertex". The order of the iteration through the edges is from the shortest to the longest edge. If two edges have the same length they are ordered the same way as the corresponding entries in the sample value adjacency lists (for different sample values) respectivly the destination sample occurences in the SampleOccurences data structure (for the same sample value).

EdgeIterator uses an SampleOccurence::const_iterator to store information about the current edge. Graph::(un)markDeletedSampleOccurence can invalidate such iterators. It is therefore not a good idea to use EdgeIterators at the same time as the Graph::(un)markDeletedSampleOccurence functionality.

NOTE: EdgeIterator relies on the Globals object pointed to by the Globs pointer. This means that it must be set correctly before using any method of an EdgeIterator object.


Member Enumeration Documentation

enum EdgeIterator::ITERATIONMODE

Enumerator:
SAMPLEOCCURENCE 
SAMPLEVALUE 


Constructor & Destructor Documentation

EdgeIterator::EdgeIterator ( void   ) 

the default contructor - does not create a valid object

EdgeIterator::EdgeIterator ( Vertex v,
ITERATIONMODE  m = SAMPLEOCCURENCE 
)

Parameters:
v the source vertex

EdgeIterator::EdgeIterator ( const EdgeIterator eit  ) 

the copy constructor

EdgeIterator::~EdgeIterator ( void   ) 


Member Function Documentation

const Edge* EdgeIterator::operator * ( void   )  const [inline]

get the current edge

Returns:
the edge that is described by the current status of this EdgeIterator

void EdgeIterator::operator++ ( void   ) 

set this iterator to next edge

void EdgeIterator::reset ( Vertex v,
ITERATIONMODE  m = SAMPLEOCCURENCE 
)

set this iterator to first (shortest) edge of vertex v

Parameters:
v new vertex (don't change if it is NULL)

void EdgeIterator::reset ( ITERATIONMODE  m = SAMPLEOCCURENCE  ) 

reset this iterator to first (shortest) edge

bool EdgeIterator::isFinished ( void   )  const [inline]

Returns:
true iff this EdgeIterator points to the end of the list of edges of SrcVertex

VertexLabel EdgeIterator::getPartnerVertexLabel ( void   )  const [inline]

get the label of the partner vertex

Returns:
the label of the vertex that builds the edge returned by operator* together with SrcVertex

static UWORD32 EdgeIterator::getMaxNumEdges ( void   )  [inline, static]

static void EdgeIterator::setMaxNumEdges ( UWORD32  mne  )  [inline, static]

void EdgeIterator::print ( unsigned short  spc = 0  )  const

void EdgeIterator::findNextEdge ( void   )  [private]

find the shortest edge, starting the search at SVOppNeighsIndices[0...k] set the private variables accordingly is only called to find a new destination sample value, i.e. if one of the SVOppNeighsIndices[i] is changed

bool EdgeIterator::isDestSampleValueOK ( const SampleValue sv  )  [private]

Returns:
true iff there is a sample with value sv that is part of an edge starting at SrcVertex


Member Data Documentation

Edge EdgeIterator::CurrentEdge [private]

ITERATIONMODE EdgeIterator::Mode [private]

unsigned long* EdgeIterator::SVALIndices [private]

UWORD32 EdgeIterator::MaxNumEdges [static, private]

UWORD32 EdgeIterator::EdgeIndex [private]

bool EdgeIterator::Finished [private]

std::list<SampleOccurence>::const_iterator EdgeIterator::SampleOccurenceIt [private]

contains the iterator pointing to the sample occurence that constitutes the edge together with SourceVertex/SourceSamleValueIndex


The documentation for this class was generated from the following files:
Generated on Fri Feb 2 13:54:28 2007 for steghide by  doxygen 1.5.1