src: add IndexerCommandType that will be used instead of string
This commit is contained in:
@@ -162,6 +162,8 @@ add_files(
|
||||
data/indexer/IndexerCommand.h
|
||||
data/indexer/IndexerCommandList.cpp
|
||||
data/indexer/IndexerCommandList.h
|
||||
data/indexer/IndexerCommandType.cpp
|
||||
data/indexer/IndexerCommandType.h
|
||||
data/indexer/IndexerComposite.cpp
|
||||
data/indexer/IndexerComposite.h
|
||||
data/indexer/IndexerFactory.cpp
|
||||
|
||||
@@ -7,44 +7,44 @@
|
||||
#include "data/indexer/IndexerCommand.h"
|
||||
#include "utility/logging/logging.h"
|
||||
|
||||
template <typename IndexerCommandType>
|
||||
template <typename T>
|
||||
class Indexer
|
||||
: public IndexerBase
|
||||
{
|
||||
public:
|
||||
virtual ~Indexer();
|
||||
|
||||
virtual std::string getKindString() const;
|
||||
virtual IndexerCommandType getSupportedIndexerCommandType() const;
|
||||
|
||||
virtual std::shared_ptr<IntermediateStorage> index(
|
||||
std::shared_ptr<IndexerCommand> indexerCommand,
|
||||
std::shared_ptr<FileRegister> fileRegister);
|
||||
|
||||
virtual std::shared_ptr<IntermediateStorage> doIndex(
|
||||
std::shared_ptr<IndexerCommandType> indexerCommand,
|
||||
std::shared_ptr<T> indexerCommand,
|
||||
std::shared_ptr<FileRegister> fileRegister) = 0;
|
||||
};
|
||||
|
||||
template <typename IndexerCommandType>
|
||||
Indexer<IndexerCommandType>::~Indexer()
|
||||
template <typename T>
|
||||
Indexer<T>::~Indexer()
|
||||
{
|
||||
}
|
||||
|
||||
template <typename IndexerCommandType>
|
||||
std::string Indexer<IndexerCommandType>::getKindString() const
|
||||
template <typename T>
|
||||
IndexerCommandType Indexer<T>::getSupportedIndexerCommandType() const
|
||||
{
|
||||
return IndexerCommandType::getIndexerKindString();
|
||||
return T::getStaticIndexerCommandType();
|
||||
}
|
||||
|
||||
template <typename IndexerCommandType>
|
||||
std::shared_ptr<IntermediateStorage> Indexer<IndexerCommandType>::index(
|
||||
template <typename T>
|
||||
std::shared_ptr<IntermediateStorage> Indexer<T>::index(
|
||||
std::shared_ptr<IndexerCommand> indexerCommand, std::shared_ptr<FileRegister> fileRegister)
|
||||
{
|
||||
std::shared_ptr<IndexerCommandType> castedCommand = std::dynamic_pointer_cast<IndexerCommandType>(indexerCommand);
|
||||
std::shared_ptr<T> castedCommand = std::dynamic_pointer_cast<T>(indexerCommand);
|
||||
if (!castedCommand)
|
||||
{
|
||||
LOG_ERROR("Trying to process " + indexerCommand->getKindString() +
|
||||
" indexer command with " + getKindString() + " indexer.");
|
||||
LOG_ERROR("Trying to process " + indexerCommandTypeToString(indexerCommand->getIndexerCommandType()) +
|
||||
" indexer command with indexer that supports \"" + indexerCommandTypeToString(getSupportedIndexerCommandType()) + "\".");
|
||||
|
||||
return std::shared_ptr<IntermediateStorage>();
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include "data/indexer/IndexerCommandType.h"
|
||||
|
||||
class FileRegister;
|
||||
class IndexerCommand;
|
||||
class IntermediateStorage;
|
||||
@@ -14,7 +16,7 @@ public:
|
||||
IndexerBase();
|
||||
virtual ~IndexerBase();
|
||||
|
||||
virtual std::string getKindString() const = 0;
|
||||
virtual IndexerCommandType getSupportedIndexerCommandType() const = 0;
|
||||
|
||||
virtual std::shared_ptr<IntermediateStorage> index(
|
||||
std::shared_ptr<IndexerCommand> indexerCommand,
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <set>
|
||||
#include <string>
|
||||
|
||||
#include "data/indexer/IndexerCommandType.h"
|
||||
#include "utility/file/FilePath.h"
|
||||
|
||||
class IndexerCommand
|
||||
@@ -12,7 +13,8 @@ public:
|
||||
IndexerCommand(const FilePath& sourceFilePath, const std::set<FilePath>& indexedPaths, const std::set<FilePath>& excludedPaths);
|
||||
virtual ~IndexerCommand();
|
||||
|
||||
virtual std::string getKindString() const = 0;
|
||||
virtual IndexerCommandType getIndexerCommandType() const = 0;
|
||||
|
||||
virtual size_t getByteSize() const;
|
||||
|
||||
FilePath getSourceFilePath() const;
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
#include "data/indexer/IndexerCommandType.h"
|
||||
|
||||
std::string indexerCommandTypeToString(IndexerCommandType type)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case INDEXER_COMMAND_CXX_MANUAL:
|
||||
return "indexer command cxx manual";
|
||||
case INDEXER_COMMAND_CXX_CDB:
|
||||
return "indexer command cxx cdb";
|
||||
case INDEXER_COMMAND_JAVA:
|
||||
return "indexer command java";
|
||||
}
|
||||
return "indexer command unknown";
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifndef INDEXER_COMMAND_TYPE_H
|
||||
#define INDEXER_COMMAND_TYPE_H
|
||||
|
||||
#include <string>
|
||||
|
||||
enum IndexerCommandType
|
||||
{
|
||||
INDEXER_COMMAND_UNKNOWN,
|
||||
INDEXER_COMMAND_CXX_MANUAL,
|
||||
INDEXER_COMMAND_CXX_CDB,
|
||||
INDEXER_COMMAND_JAVA,
|
||||
};
|
||||
|
||||
std::string indexerCommandTypeToString(IndexerCommandType type);
|
||||
|
||||
#endif // INDEXER_COMMAND_TYPE_H
|
||||
@@ -8,26 +8,26 @@ IndexerComposite::~IndexerComposite()
|
||||
{
|
||||
}
|
||||
|
||||
std::string IndexerComposite::getKindString() const
|
||||
IndexerCommandType IndexerComposite::getSupportedIndexerCommandType() const
|
||||
{
|
||||
return "composite";
|
||||
return INDEXER_COMMAND_UNKNOWN;
|
||||
}
|
||||
|
||||
void IndexerComposite::addIndexer(std::shared_ptr<IndexerBase> indexer)
|
||||
{
|
||||
m_indexers.emplace(indexer->getKindString(), indexer);
|
||||
m_indexers.emplace(indexer->getSupportedIndexerCommandType(), indexer);
|
||||
}
|
||||
|
||||
std::shared_ptr<IntermediateStorage> IndexerComposite::index(
|
||||
std::shared_ptr<IndexerCommand> indexerCommand, std::shared_ptr<FileRegister> fileRegister)
|
||||
{
|
||||
auto it = m_indexers.find(indexerCommand->getKindString());
|
||||
auto it = m_indexers.find(indexerCommand->getIndexerCommandType());
|
||||
if (it != m_indexers.end())
|
||||
{
|
||||
return it->second->index(indexerCommand, fileRegister);
|
||||
}
|
||||
|
||||
LOG_ERROR("No indexer found to handle " + indexerCommand->getKindString() + " indexer command.");
|
||||
LOG_ERROR("No indexer found that supports \"" + indexerCommandTypeToString(indexerCommand->getIndexerCommandType()) + "\".");
|
||||
return std::shared_ptr<IntermediateStorage>();
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ class IndexerComposite: public IndexerBase
|
||||
public:
|
||||
virtual ~IndexerComposite();
|
||||
|
||||
virtual std::string getKindString() const;
|
||||
virtual IndexerCommandType getSupportedIndexerCommandType() const;
|
||||
|
||||
void addIndexer(std::shared_ptr<IndexerBase> indexer);
|
||||
|
||||
@@ -23,7 +23,7 @@ public:
|
||||
virtual void interrupt();
|
||||
|
||||
private:
|
||||
std::unordered_map<std::string, std::shared_ptr<IndexerBase>> m_indexers;
|
||||
std::unordered_map<IndexerCommandType, std::shared_ptr<IndexerBase>> m_indexers;
|
||||
};
|
||||
|
||||
#endif // INDEXER_COMPOSITE_H
|
||||
|
||||
@@ -44,7 +44,7 @@ void SharedIndexerCommand::fromLocal(IndexerCommand* indexerCommand)
|
||||
else
|
||||
{
|
||||
LOG_ERROR_STREAM(<< "Trying to push unhandled type of IndexerCommand for file: "
|
||||
<< indexerCommand->getSourceFilePath().str() << ". Type string is: " << indexerCommand->getKindString()
|
||||
<< indexerCommand->getSourceFilePath().str() << ". Type string is: " << indexerCommandTypeToString(indexerCommand->getIndexerCommandType())
|
||||
<< ". It will be ignored.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,9 +21,9 @@ std::vector<FilePath> IndexerCommandCxxCdb::getSourceFilesFromCDB(const FilePath
|
||||
return filePaths;
|
||||
}
|
||||
|
||||
std::string IndexerCommandCxxCdb::getIndexerKindString()
|
||||
IndexerCommandType IndexerCommandCxxCdb::getStaticIndexerCommandType()
|
||||
{
|
||||
return "CxxCdb";
|
||||
return INDEXER_COMMAND_CXX_CDB;
|
||||
}
|
||||
|
||||
IndexerCommandCxxCdb::IndexerCommandCxxCdb(
|
||||
@@ -44,9 +44,9 @@ IndexerCommandCxxCdb::~IndexerCommandCxxCdb()
|
||||
{
|
||||
}
|
||||
|
||||
std::string IndexerCommandCxxCdb::getKindString() const
|
||||
IndexerCommandType IndexerCommandCxxCdb::getIndexerCommandType() const
|
||||
{
|
||||
return getIndexerKindString();
|
||||
return getStaticIndexerCommandType();
|
||||
}
|
||||
|
||||
size_t IndexerCommandCxxCdb::getByteSize() const
|
||||
|
||||
@@ -18,7 +18,7 @@ class IndexerCommandCxxCdb
|
||||
public:
|
||||
static std::vector<FilePath> getSourceFilesFromCDB(const FilePath& compilationDatabasePath);
|
||||
|
||||
static std::string getIndexerKindString();
|
||||
static IndexerCommandType getStaticIndexerCommandType();
|
||||
|
||||
IndexerCommandCxxCdb(
|
||||
const FilePath& sourceFilePath,
|
||||
@@ -30,7 +30,7 @@ public:
|
||||
const std::vector<FilePath>& frameworkSearchPaths);
|
||||
virtual ~IndexerCommandCxxCdb();
|
||||
|
||||
virtual std::string getKindString() const;
|
||||
virtual IndexerCommandType getIndexerCommandType() const override;
|
||||
virtual size_t getByteSize() const;
|
||||
|
||||
FilePath getWorkingDirectory() const;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#include "data/indexer/IndexerCommandCxxManual.h"
|
||||
|
||||
std::string IndexerCommandCxxManual::getIndexerKindString()
|
||||
IndexerCommandType IndexerCommandCxxManual::getStaticIndexerCommandType()
|
||||
{
|
||||
return "CxxManual";
|
||||
return INDEXER_COMMAND_CXX_MANUAL;
|
||||
}
|
||||
|
||||
IndexerCommandCxxManual::IndexerCommandCxxManual(
|
||||
@@ -23,9 +23,9 @@ IndexerCommandCxxManual::~IndexerCommandCxxManual()
|
||||
{
|
||||
}
|
||||
|
||||
std::string IndexerCommandCxxManual::getKindString() const
|
||||
IndexerCommandType IndexerCommandCxxManual::getIndexerCommandType() const
|
||||
{
|
||||
return getIndexerKindString();
|
||||
return getStaticIndexerCommandType();
|
||||
}
|
||||
|
||||
size_t IndexerCommandCxxManual::getByteSize() const
|
||||
|
||||
@@ -9,7 +9,7 @@ class IndexerCommandCxxManual
|
||||
: public IndexerCommandCxx
|
||||
{
|
||||
public:
|
||||
static std::string getIndexerKindString();
|
||||
static IndexerCommandType getStaticIndexerCommandType();
|
||||
|
||||
IndexerCommandCxxManual(
|
||||
const FilePath& sourceFilePath,
|
||||
@@ -22,7 +22,7 @@ public:
|
||||
|
||||
virtual ~IndexerCommandCxxManual();
|
||||
|
||||
virtual std::string getKindString() const;
|
||||
virtual IndexerCommandType getIndexerCommandType() const override;
|
||||
virtual size_t getByteSize() const;
|
||||
|
||||
std::string getLanguageStandard() const;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#include "data/indexer/IndexerCommandJava.h"
|
||||
|
||||
std::string IndexerCommandJava::getIndexerKindString()
|
||||
IndexerCommandType IndexerCommandJava::getStaticIndexerCommandType()
|
||||
{
|
||||
return "Java";
|
||||
return INDEXER_COMMAND_JAVA;
|
||||
}
|
||||
|
||||
IndexerCommandJava::IndexerCommandJava(
|
||||
@@ -20,9 +20,9 @@ IndexerCommandJava::~IndexerCommandJava()
|
||||
{
|
||||
}
|
||||
|
||||
std::string IndexerCommandJava::getKindString() const
|
||||
IndexerCommandType IndexerCommandJava::getIndexerCommandType() const
|
||||
{
|
||||
return getIndexerKindString();
|
||||
return getStaticIndexerCommandType();
|
||||
}
|
||||
|
||||
size_t IndexerCommandJava::getByteSize() const
|
||||
|
||||
@@ -11,7 +11,7 @@ class IndexerCommandJava
|
||||
: public IndexerCommand
|
||||
{
|
||||
public:
|
||||
static std::string getIndexerKindString();
|
||||
static IndexerCommandType getStaticIndexerCommandType();
|
||||
|
||||
IndexerCommandJava(
|
||||
const FilePath& sourceFilePath,
|
||||
@@ -20,7 +20,7 @@ public:
|
||||
const std::vector<FilePath>& classPath);
|
||||
virtual ~IndexerCommandJava();
|
||||
|
||||
virtual std::string getKindString() const override;
|
||||
virtual IndexerCommandType getIndexerCommandType() const override;
|
||||
virtual size_t getByteSize() const override;
|
||||
|
||||
std::vector<FilePath> getClassPath() const;
|
||||
|
||||
Reference in New Issue
Block a user