OSDN Git Service

Remove unused resource IDs
[winmerge-jp/winmerge-jp.git] / Src / PluginManager.cpp
1 /**
2  *  @file PluginManager.cpp
3  *
4  *  @brief Implementation of PluginManager class
5  */ 
6 //////////////////////////////////////////////////////////////////////
7
8 #include "pch.h"
9 #include "PluginManager.h"
10 #include <Poco/ScopedLock.h>
11
12 using Poco::FastMutex;
13
14 PluginManager::~PluginManager() = default;
15
16 /**
17  * @brief retrieve relevant plugin settings for specified comparison
18  */
19 void PluginManager::FetchPluginInfos(const String& filteredFilenames, 
20                                      PackingInfo ** infoUnpacker, 
21                                      PrediffingInfo ** infoPrediffer)
22 {
23         FastMutex::ScopedLock lock(m_mutex);
24         PluginFileInfoPtr fi;
25         PluginFileInfoMap::iterator it = m_pluginSettings.find(filteredFilenames);
26         if (it == m_pluginSettings.end())
27         {
28                 // This might be a good place to set any user-specified default values
29                 fi.reset(new PluginFileInfo);
30                 m_pluginSettings[filteredFilenames] = fi;
31         }
32         else
33         {
34                 fi = it->second;
35         }
36         *infoUnpacker = &fi->m_infoUnpacker;
37         *infoPrediffer = &fi->m_infoPrediffer;
38 }
39
40 void PluginManager::SetUnpackerSettingAll(bool automatic)
41 {
42         FastMutex::ScopedLock lock(m_mutex);
43         for (PluginFileInfoMap::iterator it = m_pluginSettings.begin(); it != m_pluginSettings.end(); ++it)
44                 it->second->m_infoUnpacker.Initialize(automatic);
45 }
46
47 void PluginManager::SetPrediffSettingAll(bool automatic)
48 {
49         FastMutex::ScopedLock lock(m_mutex);
50         for (PluginFileInfoMap::iterator it = m_pluginSettings.begin(); it != m_pluginSettings.end(); ++it)
51                 it->second->m_infoPrediffer.Initialize(automatic);
52 }
53
54 void PluginManager::SetPrediffer(const String& filteredFilenames, const String& predifferPipeline)
55 {
56         PackingInfo * infoUnpacker = nullptr;
57         PrediffingInfo * infoPrediffer = nullptr;
58         FetchPluginInfos(filteredFilenames, &infoUnpacker, &infoPrediffer);
59         infoPrediffer->SetPluginPipeline(predifferPipeline);
60 }