steghide  0.5.1
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
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
 
VertexgetVertex (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 More...
 
std::vector< SampleValue * > SampleValues
 contains the list of (unique) sample values - SampleValues[l] is the sample value with label l More...
 
std::vector< SampleValueAdjacencyList * > SVALists
 contains the sample value adjacency lists (SVALists[v] contains only sample values with embedded value v) More...
 
std::vector< std::list< SampleOccurence > > SampleOccurences
 SampleOccurences[l] contains all occurences of the sample value with label l. More...
 
std::vector< UWORD32 * > NumSampleOccurences
 
std::vector< std::list< SampleOccurence > > DeletedSampleOccurences
 contains those sample occurences that have been marked as deleted from SampleOccurences More...
 
std::vector< UWORD32 * > NumDeletedSampleOccurences
 
CvrStgFileFile
 
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
cvrthe underlying cover file
embthe 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
lthe 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 Function 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: