* replaced parser arguments by project specific IndexerCommands that know everything the indexer needs to know to do its job * added different language and project specific indexers that know how to handle a certain kind of indexer command * refactored FileManager and FileRegister to have less overhead * removed no-rtti restriction for clang files in lib cxx * uncommented deprecated interprocess code. fortune cookie message = Happiness will bring you good luck.
42 lines
900 B
C++
42 lines
900 B
C++
#include "data/indexer/IndexerFactory.h"
|
|
|
|
#include "data/indexer/IndexerBase.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()
|
|
{
|
|
}
|