OSDN Git Service

resource.h: Add IDS_PLUGIN_DESCRIPTION*
[winmerge-jp/winmerge-jp.git] / Src / FolderCmp.h
1 /** 
2  * @file  FolderCmp.h
3  *
4  * @brief Declaration file for FolderCmp
5  */
6 #pragma once
7
8 #include <memory>
9 #include "DiffFileData.h"
10 #include "Wrap_DiffUtils.h"
11 #include "ByteCompare.h"
12 #include "BinaryCompare.h"
13 #include "TimeSizeCompare.h"
14 #include "ImageCompare.h"
15 #include "PathContext.h"
16
17 class CDiffContext;
18 class PackingInfo;
19 class PrediffingInfo;
20
21 /**
22  * @brief Holds plugin-related paths and information.
23  */
24 struct PluginsContext
25 {
26         PathContext origFileName;
27         PathContext filepathUnpacked;
28         PathContext filepathTransformed;
29         PackingInfo * infoUnpacker;
30         PrediffingInfo * infoPrediffer;
31 };
32
33 /**
34  * @brief Class implementing file compare for folder compare.
35  * This class implements (called from DirScan.cpp) compare of two files
36  * during folder compare. The class implements both diffutils compare and
37  * quick compare.
38  */
39 class FolderCmp
40 {
41 public:
42         explicit FolderCmp(CDiffContext *pCtxt);
43         ~FolderCmp();
44         bool RunPlugins(PluginsContext * plugCtxt, String &errStr);
45         void CleanupAfterPlugins(PluginsContext *plugCtxt);
46         int prepAndCompareFiles(DIFFITEM &di);
47
48         int m_ndiffs;
49         int m_ntrivialdiffs;
50
51         DiffFileData m_diffFileData;
52         CDiffContext *const m_pCtxt;
53
54 private:
55         std::unique_ptr<CompareEngines::DiffUtils> m_pDiffUtilsEngine;
56         std::unique_ptr<CompareEngines::ByteCompare> m_pByteCompare;
57         std::unique_ptr<CompareEngines::BinaryCompare> m_pBinaryCompare;
58         std::unique_ptr<CompareEngines::TimeSizeCompare> m_pTimeSizeCompare;
59         std::unique_ptr<CompareEngines::ImageCompare> m_pImageCompare;
60 };