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.
134 lines
3.6 KiB
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
|