annotate kdiff3/src-QT4/merger.cpp @ 113:7bca1f1340f6 tip

Build fixes for Xcode 10 / Qt 5.12
author Chris Cannam
date Mon, 17 Dec 2018 11:13:01 +0000
parents 1184fc843210
children
rev   line source
joachim99@8 1 /***************************************************************************
joachim99@8 2 merger.cpp - description
joachim99@8 3 -------------------
joachim99@8 4 begin : Sun Mar 24 2002
joachim99@77 5 copyright : (C) 2002-2007 by Joachim Eibl
joachim99@69 6 email : joachim.eibl at gmx.de
joachim99@8 7 ***************************************************************************/
joachim99@8 8
joachim99@8 9 /***************************************************************************
joachim99@8 10 * *
joachim99@8 11 * This program is free software; you can redistribute it and/or modify *
joachim99@8 12 * it under the terms of the GNU General Public License as published by *
joachim99@8 13 * the Free Software Foundation; either version 2 of the License, or *
joachim99@8 14 * (at your option) any later version. *
joachim99@8 15 * *
joachim99@8 16 ***************************************************************************/
joachim99@8 17
joachim99@8 18 #include "merger.h"
joachim99@8 19 #include <assert.h>
joachim99@8 20 #include <iostream>
joachim99@8 21 #include <iomanip>
joachim99@8 22
joachim99@8 23 Merger::Merger( const DiffList* pDiffListAB, const DiffList* pDiffListCA )
joachim99@8 24 : md1( pDiffListAB, 0 ), md2( pDiffListCA, 1 )
joachim99@8 25 {
joachim99@8 26 }
joachim99@8 27
joachim99@8 28
joachim99@8 29 Merger::MergeData::MergeData( const DiffList* p, int i )
joachim99@8 30 : d(0,0,0)
joachim99@8 31 {
joachim99@8 32 idx=i;
joachim99@8 33 pDiffList = p;
joachim99@8 34 if ( p!=0 )
joachim99@8 35 {
joachim99@8 36 it=p->begin();
joachim99@8 37 update();
joachim99@8 38 }
joachim99@8 39 }
joachim99@8 40
joachim99@8 41 bool Merger::MergeData::eq()
joachim99@8 42 {
joachim99@8 43 return pDiffList==0 || d.nofEquals > 0;
joachim99@8 44 }
joachim99@8 45
joachim99@8 46 bool Merger::MergeData::isEnd()
joachim99@8 47 {
joachim99@8 48 return ( pDiffList==0 || ( it==pDiffList->end() && d.nofEquals==0 &&
joachim99@8 49 ( idx == 0 ? d.diff1==0 : d.diff2==0 )
joachim99@8 50 ) );
joachim99@8 51 }
joachim99@8 52
joachim99@8 53 void Merger::MergeData::update()
joachim99@8 54 {
joachim99@8 55 if ( d.nofEquals > 0 )
joachim99@8 56 --d.nofEquals;
joachim99@8 57 else if ( idx==0 && d.diff1 > 0 )
joachim99@8 58 --d.diff1;
joachim99@8 59 else if ( idx==1 && d.diff2 > 0 )
joachim99@8 60 --d.diff2;
joachim99@8 61
joachim99@8 62 while( d.nofEquals == 0 && (idx==0 && d.diff1 == 0 || idx==1 && d.diff2 == 0)
joachim99@8 63 && pDiffList!=0 && it != pDiffList->end() )
joachim99@8 64 {
joachim99@8 65 d = *it;
joachim99@8 66 ++it;
joachim99@8 67 }
joachim99@8 68 }
joachim99@8 69
joachim99@8 70 void Merger::next()
joachim99@8 71 {
joachim99@8 72 md1.update();
joachim99@8 73 md2.update();
joachim99@8 74 }
joachim99@8 75
joachim99@8 76 int Merger::whatChanged()
joachim99@8 77 {
joachim99@8 78 int changed = 0;
joachim99@8 79 changed |= md1.eq() ? 0 : 1;
joachim99@8 80 changed |= md2.eq() ? 0 : 2;
joachim99@8 81 return changed;
joachim99@8 82 }
joachim99@8 83
joachim99@8 84 bool Merger::isEndReached()
joachim99@8 85 {
joachim99@8 86 return md1.isEnd() && md2.isEnd();
joachim99@8 87 }