NumeRe v1.1.4
NumeRe: Framework für Numerische Rechnungen
dtl::Diff< elem, sequence, comparator > Class Template Reference

#include <Diff.hpp>

Collaboration diagram for dtl::Diff< elem, sequence, comparator >:

Public Member Functions

 Diff ()
 
 Diff (const sequence &a, const sequence &b)
 
 Diff (const sequence &a, const sequence &b, bool deletesFirst)
 
 Diff (const sequence &a, const sequence &b, const comparator &comp)
 
 Diff (const sequence &a, const sequence &b, bool deleteFirst, const comparator &comp)
 
 ~Diff ()
 
long long getEditDistance () const
 
Lcs< elem > getLcs () const
 
elemVec getLcsVec () const
 
Ses< elem > getSes () const
 
uniHunkVec getUniHunks () const
 
bool isHuge () const
 
void onHuge ()
 
void offHuge ()
 
bool isUnserious () const
 
void onUnserious ()
 
void offUnserious ()
 
void onOnlyEditDistance ()
 
bool hugeEnabled () const
 
void enableHuge ()
 
void disableHuge ()
 
bool trivialEnabled () const
 
void enableTrivial () const
 
void disableTrivial ()
 
void editDistanceOnlyEnabled ()
 
sequence uniPatch (const sequence &seq)
 
sequence patch (const sequence &seq) const
 
void compose ()
 
template<typename stream >
void printSES (stream &out) const
 
void printSES (ostream &out=cout) const
 
template<typename stream , template< typename SEET, typename STRT > class PT>
void printSES (stream &out) const
 
template<typename stream >
void printUnifiedFormat (stream &out) const
 
void printUnifiedFormat (ostream &out=cout) const
 
void composeUnifiedHunks ()
 

Static Public Member Functions

template<typename stream >
static void printSES (const Ses< elem > &s, stream &out)
 
static void printSES (const Ses< elem > &s, ostream &out=cout)
 
template<typename stream >
static void printUnifiedFormat (const uniHunkVec &hunks, stream &out)
 
static void printUnifiedFormat (const uniHunkVec &hunks, ostream &out=cout)
 
template<typename stream >
static Ses< elem > composeSesFromStream (stream &st)
 

Private Member Functions

 dtl_typedefs (elem, sequence) sequence A
 
void init ()
 
long long snake (const long long &k, const long long &above, const long long &below)
 
bool recordSequence (const editPathCordinates &v)
 
void recordOddSequence (long long idx, long long length, sequence_const_iter it, const edit_t et)
 
void joinSesVec (sesElemVec &s1, sesElemVec &s2) const
 
bool wasSwapped () const
 

Private Attributes

sequence B
 
size_t M
 
size_t N
 
size_t delta
 
size_t offset
 
long long * fp
 
long long editDistance
 
Lcs< elem > lcs
 
Ses< elem > ses
 
editPath path
 
editPathCordinates pathCordinates
 
bool swapped
 
bool huge
 
bool trivial
 
bool editDistanceOnly
 
uniHunkVec uniHunks
 
comparator cmp
 

Detailed Description

template<typename elem, typename sequence = vector< elem >, typename comparator = Compare< elem >>
class dtl::Diff< elem, sequence, comparator >

diff class template sequence must support random_access_iterator.

Definition at line 48 of file Diff.hpp.

Constructor & Destructor Documentation

◆ Diff() [1/5]

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
dtl::Diff< elem, sequence, comparator >::Diff ( )
inline

Definition at line 71 of file Diff.hpp.

◆ Diff() [2/5]

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
dtl::Diff< elem, sequence, comparator >::Diff ( const sequence &  a,
const sequence &  b 
)
inline

Definition at line 73 of file Diff.hpp.

References dtl::Diff< elem, sequence, comparator >::init().

Here is the call graph for this function:

