src: added language package classes and moved indexer instantiation there

This commit is contained in:
mlangkabel
2018-04-27 18:02:32 +02:00
parent a7ef02459a
commit 9af5780c12
23 changed files with 154 additions and 188 deletions
+8 -10
View File
@@ -3,10 +3,9 @@
#include <csignal>
#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<SourceGroupFactoryModuleCxx>());
SourceGroupFactory::getInstance()->addModule(std::make_shared<SourceGroupFactoryModuleJava>());
IndexerFactory::getInstance()->addModule(std::make_shared<IndexerFactoryModuleJava>());
IndexerFactory::getInstance()->addModule(std::make_shared<IndexerFactoryModuleCxxCdb>());
IndexerFactory::getInstance()->addModule(std::make_shared<IndexerFactoryModuleCxxEmpty>());
LanguagePackageManager::getInstance()->addPackage(std::make_shared<LanguagePackageJava>());
LanguagePackageManager::getInstance()->addPackage(std::make_shared<LanguagePackageCxx>());
}
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");
+5 -7
View File
@@ -2,10 +2,9 @@
#include <QCoreApplication>
#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<IndexerFactoryModuleJava>());
IndexerFactory::getInstance()->addModule(std::make_shared<IndexerFactoryModuleCxxCdb>());
IndexerFactory::getInstance()->addModule(std::make_shared<IndexerFactoryModuleCxxEmpty>());
LanguagePackageManager::getInstance()->addPackage(std::make_shared<LanguagePackageCxx>());
LanguagePackageManager::getInstance()->addPackage(std::make_shared<LanguagePackageJava>());
InterprocessIndexer indexer(instanceUuid, processId);
indexer.work();
+3 -4
View File
@@ -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
+16
View File
@@ -0,0 +1,16 @@
#ifndef LANGUAGE_PACKAGE_H
#define LANGUAGE_PACKAGE_H
#include <memory>
#include <vector>
class IndexerBase;
class LanguagePackage
{
public:
virtual ~LanguagePackage() = default;
virtual std::vector<std::shared_ptr<IndexerBase>> instantiateSupportedIndexers() const = 0;
};
#endif // LANGUAGE_PACKAGE_H
+38
View File
@@ -0,0 +1,38 @@
#include "LanguagePackageManager.h"
#include "data/indexer/IndexerComposite.h"
#include "LanguagePackage.h"
std::shared_ptr<LanguagePackageManager> LanguagePackageManager::getInstance()
{
if (!s_instance)
{
s_instance = std::shared_ptr<LanguagePackageManager>(new LanguagePackageManager());
}
return s_instance;
}
void LanguagePackageManager::destroyInstance()
{
s_instance.reset();
}
void LanguagePackageManager::addPackage(std::shared_ptr<LanguagePackage> package)
{
m_packages.push_back(package);
}
std::shared_ptr<IndexerComposite> LanguagePackageManager::instantiateSupportedIndexers()
{
std::shared_ptr<IndexerComposite> composite = std::make_shared<IndexerComposite>();
for (std::shared_ptr<LanguagePackage> package : m_packages)
{
for (std::shared_ptr<IndexerBase> indexer : package->instantiateSupportedIndexers())
{
composite->addIndexer(indexer);
}
}
return composite;
}
std::shared_ptr<LanguagePackageManager> LanguagePackageManager::s_instance;
+26
View File
@@ -0,0 +1,26 @@
#ifndef LANGUAGE_PACKAGE_MANAGER_H
#define LANGUAGE_PACKAGE_MANAGER_H
#include <memory>
#include <vector>
class IndexerComposite;
class LanguagePackage;
class LanguagePackageManager
{
public:
static std::shared_ptr<LanguagePackageManager> getInstance();
static void destroyInstance();
void addPackage(std::shared_ptr<LanguagePackage> package);
std::shared_ptr<IndexerComposite> instantiateSupportedIndexers();
private:
static std::shared_ptr<LanguagePackageManager> s_instance;
LanguagePackageManager() = default;
std::vector<std::shared_ptr<LanguagePackage>> m_packages;
};
#endif // LANGUAGE_PACKAGE_MANAGER_H
-40
View File
@@ -1,40 +0,0 @@
#include "data/indexer/IndexerFactory.h"
#include "data/indexer/IndexerComposite.h"
#include "IndexerFactoryModule.h"
std::shared_ptr<IndexerFactory> IndexerFactory::getInstance()
{
if (!s_instance)
{
s_instance = std::shared_ptr<IndexerFactory>(new IndexerFactory());
}
return s_instance;
}
void IndexerFactory::destroyInstance()
{
s_instance.reset();
}
void IndexerFactory::addModule(std::shared_ptr<IndexerFactoryModule> module)
{
m_modules.push_back(module);
}
std::shared_ptr<IndexerComposite> IndexerFactory::createCompositeIndexerForAllRegisteredModules()
{
std::shared_ptr<IndexerComposite> composite = std::make_shared<IndexerComposite>();
for (auto it: m_modules)
{
composite->addIndexer(it->createIndexer());
}
return composite;
}
std::shared_ptr<IndexerFactory> IndexerFactory::s_instance;
IndexerFactory::IndexerFactory()
{
}
-27
View File
@@ -1,27 +0,0 @@
#ifndef INDEXER_FACTORY_H
#define INDEXER_FACTORY_H
#include <memory>
#include <vector>
class IndexerBase;
class IndexerComposite;
class IndexerFactoryModule;
class IndexerFactory
{
public:
static std::shared_ptr<IndexerFactory> getInstance();
static void destroyInstance();
void addModule(std::shared_ptr<IndexerFactoryModule> module);
std::shared_ptr<IndexerComposite> createCompositeIndexerForAllRegisteredModules();
private:
static std::shared_ptr<IndexerFactory> s_instance;
IndexerFactory();
std::vector<std::shared_ptr<IndexerFactoryModule>> m_modules;
};
#endif // INDEXER_FACTORY_H
@@ -1,5 +0,0 @@
#include "data/indexer/IndexerFactoryModule.h"
IndexerFactoryModule::~IndexerFactoryModule()
{
}
@@ -1,15 +0,0 @@
#ifndef INDEXER_FACTORY_MODULE_H
#define INDEXER_FACTORY_MODULE_H
#include <memory>
class IndexerBase;
class IndexerFactoryModule
{
public:
virtual ~IndexerFactoryModule();
virtual std::shared_ptr<IndexerBase> createIndexer() = 0;
};
#endif // INDEXER_FACTORY_MODULE_H
@@ -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<IndexerBase> indexer = IndexerFactory::getInstance()->createCompositeIndexerForAllRegisteredModules();
std::shared_ptr<IndexerBase> indexer = LanguagePackageManager::getInstance()->instantiateSupportedIndexers();
while (std::shared_ptr<IndexerCommand> indexerCommand = m_interprocessIndexerCommandManager.popIndexerCommand())
{
+3 -4
View File
@@ -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
)
+14
View File
@@ -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<std::shared_ptr<IndexerBase>> LanguagePackageCxx::instantiateSupportedIndexers() const
{
return {
std::make_shared<IndexerCxx<IndexerCommandCxxEmpty, CxxParser>>(),
std::make_shared<IndexerCxx<IndexerCommandCxxCdb, CxxParser>>()
};
}
+12
View File
@@ -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<std::shared_ptr<IndexerBase>> instantiateSupportedIndexers() const;
};
#endif // LANGUAGE_PACKAGE_CXX_H
@@ -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<IndexerBase> IndexerFactoryModuleCxxCdb::createIndexer()
{
return std::make_shared<IndexerCxx<IndexerCommandCxxCdb, CxxParser>>();
}
@@ -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<IndexerBase> createIndexer();
};
#endif // INDEXER_FACTORY_MODULE_CXX_CDB_H
@@ -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<IndexerBase> IndexerFactoryModuleCxxEmpty::createIndexer()
{
return std::make_shared<IndexerCxx<IndexerCommandCxxEmpty, CxxParser>>();
}
@@ -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<IndexerBase> createIndexer();
};
#endif // INDEXER_FACTORY_MODULE_CXX_EMPTY_H
+3 -2
View File
@@ -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
)
+10
View File
@@ -0,0 +1,10 @@
#include "LanguagePackageJava.h"
#include "data/indexer/IndexerJava.h"
std::vector<std::shared_ptr<IndexerBase>> LanguagePackageJava::instantiateSupportedIndexers() const
{
return {
std::make_shared<IndexerJava>()
};
}
+12
View File
@@ -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<std::shared_ptr<IndexerBase>> instantiateSupportedIndexers() const;
};
#endif // LANGUAGE_PACKAGE_JAVA_H
@@ -1,12 +0,0 @@
#include "data/indexer/IndexerFactoryModuleJava.h"
#include "data/indexer/IndexerJava.h"
IndexerFactoryModuleJava::~IndexerFactoryModuleJava()
{
}
std::shared_ptr<IndexerBase> IndexerFactoryModuleJava::createIndexer()
{
return std::make_shared<IndexerJava>();
}
@@ -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<IndexerBase> createIndexer();
};
#endif // INDEXER_FACTORY_MODULE_JAVA_H