Files
Sourcetrail/src/lib/data/parser/ParserClientImpl.h
T

70 lines
2.6 KiB
C++

#ifndef PARSER_CLIENT_IMPL_H
#define PARSER_CLIENT_IMPL_H
#include <set>
#include "data/DefinitionKind.h"
#include "data/graph/Node.h"
#include "data/storage/IntermediateStorage.h"
#include "data/parser/ParserClient.h"
class ParserClientImpl
: public ParserClient
{
public:
ParserClientImpl();
virtual ~ParserClientImpl();
void setStorage(std::shared_ptr<IntermediateStorage> storage);
void resetStorage();
virtual Id recordSymbol(
const NameHierarchy& symbolName, SymbolKind symbolKind,
AccessKind access, DefinitionKind definitionKind) override;
virtual Id recordSymbol(
const NameHierarchy& symbolName, SymbolKind symbolKind,
const ParseLocation& location,
AccessKind access, DefinitionKind definitionKind) override;
virtual Id recordSymbol(
const NameHierarchy& symbolName, SymbolKind symbolKind,
const ParseLocation& location, const ParseLocation& scopeLocation,
AccessKind access, DefinitionKind definitionKind) override;
virtual void recordReference(
ReferenceKind referenceKind, const NameHierarchy& referencedName, const NameHierarchy& contextName,
const ParseLocation& location) override;
virtual void recordQualifierLocation(
const NameHierarchy& qualifierName, const ParseLocation& location) override;
virtual void recordLocalSymbol(const std::wstring& name, const ParseLocation& location) override;
virtual void recordFile(const FileInfo& fileInfo, bool indexed) override;
virtual void recordComment(const ParseLocation& location) override;
private:
virtual void doRecordError(
const ParseLocation& location, const std::wstring& message, bool fatal, bool indexed, const FilePath& sourceFilePath) override;
NodeType symbolKindToNodeType(SymbolKind symbolType) const;
Edge::EdgeType referenceKindToEdgeType(ReferenceKind referenceKind) const;
void addAccess(Id nodeId, AccessKind access);
Id addNodeHierarchy(const NameHierarchy& nameHierarchy, NodeType nodeType = NodeType::NODE_SYMBOL);
Id addNode(NodeType nodeType, const NameHierarchy& nameHierarchy);
void addFile(Id id, const FilePath& filePath, const std::string& modificationTime, bool indexed);
void addSymbol(Id id, DefinitionKind definitionKind);
Id addEdge(int type, Id sourceId, Id targetId);
Id addLocalSymbol(const std::wstring& name);
void addSourceLocation(Id elementId, const ParseLocation& location, int type);
void addComponentAccess(Id nodeId , int type);
void addCommentLocation(const ParseLocation& location);
void addError(const std::wstring& message, bool fatal, bool indexed,
const ParseLocation& location, const FilePath& sourceFilePath);
std::shared_ptr<IntermediateStorage> m_storage;
};
#endif // PARSER_CLIENT_IMPL_H