From 3a78c33224db5f80057daad6ce9cc657d867a172 Mon Sep 17 00:00:00 2001 From: Alex Alabuzhev Date: Tue, 19 Apr 2016 19:42:56 +0000 Subject: [PATCH] gcc build fix, refactoring --- far/PluginA.cpp | 54 +++++++++---------- far/changelog | 8 ++- far/configdb.cpp | 15 ++++-- far/configdb.hpp | 4 +- far/diskmenu.cpp | 2 +- far/filelist.cpp | 2 +- far/findfile.cpp | 2 +- far/panel.cpp | 2 +- far/plclass.cpp | 138 +++++++++++++++++++++++------------------------ far/plclass.hpp | 10 ++-- far/plugins.cpp | 44 +++++++-------- far/vbuild.m4 | 2 +- 12 files changed, 146 insertions(+), 137 deletions(-) diff --git a/far/PluginA.cpp b/far/PluginA.cpp index 7acb9340f6..bd1e5f1918 100644 --- a/far/PluginA.cpp +++ b/far/PluginA.cpp @@ -5242,7 +5242,7 @@ bool PluginA::GetGlobalInfo(GlobalInfo* Info) bool PluginA::SetStartupInfo(PluginStartupInfo* Info) { ExecuteStruct es = {iSetStartupInfo}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { auto InfoCopy = StartupInfo; auto FsfCopy = StandardFunctions; @@ -5270,7 +5270,7 @@ bool PluginA::SetStartupInfo(PluginStartupInfo* Info) bool PluginA::CheckMinFarVersion() { ExecuteStruct es = {iGetMinFarVersion}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { EXECUTE_FUNCTION(es = FUNCTION(iGetMinFarVersion)()); if (bPendingRemove) @@ -5298,7 +5298,7 @@ void* PluginA::Open(OpenInfo* Info) ExecuteStruct es = {iOpen}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { std::unique_ptr Buffer; intptr_t Ptr; @@ -5385,7 +5385,7 @@ void* PluginA::Open(OpenInfo* Info) void* PluginA::OpenFilePlugin(const wchar_t *Name, const unsigned char *Data, size_t DataSize, int OpMode) { ExecuteStruct es = {iOpenFilePlugin}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { std::unique_ptr NameA(Name? UnicodeToAnsi(Name) : nullptr); EXECUTE_FUNCTION(es = FUNCTION(iOpenFilePlugin)(NameA.get(), Data, static_cast(DataSize))); @@ -5396,7 +5396,7 @@ void* PluginA::OpenFilePlugin(const wchar_t *Name, const unsigned char *Data, si int PluginA::SetFindList(SetFindListInfo* Info) { ExecuteStruct es = {iSetFindList}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { oldfar::PluginPanelItem *PanelItemA = nullptr; ConvertPanelItemsArrayToAnsi(Info->PanelItem, PanelItemA, Info->ItemsNumber); @@ -5409,7 +5409,7 @@ int PluginA::SetFindList(SetFindListInfo* Info) int PluginA::ProcessEditorInput(ProcessEditorInputInfo* Info) { ExecuteStruct es = {iProcessEditorInput}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { const INPUT_RECORD *Ptr = &Info->Rec; INPUT_RECORD OemRecord; @@ -5427,7 +5427,7 @@ int PluginA::ProcessEditorInput(ProcessEditorInputInfo* Info) int PluginA::ProcessEditorEvent(ProcessEditorEventInfo* Info) { ExecuteStruct es = {iProcessEditorEvent}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { switch(Info->Event) { @@ -5448,7 +5448,7 @@ int PluginA::ProcessEditorEvent(ProcessEditorEventInfo* Info) int PluginA::ProcessViewerEvent(ProcessViewerEventInfo* Info) { ExecuteStruct es = {iProcessViewerEvent}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { switch(Info->Event) { @@ -5467,7 +5467,7 @@ int PluginA::ProcessViewerEvent(ProcessViewerEventInfo* Info) int PluginA::ProcessDialogEvent(ProcessDialogEventInfo* Info) { ExecuteStruct es = {iProcessDialogEvent}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { EXECUTE_FUNCTION(es = FUNCTION(iProcessDialogEvent)(Info->Event, Info->Param)); } @@ -5477,7 +5477,7 @@ int PluginA::ProcessDialogEvent(ProcessDialogEventInfo* Info) int PluginA::GetVirtualFindData(GetVirtualFindDataInfo* Info) { ExecuteStruct es = {iGetVirtualFindData}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { pVFDPanelItemA = nullptr; size_t Size = wcslen(Info->Path) + 1; @@ -5501,7 +5501,7 @@ void PluginA::FreeVirtualFindData(FreeFindDataInfo* Info) FreeUnicodePanelItem(Info->PanelItem, Info->ItemsNumber); ExecuteStruct es = {iFreeVirtualFindData}; - if (Exports[es.id] && !Global->ProcessException && pVFDPanelItemA) + if (has(es.id) && !Global->ProcessException && pVFDPanelItemA) { EXECUTE_FUNCTION(FUNCTION(iFreeVirtualFindData)(Info->hPanel, pVFDPanelItemA, static_cast(Info->ItemsNumber))); pVFDPanelItemA = nullptr; @@ -5511,7 +5511,7 @@ void PluginA::FreeVirtualFindData(FreeFindDataInfo* Info) int PluginA::GetFiles(GetFilesInfo* Info) { ExecuteStruct es = {iGetFiles, -1}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { oldfar::PluginPanelItem *PanelItemA = nullptr; ConvertPanelItemsArrayToAnsi(Info->PanelItem, PanelItemA, Info->ItemsNumber); @@ -5529,7 +5529,7 @@ int PluginA::GetFiles(GetFilesInfo* Info) int PluginA::PutFiles(PutFilesInfo* Info) { ExecuteStruct es = {iPutFiles, -1}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { oldfar::PluginPanelItem *PanelItemA = nullptr; ConvertPanelItemsArrayToAnsi(Info->PanelItem, PanelItemA, Info->ItemsNumber); @@ -5542,7 +5542,7 @@ int PluginA::PutFiles(PutFilesInfo* Info) int PluginA::DeleteFiles(DeleteFilesInfo* Info) { ExecuteStruct es = {iDeleteFiles}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { oldfar::PluginPanelItem *PanelItemA = nullptr; ConvertPanelItemsArrayToAnsi(Info->PanelItem, PanelItemA, Info->ItemsNumber); @@ -5555,7 +5555,7 @@ int PluginA::DeleteFiles(DeleteFilesInfo* Info) int PluginA::MakeDirectory(MakeDirectoryInfo* Info) { ExecuteStruct es = {iMakeDirectory, -1}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { char NameA[oldfar::NM]; UnicodeToOEM(Info->Name, NameA); @@ -5570,7 +5570,7 @@ int PluginA::MakeDirectory(MakeDirectoryInfo* Info) int PluginA::ProcessHostFile(ProcessHostFileInfo* Info) { ExecuteStruct es = {iProcessHostFile}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { oldfar::PluginPanelItem *PanelItemA = nullptr; ConvertPanelItemsArrayToAnsi(Info->PanelItem, PanelItemA, Info->ItemsNumber); @@ -5583,7 +5583,7 @@ int PluginA::ProcessHostFile(ProcessHostFileInfo* Info) int PluginA::ProcessPanelEvent(ProcessPanelEventInfo* Info) { ExecuteStruct es = {iProcessPanelEvent}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { PVOID ParamA = Info->Param; @@ -5601,7 +5601,7 @@ int PluginA::ProcessPanelEvent(ProcessPanelEventInfo* Info) int PluginA::Compare(CompareInfo* Info) { ExecuteStruct es = {iCompare, -2}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { oldfar::PluginPanelItem *Item1A = nullptr; oldfar::PluginPanelItem *Item2A = nullptr; @@ -5617,7 +5617,7 @@ int PluginA::Compare(CompareInfo* Info) int PluginA::GetFindData(GetFindDataInfo* Info) { ExecuteStruct es = {iGetFindData}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { pFDPanelItemA = nullptr; int ItemsNumber = 0; @@ -5638,7 +5638,7 @@ void PluginA::FreeFindData(FreeFindDataInfo* Info) FreeUnicodePanelItem(Info->PanelItem, Info->ItemsNumber); ExecuteStruct es = {iFreeFindData}; - if (Exports[es.id] && !Global->ProcessException && pFDPanelItemA) + if (has(es.id) && !Global->ProcessException && pFDPanelItemA) { EXECUTE_FUNCTION(FUNCTION(iFreeFindData)(Info->hPanel, pFDPanelItemA, static_cast(Info->ItemsNumber))); pFDPanelItemA = nullptr; @@ -5648,7 +5648,7 @@ void PluginA::FreeFindData(FreeFindDataInfo* Info) int PluginA::ProcessPanelInput(ProcessPanelInputInfo* Info) { ExecuteStruct es = {iProcessPanelInput}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { int VirtKey; int dwControlState; @@ -5671,7 +5671,7 @@ int PluginA::ProcessPanelInput(ProcessPanelInputInfo* Info) void PluginA::ClosePanel(ClosePanelInfo* Info) { ExecuteStruct es = {iClosePanel}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { EXECUTE_FUNCTION(FUNCTION(iClosePanel)(Info->hPanel)); } @@ -5681,7 +5681,7 @@ void PluginA::ClosePanel(ClosePanelInfo* Info) int PluginA::SetDirectory(SetDirectoryInfo* Info) { ExecuteStruct es = {iSetDirectory}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { char *DirA = UnicodeToAnsi(Info->Dir); EXECUTE_FUNCTION(es = FUNCTION(iSetDirectory)(Info->hPanel, DirA, Info->OpMode)); @@ -5823,7 +5823,7 @@ void PluginA::GetOpenPanelInfo(OpenPanelInfo *pInfo) pInfo->StructSize = sizeof(OpenPanelInfo); ExecuteStruct es = {iGetOpenPanelInfo}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { oldfar::OpenPanelInfo InfoA={}; EXECUTE_FUNCTION(FUNCTION(iGetOpenPanelInfo)(pInfo->hPanel, &InfoA)); @@ -5834,7 +5834,7 @@ void PluginA::GetOpenPanelInfo(OpenPanelInfo *pInfo) int PluginA::Configure(ConfigureInfo* Info) { ExecuteStruct es = {iConfigure}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { EXECUTE_FUNCTION(es = FUNCTION(iConfigure)(Info->Guid->Data1)); } @@ -5920,7 +5920,7 @@ bool PluginA::GetPluginInfo(PluginInfo *pi) ClearStruct(*pi); ExecuteStruct es = {iGetPluginInfo}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { oldfar::PluginInfo InfoA={sizeof(InfoA)}; EXECUTE_FUNCTION(FUNCTION(iGetPluginInfo)(&InfoA)); @@ -5938,7 +5938,7 @@ bool PluginA::GetPluginInfo(PluginInfo *pi) void PluginA::ExitFAR(ExitInfo *Info) { ExecuteStruct es = {iExitFAR}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { // ExitInfo ignored for ansi plugins EXECUTE_FUNCTION(FUNCTION(iExitFAR)()); diff --git a/far/changelog b/far/changelog index d0016e7450..934008766e 100644 --- a/far/changelog +++ b/far/changelog @@ -1,4 +1,10 @@ -svs 19.04.2016 18:18:01 +0300 - build 4625 +drkns 19.04.2016 22:42:16 +0200 - build 4626 + +1. gcc build fix. + +2. Refactoring. + +svs 19.04.2016 18:18:01 +0300 - build 4625 1. SQLite 3.12.2 diff --git a/far/configdb.cpp b/far/configdb.cpp index efae74e5ac..cb026b0a37 100644 --- a/far/configdb.cpp +++ b/far/configdb.cpp @@ -1271,13 +1271,18 @@ class PluginsCacheConfigDb: public PluginsCacheConfig, public SQLiteDb return GetTextFromID(Statement(stmtGetSignature), id); } - virtual void *GetExport(unsigned __int64 id, const string& ExportName) const override + virtual bool GetExportState(unsigned __int64 id, const wchar_t* ExportName) const override { + if (!*ExportName) + { + return false; + } + auto& Stmt = Statement(stmtGetExportState); - void *enabled = nullptr; + bool enabled = false; if (Stmt.Bind(id, ExportName).Step()) if (Stmt.GetColInt(0)) - enabled = ToPtr(1); + enabled = true; Stmt.Reset(); return enabled; } @@ -1397,9 +1402,9 @@ class PluginsCacheConfigDb: public PluginsCacheConfig, public SQLiteDb return Statement(stmtSetFlags).Bind(id, Flags).StepAndReset(); } - virtual bool SetExport(unsigned __int64 id, const string& ExportName, bool Exists) override + virtual bool SetExportState(unsigned __int64 id, const wchar_t* ExportName, bool Exists) override { - return Statement(stmtSetExportState).Bind(id, ExportName, Exists).StepAndReset(); + return *ExportName && Statement(stmtSetExportState).Bind(id, ExportName, Exists).StepAndReset(); } virtual bool SetMinFarVersion(unsigned __int64 id, const VersionInfo *Version) override diff --git a/far/configdb.hpp b/far/configdb.hpp index 9e8e753b90..929440f689 100644 --- a/far/configdb.hpp +++ b/far/configdb.hpp @@ -209,7 +209,7 @@ class PluginsCacheConfig: public representable, virtual public transactional virtual bool DeleteCache(const string& CacheName) = 0; virtual bool IsPreload(unsigned __int64 id) const = 0; virtual string GetSignature(unsigned __int64 id) const = 0; - virtual void *GetExport(unsigned __int64 id, const string& ExportName) const = 0; + virtual bool GetExportState(unsigned __int64 id, const wchar_t* ExportName) const = 0; virtual string GetGuid(unsigned __int64 id) const = 0; virtual string GetTitle(unsigned __int64 id) const = 0; virtual string GetAuthor(unsigned __int64 id) const = 0; @@ -228,7 +228,7 @@ class PluginsCacheConfig: public representable, virtual public transactional virtual bool SetPluginsConfigMenuItem(unsigned __int64 id, size_t index, const string& Text, const GUID& Guid) = 0; virtual bool SetCommandPrefix(unsigned __int64 id, const string& Prefix) = 0; virtual bool SetFlags(unsigned __int64 id, unsigned __int64 Flags) = 0; - virtual bool SetExport(unsigned __int64 id, const string& ExportName, bool Exists) = 0; + virtual bool SetExportState(unsigned __int64 id, const wchar_t* ExportName, bool Exists) = 0; virtual bool SetMinFarVersion(unsigned __int64 id, const VersionInfo *Version) = 0; virtual bool SetVersion(unsigned __int64 id, const VersionInfo *Version) = 0; virtual bool SetGuid(unsigned __int64 id, const string& Guid) = 0; diff --git a/far/diskmenu.cpp b/far/diskmenu.cpp index da0c86b417..6a1f007177 100644 --- a/far/diskmenu.cpp +++ b/far/diskmenu.cpp @@ -1069,7 +1069,7 @@ static int ChangeDiskMenu(panel_ptr Owner, int Pos, bool FirstCall) break; case KEY_SHIFTF9: - if (item && item->bIsPlugin && item->pPlugin->has()) + if (item && item->bIsPlugin && item->pPlugin->has(iConfigure)) Global->CtrlObject->Plugins->ConfigureCurrent(item->pPlugin, item->Guid); RetCode = SelPos; diff --git a/far/filelist.cpp b/far/filelist.cpp index 7fb63e3ec9..ded28d0138 100644 --- a/far/filelist.cpp +++ b/far/filelist.cpp @@ -813,7 +813,7 @@ void FileList::SortFileList(int KeepPosition) strCurName = m_ListData[m_CurFile].strName; } - hSortPlugin = (m_PanelMode == panel_mode::PLUGIN_PANEL && m_hPlugin && m_hPlugin->pPlugin->has())? m_hPlugin : nullptr; + hSortPlugin = (m_PanelMode == panel_mode::PLUGIN_PANEL && m_hPlugin && m_hPlugin->pPlugin->has(iCompare))? m_hPlugin : nullptr; // ЭТО ЕСТЬ УЗКОЕ МЕСТО ДЛЯ СКОРОСТНЫХ ХАРАКТЕРИСТИК Far Manager // при считывании директории diff --git a/far/findfile.cpp b/far/findfile.cpp index 67d2955576..2a76845d23 100644 --- a/far/findfile.cpp +++ b/far/findfile.cpp @@ -2730,7 +2730,7 @@ bool FindFiles::FindFilesProcess() AnySetFindList = std::any_of(CONST_RANGE(*Global->CtrlObject->Plugins, i) { - return i->has(); + return i->has(iSetFindList); }); if (!AnySetFindList) diff --git a/far/panel.cpp b/far/panel.cpp index 583e9b9cb8..7f8bf83c9a 100644 --- a/far/panel.cpp +++ b/far/panel.cpp @@ -1365,7 +1365,7 @@ bool Panel::ExecShortcutFolder(string& strShortcutFolder, const GUID& PluginGuid if (const auto pPlugin = Global->CtrlObject->Plugins->FindPlugin(PluginGuid)) { - if (pPlugin->has()) + if (pPlugin->has(iOpen)) { if (!strPluginFile.empty()) { diff --git a/far/plclass.cpp b/far/plclass.cpp index 0ee35a0390..469f58bb7d 100644 --- a/far/plclass.cpp +++ b/far/plclass.cpp @@ -453,21 +453,21 @@ bool Plugin::SaveToCache() PluginInfo Info = {sizeof(Info)}; GetPluginInfo(&Info); - auto& PlCache = *ConfigProvider().PlCacheCfg(); + auto& PlCache = ConfigProvider().PlCacheCfg(); - SCOPED_ACTION(auto)(PlCache.ScopedTransaction()); + SCOPED_ACTION(auto)(PlCache->ScopedTransaction()); - PlCache.DeleteCache(m_strCacheName); - unsigned __int64 id = PlCache.CreateCache(m_strCacheName); + PlCache->DeleteCache(m_strCacheName); + const auto id = PlCache->CreateCache(m_strCacheName); { bool bPreload = (Info.Flags & PF_PRELOAD); - PlCache.SetPreload(id, bPreload); + PlCache->SetPreload(id, bPreload); WorkFlags.Change(PIWF_PRELOADED, bPreload); if (bPreload) { - PlCache.EndTransaction(); + PlCache->EndTransaction(); return true; } } @@ -475,14 +475,14 @@ bool Plugin::SaveToCache() { os::FAR_FIND_DATA fdata; os::GetFindDataEx(m_strModuleName, fdata); - PlCache.SetSignature(id, MakeSignature(fdata)); + PlCache->SetSignature(id, MakeSignature(fdata)); } - const auto SaveItems = [&](const auto& Setter, const auto& Item) + const auto SaveItems = [&PlCache, &id](const auto& Setter, const auto& Item) { - for (size_t i = 0; i < Item.Count; i++) + for (size_t i = 0; i != Item.Count; ++i) { - (PlCache.*Setter)(id, i, Item.Strings[i], Item.Guids[i]); + ((*PlCache).*Setter)(id, i, Item.Strings[i], Item.Guids[i]); } }; @@ -490,20 +490,19 @@ bool Plugin::SaveToCache() SaveItems(&PluginsCacheConfig::SetDiskMenuItem, Info.DiskMenu); SaveItems(&PluginsCacheConfig::SetPluginsConfigMenuItem, Info.PluginConfig); - PlCache.SetCommandPrefix(id, NullToEmpty(Info.CommandPrefix)); - PlCache.SetFlags(id, Info.Flags); + PlCache->SetCommandPrefix(id, NullToEmpty(Info.CommandPrefix)); + PlCache->SetFlags(id, Info.Flags); - PlCache.SetMinFarVersion(id, &MinFarVersion); - PlCache.SetGuid(id, m_strGuid); - PlCache.SetVersion(id, &PluginVersion); - PlCache.SetTitle(id, strTitle); - PlCache.SetDescription(id, strDescription); - PlCache.SetAuthor(id, strAuthor); + PlCache->SetMinFarVersion(id, &MinFarVersion); + PlCache->SetGuid(id, m_strGuid); + PlCache->SetVersion(id, &PluginVersion); + PlCache->SetTitle(id, strTitle); + PlCache->SetDescription(id, strDescription); + PlCache->SetAuthor(id, strAuthor); - for_each_2(ALL_CONST_RANGE(m_Factory->ExportsNames()), Exports.cbegin(), [&](const auto& i, const void* Export) + for_each_2(ALL_CONST_RANGE(m_Factory->ExportsNames()), Exports.cbegin(), [&PlCache, &id](const auto& i, const auto& Export) { - if (*i.UName) - PlCache.SetExport(id, i.UName, Export != nullptr); + PlCache->SetExportState(id, i.UName, Export.second); }); return true; @@ -513,7 +512,8 @@ void Plugin::InitExports() { std::transform(ALL_CONST_RANGE(m_Factory->ExportsNames()), Exports.begin(), [&](const auto& i) { - return m_Factory->GetFunction(m_Instance, i); + const auto Address = m_Factory->GetFunction(m_Instance, i); + return std::make_pair(Address, Address != nullptr); }); } @@ -689,11 +689,11 @@ bool Plugin::Load() bool Plugin::LoadFromCache(const os::FAR_FIND_DATA &FindData) { - const auto& PlCache = *ConfigProvider().PlCacheCfg(); + const auto& PlCache = ConfigProvider().PlCacheCfg(); - if (const auto id = PlCache.GetCacheID(m_strCacheName)) + if (const auto id = PlCache->GetCacheID(m_strCacheName)) { - if (PlCache.IsPreload(id)) //PF_PRELOAD plugin, skip cache + if (PlCache->IsPreload(id)) //PF_PRELOAD plugin, skip cache { WorkFlags.Set(PIWF_PRELOADED); return false; @@ -701,32 +701,32 @@ bool Plugin::LoadFromCache(const os::FAR_FIND_DATA &FindData) { const auto strCurPluginID = MakeSignature(FindData); - const auto strPluginID = PlCache.GetSignature(id); + const auto strPluginID = PlCache->GetSignature(id); if (strPluginID != strCurPluginID) //одинаковые ли бинарники? return false; } - if (!PlCache.GetMinFarVersion(id, &MinFarVersion)) + if (!PlCache->GetMinFarVersion(id, &MinFarVersion)) { MinFarVersion = FAR_VERSION; } - if (!PlCache.GetVersion(id, &PluginVersion)) + if (!PlCache->GetVersion(id, &PluginVersion)) { ClearStruct(PluginVersion); } VersionString = VersionToString(PluginVersion); - m_strGuid = PlCache.GetGuid(id); + m_strGuid = PlCache->GetGuid(id); SetGuid(StrToGuid(m_strGuid,m_Guid)?m_Guid:FarGuid); - strTitle = PlCache.GetTitle(id); - strDescription = PlCache.GetDescription(id); - strAuthor = PlCache.GetAuthor(id); + strTitle = PlCache->GetTitle(id); + strDescription = PlCache->GetDescription(id); + strAuthor = PlCache->GetAuthor(id); - std::transform(ALL_CONST_RANGE(m_Factory->ExportsNames()), Exports.begin(), [&](const auto& i) + std::transform(ALL_CONST_RANGE(m_Factory->ExportsNames()), Exports.begin(), [&PlCache, &id](const auto& i) { - return *i.UName ? PlCache.GetExport(id, i.UName) : nullptr; + return std::make_pair(nullptr, PlCache->GetExportState(id, i.UName)); }); WorkFlags.Set(PIWF_CACHED); //too much "cached" flags @@ -764,7 +764,7 @@ int Plugin::Unload(bool bExitFAR) void Plugin::ClearExports() { - Exports.fill(nullptr); + Exports.fill({ nullptr, false }); } void Plugin::AddDialog(window_ptr_ref Dlg) @@ -806,14 +806,14 @@ bool Plugin::IsPanelPlugin() }; return std::any_of(CONST_RANGE(PanelExports, i) { - return Exports[i] != nullptr; + return Exports[i].second; }); } bool Plugin::SetStartupInfo(PluginStartupInfo *Info) { ExecuteStruct es = {iSetStartupInfo}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(FUNCTION(iSetStartupInfo)(Info)); @@ -829,7 +829,7 @@ bool Plugin::SetStartupInfo(PluginStartupInfo *Info) bool Plugin::GetGlobalInfo(GlobalInfo *gi) { ExecuteStruct es = {iGetGlobalInfo}; - if (Exports[es.id]) + if (has(es.id)) { gi->Instance = m_Instance; EXECUTE_FUNCTION(FUNCTION(iGetGlobalInfo)(gi)); @@ -884,7 +884,7 @@ void* Plugin::OpenFilePlugin(const wchar_t *Name, const unsigned char *Data, siz void* Plugin::Analyse(AnalyseInfo *Info) { ExecuteStruct es = {iAnalyse}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iAnalyse)(Info)); @@ -895,7 +895,7 @@ void* Plugin::Analyse(AnalyseInfo *Info) void Plugin::CloseAnalyse(CloseAnalyseInfo* Info) { ExecuteStruct es = {iCloseAnalyse}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(FUNCTION(iCloseAnalyse)(Info)); @@ -906,7 +906,7 @@ void* Plugin::Open(OpenInfo* Info) { SCOPED_ACTION(ChangePriority)(THREAD_PRIORITY_NORMAL); ExecuteStruct es = {iOpen}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iOpen)(Info)); @@ -917,7 +917,7 @@ void* Plugin::Open(OpenInfo* Info) int Plugin::SetFindList(SetFindListInfo* Info) { ExecuteStruct es = {iSetFindList}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iSetFindList)(Info)); @@ -928,7 +928,7 @@ int Plugin::SetFindList(SetFindListInfo* Info) int Plugin::ProcessEditorInput(ProcessEditorInputInfo* Info) { ExecuteStruct es = {iProcessEditorInput}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iProcessEditorInput)(Info)); @@ -939,7 +939,7 @@ int Plugin::ProcessEditorInput(ProcessEditorInputInfo* Info) int Plugin::ProcessEditorEvent(ProcessEditorEventInfo* Info) { ExecuteStruct es = {iProcessEditorEvent}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iProcessEditorEvent)(Info)); @@ -950,7 +950,7 @@ int Plugin::ProcessEditorEvent(ProcessEditorEventInfo* Info) int Plugin::ProcessViewerEvent(ProcessViewerEventInfo* Info) { ExecuteStruct es = {iProcessViewerEvent}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iProcessViewerEvent)(Info)); @@ -961,7 +961,7 @@ int Plugin::ProcessViewerEvent(ProcessViewerEventInfo* Info) int Plugin::ProcessDialogEvent(ProcessDialogEventInfo* Info) { ExecuteStruct es = {iProcessDialogEvent}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iProcessDialogEvent)(Info)); @@ -972,7 +972,7 @@ int Plugin::ProcessDialogEvent(ProcessDialogEventInfo* Info) int Plugin::ProcessSynchroEvent(ProcessSynchroEventInfo* Info) { ExecuteStruct es = {iProcessSynchroEvent}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iProcessSynchroEvent)(Info)); @@ -983,7 +983,7 @@ int Plugin::ProcessSynchroEvent(ProcessSynchroEventInfo* Info) int Plugin::ProcessConsoleInput(ProcessConsoleInputInfo *Info) { ExecuteStruct es = {iProcessConsoleInput}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iProcessConsoleInput)(Info)); @@ -994,7 +994,7 @@ int Plugin::ProcessConsoleInput(ProcessConsoleInputInfo *Info) int Plugin::GetVirtualFindData(GetVirtualFindDataInfo* Info) { ExecuteStruct es = {iGetVirtualFindData}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iGetVirtualFindData)(Info)); @@ -1005,7 +1005,7 @@ int Plugin::GetVirtualFindData(GetVirtualFindDataInfo* Info) void Plugin::FreeVirtualFindData(FreeFindDataInfo* Info) { ExecuteStruct es = {iFreeVirtualFindData}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(FUNCTION(iFreeVirtualFindData)(Info)); @@ -1015,7 +1015,7 @@ void Plugin::FreeVirtualFindData(FreeFindDataInfo* Info) int Plugin::GetFiles(GetFilesInfo* Info) { ExecuteStruct es = {iGetFiles, -1}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iGetFiles)(Info)); @@ -1027,7 +1027,7 @@ int Plugin::PutFiles(PutFilesInfo* Info) { ExecuteStruct es = {iPutFiles, -1}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iPutFiles)(Info)); @@ -1038,7 +1038,7 @@ int Plugin::PutFiles(PutFilesInfo* Info) int Plugin::DeleteFiles(DeleteFilesInfo* Info) { ExecuteStruct es = {iDeleteFiles}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iDeleteFiles)(Info)); @@ -1049,7 +1049,7 @@ int Plugin::DeleteFiles(DeleteFilesInfo* Info) int Plugin::MakeDirectory(MakeDirectoryInfo* Info) { ExecuteStruct es = {iMakeDirectory, -1}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iMakeDirectory)(Info)); @@ -1060,7 +1060,7 @@ int Plugin::MakeDirectory(MakeDirectoryInfo* Info) int Plugin::ProcessHostFile(ProcessHostFileInfo* Info) { ExecuteStruct es = {iProcessHostFile}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iProcessHostFile)(Info)); @@ -1071,7 +1071,7 @@ int Plugin::ProcessHostFile(ProcessHostFileInfo* Info) int Plugin::ProcessPanelEvent(ProcessPanelEventInfo* Info) { ExecuteStruct es = {iProcessPanelEvent}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iProcessPanelEvent)(Info)); @@ -1082,7 +1082,7 @@ int Plugin::ProcessPanelEvent(ProcessPanelEventInfo* Info) int Plugin::Compare(CompareInfo* Info) { ExecuteStruct es = {iCompare, -2}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iCompare)(Info)); @@ -1093,7 +1093,7 @@ int Plugin::Compare(CompareInfo* Info) int Plugin::GetFindData(GetFindDataInfo* Info) { ExecuteStruct es = {iGetFindData}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iGetFindData)(Info)); @@ -1104,7 +1104,7 @@ int Plugin::GetFindData(GetFindDataInfo* Info) void Plugin::FreeFindData(FreeFindDataInfo* Info) { ExecuteStruct es = {iFreeFindData}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(FUNCTION(iFreeFindData)(Info)); @@ -1114,7 +1114,7 @@ void Plugin::FreeFindData(FreeFindDataInfo* Info) int Plugin::ProcessPanelInput(ProcessPanelInputInfo* Info) { ExecuteStruct es = {iProcessPanelInput}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iProcessPanelInput)(Info)); @@ -1126,7 +1126,7 @@ int Plugin::ProcessPanelInput(ProcessPanelInputInfo* Info) void Plugin::ClosePanel(ClosePanelInfo* Info) { ExecuteStruct es = {iClosePanel}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(FUNCTION(iClosePanel)(Info)); @@ -1137,7 +1137,7 @@ void Plugin::ClosePanel(ClosePanelInfo* Info) int Plugin::SetDirectory(SetDirectoryInfo* Info) { ExecuteStruct es = {iSetDirectory}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iSetDirectory)(Info)); @@ -1148,7 +1148,7 @@ int Plugin::SetDirectory(SetDirectoryInfo* Info) void Plugin::GetOpenPanelInfo(OpenPanelInfo* Info) { ExecuteStruct es = {iGetOpenPanelInfo}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(FUNCTION(iGetOpenPanelInfo)(Info)); @@ -1159,7 +1159,7 @@ void Plugin::GetOpenPanelInfo(OpenPanelInfo* Info) int Plugin::Configure(ConfigureInfo* Info) { ExecuteStruct es = {iConfigure}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iConfigure)(Info)); @@ -1171,7 +1171,7 @@ int Plugin::Configure(ConfigureInfo* Info) bool Plugin::GetPluginInfo(PluginInfo* Info) { ExecuteStruct es = {iGetPluginInfo}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(FUNCTION(iGetPluginInfo)(Info)); @@ -1184,7 +1184,7 @@ bool Plugin::GetPluginInfo(PluginInfo* Info) int Plugin::GetContentFields(const GetContentFieldsInfo *Info) { ExecuteStruct es = {iGetContentFields}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { const_cast(Info)->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iGetContentFields)(Info)); @@ -1195,7 +1195,7 @@ int Plugin::GetContentFields(const GetContentFieldsInfo *Info) int Plugin::GetContentData(GetContentDataInfo *Info) { ExecuteStruct es = {iGetContentData}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(es = FUNCTION(iGetContentData)(Info)); @@ -1206,7 +1206,7 @@ int Plugin::GetContentData(GetContentDataInfo *Info) void Plugin::FreeContentData(const GetContentDataInfo *Info) { ExecuteStruct es = {iFreeContentData}; - if (Load() && Exports[es.id] && !Global->ProcessException) + if (Load() && has(es.id) && !Global->ProcessException) { const_cast(Info)->Instance = m_Instance; EXECUTE_FUNCTION(FUNCTION(iFreeContentData)(Info)); @@ -1216,7 +1216,7 @@ void Plugin::FreeContentData(const GetContentDataInfo *Info) void Plugin::ExitFAR(ExitInfo *Info) { ExecuteStruct es = {iExitFAR}; - if (Exports[es.id] && !Global->ProcessException) + if (has(es.id) && !Global->ProcessException) { Info->Instance = m_Instance; EXECUTE_FUNCTION(FUNCTION(iExitFAR)(Info)); diff --git a/far/plclass.hpp b/far/plclass.hpp index 5f38ff0705..ba7ddf7385 100644 --- a/far/plclass.hpp +++ b/far/plclass.hpp @@ -96,8 +96,8 @@ class plugin_factory: noncopyable { public: using plugin_instance = void*; - using function_address = void*; - using exports_array = std::array; + using function_address = FARPROC; + using exports_array = std::array, ExportsCount>; struct export_name { @@ -193,10 +193,8 @@ class Plugin: noncopyable virtual bool InitLang(const string& Path); void CloseLang(); - void* GetOpen() const { return Exports[iOpen]; } - template - bool has() const { static_assert(N != ExportsCount, "Wrong index"); return Exports[N] != nullptr; } + bool has(size_t ExportIndex) const { return Exports[ExportIndex].second; } const string& GetModuleName() const { return m_strModuleName; } const string& GetCacheName() const { return m_strCacheName; } @@ -280,7 +278,7 @@ class Plugin: noncopyable plugin_factory_ptr CreateCustomPluginFactory(PluginManager* Owner, const string& Filename); #define EXECUTE_FUNCTION(f) ExecuteFunction(es, [&]{ f; }); -#define FUNCTION(id) reinterpret_cast(Exports[id]) +#define FUNCTION(id) reinterpret_cast(Exports[id].first) #define WA(string) {L##string, string} #endif // PLCLASS_HPP_E324EC16_24F2_4402_BA87_74212799246D diff --git a/far/plugins.cpp b/far/plugins.cpp index e2c66224d2..1aef40521e 100644 --- a/far/plugins.cpp +++ b/far/plugins.cpp @@ -516,7 +516,7 @@ PluginHandle* PluginManager::OpenFilePlugin( bool DataRead = false; for (const auto& i: SortedPlugins) { - if (!i->has() && !(i->has() && i->has())) + if (!i->has(iOpenFilePlugin) && !(i->has(iAnalyse) && i->has(iOpen))) continue; if(Name && !DataRead) @@ -543,7 +543,7 @@ PluginHandle* PluginManager::OpenFilePlugin( } } - if (i->has()) + if (i->has(iOpenFilePlugin)) { if (Global->Opt->ShowCheckingFile) ct << MSG(MCheckingFileInPlugin) << L" - [" << PointToName(i->GetModuleName()) << L"]..." << fmt::Flush(); @@ -692,7 +692,7 @@ PluginHandle* PluginManager::OpenFindListPlugin(const PluginPanelItem *PanelItem for (const auto& i: SortedPlugins) { - if (!i->has()) + if (!i->has(iSetFindList)) continue; OpenInfo Info = {sizeof(Info)}; @@ -794,7 +794,7 @@ int PluginManager::ProcessEditorInput(const INPUT_RECORD *Rec) const ProcessEditorInputInfo Info={sizeof(Info)}; Info.Rec=*Rec; - return std::any_of(CONST_RANGE(SortedPlugins, i) {return i->has() && i->ProcessEditorInput(&Info);}); + return std::any_of(CONST_RANGE(SortedPlugins, i) {return i->has(iProcessEditorInput) && i->ProcessEditorInput(&Info);}); } @@ -817,7 +817,7 @@ int PluginManager::ProcessEditorEvent(int Event, void *Param, const Editor* Edit SCOPED_ACTION(auto)(Container->GetPinner()); std::for_each(CONST_RANGE(SortedPlugins, i) { - if (i->has()) + if (i->has(iProcessEditorEvent)) nResult = i->ProcessEditorEvent(&Info); }); } @@ -839,7 +839,7 @@ int PluginManager::ProcessSubscribedEditorEvent(int Event, void *Param, const Ed SCOPED_ACTION(auto)(Container->GetPinner()); std::for_each(CONST_RANGE(SortedPlugins, i) { - if (i->has() && PluginIds.count(i->GetGUID())) + if (i->has(iProcessEditorEvent) && PluginIds.count(i->GetGUID())) { nResult = i->ProcessEditorEvent(&Info); } @@ -863,7 +863,7 @@ int PluginManager::ProcessViewerEvent(int Event, void *Param, const Viewer* View SCOPED_ACTION(auto)(Container->GetPinner()); std::for_each(CONST_RANGE(SortedPlugins, i) { - if (i->has()) + if (i->has(iProcessViewerEvent)) nResult = i->ProcessViewerEvent(&Info); }); } @@ -876,7 +876,7 @@ int PluginManager::ProcessDialogEvent(int Event, FarDialogEvent *Param) const Info.Event = Event; Info.Param = Param; - return std::any_of(CONST_RANGE(SortedPlugins, i) {return i->has() && i->ProcessDialogEvent(&Info);}); + return std::any_of(CONST_RANGE(SortedPlugins, i) {return i->has(iProcessDialogEvent) && i->ProcessDialogEvent(&Info);}); } int PluginManager::ProcessConsoleInput(ProcessConsoleInputInfo *Info) const @@ -885,7 +885,7 @@ int PluginManager::ProcessConsoleInput(ProcessConsoleInputInfo *Info) const for (const auto& i: SortedPlugins) { - if (i->has()) + if (i->has(iProcessConsoleInput)) { int n = i->ProcessConsoleInput(Info); if (n == 1) @@ -1525,7 +1525,7 @@ int PluginManager::CommandsMenu(int ModalType,int StartPos,const wchar_t *Histor NeedUpdateItems = true; StartPos=SelPos; - if (ItemPtr->pPlugin->has()) + if (ItemPtr->pPlugin->has(iConfigure)) ConfigureCurrent(ItemPtr->pPlugin, ItemPtr->Guid); PluginList->Close(SelPos); @@ -1888,13 +1888,13 @@ int PluginManager::UseFarCommand(PluginHandle* hPlugin,int CommandType) { case PLUGIN_FARGETFILE: case PLUGIN_FARGETFILES: - return !hPlugin->pPlugin->has() || (Info.Flags & OPIF_EXTERNALGET); + return !hPlugin->pPlugin->has(iGetFiles) || (Info.Flags & OPIF_EXTERNALGET); case PLUGIN_FARPUTFILES: - return !hPlugin->pPlugin->has() || (Info.Flags & OPIF_EXTERNALPUT); + return !hPlugin->pPlugin->has(iPutFiles) || (Info.Flags & OPIF_EXTERNALPUT); case PLUGIN_FARDELETEFILES: - return !hPlugin->pPlugin->has() || (Info.Flags & OPIF_EXTERNALDELETE); + return !hPlugin->pPlugin->has(iDeleteFiles) || (Info.Flags & OPIF_EXTERNALDELETE); case PLUGIN_FARMAKEDIRECTORY: - return !hPlugin->pPlugin->has() || (Info.Flags & OPIF_EXTERNALMKDIR); + return !hPlugin->pPlugin->has(iMakeDirectory) || (Info.Flags & OPIF_EXTERNALMKDIR); } return TRUE; @@ -1975,7 +1975,7 @@ int PluginManager::ProcessCommandLine(const string& CommandParam, panel_ptr Targ if (!StrCmpNI(strPrefix.data(), PrStart, Len)) { - if (i->Load() && i->has()) + if (i->Load() && i->has(iOpen)) { PluginData pD; pD.pPlugin = i; @@ -2063,7 +2063,7 @@ int PluginManager::CallPlugin(const GUID& SysID,int OpenFrom, void *Data,void ** if (pPlugin) { - if (pPlugin->has() && !Global->ProcessException) + if (pPlugin->has(iOpen) && !Global->ProcessException) { const auto hNewPlugin = Open(pPlugin, OpenFrom, FarGuid, (intptr_t)Data); bool process=false; @@ -2157,7 +2157,7 @@ int PluginManager::CallPluginItem(const GUID& Guid, CallPluginInfo *Data) switch ((Data->CallFlags & CPT_MASK)) { case CPT_MENU: - if (!Data->pPlugin->has()) + if (!Data->pPlugin->has(iOpen)) return FALSE; break; case CPT_CONFIGURE: @@ -2166,7 +2166,7 @@ int PluginManager::CallPluginItem(const GUID& Guid, CallPluginInfo *Data) //TODO: Автокомплит не влияет? return FALSE; } - if (!Data->pPlugin->has()) + if (!Data->pPlugin->has(iConfigure)) return FALSE; break; case CPT_CMDLINE: @@ -2176,12 +2176,12 @@ int PluginManager::CallPluginItem(const GUID& Guid, CallPluginInfo *Data) return FALSE; } //TODO: OpenPanel или OpenFilePlugin? - if (!Data->pPlugin->has()) + if (!Data->pPlugin->has(iOpen)) return FALSE; break; case CPT_INTERNAL: //TODO: Уточнить функцию - if (!Data->pPlugin->has()) + if (!Data->pPlugin->has(iOpen)) return FALSE; break; } @@ -2363,7 +2363,7 @@ std::vector PluginManager::GetContentPlugins(const std::vector Plugins; std::copy_if(ALL_CONST_RANGE(SortedPlugins), std::back_inserter(Plugins), [&Info](Plugin* p) { - return p->has() && p->has() && p->GetContentFields(&Info); + return p->has(iGetContentData) && p->has(iGetContentFields) && p->GetContentFields(&Info); }); return Plugins; } @@ -2391,7 +2391,7 @@ void PluginManager::GetContentData( ContentData[ColNames[k]] += GetInfo.Values[k]; } - if (i->has()) + if (i->has(iFreeContentData)) { i->FreeContentData(&GetInfo); } diff --git a/far/vbuild.m4 b/far/vbuild.m4 index d77d36a3cd..f09d6f88f6 100644 --- a/far/vbuild.m4 +++ b/far/vbuild.m4 @@ -1 +1 @@ -m4_define(BUILD,4625)m4_dnl +m4_define(BUILD,4626)m4_dnl