src: added language package classes and moved indexer instantiation there
This commit is contained in:
+8
-10
@@ -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");
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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;
|
||||
@@ -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
|
||||
@@ -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()
|
||||
{
|
||||
}
|
||||
@@ -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())
|
||||
{
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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>>()
|
||||
};
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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>()
|
||||
};
|
||||
}
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user