#ifndef TASK_PARSE_CXX_H #define TASK_PARSE_CXX_H #include #include #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 { public: static std::vector getSourceFilesFromCDB(const FilePath& compilationDatabasePath); TaskParseCxx( std::shared_ptr storageProvider, std::shared_ptr fileRegister, const Parser::Arguments& arguments, DialogView* dialogView ); private: virtual void doEnter(std::shared_ptr blackboard); virtual TaskState doUpdate(std::shared_ptr blackboard); virtual void doExit(std::shared_ptr blackboard); virtual void doReset(std::shared_ptr blackboard); virtual void handleMessage(MessageInterruptTasks* message); std::shared_ptr m_storageProvider; const Parser::Arguments m_arguments; DialogView* m_dialogView; std::shared_ptr m_parser; std::shared_ptr m_parserClient; bool m_isCDB; std::shared_ptr m_cdb; bool m_interrupted; }; #endif // TASK_PARSE_CXX_H