You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdesdk/kompare/libdiff2/parserbase.h

134 lines
3.6 KiB

/**************************************************************************
** parserbase.h
** -------------------
** begin : Tue Jul 30 23:53:52 2002
** copyright : (C) 2002-2004 Otto Bruggeman
** email : otto.bruggeman@home.nl
**
***************************************************************************/
/***************************************************************************
**
** 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 _DIFF2_PARSERBASE_H
#define _DIFF2_PARSERBASE_H
#include <tqregexp.h>
#include "kompare.h"
#include "difference.h"
#include "diffmodellist.h"
class TQStringList;
class TQString;
namespace Diff2
{
class KompareModelList;
class ParserBase
{
public:
ParserBase( const KompareModelList* list, const TQStringList& diff );
virtual ~ParserBase();
public:
enum Kompare::Format format() { return determineFormat(); };
DiffModelList* parse();
protected:
virtual bool parseContextDiffHeader();
virtual bool parseEdDiffHeader();
virtual bool parseNormalDiffHeader();
virtual bool parseRCSDiffHeader();
virtual bool parseUnifiedDiffHeader();
virtual bool parseContextHunkHeader();
virtual bool parseEdHunkHeader();
virtual bool parseNormalHunkHeader();
virtual bool parseRCSHunkHeader();
virtual bool parseUnifiedHunkHeader();
virtual bool parseContextHunkBody();
virtual bool parseEdHunkBody();
virtual bool parseNormalHunkBody();
virtual bool parseRCSHunkBody();
virtual bool parseUnifiedHunkBody();
virtual DiffModelList* parseContext();
virtual DiffModelList* parseEd();
virtual DiffModelList* parseNormal();
virtual DiffModelList* parseRCS();
virtual DiffModelList* parseUnified();
protected: // Helper methods to speed things up
bool matchesUnifiedHunkLine( TQString line ) const;
protected:
/** What is format of the diff */
virtual enum Kompare::Format determineFormat();
protected:
// Regexps for context parsing
TQRegExp m_contextDiffHeader1;
TQRegExp m_contextDiffHeader2;
TQRegExp m_contextHunkHeader1;
TQRegExp m_contextHunkHeader2;
TQRegExp m_contextHunkHeader3;
TQRegExp m_contextHunkBodyRemoved;
TQRegExp m_contextHunkBodyAdded;
TQRegExp m_contextHunkBodyChanged;
TQRegExp m_contextHunkBodyContext;
TQRegExp m_contextHunkBodyLine; // Added for convenience
// Regexps for normal parsing
TQRegExp m_normalDiffHeader;
TQRegExp m_normalHunkHeaderAdded;
TQRegExp m_normalHunkHeaderRemoved;
TQRegExp m_normalHunkHeaderChanged;
TQRegExp m_normalHunkBodyRemoved;
TQRegExp m_normalHunkBodyAdded;
TQRegExp m_normalHunkBodyDivider;
enum Difference::Type m_normalDiffType;
// RegExps for rcs parsing
TQRegExp m_rcsDiffHeader;
// Regexps for unified parsing
TQRegExp m_unifiedDiffHeader1;
TQRegExp m_unifiedDiffHeader2;
TQRegExp m_unifiedHunkHeader;
TQRegExp m_unifiedHunkBodyAdded;
TQRegExp m_unifiedHunkBodyRemoved;
TQRegExp m_unifiedHunkBodyContext;
TQRegExp m_unifiedHunkBodyLine; // Added for convenience
protected:
const TQStringList& m_diffLines;
DiffModel* m_currentModel;
DiffModelList* m_models;
TQStringList::ConstIterator m_diffIterator;
bool m_singleFileDiff;
protected:
const KompareModelList* m_list;
};
} // End of namespace Diff2
#endif