◆ Diff() [3/5]

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
dtl::Diff< elem, sequence, comparator >::Diff ( const sequence &  a,
const sequence &  b,
bool  deletesFirst 
)
inline

Definition at line 78 of file Diff.hpp.

References dtl::Diff< elem, sequence, comparator >::init().

Here is the call graph for this function:

◆ Diff() [4/5]

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
dtl::Diff< elem, sequence, comparator >::Diff ( const sequence &  a,
const sequence &  b,
const comparator &  comp 
)
inline

Definition at line 84 of file Diff.hpp.

References dtl::Diff< elem, sequence, comparator >::init().

Here is the call graph for this function:

◆ Diff() [5/5]

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
dtl::Diff< elem, sequence, comparator >::Diff ( const sequence &  a,
const sequence &  b,
bool  deleteFirst,
const comparator &  comp 
)
inline

Definition at line 90 of file Diff.hpp.

References dtl::Diff< elem, sequence, comparator >::init().

Here is the call graph for this function:

◆ ~Diff()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
dtl::Diff< elem, sequence, comparator >::~Diff ( )
inline

Definition at line 97 of file Diff.hpp.

Member Function Documentation

◆ compose()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
void dtl::Diff< elem, sequence, comparator >::compose ( )
inline

◆ composeSesFromStream()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
template<typename stream >
static Ses< elem > dtl::Diff< elem, sequence, comparator >::composeSesFromStream ( stream &  st)
inlinestatic

compose ses from stream

Definition at line 507 of file Diff.hpp.

References dtl::Ses< elem >::addSequence(), dtl::SES_ADD, dtl::SES_COMMON, dtl::SES_DELETE, SES_MARK_ADD, SES_MARK_COMMON, and SES_MARK_DELETE.

Here is the call graph for this function:

◆ composeUnifiedHunks()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
void dtl::Diff< elem, sequence, comparator >::composeUnifiedHunks ( )
inline

◆ disableHuge()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
void dtl::Diff< elem, sequence, comparator >::disableHuge ( )
inline

Definition at line 157 of file Diff.hpp.

◆ disableTrivial()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
void dtl::Diff< elem, sequence, comparator >::disableTrivial ( )
inline

Definition at line 169 of file Diff.hpp.

◆ dtl_typedefs()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
dtl::Diff< elem, sequence, comparator >::dtl_typedefs ( elem  ,
sequence   
)
private

◆ editDistanceOnlyEnabled()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
void dtl::Diff< elem, sequence, comparator >::editDistanceOnlyEnabled ( )
inline

Definition at line 173 of file Diff.hpp.

◆ enableHuge()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
void dtl::Diff< elem, sequence, comparator >::enableHuge ( )
inline

Definition at line 153 of file Diff.hpp.

◆ enableTrivial()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
void dtl::Diff< elem, sequence, comparator >::enableTrivial ( ) const
inline

Definition at line 165 of file Diff.hpp.

◆ getEditDistance()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
long long dtl::Diff< elem, sequence, comparator >::getEditDistance ( ) const
inline

Definition at line 99 of file Diff.hpp.

References dtl::Diff< elem, sequence, comparator >::editDistance.

◆ getLcs()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
Lcs< elem > dtl::Diff< elem, sequence, comparator >::getLcs ( ) const
inline

Definition at line 103 of file Diff.hpp.

References dtl::Diff< elem, sequence, comparator >::lcs.

◆ getLcsVec()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
elemVec dtl::Diff< elem, sequence, comparator >::getLcsVec ( ) const
inline

Definition at line 107 of file Diff.hpp.

References dtl::Diff< elem, sequence, comparator >::lcs.

◆ getSes()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
Ses< elem > dtl::Diff< elem, sequence, comparator >::getSes ( ) const
inline

Definition at line 111 of file Diff.hpp.

References dtl::Diff< elem, sequence, comparator >::ses.

