#ifndef CXX_PARSER_H #define CXX_PARSER_H #include "data/parser/cxx/cxxCacheTypes.h" #include "data/parser/Parser.h" class CxxDiagnosticConsumer; class FilePath; class FileRegister; class IndexerCommandCxxCdb; class IndexerCommandCxxManual; class TaskParseCxx; namespace clang { namespace tooling { class FixedCompilationDatabase; } } class CxxParser: public Parser { public: CxxParser(std::shared_ptr client, std::shared_ptr fileRegister); ~CxxParser(); void buildIndex(std::shared_ptr indexerCommand); void buildIndex(std::shared_ptr indexerCommand); void buildIndex(const std::string& fileName, std::shared_ptr fileContent); private: std::vector getCommandlineArgumentsEssential( const std::vector& compilerFlags, const std::vector& systemHeaderSearchPaths, const std::vector& frameworkSearchPaths) const; std::vector getCommandlineArguments(std::shared_ptr indexerCommand) const; std::shared_ptr getCompilationDatabase(std::shared_ptr indexerCommand) const; std::shared_ptr getDiagnostics(std::shared_ptr canonicalFilePathCache, bool logErrors) const; friend class TaskParseCxx; std::shared_ptr m_fileRegister; }; #endif // CXX_PARSER_H