2017-06-15 05:32:23 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "query_utils.h"
|
|
|
|
|
|
|
|
#include "query.h"
|
|
|
|
#include "working_files.h"
|
|
|
|
|
|
|
|
#include <optional.h>
|
|
|
|
|
|
|
|
optional<QueryLocation> GetDefinitionSpellingOfSymbol(QueryDatabase* db, const QueryTypeId& id);
|
|
|
|
optional<QueryLocation> GetDefinitionSpellingOfSymbol(QueryDatabase* db, const QueryFuncId& id);
|
|
|
|
optional<QueryLocation> GetDefinitionSpellingOfSymbol(QueryDatabase* db, const QueryVarId& id);
|
|
|
|
optional<QueryLocation> GetDefinitionSpellingOfSymbol(QueryDatabase* db, const SymbolIdx& symbol);
|
|
|
|
optional<QueryLocation> GetDefinitionExtentOfSymbol(QueryDatabase* db, const SymbolIdx& symbol);
|
|
|
|
std::string GetHoverForSymbol(QueryDatabase* db, const SymbolIdx& symbol);
|
|
|
|
optional<QueryFileId> GetDeclarationFileForSymbol(QueryDatabase* db, const SymbolIdx& symbol);
|
|
|
|
std::vector<QueryLocation> ToQueryLocation(QueryDatabase* db, const std::vector<QueryFuncRef>& refs);
|
|
|
|
std::vector<QueryLocation> ToQueryLocation(QueryDatabase* db, const std::vector<QueryTypeId>& ids);
|
|
|
|
std::vector<QueryLocation> ToQueryLocation(QueryDatabase* db, const std::vector<QueryFuncId>& ids);
|
|
|
|
std::vector<QueryLocation> ToQueryLocation(QueryDatabase* db, const std::vector<QueryVarId>& ids);
|
|
|
|
std::vector<QueryLocation> GetUsesOfSymbol(QueryDatabase* db, const SymbolIdx& symbol);
|
|
|
|
std::vector<QueryLocation> GetDeclarationsOfSymbolForGotoDefinition(QueryDatabase* db, const SymbolIdx& symbol);
|
|
|
|
optional<QueryLocation> GetBaseDefinitionOrDeclarationSpelling(QueryDatabase* db, QueryFunc& func);
|
2017-07-19 07:17:38 +00:00
|
|
|
bool HasCallersOnSelfOrBaseOrDerived(QueryDatabase* db, QueryFunc& root);
|
2017-06-15 05:32:23 +00:00
|
|
|
std::vector<QueryFuncRef> GetCallersForAllBaseFunctions(QueryDatabase* db, QueryFunc& root);
|
|
|
|
std::vector<QueryFuncRef> GetCallersForAllDerivedFunctions(QueryDatabase* db, QueryFunc& root);
|
|
|
|
optional<lsPosition> GetLsPosition(WorkingFile* working_file, const Position& position);
|
|
|
|
optional<lsRange> GetLsRange(WorkingFile* working_file, const Range& location);
|
|
|
|
lsDocumentUri GetLsDocumentUri(QueryDatabase* db, QueryFileId file_id, std::string* path);
|
|
|
|
lsDocumentUri GetLsDocumentUri(QueryDatabase* db, QueryFileId file_id);
|
|
|
|
optional<lsLocation> GetLsLocation(QueryDatabase* db, WorkingFiles* working_files, const QueryLocation& location);
|
|
|
|
NonElidedVector<lsLocation> GetLsLocations(QueryDatabase* db, WorkingFiles* working_files, const std::vector<QueryLocation>& locations);
|
|
|
|
// Returns a symbol. The symbol will have *NOT* have a location assigned.
|
|
|
|
optional<lsSymbolInformation> GetSymbolInfo(QueryDatabase* db, WorkingFiles* working_files, SymbolIdx symbol);
|
|
|
|
|
|
|
|
struct CommonCodeLensParams {
|
|
|
|
std::vector<TCodeLens>* result;
|
|
|
|
QueryDatabase* db;
|
|
|
|
WorkingFiles* working_files;
|
|
|
|
WorkingFile* working_file;
|
|
|
|
};
|
|
|
|
|
|
|
|
void AddCodeLens(
|
|
|
|
const char* singular,
|
|
|
|
const char* plural,
|
|
|
|
CommonCodeLensParams* common,
|
|
|
|
QueryLocation loc,
|
|
|
|
const std::vector<QueryLocation>& uses,
|
|
|
|
optional<QueryLocation> excluded,
|
|
|
|
bool force_display);
|
|
|
|
|
|
|
|
lsWorkspaceEdit BuildWorkspaceEdit(QueryDatabase* db, WorkingFiles* working_files, const std::vector<QueryLocation>& locations, const std::string& new_text);
|
|
|
|
|
|
|
|
std::vector<SymbolRef> FindSymbolsAtLocation(WorkingFile* working_file, QueryFile* file, lsPosition position);
|
2017-07-21 02:53:08 +00:00
|
|
|
NonElidedVector<Out_CqueryTypeHierarchyTree::TypeEntry> BuildParentInheritanceHierarchyForType(QueryDatabase* db, WorkingFiles* working_files, QueryTypeId root);
|
|
|
|
optional<Out_CqueryTypeHierarchyTree::TypeEntry> BuildInheritanceHierarchyForType(QueryDatabase* db, WorkingFiles* working_files, QueryTypeId root_id);
|
|
|
|
NonElidedVector<Out_CqueryTypeHierarchyTree::TypeEntry> BuildParentInheritanceHierarchyForFunc(QueryDatabase* db, WorkingFiles* working_files, QueryFuncId root);
|
|
|
|
optional<Out_CqueryTypeHierarchyTree::TypeEntry> BuildInheritanceHierarchyForFunc(QueryDatabase* db, WorkingFiles* working_files, QueryFuncId root_id);
|
2017-06-15 05:32:23 +00:00
|
|
|
NonElidedVector<Out_CqueryCallTree::CallEntry> BuildInitialCallTree(QueryDatabase* db, WorkingFiles* working_files, QueryFuncId root);
|
|
|
|
NonElidedVector<Out_CqueryCallTree::CallEntry> BuildExpandCallTree(QueryDatabase* db, WorkingFiles* working_files, QueryFuncId root);
|