steghide
0.5.1
|
allows an iteration trough all edges of a vertex More...
#include <EdgeIterator.h>
Public Types | |
enum | ITERATIONMODE { SAMPLEOCCURENCE, SAMPLEVALUE } |
Public Member Functions | |
EdgeIterator (void) | |
EdgeIterator (Vertex *v, ITERATIONMODE m=SAMPLEOCCURENCE) | |
EdgeIterator (const EdgeIterator &eit) | |
~EdgeIterator (void) | |
const Edge * | operator* (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*) More... | |
ITERATIONMODE | Mode |
mode of iteration More... | |
unsigned long * | SVALIndices |
contains (for every sample value) an index to the current opposite neighbour More... | |
UWORD32 | EdgeIndex |
the index/number of the edge that is currently returned by operator* More... | |
bool | Finished |
is true iff there are no more edges for this source vertex More... | |
std::list< SampleOccurence >::const_iterator | SampleOccurenceIt |
Static Private Attributes | |
static UWORD32 | MaxNumEdges = UWORD32_MAX |
the maximum number of edges the EdgeIterator should iterate through More... | |
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.
EdgeIterator::EdgeIterator | ( | void | ) |
the default contructor - does not create a valid object
EdgeIterator::EdgeIterator | ( | Vertex * | v, |
ITERATIONMODE | m = SAMPLEOCCURENCE |
||
) |
v | the source vertex |
EdgeIterator::EdgeIterator | ( | const EdgeIterator & | eit | ) |
the copy constructor
EdgeIterator::~EdgeIterator | ( | 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
|
inlinestatic |
|
inline |
get the label of the partner vertex
|
private |
|
inline |
|
inline |
get the current edge
void EdgeIterator::operator++ | ( | void | ) |
set this iterator to next edge
void EdgeIterator::print | ( | unsigned short | spc = 0 | ) | const |
void EdgeIterator::reset | ( | Vertex * | v, |
ITERATIONMODE | m = SAMPLEOCCURENCE |
||
) |
set this iterator to first (shortest) edge of vertex v
v | new vertex (don't change if it is NULL) |
void EdgeIterator::reset | ( | ITERATIONMODE | m = SAMPLEOCCURENCE | ) |
reset this iterator to first (shortest) edge
|
inlinestatic |
|
private |
|
private |
|
private |
|
staticprivate |
|
private |
|
private |
contains the iterator pointing to the sample occurence that constitutes the edge together with SourceVertex/SourceSamleValueIndex
|
private |