implement functionality to store a qualifier location to the database

This commit is contained in:
mlangkabel
2019-03-26 11:33:01 +01:00
parent 702330265f
commit 24668448f5
4 changed files with 48 additions and 1 deletions
+20
View File
@@ -349,6 +349,26 @@ namespace sourcetrail
*/
bool recordReferenceLocation(int referenceId, const SourceRange& location);
/**
* Stores a location for the usage of a symbol's name as qualifier to the database
*
* This method allows to store a location where a specific symbol is used as a qualifier to the
* database. Calling this method with the same referencedSymbolId multiple times adds multiple locations
* for the respective reference. The stored location will be clickable but not displayable: When the
* reference location is clicked Sourcetrail will activate the symbol referenced by the respective
* reference. When the symbol with the specified id is activated, this location will NOT be displayed and
* highlighted by Sourcetrail.
*
* param: referencedSymbolId - the id of the symbol that is used as qualifier at the current location.
* param: location - the SourceRange that shall be recorded as location for the symbol's occurrence as
* qualifier
*
* return: true if successful. false on failure. getLastError() provides the error message.
*
* see: SourceRange
*/
bool recordQualifierLocation(int referencedSymbolId, const SourceRange& location);
/**
* Stores a file to the database
*
+21 -1
View File
@@ -446,7 +446,7 @@ namespace sourcetrail
{
if (!m_storage)
{
m_lastError = "Unable to record symbol signature location, because no database is currently open.";
m_lastError = "Unable to record symbol reference location, because no database is currently open.";
return false;
}
@@ -462,6 +462,26 @@ namespace sourcetrail
}
}
bool SourcetrailDBWriter::recordQualifierLocation(int referencedSymbolId, const SourceRange& location)
{
if (!m_storage)
{
m_lastError = "Unable to record symbol qualifier location, because no database is currently open.";
return false;
}
try
{
addSourceLocation(referencedSymbolId, location, LocationKind::QUALIFIER);
return true;
}
catch (const SourcetrailException e)
{
m_lastError = e.getMessage();
return false;
}
}
int SourcetrailDBWriter::recordFile(const std::string& filePath)
{
if (!m_storage)
+2
View File
@@ -93,6 +93,8 @@ int recordReference(int contextSymbolId, int referencedSymbolId, ReferenceKind r
bool recordReferenceLocation(int referenceId, int fileId, int startLine, int startColumn, int endLine, int endColumn);
bool recordQualifierLocation(int referencedSymbolId, int fileId, int startLine, int startColumn, int endLine, int endColumn);
int recordFile(std::string filePath);
bool recordFileLanguage(int fileId, std::string languageIdentifier);
+5
View File
@@ -220,6 +220,11 @@ bool recordReferenceLocation(int referenceId, int fileId, int startLine, int sta
return dbWriter.recordReferenceLocation(referenceId, { fileId, startLine, startColumn, endLine, endColumn });
}
bool recordQualifierLocation(int referencedSymbolId, int fileId, int startLine, int startColumn, int endLine, int endColumn)
{
return dbWriter.recordQualifierLocation(referencedSymbolId, { fileId, startLine, startColumn, endLine, endColumn });
}
int recordFile(std::string filePath)
{
return dbWriter.recordFile(filePath);