◆ getUniHunks()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
uniHunkVec dtl::Diff< elem, sequence, comparator >::getUniHunks ( ) const
inline

Definition at line 115 of file Diff.hpp.

References dtl::Diff< elem, sequence, comparator >::uniHunks.

◆ hugeEnabled()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
bool dtl::Diff< elem, sequence, comparator >::hugeEnabled ( ) const
inline

Definition at line 149 of file Diff.hpp.

References dtl::Diff< elem, sequence, comparator >::huge.

◆ init()

◆ isHuge()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
bool dtl::Diff< elem, sequence, comparator >::isHuge ( ) const
inline

◆ isUnserious()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
bool dtl::Diff< elem, sequence, comparator >::isUnserious ( ) const
inline

Definition at line 132 of file Diff.hpp.

References dtl::Diff< elem, sequence, comparator >::trivial.

◆ joinSesVec()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
void dtl::Diff< elem, sequence, comparator >::joinSesVec ( sesElemVec &  s1,
sesElemVec &  s2 
) const
inlineprivate

◆ offHuge()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
void dtl::Diff< elem, sequence, comparator >::offHuge ( )
inline

Definition at line 128 of file Diff.hpp.

◆ offUnserious()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
void dtl::Diff< elem, sequence, comparator >::offUnserious ( )
inline

Definition at line 140 of file Diff.hpp.

◆ onHuge()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
void dtl::Diff< elem, sequence, comparator >::onHuge ( )
inline

Definition at line 124 of file Diff.hpp.

◆ onOnlyEditDistance()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
void dtl::Diff< elem, sequence, comparator >::onOnlyEditDistance ( )
inline

Definition at line 144 of file Diff.hpp.

◆ onUnserious()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
void dtl::Diff< elem, sequence, comparator >::onUnserious ( )
inline

Definition at line 136 of file Diff.hpp.

◆ patch()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
sequence dtl::Diff< elem, sequence, comparator >::patch ( const sequence &  seq) const
inline

patching with Shortest Edit Script (SES)

Definition at line 229 of file Diff.hpp.

References dtl::Diff< elem, sequence, comparator >::ses, dtl::SES_ADD, dtl::SES_COMMON, and dtl::SES_DELETE.

◆ printSES() [1/5]

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
static void dtl::Diff< elem, sequence, comparator >::printSES ( const Ses< elem > &  s,
ostream &  out = cout 
)
inlinestatic

Definition at line 331 of file Diff.hpp.

◆ printSES() [2/5]

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
template<typename stream >
static void dtl::Diff< elem, sequence, comparator >::printSES ( const Ses< elem > &  s,
stream &  out 
)
inlinestatic

print differences given an SES

Definition at line 326 of file Diff.hpp.

References dtl::Ses< elem >::getSequence().

Here is the call graph for this function:

◆ printSES() [3/5]

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
void dtl::Diff< elem, sequence, comparator >::printSES ( ostream &  out = cout) const
inline

Definition at line 318 of file Diff.hpp.

◆ printSES() [4/5]

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
template<typename stream >
void dtl::Diff< elem, sequence, comparator >::printSES ( stream &  out) const
inline

print difference between A and B as an SES

Definition at line 313 of file Diff.hpp.

References dtl::Diff< elem, sequence, comparator >::ses.

◆ printSES() [5/5]

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
template<typename stream , template< typename SEET, typename STRT > class PT>
void dtl::Diff< elem, sequence, comparator >::printSES ( stream &  out) const
inline

print difference between A and B as an SES with custom printer

Definition at line 339 of file Diff.hpp.

References dtl::Diff< elem, sequence, comparator >::ses.

◆ printUnifiedFormat() [1/4]

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
static void dtl::Diff< elem, sequence, comparator >::printUnifiedFormat ( const uniHunkVec &  hunks,
ostream &  out = cout 
)
inlinestatic

Definition at line 364 of file Diff.hpp.

