Commit 646c7f72 authored by Michael Reeves's avatar Michael Reeves

Use enum for winIndex.

Enum types garentee a valid value as only defined values can be
assigned. This is also more readable than seeing magic numbers.
parent 18f3466e
......@@ -13,6 +13,7 @@
#include "options.h"
#include "diff.h"
#include <QColor>
#include <QMouseEvent>
#include <QPainter>
#include <QPixmap>
......@@ -120,7 +121,7 @@ void Overview::drawColumn(QPainter& p, e_OverviewMode eOverviewMode, int x, int
e_MergeDetails md;
bool bConflict;
bool bLineRemoved;
int src;
e_SrcSelector src;
d3l.mergeOneLine(md, bConflict, bLineRemoved, src, !m_bTripleDiff);
QColor c = m_pOptions->m_bgColor;
......
This diff is collapsed.
......@@ -20,6 +20,18 @@
#include "gnudiff_diff.h"
#include "SourceData.h"
//enum must be sequential with no gaps to allow loop interiation of values
enum e_SrcSelector
{
Min = -1,
Invalid=-1,
None=0,
A = 1,
B = 2,
C = 3,
Max=C
};
enum e_MergeDetails
{
eDefault,
......@@ -157,15 +169,15 @@ class Diff3Line
return lineA == d3l.lineA && lineB == d3l.lineB && lineC == d3l.lineC && bAEqB == d3l.bAEqB && bAEqC == d3l.bAEqC && bBEqC == d3l.bBEqC;
}
const LineData* getLineData(int src) const
const LineData* getLineData(e_SrcSelector src) const
{
Q_ASSERT(m_pDiffBufferInfo != nullptr);
if(src == 1 && lineA >= 0) return &m_pDiffBufferInfo->m_pLineDataA[lineA];
if(src == 2 && lineB >= 0) return &m_pDiffBufferInfo->m_pLineDataB[lineB];
if(src == 3 && lineC >= 0) return &m_pDiffBufferInfo->m_pLineDataC[lineC];
if(src == A && lineA >= 0) return &m_pDiffBufferInfo->m_pLineDataA[lineA];
if(src == B && lineB >= 0) return &m_pDiffBufferInfo->m_pLineDataB[lineB];
if(src == C && lineC >= 0) return &m_pDiffBufferInfo->m_pLineDataC[lineC];
return nullptr;
}
QString getString(int src) const
QString getString(const e_SrcSelector src) const
{
const LineData* pld = getLineData(src);
if(pld)
......@@ -173,38 +185,38 @@ class Diff3Line
else
return QString();
}
LineRef getLineInFile(int src) const
LineRef getLineInFile(e_SrcSelector src) const
{
if(src == 1) return lineA;
if(src == 2) return lineB;
if(src == 3) return lineC;
if(src == A) return lineA;
if(src == B) return lineB;
if(src == C) return lineC;
return -1;
}
bool fineDiff(const int selector, const LineData* v1, const LineData* v2);
void mergeOneLine(e_MergeDetails& mergeDetails, bool& bConflict, bool& bLineRemoved, int& src, bool bTwoInputs) const;
bool fineDiff(const e_SrcSelector selector, const LineData* v1, const LineData* v2);
void mergeOneLine(e_MergeDetails& mergeDetails, bool& bConflict, bool& bLineRemoved, e_SrcSelector& src, bool bTwoInputs) const;
void getLineInfo(const int winIdx, const bool isTriple, int& lineIdx,
void getLineInfo(const e_SrcSelector winIdx, const bool isTriple, int& lineIdx,
DiffList*& pFineDiff1, DiffList*& pFineDiff2, // return values
int& changed, int& changed2) const;
private:
void setFineDiff(const int selector, DiffList* pDiffList)
void setFineDiff(const e_SrcSelector selector, DiffList* pDiffList)
{
Q_ASSERT(selector == 1 || selector == 2 || selector == 3);
if(selector == 1)
Q_ASSERT(selector == A || selector == B || selector == C);
if(selector == A)
{
if(pFineAB != nullptr)
delete pFineAB;
pFineAB = pDiffList;
}
else if(selector == 2)
else if(selector == B)
{
if(pFineBC != nullptr)
delete pFineBC;
pFineBC = pDiffList;
}
else if(selector == 3)
else if(selector == C)
{
if(pFineCA)
delete pFineCA;
......@@ -216,7 +228,7 @@ class Diff3Line
class Diff3LineList : public QList<Diff3Line>
{
public:
bool fineDiff(const int selector, const LineData* v1, const LineData* v2);
bool fineDiff(const e_SrcSelector selector, const LineData* v1, const LineData* v2);
void calcDiff3LineVector(Diff3LineVector& d3lv);
void calcWhiteDiff3Lines(const LineData* pldA, const LineData* pldB, const LineData* pldC);
};
......@@ -293,15 +305,15 @@ class ManualDiffHelpEntry
LineRef lineC1 = -1;
LineRef lineC2 = -1;
public:
LineRef& firstLine(int winIdx)
LineRef& firstLine(e_SrcSelector winIdx)
{
return winIdx == 1 ? lineA1 : (winIdx == 2 ? lineB1 : lineC1);
return winIdx == A ? lineA1 : (winIdx == B ? lineB1 : lineC1);
}
LineRef& lastLine(int winIdx)
LineRef& lastLine(e_SrcSelector winIdx)
{
return winIdx == 1 ? lineA2 : (winIdx == 2 ? lineB2 : lineC2);
return winIdx == A ? lineA2 : (winIdx == B ? lineB2 : lineC2);
}
bool isLineInRange(LineRef line, int winIdx)
bool isLineInRange(LineRef line, e_SrcSelector winIdx)
{
return line >= 0 && line >= firstLine(winIdx) && line <= lastLine(winIdx);
}
......@@ -313,35 +325,35 @@ class ManualDiffHelpEntry
int calcManualDiffFirstDiff3LineIdx(const Diff3LineVector& d3lv);
void getRangeForUI(const int winIdx, int *rangeLine1, int *rangeLine2) const {
if(winIdx == 1) {
void getRangeForUI(const e_SrcSelector winIdx, int *rangeLine1, int *rangeLine2) const {
if(winIdx == A) {
*rangeLine1 = lineA1;
*rangeLine2 = lineA2;
}
if(winIdx == 2) {
if(winIdx == B) {
*rangeLine1 = lineB1;
*rangeLine2 = lineB2;
}
if(winIdx == 3) {
if(winIdx == C) {
*rangeLine1 = lineC1;
*rangeLine2 = lineC2;
}
}
inline int getLine1(const int winIdx) const { return winIdx == 1 ? lineA1 : winIdx == 2 ? lineB1 : lineC1;}
inline int getLine2(const int winIdx) const { return winIdx == 1 ? lineA2 : winIdx == 2 ? lineB2 : lineC2;}
bool isValidMove(int line1, int line2, int winIdx1, int winIdx2) const;
inline int getLine1(const e_SrcSelector winIdx) const { return winIdx == A ? lineA1 : winIdx == B ? lineB1 : lineC1;}
inline int getLine2(const e_SrcSelector winIdx) const { return winIdx == A ? lineA2 : winIdx == B ? lineB2 : lineC2;}
bool isValidMove(int line1, int line2, e_SrcSelector winIdx1, e_SrcSelector winIdx2) const;
};
// A list of corresponding ranges
class ManualDiffHelpList: public std::list<ManualDiffHelpEntry>
{
public:
bool isValidMove(int line1, int line2, int winIdx1, int winIdx2) const;
void insertEntry(int winIdx, LineRef firstLine, LineRef lastLine);
bool isValidMove(int line1, int line2, e_SrcSelector winIdx1, e_SrcSelector winIdx2) const;
void insertEntry(e_SrcSelector winIdx, LineRef firstLine, LineRef lastLine);
bool runDiff(const LineData* p1, LineRef size1, const LineData* p2, LineRef size2, DiffList& diffList,
int winIdx1, int winIdx2,
e_SrcSelector winIdx1, e_SrcSelector winIdx2,
Options* pOptions);
};
......
......@@ -60,7 +60,7 @@ class DiffTextWindowData
m_fastSelectorLine1 = 0;
m_fastSelectorNofLines = 0;
m_bTriple = false;
m_winIdx = 0;
m_winIdx = None;
m_firstLine = 0;
m_oldFirstLine = 0;
m_horizScrollOffset = 0;
......@@ -115,7 +115,7 @@ class DiffTextWindowData
int m_fastSelectorNofLines;
bool m_bTriple;
int m_winIdx;
e_SrcSelector m_winIdx;
int m_firstLine;
int m_oldFirstLine;
int m_horizScrollOffset;
......@@ -161,7 +161,7 @@ DiffTextWindow::DiffTextWindow(
DiffTextWindowFrame* pParent,
QStatusBar* pStatusBar,
Options* pOptions,
int winIdx)
e_SrcSelector winIdx)
: QWidget(pParent)
{
setObjectName(QString("DiffTextWindow%1").arg(winIdx));
......@@ -1060,19 +1060,19 @@ void DiffTextWindowData::draw(RLPainter& p, const QRect& invalidRect, int device
{
m_lineNumberWidth = m_pOptions->m_bShowLineNumbers ? (int)log10((double)std::max(m_size, 1)) + 1 : 0;
if(m_winIdx == 1)
if(m_winIdx == A)
{
m_cThis = m_pOptions->m_colorA;
m_cDiff1 = m_pOptions->m_colorB;
m_cDiff2 = m_pOptions->m_colorC;
}
if(m_winIdx == 2)
if(m_winIdx == B)
{
m_cThis = m_pOptions->m_colorB;
m_cDiff1 = m_pOptions->m_colorC;
m_cDiff2 = m_pOptions->m_colorA;
}
if(m_winIdx == 3)
if(m_winIdx == C)
{
m_cThis = m_pOptions->m_colorC;
m_cDiff1 = m_pOptions->m_colorA;
......@@ -1392,20 +1392,20 @@ void DiffTextWindow::setSelection(int firstLine, int startPos, int lastLine, int
int DiffTextWindowData::convertLineOnScreenToLineInSource(int lineOnScreen, e_CoordType coordType, bool bFirstLine)
{
int line = -1;
LineRef line = -1;
if(lineOnScreen >= 0)
{
if(coordType == eWrapCoords) return lineOnScreen;
int d3lIdx = m_pDiffTextWindow->convertLineToDiff3LineIdx(lineOnScreen);
if(!bFirstLine && d3lIdx >= (int)m_pDiff3LineVector->size())
if(!bFirstLine && d3lIdx >= m_pDiff3LineVector->size())
d3lIdx = m_pDiff3LineVector->size() - 1;
if(coordType == eD3LLineCoords) return d3lIdx;
while(line < 0 && d3lIdx < (int)m_pDiff3LineVector->size() && d3lIdx >= 0)
while(line < 0 && d3lIdx < m_pDiff3LineVector->size() && d3lIdx >= 0)
{
const Diff3Line* d3l = (*m_pDiff3LineVector)[d3lIdx];
if(m_winIdx == 1) line = d3l->getLineA();
if(m_winIdx == 2) line = d3l->getLineB();
if(m_winIdx == 3) line = d3l->getLineC();
if(m_winIdx == A) line = d3l->getLineA();
if(m_winIdx == B) line = d3l->getLineB();
if(m_winIdx == C) line = d3l->getLineC();
if(bFirstLine)
++d3lIdx;
else
......@@ -1730,10 +1730,10 @@ class DiffTextWindowFrameData
QLabel* m_pEncoding;
QLabel* m_pLineEndStyle;
QWidget* m_pTopLineWidget;
int m_winIdx;
e_SrcSelector m_winIdx;
};
DiffTextWindowFrame::DiffTextWindowFrame(QWidget* pParent, QStatusBar* pStatusBar, Options* pOptions, int winIdx, SourceData* psd)
DiffTextWindowFrame::DiffTextWindowFrame(QWidget* pParent, QStatusBar* pStatusBar, Options* pOptions, e_SrcSelector winIdx, SourceData* psd)
: QWidget(pParent)
{
d = new DiffTextWindowFrameData;
......@@ -1859,11 +1859,11 @@ bool DiffTextWindowFrame::eventFilter(QObject* o, QEvent* e)
{
QColor c1 = d->m_pOptions->m_bgColor;
QColor c2;
if(d->m_winIdx == 1)
if(d->m_winIdx == A)
c2 = d->m_pOptions->m_colorA;
else if(d->m_winIdx == 2)
else if(d->m_winIdx == B)
c2 = d->m_pOptions->m_colorB;
else if(d->m_winIdx == 3)
else if(d->m_winIdx == C)
c2 = d->m_pOptions->m_colorC;
QPalette p = d->m_pTopLineWidget->palette();
......
......@@ -29,7 +29,7 @@ class DiffTextWindow : public QWidget
{
Q_OBJECT
public:
DiffTextWindow(DiffTextWindowFrame* pParent, QStatusBar* pStatusBar, Options* pOptions, int winIdx);
DiffTextWindow(DiffTextWindowFrame* pParent, QStatusBar* pStatusBar, Options* pOptions, e_SrcSelector winIdx);
~DiffTextWindow() override;
void init(
const QString& fileName,
......@@ -77,7 +77,7 @@ Q_SIGNALS:
void selectionEnd();
void setFastSelectorLine( int line );
void gotFocus();
void lineClicked( int winIdx, int line );
void lineClicked( e_SrcSelector winIdx, int line );
public Q_SLOTS:
void setFirstLine( int line );
......@@ -111,14 +111,14 @@ class DiffTextWindowFrame : public QWidget
{
Q_OBJECT
public:
DiffTextWindowFrame( QWidget* pParent, QStatusBar* pStatusBar, Options* pOptions, int winIdx, SourceData* psd);
DiffTextWindowFrame( QWidget* pParent, QStatusBar* pStatusBar, Options* pOptions, e_SrcSelector winIdx, SourceData* psd);
~DiffTextWindowFrame() override;
DiffTextWindow* getDiffTextWindow();
void init();
void setFirstLine(int firstLine);
void sendEncodingChangedSignal(QTextCodec* c);
Q_SIGNALS:
void fileNameChanged(const QString&, int);
void fileNameChanged(const QString&, e_SrcSelector);
void encodingChanged(QTextCodec*);
protected:
bool eventFilter( QObject*, QEvent* ) override;
......
/***************************************************************************
kdiff3.h - description
-------------------
begin : Don Jul 11 12:31:29 CEST 2002
copyright : (C) 2002-2007 by Joachim Eibl
email : joachim.eibl at gmx.de
***************************************************************************/
/***************************************************************************
* Copyright (C) 2002-2007 by Joachim Eibl <joachim.eibl at gmx.de> *
* Copyright (C) 2018 Michael Reeves reeves.87@gmail.com *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
......@@ -155,7 +149,7 @@ class KDiff3App : public QSplitter
void slotFileOpen2(const QString& fn1, const QString& fn2, const QString& fn3, const QString& ofn,
const QString& an1, const QString &an2, const QString& an3, TotalDiffStatus* pTotalDiffStatus);
void slotFileNameChanged(const QString& fileName, int winIdx);
void slotFileNameChanged(const QString& fileName, e_SrcSelector winIdx);
/** save a document */
void slotFileSave();
......@@ -412,7 +406,7 @@ class KDiff3App : public QSplitter
bool canContinue();
void choose(int choice);
void choose(e_SrcSelector choice);
KActionCollection* actionCollection();
QStatusBar* statusBar();
......
......@@ -136,7 +136,7 @@ void MergeResultWindow::init(
m_maxTextWidth = -1;
merge(g_bAutoSolve, -1);
merge(g_bAutoSolve, Invalid);
g_bAutoSolve = true;
update();
updateSourceMask();
......@@ -181,12 +181,12 @@ void MergeResultWindow::reset()
// Results will be stored in mergeDetails, bConflict, bLineRemoved and src.
void Diff3Line::mergeOneLine(
e_MergeDetails& mergeDetails, bool& bConflict,
bool& bLineRemoved, int& src, bool bTwoInputs) const
bool& bLineRemoved, e_SrcSelector& src, bool bTwoInputs) const
{
mergeDetails = eDefault;
bConflict = false;
bLineRemoved = false;
src = 0;
src = None;
if(bTwoInputs) // Only two input files
{
......@@ -325,7 +325,7 @@ bool MergeResultWindow::sameKindCheck(const MergeLine& ml1, const MergeLine& ml2
(!ml1.bDelta && !ml2.bDelta));
}
void MergeResultWindow::merge(bool bAutoSolve, int defaultSelector, bool bConflictsOnly, bool bWhiteSpaceOnly)
void MergeResultWindow::merge(bool bAutoSolve, e_SrcSelector defaultSelector, bool bConflictsOnly, bool bWhiteSpaceOnly)
{
if(!bConflictsOnly)
{
......@@ -401,15 +401,17 @@ void MergeResultWindow::merge(bool bAutoSolve, int defaultSelector, bool bConfli
bool bSolveWhiteSpaceConflicts = false;
if(bAutoSolve) // when true, then the other params are not used and we can change them here. (see all invocations of merge())
{
if(m_pldC == nullptr && m_pOptions->m_whiteSpace2FileMergeDefault != 0) // Only two inputs
if(m_pldC == nullptr && m_pOptions->m_whiteSpace2FileMergeDefault != None) // Only two inputs
{
defaultSelector = m_pOptions->m_whiteSpace2FileMergeDefault;
Q_ASSERT(m_pOptions->m_whiteSpace2FileMergeDefault <= Max && m_pOptions->m_whiteSpace2FileMergeDefault >= Min);
defaultSelector = (e_SrcSelector)m_pOptions->m_whiteSpace2FileMergeDefault;
bWhiteSpaceOnly = true;
bSolveWhiteSpaceConflicts = true;
}
else if(m_pldC != nullptr && m_pOptions->m_whiteSpace3FileMergeDefault != 0)
else if(m_pldC != nullptr && m_pOptions->m_whiteSpace3FileMergeDefault != None)
{
defaultSelector = m_pOptions->m_whiteSpace3FileMergeDefault;
Q_ASSERT(m_pOptions->m_whiteSpace3FileMergeDefault <= Max && m_pOptions->m_whiteSpace2FileMergeDefault >= Min);
defaultSelector = (e_SrcSelector)m_pOptions->m_whiteSpace3FileMergeDefault;
bWhiteSpaceOnly = true;
bSolveWhiteSpaceConflicts = true;
}
......@@ -963,7 +965,7 @@ void MergeResultWindow::setFastSelector(MergeLineList::iterator i)
emit updateAvailabilities();
}
void MergeResultWindow::choose(int selector)
void MergeResultWindow::choose(e_SrcSelector selector)
{
if(m_currentMergeLineIt == m_mergeLineList.end())
return;
......@@ -1049,7 +1051,7 @@ void MergeResultWindow::choose(int selector)
}
// bConflictsOnly: automatically choose for conflicts only (true) or for everywhere (false)
void MergeResultWindow::chooseGlobal(int selector, bool bConflictsOnly, bool bWhiteSpaceOnly)
void MergeResultWindow::chooseGlobal(e_SrcSelector selector, bool bConflictsOnly, bool bWhiteSpaceOnly)
{
resetSelection();
......@@ -1062,7 +1064,7 @@ void MergeResultWindow::chooseGlobal(int selector, bool bConflictsOnly, bool bWh
void MergeResultWindow::slotAutoSolve()
{
resetSelection();
merge(true, -1);
merge(true, Invalid);
setModified(true);
update();
showUnsolvedConflictsStatusMessage();
......@@ -1071,7 +1073,7 @@ void MergeResultWindow::slotAutoSolve()
void MergeResultWindow::slotUnsolve()
{
resetSelection();
merge(false, -1);
merge(false, Invalid);
setModified(true);
update();
showUnsolvedConflictsStatusMessage();
......@@ -1208,7 +1210,7 @@ QString calcHistorySortKey(const QString& keyOrder, QRegExp& matchedRegExpr, con
}
void MergeResultWindow::collectHistoryInformation(
int src, Diff3LineList::const_iterator &iHistoryBegin, Diff3LineList::const_iterator &iHistoryEnd,
e_SrcSelector src, Diff3LineList::const_iterator &iHistoryBegin, Diff3LineList::const_iterator &iHistoryEnd,
HistoryMap& historyMap,
std::list<HistoryMap::iterator>& hitList // list of iterators
)
......
......@@ -23,14 +23,6 @@
class QPainter;
class RLPainter;
enum e_MergeSrcSelector
{
A=1,
B=2,
C=3
};
class MergeResultWindow : public QWidget
{
Q_OBJECT
......@@ -49,8 +41,8 @@ public:
bool saveDocument( const QString& fileName, QTextCodec* pEncoding, e_LineEndStyle eLineEndStyle );
int getNrOfUnsolvedConflicts(int* pNrOfWhiteSpaceConflicts=nullptr);
void choose(int selector);
void chooseGlobal(int selector, bool bConflictsOnly, bool bWhiteSpaceOnly );
void choose(e_SrcSelector selector);
void chooseGlobal(e_SrcSelector selector, bool bConflictsOnly, bool bWhiteSpaceOnly );
int getMaxTextWidth(); // width of longest text line
int getNofLines();
......@@ -107,7 +99,7 @@ Q_SIGNALS:
void noRelevantChangesDetected();
private:
void merge(bool bAutoSolve, int defaultSelector, bool bConflictsOnly=false, bool bWhiteSpaceOnly=false );
void merge(bool bAutoSolve, e_SrcSelector defaultSelector, bool bConflictsOnly=false, bool bWhiteSpaceOnly=false );
QString getString( int lineIdx );
Options* m_pOptions;
......@@ -131,23 +123,23 @@ private:
class MergeEditLine
{
public:
explicit MergeEditLine(const Diff3LineList::const_iterator &i, int src=0){m_id3l=i; m_src=src; m_bLineRemoved=false; }
void setConflict() { m_src=0; m_bLineRemoved=false; m_str=QString(); }
bool isConflict() { return m_src==0 && !m_bLineRemoved && m_str.isEmpty(); }
void setRemoved(int src=0) { m_src=src; m_bLineRemoved=true; m_str=QString(); }
explicit MergeEditLine(const Diff3LineList::const_iterator &i, e_SrcSelector src=None){m_id3l=i; m_src=src; m_bLineRemoved=false; }
void setConflict() { m_src=None; m_bLineRemoved=false; m_str=QString(); }
bool isConflict() { return m_src==None && !m_bLineRemoved && m_str.isEmpty(); }
void setRemoved(e_SrcSelector src=None) { m_src=src; m_bLineRemoved=true; m_str=QString(); }
bool isRemoved() { return m_bLineRemoved; }
bool isEditableText() { return !isConflict() && !isRemoved(); }
void setString( const QString& s ){ m_str=s; m_bLineRemoved=false; m_src=0; }
void setString( const QString& s ){ m_str=s; m_bLineRemoved=false; m_src=None; }
QString getString( const MergeResultWindow* );
bool isModified() { return ! m_str.isEmpty() || (m_bLineRemoved && m_src==0); }
bool isModified() { return ! m_str.isEmpty() || (m_bLineRemoved && m_src==None); }
void setSource( int src, bool bLineRemoved ) { m_src=src; m_bLineRemoved =bLineRemoved; }
int src() { return m_src; }
void setSource( e_SrcSelector src, bool bLineRemoved ) { m_src=src; m_bLineRemoved =bLineRemoved; }
e_SrcSelector src() { return m_src; }
Diff3LineList::const_iterator id3l(){return m_id3l;}
// getString() is implemented as MergeResultWindow::getString()
private:
Diff3LineList::const_iterator m_id3l;
int m_src; // 1, 2 or 3 for A, B or C respectively, or 0 when line is from neither source.
e_SrcSelector m_src; // 1, 2 or 3 for A, B or C respectively, or 0 when line is from neither source.
QString m_str; // String when modified by user or null-string when orig data is used.
bool m_bLineRemoved;
};
......@@ -212,7 +204,7 @@ private:
{
MergeLine()
{
srcSelect=0; mergeDetails=eDefault; d3lLineIdx = -1; srcRangeLength=0;
srcSelect=None; mergeDetails=eDefault; d3lLineIdx = -1; srcRangeLength=0;
bConflict=false; bDelta=false; bWhiteSpaceConflict=false;
}
Diff3LineList::const_iterator id3l;
......@@ -222,7 +214,7 @@ private:
bool bConflict;
bool bWhiteSpaceConflict;
bool bDelta;
int srcSelect;
e_SrcSelector srcSelect;
MergeEditLineList mergeEditLineList;
void split( MergeLine& ml2, int d3lLineIdx2 ) // The caller must insert the ml2 after this ml in the m_mergeLineList
{
......@@ -277,7 +269,7 @@ private:
bool staysInPlace( bool bThreeInputs, Diff3LineList::const_iterator& iHistoryEnd );
};
typedef std::map<QString,HistoryMapEntry> HistoryMap;
void collectHistoryInformation( int src, Diff3LineList::const_iterator &iHistoryBegin, Diff3LineList::const_iterator &iHistoryEnd, HistoryMap& historyMap, std::list< HistoryMap::iterator >& hitList );
void collectHistoryInformation( e_SrcSelector src, Diff3LineList::const_iterator &iHistoryBegin, Diff3LineList::const_iterator &iHistoryEnd, HistoryMap& historyMap, std::list< HistoryMap::iterator >& hitList );
typedef std::list<MergeLine> MergeLineList;
MergeLineList m_mergeLineList;
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment