From 4d140e396aac953a212042ef5ee12a738c0c692c Mon Sep 17 00:00:00 2001 From: malte_langkabel Date: Tue, 16 May 2017 15:29:46 +0200 Subject: [PATCH] src: add IndexerCommandType that will be used instead of string --- src/lib/CMakeLists.txt | 2 ++ src/lib/data/indexer/Indexer.h | 26 +++++++++---------- src/lib/data/indexer/IndexerBase.h | 4 ++- src/lib/data/indexer/IndexerCommand.h | 4 ++- src/lib/data/indexer/IndexerCommandType.cpp | 15 +++++++++++ src/lib/data/indexer/IndexerCommandType.h | 16 ++++++++++++ src/lib/data/indexer/IndexerComposite.cpp | 10 +++---- src/lib/data/indexer/IndexerComposite.h | 4 +-- .../shared_types/SharedIndexerCommand.cpp | 2 +- .../data/indexer/IndexerCommandCxxCdb.cpp | 8 +++--- .../data/indexer/IndexerCommandCxxCdb.h | 4 +-- .../data/indexer/IndexerCommandCxxManual.cpp | 8 +++--- .../data/indexer/IndexerCommandCxxManual.h | 4 +-- .../data/indexer/IndexerCommandJava.cpp | 8 +++--- .../data/indexer/IndexerCommandJava.h | 4 +-- 15 files changed, 78 insertions(+), 41 deletions(-) create mode 100644 src/lib/data/indexer/IndexerCommandType.cpp create mode 100644 src/lib/data/indexer/IndexerCommandType.h diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 2061bf0d..2b813798 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -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 diff --git a/src/lib/data/indexer/Indexer.h b/src/lib/data/indexer/Indexer.h index 44d445a4..72536425 100644 --- a/src/lib/data/indexer/Indexer.h +++ b/src/lib/data/indexer/Indexer.h @@ -7,44 +7,44 @@ #include "data/indexer/IndexerCommand.h" #include "utility/logging/logging.h" -template +template class Indexer : public IndexerBase { public: virtual ~Indexer(); - virtual std::string getKindString() const; + virtual IndexerCommandType getSupportedIndexerCommandType() const; virtual std::shared_ptr index( std::shared_ptr indexerCommand, std::shared_ptr fileRegister); virtual std::shared_ptr doIndex( - std::shared_ptr indexerCommand, + std::shared_ptr indexerCommand, std::shared_ptr fileRegister) = 0; }; -template -Indexer::~Indexer() +template +Indexer::~Indexer() { } -template -std::string Indexer::getKindString() const +template +IndexerCommandType Indexer::getSupportedIndexerCommandType() const { - return IndexerCommandType::getIndexerKindString(); + return T::getStaticIndexerCommandType(); } -template -std::shared_ptr Indexer::index( +template +std::shared_ptr Indexer::index( std::shared_ptr indexerCommand, std::shared_ptr fileRegister) { - std::shared_ptr castedCommand = std::dynamic_pointer_cast(indexerCommand); + std::shared_ptr castedCommand = std::dynamic_pointer_cast(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(); } diff --git a/src/lib/data/indexer/IndexerBase.h b/src/lib/data/indexer/IndexerBase.h index 3cd9df82..352a8704 100644 --- a/src/lib/data/indexer/IndexerBase.h +++ b/src/lib/data/indexer/IndexerBase.h @@ -4,6 +4,8 @@ #include #include +#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 index( std::shared_ptr indexerCommand, diff --git a/src/lib/data/indexer/IndexerCommand.h b/src/lib/data/indexer/IndexerCommand.h index e136b0f3..44d7a4f2 100644 --- a/src/lib/data/indexer/IndexerCommand.h +++ b/src/lib/data/indexer/IndexerCommand.h @@ -4,6 +4,7 @@ #include #include +#include "data/indexer/IndexerCommandType.h" #include "utility/file/FilePath.h" class IndexerCommand @@ -12,7 +13,8 @@ public: IndexerCommand(const FilePath& sourceFilePath, const std::set& indexedPaths, const std::set& excludedPaths); virtual ~IndexerCommand(); - virtual std::string getKindString() const = 0; + virtual IndexerCommandType getIndexerCommandType() const = 0; + virtual size_t getByteSize() const; FilePath getSourceFilePath() const; diff --git a/src/lib/data/indexer/IndexerCommandType.cpp b/src/lib/data/indexer/IndexerCommandType.cpp new file mode 100644 index 00000000..c228024d --- /dev/null +++ b/src/lib/data/indexer/IndexerCommandType.cpp @@ -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"; +} diff --git a/src/lib/data/indexer/IndexerCommandType.h b/src/lib/data/indexer/IndexerCommandType.h new file mode 100644 index 00000000..4ab3dd9d --- /dev/null +++ b/src/lib/data/indexer/IndexerCommandType.h @@ -0,0 +1,16 @@ +#ifndef INDEXER_COMMAND_TYPE_H +#define INDEXER_COMMAND_TYPE_H + +#include + +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 diff --git a/src/lib/data/indexer/IndexerComposite.cpp b/src/lib/data/indexer/IndexerComposite.cpp index c218b5b7..582af070 100644 --- a/src/lib/data/indexer/IndexerComposite.cpp +++ b/src/lib/data/indexer/IndexerComposite.cpp @@ -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 indexer) { - m_indexers.emplace(indexer->getKindString(), indexer); + m_indexers.emplace(indexer->getSupportedIndexerCommandType(), indexer); } std::shared_ptr IndexerComposite::index( std::shared_ptr indexerCommand, std::shared_ptr 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(); } diff --git a/src/lib/data/indexer/IndexerComposite.h b/src/lib/data/indexer/IndexerComposite.h index b096ae73..004032f3 100644 --- a/src/lib/data/indexer/IndexerComposite.h +++ b/src/lib/data/indexer/IndexerComposite.h @@ -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 indexer); @@ -23,7 +23,7 @@ public: virtual void interrupt(); private: - std::unordered_map> m_indexers; + std::unordered_map> m_indexers; }; #endif // INDEXER_COMPOSITE_H diff --git a/src/lib/data/indexer/interprocess/shared_types/SharedIndexerCommand.cpp b/src/lib/data/indexer/interprocess/shared_types/SharedIndexerCommand.cpp index 614458d8..56ac64cc 100644 --- a/src/lib/data/indexer/interprocess/shared_types/SharedIndexerCommand.cpp +++ b/src/lib/data/indexer/interprocess/shared_types/SharedIndexerCommand.cpp @@ -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."); } } diff --git a/src/lib_cxx/data/indexer/IndexerCommandCxxCdb.cpp b/src/lib_cxx/data/indexer/IndexerCommandCxxCdb.cpp index ff57bca0..8733732f 100644 --- a/src/lib_cxx/data/indexer/IndexerCommandCxxCdb.cpp +++ b/src/lib_cxx/data/indexer/IndexerCommandCxxCdb.cpp @@ -21,9 +21,9 @@ std::vector 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 diff --git a/src/lib_cxx/data/indexer/IndexerCommandCxxCdb.h b/src/lib_cxx/data/indexer/IndexerCommandCxxCdb.h index eb144598..dc2d0aff 100644 --- a/src/lib_cxx/data/indexer/IndexerCommandCxxCdb.h +++ b/src/lib_cxx/data/indexer/IndexerCommandCxxCdb.h @@ -18,7 +18,7 @@ class IndexerCommandCxxCdb public: static std::vector getSourceFilesFromCDB(const FilePath& compilationDatabasePath); - static std::string getIndexerKindString(); + static IndexerCommandType getStaticIndexerCommandType(); IndexerCommandCxxCdb( const FilePath& sourceFilePath, @@ -30,7 +30,7 @@ public: const std::vector& frameworkSearchPaths); virtual ~IndexerCommandCxxCdb(); - virtual std::string getKindString() const; + virtual IndexerCommandType getIndexerCommandType() const override; virtual size_t getByteSize() const; FilePath getWorkingDirectory() const; diff --git a/src/lib_cxx/data/indexer/IndexerCommandCxxManual.cpp b/src/lib_cxx/data/indexer/IndexerCommandCxxManual.cpp index 5b48f11d..369552f3 100644 --- a/src/lib_cxx/data/indexer/IndexerCommandCxxManual.cpp +++ b/src/lib_cxx/data/indexer/IndexerCommandCxxManual.cpp @@ -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 diff --git a/src/lib_cxx/data/indexer/IndexerCommandCxxManual.h b/src/lib_cxx/data/indexer/IndexerCommandCxxManual.h index 24b50385..c7c60ea2 100644 --- a/src/lib_cxx/data/indexer/IndexerCommandCxxManual.h +++ b/src/lib_cxx/data/indexer/IndexerCommandCxxManual.h @@ -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; diff --git a/src/lib_java/data/indexer/IndexerCommandJava.cpp b/src/lib_java/data/indexer/IndexerCommandJava.cpp index 4346b540..162552ea 100644 --- a/src/lib_java/data/indexer/IndexerCommandJava.cpp +++ b/src/lib_java/data/indexer/IndexerCommandJava.cpp @@ -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 diff --git a/src/lib_java/data/indexer/IndexerCommandJava.h b/src/lib_java/data/indexer/IndexerCommandJava.h index 2f945478..aefddc9b 100644 --- a/src/lib_java/data/indexer/IndexerCommandJava.h +++ b/src/lib_java/data/indexer/IndexerCommandJava.h @@ -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& classPath); virtual ~IndexerCommandJava(); - virtual std::string getKindString() const override; + virtual IndexerCommandType getIndexerCommandType() const override; virtual size_t getByteSize() const override; std::vector getClassPath() const;