◆ printUnifiedFormat() [2/4]

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
template<typename stream >
static void dtl::Diff< elem, sequence, comparator >::printUnifiedFormat ( const uniHunkVec &  hunks,
stream &  out 
)
inlinestatic

print unified format difference with given unified format hunks

Definition at line 360 of file Diff.hpp.

◆ printUnifiedFormat() [3/4]

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
void dtl::Diff< elem, sequence, comparator >::printUnifiedFormat ( ostream &  out = cout) const
inline

Definition at line 352 of file Diff.hpp.

◆ printUnifiedFormat() [4/4]

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
template<typename stream >
void dtl::Diff< elem, sequence, comparator >::printUnifiedFormat ( stream &  out) const
inline

print difference between A and B in the Unified Format

Definition at line 348 of file Diff.hpp.

References dtl::Diff< elem, sequence, comparator >::uniHunks.

Referenced by compareFiles(), and FileRevisions::diff().

◆ recordOddSequence()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
void dtl::Diff< elem, sequence, comparator >::recordOddSequence ( long long  idx,
long long  length,
sequence_const_iter  it,
const edit_t  et 
)
inlineprivate

◆ recordSequence()

◆ snake()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
long long dtl::Diff< elem, sequence, comparator >::snake ( const long long &  k,
const long long &  above,
const long long &  below 
)
inlineprivate

◆ trivialEnabled()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
bool dtl::Diff< elem, sequence, comparator >::trivialEnabled ( ) const
inline

◆ uniPatch()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
sequence dtl::Diff< elem, sequence, comparator >::uniPatch ( const sequence &  seq)
inline

patching with Unified Format Hunks

Definition at line 180 of file Diff.hpp.

References dtl::Diff< elem, sequence, comparator >::joinSesVec(), dtl::SES_ADD, dtl::SES_COMMON, dtl::SES_DELETE, and dtl::Diff< elem, sequence, comparator >::uniHunks.

Here is the call graph for this function:

◆ wasSwapped()

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
bool dtl::Diff< elem, sequence, comparator >::wasSwapped ( ) const
inlineprivate

Member Data Documentation

◆ B

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
sequence dtl::Diff< elem, sequence, comparator >::B
private

◆ cmp

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
comparator dtl::Diff< elem, sequence, comparator >::cmp
private

Definition at line 69 of file Diff.hpp.

Referenced by dtl::Diff< elem, sequence, comparator >::snake().

◆ delta

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
size_t dtl::Diff< elem, sequence, comparator >::delta
private

◆ editDistance

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
long long dtl::Diff< elem, sequence, comparator >::editDistance
private

◆ editDistanceOnly

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
bool dtl::Diff< elem, sequence, comparator >::editDistanceOnly
private

◆ fp

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
long long* dtl::Diff< elem, sequence, comparator >::fp
private

◆ huge

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
bool dtl::Diff< elem, sequence, comparator >::huge
private

◆ lcs

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
Lcs< elem > dtl::Diff< elem, sequence, comparator >::lcs
private

◆ M

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
size_t dtl::Diff< elem, sequence, comparator >::M
private

◆ N

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
size_t dtl::Diff< elem, sequence, comparator >::N
private

◆ offset

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
size_t dtl::Diff< elem, sequence, comparator >::offset
private

◆ path

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
editPath dtl::Diff< elem, sequence, comparator >::path
private

◆ pathCordinates

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
editPathCordinates dtl::Diff< elem, sequence, comparator >::pathCordinates
private

◆ ses

◆ swapped

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
bool dtl::Diff< elem, sequence, comparator >::swapped
private

◆ trivial

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
bool dtl::Diff< elem, sequence, comparator >::trivial
private

◆ uniHunks

template<typename elem , typename sequence = vector< elem >, typename comparator = Compare< elem >>
uniHunkVec dtl::Diff< elem, sequence, comparator >::uniHunks
private

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