data: Saving TokenLocations of scopes separately

This change parses the TokenLocations of scopes of classes, structs, functions, methods, namespaces and enums and
saves them in Storage with type LOCATION_SCOPE. The TokenLocations of these nodes are just their name declarations now.
Scope locations are displayed in blue color in the code view.
This commit is contained in:
Eberhard Graether
2014-07-28 17:54:36 +02:00
parent 182e18840e
commit 96df63055a
18 changed files with 261 additions and 114 deletions
+11 -7
View File
@@ -30,25 +30,29 @@ public:
const ParseLocation& location, const std::string& fullName, const DataType& underlyingType,
AccessType access
);
virtual void onClassParsed(const ParseLocation& location, const std::string& fullName, AccessType access);
virtual void onStructParsed(const ParseLocation& location, const std::string& fullName, AccessType access);
virtual void onClassParsed(
const ParseLocation& location, const std::string& fullName, AccessType access, const ParseLocation& scopeLocation);
virtual void onStructParsed(
const ParseLocation& location, const std::string& fullName, AccessType access, const ParseLocation& scopeLocation);
virtual void onGlobalVariableParsed(const ParseLocation& location, const ParseVariable& variable);
virtual void onFieldParsed(const ParseLocation& location, const ParseVariable& variable, AccessType access);
virtual void onFunctionParsed(
const ParseLocation& location, const std::string& fullName, const ParseTypeUsage& returnType,
const std::vector<ParseTypeUsage>& parameters
const std::vector<ParseTypeUsage>& parameters, const ParseLocation& scopeLocation
);
virtual void onMethodParsed(
const ParseLocation& location, const std::string& fullName, const ParseTypeUsage& returnType,
const std::vector<ParseTypeUsage>& parameters, AccessType access, AbstractionType abstraction,
bool isConst, bool isStatic
bool isConst, bool isStatic, const ParseLocation& scopeLocation
);
virtual void onNamespaceParsed(const ParseLocation& location, const std::string& fullName);
virtual void onNamespaceParsed(
const ParseLocation& location, const std::string& fullName, const ParseLocation& scopeLocation);
virtual void onEnumParsed(const ParseLocation& location, const std::string& fullName, AccessType access);
virtual void onEnumParsed(
const ParseLocation& location, const std::string& fullName, AccessType access, const ParseLocation& scopeLocation);
virtual void onEnumFieldParsed(const ParseLocation& location, const std::string& fullName);
virtual void onInheritanceParsed(
@@ -96,7 +100,7 @@ private:
TokenComponentAccess* addAccess(Node* node, ParserClient::AccessType access);
Edge* addTypeEdge(Node* node, Edge::EdgeType edgeType, const DataType& type);
Edge* addTypeEdge(Node* node, Edge::EdgeType edgeType, const ParseTypeUsage& typeUsage);
TokenLocation* addTokenLocation(Token* token, const ParseLocation& location);
TokenLocation* addTokenLocation(Token* token, const ParseLocation& location, bool isScope = false);
void log(std::string type, std::string str, const ParseLocation& location) const;