From 9af5780c12d88e68199bea5e21fc8e412fe86d18 Mon Sep 17 00:00:00 2001 From: mlangkabel Date: Fri, 27 Apr 2018 18:02:32 +0200 Subject: [PATCH] src: added language package classes and moved indexer instantiation there --- src/app/main.cpp | 18 ++++----- src/indexer/main.cpp | 12 +++--- src/lib/CMakeLists.txt | 7 ++-- src/lib/LanguagePackage.h | 16 ++++++++ src/lib/LanguagePackageManager.cpp | 38 ++++++++++++++++++ src/lib/LanguagePackageManager.h | 26 ++++++++++++ src/lib/data/indexer/IndexerFactory.cpp | 40 ------------------- src/lib/data/indexer/IndexerFactory.h | 27 ------------- src/lib/data/indexer/IndexerFactoryModule.cpp | 5 --- src/lib/data/indexer/IndexerFactoryModule.h | 15 ------- .../interprocess/InterprocessIndexer.cpp | 9 ++--- src/lib_cxx/CMakeLists.txt | 7 ++-- src/lib_cxx/LanguagePackageCxx.cpp | 14 +++++++ src/lib_cxx/LanguagePackageCxx.h | 12 ++++++ .../indexer/IndexerFactoryModuleCxxCdb.cpp | 10 ----- .../data/indexer/IndexerFactoryModuleCxxCdb.h | 12 ------ .../indexer/IndexerFactoryModuleCxxEmpty.cpp | 10 ----- .../indexer/IndexerFactoryModuleCxxEmpty.h | 12 ------ src/lib_java/CMakeLists.txt | 5 ++- src/lib_java/LanguagePackageJava.cpp | 10 +++++ src/lib_java/LanguagePackageJava.h | 12 ++++++ .../data/indexer/IndexerFactoryModuleJava.cpp | 12 ------ .../data/indexer/IndexerFactoryModuleJava.h | 13 ------ 23 files changed, 154 insertions(+), 188 deletions(-) create mode 100644 src/lib/LanguagePackage.h create mode 100644 src/lib/LanguagePackageManager.cpp create mode 100644 src/lib/LanguagePackageManager.h delete mode 100644 src/lib/data/indexer/IndexerFactory.cpp delete mode 100644 src/lib/data/indexer/IndexerFactory.h delete mode 100644 src/lib/data/indexer/IndexerFactoryModule.cpp delete mode 100644 src/lib/data/indexer/IndexerFactoryModule.h create mode 100644 src/lib_cxx/LanguagePackageCxx.cpp create mode 100644 src/lib_cxx/LanguagePackageCxx.h delete mode 100644 src/lib_cxx/data/indexer/IndexerFactoryModuleCxxCdb.cpp delete mode 100644 src/lib_cxx/data/indexer/IndexerFactoryModuleCxxCdb.h delete mode 100644 src/lib_cxx/data/indexer/IndexerFactoryModuleCxxEmpty.cpp delete mode 100644 src/lib_cxx/data/indexer/IndexerFactoryModuleCxxEmpty.h create mode 100644 src/lib_java/LanguagePackageJava.cpp create mode 100644 src/lib_java/LanguagePackageJava.h delete mode 100644 src/lib_java/data/indexer/IndexerFactoryModuleJava.cpp delete mode 100644 src/lib_java/data/indexer/IndexerFactoryModuleJava.h diff --git a/src/app/main.cpp b/src/app/main.cpp index 3a6b1dcf..83f40e43 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -3,10 +3,9 @@ #include #include "Application.h" -#include "data/indexer/IndexerFactory.h" -#include "data/indexer/IndexerFactoryModuleJava.h" -#include "data/indexer/IndexerFactoryModuleCxxCdb.h" -#include "data/indexer/IndexerFactoryModuleCxxEmpty.h" +#include "LanguagePackageCxx.h" +#include "LanguagePackageJava.h" +#include "LanguagePackageManager.h" #include "project/SourceGroupFactory.h" #include "project/SourceGroupFactoryModuleCxx.h" #include "project/SourceGroupFactoryModuleJava.h" @@ -165,14 +164,13 @@ void prefillPaths() prefillCxxFrameworkPaths(); } -void addLanguageModules() +void addLanguagePackages() { SourceGroupFactory::getInstance()->addModule(std::make_shared()); SourceGroupFactory::getInstance()->addModule(std::make_shared()); - IndexerFactory::getInstance()->addModule(std::make_shared()); - IndexerFactory::getInstance()->addModule(std::make_shared()); - IndexerFactory::getInstance()->addModule(std::make_shared()); + LanguagePackageManager::getInstance()->addPackage(std::make_shared()); + LanguagePackageManager::getInstance()->addPackage(std::make_shared()); } QCoreApplication* createApplication(int &argc, char *argv[], bool noGUI = false) @@ -269,7 +267,7 @@ int main(int argc, char *argv[]) } prefillPaths(); - addLanguageModules(); + addLanguagePackages(); signal(SIGINT, signalHandler); signal(SIGTERM, signalHandler); @@ -328,7 +326,7 @@ int main(int argc, char *argv[]) }); prefillPaths(); - addLanguageModules(); + addLanguagePackages(); utility::loadFontsFromDirectory(ResourcePaths::getFontsPath(), L".otf"); utility::loadFontsFromDirectory(ResourcePaths::getFontsPath(), L".ttf"); diff --git a/src/indexer/main.cpp b/src/indexer/main.cpp index f3277215..a09d1ca0 100644 --- a/src/indexer/main.cpp +++ b/src/indexer/main.cpp @@ -2,10 +2,9 @@ #include -#include "data/indexer/IndexerFactory.h" -#include "data/indexer/IndexerFactoryModuleJava.h" -#include "data/indexer/IndexerFactoryModuleCxxCdb.h" -#include "data/indexer/IndexerFactoryModuleCxxEmpty.h" +#include "LanguagePackageCxx.h" +#include "LanguagePackageJava.h" +#include "LanguagePackageManager.h" #include "data/indexer/interprocess/InterprocessIndexer.h" #include "settings/ApplicationSettings.h" #include "utility/AppPath.h" @@ -88,9 +87,8 @@ int main(int argc, char *argv[]) LOG_INFO(L"appPath: " + AppPath::getAppPath().wstr()); LOG_INFO(L"userDataPath: " + UserPaths::getUserDataPath().wstr()); - IndexerFactory::getInstance()->addModule(std::make_shared()); - IndexerFactory::getInstance()->addModule(std::make_shared()); - IndexerFactory::getInstance()->addModule(std::make_shared()); + LanguagePackageManager::getInstance()->addPackage(std::make_shared()); + LanguagePackageManager::getInstance()->addPackage(std::make_shared()); InterprocessIndexer indexer(instanceUuid, processId); indexer.work(); diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 3995e93d..aff52ff9 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -170,10 +170,6 @@ add_files( data/indexer/IndexerCommandType.h data/indexer/IndexerComposite.cpp data/indexer/IndexerComposite.h - data/indexer/IndexerFactory.cpp - data/indexer/IndexerFactory.h - data/indexer/IndexerFactoryModule.cpp - data/indexer/IndexerFactoryModule.h data/indexer/TaskBuildIndex.cpp data/indexer/TaskBuildIndex.h @@ -552,6 +548,9 @@ add_files( Application.cpp Application.h + LanguagePackage.h + LanguagePackageManager.cpp + LanguagePackageManager.h LicenseChecker.cpp LicenseChecker.h UpdateChecker.h diff --git a/src/lib/LanguagePackage.h b/src/lib/LanguagePackage.h new file mode 100644 index 00000000..e618ac4d --- /dev/null +++ b/src/lib/LanguagePackage.h @@ -0,0 +1,16 @@ +#ifndef LANGUAGE_PACKAGE_H +#define LANGUAGE_PACKAGE_H + +#include +#include + +class IndexerBase; + +class LanguagePackage +{ +public: + virtual ~LanguagePackage() = default; + virtual std::vector> instantiateSupportedIndexers() const = 0; +}; + +#endif // LANGUAGE_PACKAGE_H diff --git a/src/lib/LanguagePackageManager.cpp b/src/lib/LanguagePackageManager.cpp new file mode 100644 index 00000000..92fcbf0b --- /dev/null +++ b/src/lib/LanguagePackageManager.cpp @@ -0,0 +1,38 @@ +#include "LanguagePackageManager.h" + +#include "data/indexer/IndexerComposite.h" +#include "LanguagePackage.h" + +std::shared_ptr LanguagePackageManager::getInstance() +{ + if (!s_instance) + { + s_instance = std::shared_ptr(new LanguagePackageManager()); + } + return s_instance; +} + +void LanguagePackageManager::destroyInstance() +{ + s_instance.reset(); +} + +void LanguagePackageManager::addPackage(std::shared_ptr package) +{ + m_packages.push_back(package); +} + +std::shared_ptr LanguagePackageManager::instantiateSupportedIndexers() +{ + std::shared_ptr composite = std::make_shared(); + for (std::shared_ptr package : m_packages) + { + for (std::shared_ptr indexer : package->instantiateSupportedIndexers()) + { + composite->addIndexer(indexer); + } + } + return composite; +} + +std::shared_ptr LanguagePackageManager::s_instance; diff --git a/src/lib/LanguagePackageManager.h b/src/lib/LanguagePackageManager.h new file mode 100644 index 00000000..08f8d45e --- /dev/null +++ b/src/lib/LanguagePackageManager.h @@ -0,0 +1,26 @@ +#ifndef LANGUAGE_PACKAGE_MANAGER_H +#define LANGUAGE_PACKAGE_MANAGER_H + +#include +#include + +class IndexerComposite; +class LanguagePackage; + +class LanguagePackageManager +{ +public: + static std::shared_ptr getInstance(); + static void destroyInstance(); + + void addPackage(std::shared_ptr package); + std::shared_ptr instantiateSupportedIndexers(); + +private: + static std::shared_ptr s_instance; + LanguagePackageManager() = default; + + std::vector> m_packages; +}; + +#endif // LANGUAGE_PACKAGE_MANAGER_H \ No newline at end of file diff --git a/src/lib/data/indexer/IndexerFactory.cpp b/src/lib/data/indexer/IndexerFactory.cpp deleted file mode 100644 index 5910a8ab..00000000 --- a/src/lib/data/indexer/IndexerFactory.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include "data/indexer/IndexerFactory.h" - -#include "data/indexer/IndexerComposite.h" -#include "IndexerFactoryModule.h" - -std::shared_ptr IndexerFactory::getInstance() -{ - if (!s_instance) - { - s_instance = std::shared_ptr(new IndexerFactory()); - } - return s_instance; -} - -void IndexerFactory::destroyInstance() -{ - s_instance.reset(); -} - - -void IndexerFactory::addModule(std::shared_ptr module) -{ - m_modules.push_back(module); -} - -std::shared_ptr IndexerFactory::createCompositeIndexerForAllRegisteredModules() -{ - std::shared_ptr composite = std::make_shared(); - for (auto it: m_modules) - { - composite->addIndexer(it->createIndexer()); - } - return composite; -} - -std::shared_ptr IndexerFactory::s_instance; - -IndexerFactory::IndexerFactory() -{ -} diff --git a/src/lib/data/indexer/IndexerFactory.h b/src/lib/data/indexer/IndexerFactory.h deleted file mode 100644 index d81eb6a0..00000000 --- a/src/lib/data/indexer/IndexerFactory.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef INDEXER_FACTORY_H -#define INDEXER_FACTORY_H - -#include -#include - -class IndexerBase; -class IndexerComposite; -class IndexerFactoryModule; - -class IndexerFactory -{ -public: - static std::shared_ptr getInstance(); - static void destroyInstance(); - - void addModule(std::shared_ptr module); - std::shared_ptr createCompositeIndexerForAllRegisteredModules(); - -private: - static std::shared_ptr s_instance; - IndexerFactory(); - - std::vector> m_modules; -}; - -#endif // INDEXER_FACTORY_H diff --git a/src/lib/data/indexer/IndexerFactoryModule.cpp b/src/lib/data/indexer/IndexerFactoryModule.cpp deleted file mode 100644 index 72b69bbd..00000000 --- a/src/lib/data/indexer/IndexerFactoryModule.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "data/indexer/IndexerFactoryModule.h" - -IndexerFactoryModule::~IndexerFactoryModule() -{ -} diff --git a/src/lib/data/indexer/IndexerFactoryModule.h b/src/lib/data/indexer/IndexerFactoryModule.h deleted file mode 100644 index 28cc04a1..00000000 --- a/src/lib/data/indexer/IndexerFactoryModule.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef INDEXER_FACTORY_MODULE_H -#define INDEXER_FACTORY_MODULE_H - -#include - -class IndexerBase; - -class IndexerFactoryModule -{ -public: - virtual ~IndexerFactoryModule(); - virtual std::shared_ptr createIndexer() = 0; -}; - -#endif // INDEXER_FACTORY_MODULE_H diff --git a/src/lib/data/indexer/interprocess/InterprocessIndexer.cpp b/src/lib/data/indexer/interprocess/InterprocessIndexer.cpp index 01b3e992..68867aac 100644 --- a/src/lib/data/indexer/interprocess/InterprocessIndexer.cpp +++ b/src/lib/data/indexer/interprocess/InterprocessIndexer.cpp @@ -1,11 +1,10 @@ #include "InterprocessIndexer.h" -#include "utility/file/FileRegister.h" -#include "utility/logging/logging.h" - #include "data/indexer/IndexerCommand.h" #include "data/indexer/IndexerComposite.h" -#include "data/indexer/IndexerFactory.h" +#include "utility/file/FileRegister.h" +#include "utility/logging/logging.h" +#include "LanguagePackageManager.h" InterprocessIndexer::InterprocessIndexer(const std::string& uuid, Id processId) : m_interprocessIndexerCommandManager(uuid, processId, false) @@ -25,7 +24,7 @@ void InterprocessIndexer::work() try { LOG_INFO(std::to_wstring(m_processId) + L" starting up indexer"); - std::shared_ptr indexer = IndexerFactory::getInstance()->createCompositeIndexerForAllRegisteredModules(); + std::shared_ptr indexer = LanguagePackageManager::getInstance()->instantiateSupportedIndexers(); while (std::shared_ptr indexerCommand = m_interprocessIndexerCommandManager.popIndexerCommand()) { diff --git a/src/lib_cxx/CMakeLists.txt b/src/lib_cxx/CMakeLists.txt index 9c24dd7e..1fa02ff0 100644 --- a/src/lib_cxx/CMakeLists.txt +++ b/src/lib_cxx/CMakeLists.txt @@ -9,10 +9,6 @@ add_files( data/indexer/IndexerCommandCxxEmpty.cpp data/indexer/IndexerCommandCxxEmpty.h data/indexer/IndexerCxx.h - data/indexer/IndexerFactoryModuleCxxCdb.cpp - data/indexer/IndexerFactoryModuleCxxCdb.h - data/indexer/IndexerFactoryModuleCxxEmpty.cpp - data/indexer/IndexerFactoryModuleCxxEmpty.h data/parser/cxx/name/CxxDeclName.cpp data/parser/cxx/name/CxxDeclName.h @@ -95,4 +91,7 @@ add_files( utility/IncludeDirective.h utility/IncludeProcessing.cpp utility/IncludeProcessing.h + + LanguagePackageCxx.cpp + LanguagePackageCxx.h ) diff --git a/src/lib_cxx/LanguagePackageCxx.cpp b/src/lib_cxx/LanguagePackageCxx.cpp new file mode 100644 index 00000000..cfcc37fa --- /dev/null +++ b/src/lib_cxx/LanguagePackageCxx.cpp @@ -0,0 +1,14 @@ +#include "LanguagePackageCxx.h" + +#include "data/indexer/IndexerCxx.h" +#include "data/indexer/IndexerCommandCxxEmpty.h" +#include "data/indexer/IndexerCommandCxxCdb.h" +#include "data/parser/cxx/CxxParser.h" + +std::vector> LanguagePackageCxx::instantiateSupportedIndexers() const +{ + return { + std::make_shared>(), + std::make_shared>() + }; +} diff --git a/src/lib_cxx/LanguagePackageCxx.h b/src/lib_cxx/LanguagePackageCxx.h new file mode 100644 index 00000000..d3693b2a --- /dev/null +++ b/src/lib_cxx/LanguagePackageCxx.h @@ -0,0 +1,12 @@ +#ifndef LANGUAGE_PACKAGE_CXX_H +#define LANGUAGE_PACKAGE_CXX_H + +#include "LanguagePackage.h" + +class LanguagePackageCxx: public LanguagePackage +{ +public: + virtual std::vector> instantiateSupportedIndexers() const; +}; + +#endif // LANGUAGE_PACKAGE_CXX_H diff --git a/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxCdb.cpp b/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxCdb.cpp deleted file mode 100644 index 0b5ca94a..00000000 --- a/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxCdb.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include "data/indexer/IndexerFactoryModuleCxxCdb.h" - -#include "data/indexer/IndexerCxx.h" -#include "data/indexer/IndexerCommandCxxCdb.h" -#include "data/parser/cxx/CxxParser.h" - -std::shared_ptr IndexerFactoryModuleCxxCdb::createIndexer() -{ - return std::make_shared>(); -} diff --git a/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxCdb.h b/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxCdb.h deleted file mode 100644 index cd746e1d..00000000 --- a/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxCdb.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef INDEXER_FACTORY_MODULE_CXX_CDB_H -#define INDEXER_FACTORY_MODULE_CXX_CDB_H - -#include "data/indexer/IndexerFactoryModule.h" - -class IndexerFactoryModuleCxxCdb: public IndexerFactoryModule -{ -public: - virtual std::shared_ptr createIndexer(); -}; - -#endif // INDEXER_FACTORY_MODULE_CXX_CDB_H diff --git a/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxEmpty.cpp b/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxEmpty.cpp deleted file mode 100644 index 72fcbaba..00000000 --- a/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxEmpty.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include "data/indexer/IndexerFactoryModuleCxxEmpty.h" - -#include "data/indexer/IndexerCxx.h" -#include "data/indexer/IndexerCommandCxxEmpty.h" -#include "data/parser/cxx/CxxParser.h" - -std::shared_ptr IndexerFactoryModuleCxxEmpty::createIndexer() -{ - return std::make_shared>(); -} diff --git a/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxEmpty.h b/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxEmpty.h deleted file mode 100644 index 09258fea..00000000 --- a/src/lib_cxx/data/indexer/IndexerFactoryModuleCxxEmpty.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef INDEXER_FACTORY_MODULE_CXX_EMPTY_H -#define INDEXER_FACTORY_MODULE_CXX_EMPTY_H - -#include "data/indexer/IndexerFactoryModule.h" - -class IndexerFactoryModuleCxxEmpty: public IndexerFactoryModule -{ -public: - virtual std::shared_ptr createIndexer(); -}; - -#endif // INDEXER_FACTORY_MODULE_CXX_EMPTY_H diff --git a/src/lib_java/CMakeLists.txt b/src/lib_java/CMakeLists.txt index f7ed474a..4efb8073 100644 --- a/src/lib_java/CMakeLists.txt +++ b/src/lib_java/CMakeLists.txt @@ -4,8 +4,6 @@ add_files( data/indexer/IndexerCommandJava.cpp data/indexer/IndexerCommandJava.h - data/indexer/IndexerFactoryModuleJava.cpp - data/indexer/IndexerFactoryModuleJava.h data/indexer/IndexerJava.cpp data/indexer/IndexerJava.h @@ -33,4 +31,7 @@ add_files( utility/utilityGradle.h utility/utilityMaven.cpp utility/utilityMaven.h + + LanguagePackageJava.cpp + LanguagePackageJava.h ) diff --git a/src/lib_java/LanguagePackageJava.cpp b/src/lib_java/LanguagePackageJava.cpp new file mode 100644 index 00000000..6ade9355 --- /dev/null +++ b/src/lib_java/LanguagePackageJava.cpp @@ -0,0 +1,10 @@ +#include "LanguagePackageJava.h" + +#include "data/indexer/IndexerJava.h" + +std::vector> LanguagePackageJava::instantiateSupportedIndexers() const +{ + return { + std::make_shared() + }; +} diff --git a/src/lib_java/LanguagePackageJava.h b/src/lib_java/LanguagePackageJava.h new file mode 100644 index 00000000..383fccc0 --- /dev/null +++ b/src/lib_java/LanguagePackageJava.h @@ -0,0 +1,12 @@ +#ifndef LANGUAGE_PACKAGE_JAVA_H +#define LANGUAGE_PACKAGE_JAVA_H + +#include "LanguagePackage.h" + +class LanguagePackageJava : public LanguagePackage +{ +public: + virtual std::vector> instantiateSupportedIndexers() const; +}; + +#endif // LANGUAGE_PACKAGE_JAVA_H diff --git a/src/lib_java/data/indexer/IndexerFactoryModuleJava.cpp b/src/lib_java/data/indexer/IndexerFactoryModuleJava.cpp deleted file mode 100644 index cb68183f..00000000 --- a/src/lib_java/data/indexer/IndexerFactoryModuleJava.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include "data/indexer/IndexerFactoryModuleJava.h" - -#include "data/indexer/IndexerJava.h" - -IndexerFactoryModuleJava::~IndexerFactoryModuleJava() -{ -} - -std::shared_ptr IndexerFactoryModuleJava::createIndexer() -{ - return std::make_shared(); -} diff --git a/src/lib_java/data/indexer/IndexerFactoryModuleJava.h b/src/lib_java/data/indexer/IndexerFactoryModuleJava.h deleted file mode 100644 index f2cdc79c..00000000 --- a/src/lib_java/data/indexer/IndexerFactoryModuleJava.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef INDEXER_FACTORY_MODULE_JAVA_H -#define INDEXER_FACTORY_MODULE_JAVA_H - -#include "data/indexer/IndexerFactoryModule.h" - -class IndexerFactoryModuleJava: public IndexerFactoryModule -{ -public: - virtual ~IndexerFactoryModuleJava(); - virtual std::shared_ptr createIndexer(); -}; - -#endif // INDEXER_FACTORY_MODULE_JAVA_H