Graph Class Reference

a graph constructed from a cover file and a message to be embedded More...

`#include <Graph.h>`

## Public Member Functions

| Graph (CvrStgFile *cvr, const BitString &emb, Selector &sel)
| ~Graph (void)
unsigned long | getNumVertices (void) const
Vertex * | getVertex (VertexLabel l) const
void | unmarkDeletedAllVertices (void)
float | getAvgVertexDegree (void) const
void | printVerboseInfo (void)
bool | check (bool verbose=false) const
bool | check_Vertices (bool verbose=false) const
bool | check_SampleValues (bool verbose=false) const
bool | check_SampleOccurences (bool verbose=false) const
bool | check_SVALists (bool verbose=false) const

## Private Member Functions

std::list< SampleOccurence >::iterator | markDeletedSampleOccurence (std::list< SampleOccurence >::iterator it)
std::list< SampleOccurence >::iterator | unmarkDeletedSampleOccurence (std::list< SampleOccurence >::iterator it)
void | constructSamples (const std::vector< SamplePos * > &sposs, std::vector< SampleValue ** > &svalues)
void | constructVertices (std::vector< SamplePos * > &sposs, std::vector< SampleValue ** > &svalues, const std::vector< EmbValue > &tvalues)
void | constructEdges (void)
bool | check_SampleOccurences_size (bool verbose=false) const
bool | check_SampleOccurences_correctness (bool verbose=false) const
bool | check_SampleOccurences_completeness (bool verbose=false) const
bool | check_SVALists_size (bool verbose=false) const
bool | check_SVALists_soundness (bool verbose=false) const
bool | check_SVALists_sorted (bool verbose=false) const
bool | check_SVALists_uniqueness (bool verbose=false) const
bool | check_SVALists_completeness (bool verbose=false) const

## Private Attributes

std::vector< Vertex * > | Vertices
| contains the vertices in this graph - Vertices[l] is the vertex with label l
std::vector< SampleValue * > | SampleValues
| contains the list of (unique) sample values - SampleValues[l] is the sample value with label l
std::vector< SampleValueAdjacencyList * > | SVALists
| contains the sample value adjacency lists (SVALists[v] contains only sample values with embedded value v)
std::vector< std::list< SampleOccurence > > | SampleOccurences
| SampleOccurences[l] contains all occurences of the sample value with label l.
std::vector< UWORD32 * > | NumSampleOccurences
std::vector< std::list< SampleOccurence > > | DeletedSampleOccurences
| contains those sample occurences that have been marked as deleted from SampleOccurences
std::vector< UWORD32 * > | NumDeletedSampleOccurences
CvrStgFile * | File
EmbValue | EmbValueModulus
unsigned short | SamplesPerVertex

## Friends

class | WKSConstructionHeuristic
class | EdgeIterator
class | SampleValueAdjacencyList
class | Vertex

## Detailed Description

This class provides a purely graph-theoretic interface to any other class. Some classes however need access to the internal (steganographic) representation, for example: Vertex, EdgeIterator,... . These are declared as friends of Graph here and thus have direct access to the private data structures.

## Constructor & Destructor Documentation

## Graph()

Graph::Graph | ( | CvrStgFile * | cvr,
|  | const BitString & | emb,
|  | Selector & | sel )

construct a graph

Parameters

  cvr | the underlying cover file
  emb | the bitstring to be embedded (with correct arity already set)

## ~Graph()

Graph::~Graph | ( | void |  | ) |

destructor

## Member Function Documentation

## check()

bool Graph::check | ( | bool | verbose = false | ) | const

check the integrity of all data structures, only used for debugging and testing

## check_SampleOccurences()

bool Graph::check_SampleOccurences | ( | bool | verbose = false | ) | const

check the integrity of the SampleOccurences data structure, it is assumed that DeletedSampleOccurences is empty, only used for debugging and testing

## check_SampleOccurences_completeness()

bool Graph::check_SampleOccurences_completeness | ( | bool | verbose = false | ) | const

private

## check_SampleOccurences_correctness()

bool Graph::check_SampleOccurences_correctness | ( | bool | verbose = false | ) | const

private

## check_SampleOccurences_size()

bool Graph::check_SampleOccurences_size | ( | bool | verbose = false | ) | const

private

## check_SampleValues()

bool Graph::check_SampleValues | ( | bool | verbose = false | ) | const

check the integrity of the SampleValues data structure, only used for debugging and testing

