Files
Sourcetrail/src/lib/data/parser/cxx/TaskParseCxx.h
T
malte_langkabel f06dd6abc5 logic: improved indexer parallelization
* added task that injects into PersistentStorage parallel to indexer tasks.
* added Blackboard for Task classes
2016-09-12 11:52:14 +02:00

64 lines
1.5 KiB
C++

#ifndef TASK_PARSE_CXX_H
#define TASK_PARSE_CXX_H
#include <memory>
#include <deque>
#include "data/parser/Parser.h"
#include "data/parser/ParserClientImpl.h"
#include "utility/scheduling/Task.h"
#include "utility/TimePoint.h"
#include "utility/messaging/type/MessageInterruptTasks.h"
#include "utility/messaging/MessageListener.h"
class CxxParser;
class DialogView;
class FileRegister;
class StorageProvider;
namespace clang
{
namespace tooling
{
class JSONCompilationDatabase;
}
}
class TaskParseCxx
: public Task
, public MessageListener<MessageInterruptTasks>
{
public:
static std::vector<FilePath> getSourceFilesFromCDB(const FilePath& compilationDatabasePath);
TaskParseCxx(
std::shared_ptr<StorageProvider> storageProvider,
std::shared_ptr<FileRegister> fileRegister,
const Parser::Arguments& arguments,
DialogView* dialogView
);
private:
virtual void doEnter(std::shared_ptr<Blackboard> blackboard);
virtual TaskState doUpdate(std::shared_ptr<Blackboard> blackboard);
virtual void doExit(std::shared_ptr<Blackboard> blackboard);
virtual void doReset(std::shared_ptr<Blackboard> blackboard);
virtual void handleMessage(MessageInterruptTasks* message);
std::shared_ptr<StorageProvider> m_storageProvider;
const Parser::Arguments m_arguments;
DialogView* m_dialogView;
std::shared_ptr<CxxParser> m_parser;
std::shared_ptr<ParserClientImpl> m_parserClient;
bool m_isCDB;
std::shared_ptr<clang::tooling::JSONCompilationDatabase> m_cdb;
bool m_interrupted;
};
#endif // TASK_PARSE_CXX_H