diff options
Diffstat (limited to 'src/merger.h')
-rw-r--r-- | src/merger.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/merger.h b/src/merger.h new file mode 100644 index 0000000..3712a2f --- /dev/null +++ b/src/merger.h @@ -0,0 +1,61 @@ +/*************************************************************************** + merger.h - description + ------------------- + begin : Sun Mar 24 2002 + copyright : (C) 2002-2007 by Joachim Eibl + email : joachim.eibl at gmx.de + ***************************************************************************/ + +/*************************************************************************** + * * + * 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 * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef MERGER_H +#define MERGER_H + +#include "diff.h" + + +class Merger +{ +public: + + Merger( const DiffList* pDiffList1, const DiffList* pDiffList2 ); + + /** Go one step. */ + void next(); + + /** Information about what changed. Can be used for coloring. + The return value is 0 if nothing changed here, + bit 1 is set if a difference from pDiffList1 was detected, + bit 2 is set if a difference from pDiffList2 was detected. + */ + int whatChanged(); + + /** End of both diff lists reached. */ + bool isEndReached(); +private: + + struct MergeData + { + DiffList::const_iterator it; + const DiffList* pDiffList; + Diff d; + int idx; + + MergeData( const DiffList* p, int i ); + bool eq(); + void update(); + bool isEnd(); + }; + + MergeData md1; + MergeData md2; +}; + +#endif |