## check_SVALists()

bool Graph::check_SVALists | ( | bool | verbose = false | ) | const

check the integrity of the SVALists data structure, only used for debugging and testing

## check_SVALists_completeness()

bool Graph::check_SVALists_completeness | ( | bool | verbose = false | ) | const

private

## check_SVALists_size()

bool Graph::check_SVALists_size | ( | bool | verbose = false | ) | const

private

## check_SVALists_sorted()

bool Graph::check_SVALists_sorted | ( | bool | verbose = false | ) | const

private

## check_SVALists_soundness()

bool Graph::check_SVALists_soundness | ( | bool | verbose = false | ) | const

private

## check_SVALists_uniqueness()

bool Graph::check_SVALists_uniqueness | ( | bool | verbose = false | ) | const

private

## check_Vertices()

bool Graph::check_Vertices | ( | bool | verbose = false | ) | const

check the integrity of the Vertices data structure, only used for debugging and testing

## constructEdges()

void Graph::constructEdges | ( | void |  | ) |

private

construct edge-related data structures

needs: SampleValues, Vertices (except SampleOccurenceIts) provides: SVALists, SampleOccurences, Vertices (SampleOccurenceIts)

## constructSamples()

void Graph::constructSamples | ( | const std::vector< SamplePos * > & | sposs,
|  | std::vector< SampleValue ** > & | svalues )

private

construct sample-related data structures

needs: sposs(unsorted) provides: svalues(unsorted,unique), SampleValues

## constructVertices()

void Graph::constructVertices | ( | std::vector< SamplePos * > & | sposs,
|  | std::vector< SampleValue ** > & | svalues,
|  | const std::vector< EmbValue > & | tvalues )

private

construct vertex-related data structures

needs: sposs(unsorted), svalues(unsorted,unique), tvalues provides: sposs(sorted), Vertices (except SampleOccurenceIts)

## getAvgVertexDegree()

float Graph::getAvgVertexDegree | ( | void |  | ) | const

calculate and return the average vertex degree

## getNumVertices()

unsigned long Graph::getNumVertices | ( | void |  | ) | const

inline

get the number of vertices in this graph

## getVertex()

Vertex * Graph::getVertex | ( | VertexLabel | l | ) | const

inline

get a vertex

Parameters

  l | the vertex label (index) of the vertex to be returned (must be < getNumVertices())

Returns
  the vertex with label l

## markDeletedSampleOccurence()

std::list< SampleOccurence >::iterator Graph::markDeletedSampleOccurence | ( | std::list< SampleOccurence >::iterator | it | ) |

private

## printVerboseInfo()

void Graph::printVerboseInfo | ( | void |  | ) |

## unmarkDeletedAllVertices()

void Graph::unmarkDeletedAllVertices | ( | void |  | ) |

## unmarkDeletedSampleOccurence()

std::list< SampleOccurence >::iterator Graph::unmarkDeletedSampleOccurence | ( | std::list< SampleOccurence >::iterator | it | ) |

private

## Friends And Related Symbol Documentation

## EdgeIterator

friend class EdgeIterator

friend

## SampleValueAdjacencyList

friend class SampleValueAdjacencyList

friend

## Vertex

friend class Vertex

friend

## WKSConstructionHeuristic

friend class WKSConstructionHeuristic

friend

## Member Data Documentation

## DeletedSampleOccurences

std::vector<std::list<SampleOccurence> > Graph::DeletedSampleOccurences

private

## EmbValueModulus

EmbValue Graph::EmbValueModulus

private

## File

CvrStgFile* Graph::File

private

## NumDeletedSampleOccurences

std::vector<UWORD32*> Graph::NumDeletedSampleOccurences

private

## NumSampleOccurences

std::vector<UWORD32*> Graph::NumSampleOccurences

private

NumSampleOccurences[l][t] contains the number vertices that contain the sample value with label l and associated target t

## SampleOccurences

std::vector<std::list<SampleOccurence> > Graph::SampleOccurences

private

## SamplesPerVertex

unsigned short Graph::SamplesPerVertex

private

## SampleValues

std::vector<SampleValue*> Graph::SampleValues

private

## SVALists

std::vector<SampleValueAdjacencyList*> Graph::SVALists

private

## Vertices

std::vector<Vertex*> Graph::Vertices

private

The documentation for this class was generated from the following files:

- Graph.h
- Graph.cc