1#pragma once
2
3/****************************************************************************************
4 ** GitQlient is an application to manage and operate one or several Git repositories. With
5 ** GitQlient you will be able to add commits, branches and manage all the options Git provides.
6 ** Copyright (C) 2021 Francesc Martinez
7 **
8 ** LinkedIn: www.linkedin.com/in/cescmm/
9 ** Web: www.francescmm.com
10 **
11 ** This program is free software; you can redistribute it and/or
12 ** modify it under the terms of the GNU Lesser General Public
13 ** License as published by the Free Software Foundation; either
14 ** version 2 of the License, or (at your option) any later version.
15 **
16 ** This program is distributed in the hope that it will be useful,
17 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
18 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 ** Lesser General Public License for more details.
20 **
21 ** You should have received a copy of the GNU Lesser General Public
22 ** License along with this library; if not, write to the Free Software
23 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 ***************************************************************************************/
25
26#include <QVector>
27#include <QUuid>
28#include <QStringList>
29
30struct ChunkDiffInfo
31{
32 struct ChunkInfo
33 {
34#if QT_VERSION <= QT_VERSION_CHECK(5, 13, 0)
35 ChunkInfo() = default;
36#endif
37 ChunkInfo(const QString &_id)
38 : id(_id)
39 {
40 }
41 int startLine = -1;
42 int endLine = -1;
43 bool addition = false;
44 QString id;
45
46 bool isValid() const { return startLine != -1 && endLine != -1; }
47 };
48
49 ChunkDiffInfo()
50 : newFile(ChunkInfo(id))
51 , oldFile(ChunkInfo(id))
52 {
53 }
54 ChunkDiffInfo(bool baseOld, const ChunkInfo &_newFile, const ChunkInfo &_oldFile)
55 : baseIsOldFile(baseOld)
56 , newFile(_newFile)
57 , oldFile(_oldFile)
58 {
59 newFile.id = id;
60 oldFile.id = id;
61 }
62 bool operator==(const ChunkDiffInfo &info) const { return id == info.id; }
63 bool isValid() const { return newFile.isValid() || oldFile.isValid(); }
64
65 QString id = QUuid::createUuid().toString();
66 bool baseIsOldFile = true;
67 ChunkInfo newFile;
68 ChunkInfo oldFile;
69};
70
71struct DiffInfo
72{
73 QStringList fullDiff;
74 QStringList newFileDiff;
75 QStringList oldFileDiff;
76 QVector<ChunkDiffInfo> chunks;
77};
78