#ifndef PARSER_CLIENT_H #define PARSER_CLIENT_H #include #include "AccessKind.h" #include "DefinitionKind.h" #include "NameHierarchy.h" #include "ParseLocation.h" #include "ReferenceKind.h" #include "SymbolKind.h" #include "types.h" class ParserClient { public: virtual ~ParserClient() = default; virtual Id recordFile(const FilePath& filePath, bool indexed) = 0; virtual void recordFileLanguage(Id fileId, const std::wstring& languageIdentifier) = 0; virtual Id recordSymbol(const NameHierarchy& symbolName) = 0; virtual void recordSymbolKind(Id symbolId, SymbolKind symbolKind) = 0; virtual void recordAccessKind(Id symbolId, AccessKind accessKind) = 0; virtual void recordDefinitionKind(Id symbolId, DefinitionKind definitionKind) = 0; virtual Id recordReference(ReferenceKind referenceKind, Id referencedSymbolId, Id contextSymbolId, const ParseLocation& location) = 0; virtual void recordLocalSymbol(const std::wstring& name, const ParseLocation& location) = 0; virtual void recordLocation(Id elementId, const ParseLocation& location, ParseLocationType type) = 0; virtual void recordComment(const ParseLocation& location) = 0; virtual void recordError(const std::wstring& message, bool fatal, bool indexed, const FilePath& translationUnit, const ParseLocation& location) = 0; virtual bool hasContent() const = 0; }; #endif // PARSER_CLIENT_H