USR -> Usr

This commit is contained in:
Fangrui Song 2018-01-13 00:10:39 -08:00
parent 14a213d407
commit da2cbe4152
6 changed files with 41 additions and 43 deletions

View File

@ -60,7 +60,7 @@ std::string ClangType::get_usr() const {
return ClangCursor(clang_getTypeDeclaration(cx_type)).get_usr(); return ClangCursor(clang_getTypeDeclaration(cx_type)).get_usr();
} }
USR ClangType::get_usr_hash() const { Usr ClangType::get_usr_hash() const {
return ClangCursor(clang_getTypeDeclaration(cx_type)).get_usr_hash(); return ClangCursor(clang_getTypeDeclaration(cx_type)).get_usr_hash();
} }
@ -172,9 +172,9 @@ std::string ClangCursor::get_usr() const {
return ::ToString(clang_getCursorUSR(cx_cursor)); return ::ToString(clang_getCursorUSR(cx_cursor));
} }
USR ClangCursor::get_usr_hash() const { Usr ClangCursor::get_usr_hash() const {
CXString usr = clang_getCursorUSR(cx_cursor); CXString usr = clang_getCursorUSR(cx_cursor);
USR ret = HashUSR(clang_getCString(usr)); Usr ret = HashUSR(clang_getCString(usr));
clang_disposeString(usr); clang_disposeString(usr);
return ret; return ret;
} }

View File

@ -9,12 +9,12 @@
#include <string> #include <string>
#include <vector> #include <vector>
using USR = uint64_t; using Usr = uint64_t;
Range ResolveCXSourceRange(const CXSourceRange& range, Range ResolveCXSourceRange(const CXSourceRange& range,
CXFile* cx_file = nullptr); CXFile* cx_file = nullptr);
USR HashUSR(const char* usr); Usr HashUSR(const char* usr);
class ClangType { class ClangType {
public: public:
@ -29,7 +29,7 @@ class ClangType {
// ClangCursor is not defined so we have to return CXCursor // ClangCursor is not defined so we have to return CXCursor
CXCursor get_declaration() const; CXCursor get_declaration() const;
std::string get_usr() const; std::string get_usr() const;
USR get_usr_hash() const; Usr get_usr_hash() const;
std::string get_spelling() const; std::string get_spelling() const;
ClangType get_canonical() const; ClangType get_canonical() const;
@ -60,7 +60,7 @@ class ClangCursor {
Range get_extent() const; Range get_extent() const;
std::string get_display_name() const; std::string get_display_name() const;
std::string get_usr() const; std::string get_usr() const;
USR get_usr_hash() const; Usr get_usr_hash() const;
bool is_definition() const; bool is_definition() const;

View File

@ -112,10 +112,10 @@ ClangSymbolKind GetSymbolKind(CXIdxEntityKind kind) {
// constructor we will not be able to attribute the constructor call correctly. // constructor we will not be able to attribute the constructor call correctly.
struct ConstructorCache { struct ConstructorCache {
struct Constructor { struct Constructor {
USR usr; Usr usr;
std::vector<std::string> param_type_desc; std::vector<std::string> param_type_desc;
}; };
std::unordered_map<USR, std::vector<Constructor>> constructors_; std::unordered_map<Usr, std::vector<Constructor>> constructors_;
// This should be called whenever there is a constructor declaration. // This should be called whenever there is a constructor declaration.
void NotifyConstructor(ClangCursor ctor_cursor) { void NotifyConstructor(ClangCursor ctor_cursor) {
@ -142,8 +142,8 @@ struct ConstructorCache {
// Tries to lookup a constructor in |type_usr| that takes arguments most // Tries to lookup a constructor in |type_usr| that takes arguments most
// closely aligned to |param_type_desc|. // closely aligned to |param_type_desc|.
optional<USR> TryFindConstructorUsr( optional<Usr> TryFindConstructorUsr(
USR type_usr, Usr type_usr,
const std::vector<std::string>& param_type_desc) { const std::vector<std::string>& param_type_desc) {
auto count_matching_prefix_length = [](const char* a, const char* b) { auto count_matching_prefix_length = [](const char* a, const char* b) {
int matched = 0; int matched = 0;
@ -170,7 +170,7 @@ struct ConstructorCache {
if (ctors.empty()) if (ctors.empty())
return nullopt; return nullopt;
USR best_usr; Usr best_usr;
int best_score = INT_MIN; int best_score = INT_MIN;
// Scan constructors for the best possible match. // Scan constructors for the best possible match.
@ -487,7 +487,7 @@ IndexFile::IndexFile(const std::string& path,
} }
// TODO: Optimize for const char*? // TODO: Optimize for const char*?
IndexTypeId IndexFile::ToTypeId(USR usr) { IndexTypeId IndexFile::ToTypeId(Usr usr) {
auto it = id_cache.usr_to_type_id.find(usr); auto it = id_cache.usr_to_type_id.find(usr);
if (it != id_cache.usr_to_type_id.end()) if (it != id_cache.usr_to_type_id.end())
return it->second; return it->second;
@ -498,7 +498,7 @@ IndexTypeId IndexFile::ToTypeId(USR usr) {
id_cache.type_id_to_usr[id] = usr; id_cache.type_id_to_usr[id] = usr;
return id; return id;
} }
IndexFuncId IndexFile::ToFuncId(USR usr) { IndexFuncId IndexFile::ToFuncId(Usr usr) {
auto it = id_cache.usr_to_func_id.find(usr); auto it = id_cache.usr_to_func_id.find(usr);
if (it != id_cache.usr_to_func_id.end()) if (it != id_cache.usr_to_func_id.end())
return it->second; return it->second;
@ -509,7 +509,7 @@ IndexFuncId IndexFile::ToFuncId(USR usr) {
id_cache.func_id_to_usr[id] = usr; id_cache.func_id_to_usr[id] = usr;
return id; return id;
} }
IndexVarId IndexFile::ToVarId(USR usr) { IndexVarId IndexFile::ToVarId(Usr usr) {
auto it = id_cache.usr_to_var_id.find(usr); auto it = id_cache.usr_to_var_id.find(usr);
if (it != id_cache.usr_to_var_id.end()) if (it != id_cache.usr_to_var_id.end())
return it->second; return it->second;
@ -547,7 +547,7 @@ std::string IndexFile::ToString() {
return Serialize(SerializeFormat::Json, *this); return Serialize(SerializeFormat::Json, *this);
} }
IndexType::IndexType(IndexTypeId id, USR usr) : usr(usr), id(id) {} IndexType::IndexType(IndexTypeId id, Usr usr) : usr(usr), id(id) {}
void RemoveItem(std::vector<Range>& ranges, Range to_remove) { void RemoveItem(std::vector<Range>& ranges, Range to_remove) {
auto it = std::find(ranges.begin(), ranges.end(), to_remove); auto it = std::find(ranges.begin(), ranges.end(), to_remove);
@ -951,7 +951,7 @@ ClangCursor::VisitResult AddDeclInitializerUsagesVisitor(ClangCursor cursor,
break; break;
// TODO: when we resolve the template type to the definition, we get a // TODO: when we resolve the template type to the definition, we get a
// different USR. // different Usr.
// ClangCursor ref = // ClangCursor ref =
// cursor.get_referenced().template_specialization_to_template_definition().get_type().strip_qualifiers().get_usr_hash(); // cursor.get_referenced().template_specialization_to_template_definition().get_type().strip_qualifiers().get_usr_hash();
@ -1011,7 +1011,7 @@ ClangCursor::VisitResult VisitMacroDefinitionAndExpansions(ClangCursor cursor,
// only real difference will be that we show 'callers' instead of 'refs' // only real difference will be that we show 'callers' instead of 'refs'
// (especially since macros cannot have overrides) // (especially since macros cannot have overrides)
USR decl_usr; Usr decl_usr;
if (cursor.get_kind() == CXCursor_MacroDefinition) if (cursor.get_kind() == CXCursor_MacroDefinition)
decl_usr = cursor.get_usr_hash(); decl_usr = cursor.get_usr_hash();
else else
@ -1777,7 +1777,7 @@ void OnIndexReference(CXClientData client_data, const CXIdxEntityRefInfo* ref) {
// the constructor function we add a usage to. // the constructor function we add a usage to.
optional<ClangCursor> opt_found_type = FindType(ref->cursor); optional<ClangCursor> opt_found_type = FindType(ref->cursor);
if (opt_found_type) { if (opt_found_type) {
USR ctor_type_usr = opt_found_type->get_referenced().get_usr_hash(); Usr ctor_type_usr = opt_found_type->get_referenced().get_usr_hash();
ClangCursor call_cursor = ref->cursor; ClangCursor call_cursor = ref->cursor;
// Build a type description from the parameters of the call, so we // Build a type description from the parameters of the call, so we
@ -1790,7 +1790,7 @@ void OnIndexReference(CXClientData client_data, const CXIdxEntityRefInfo* ref) {
} }
// Try to find the constructor and add a reference. // Try to find the constructor and add a reference.
optional<USR> ctor_usr = optional<Usr> ctor_usr =
param->ctors.TryFindConstructorUsr(ctor_type_usr, call_type_desc); param->ctors.TryFindConstructorUsr(ctor_type_usr, call_type_desc);
if (ctor_usr) { if (ctor_usr) {
IndexFunc* ctor = db->Resolve(db->ToFuncId(*ctor_usr)); IndexFunc* ctor = db->Resolve(db->ToFuncId(*ctor_usr));

View File

@ -260,7 +260,7 @@ struct IndexType {
using Def = using Def =
TypeDefDefinitionData<IndexTypeId, IndexFuncId, IndexVarId, Range>; TypeDefDefinitionData<IndexTypeId, IndexFuncId, IndexVarId, Range>;
USR usr; Usr usr;
IndexTypeId id; IndexTypeId id;
Def def; Def def;
@ -276,7 +276,7 @@ struct IndexType {
std::vector<Range> uses; std::vector<Range> uses;
IndexType() {} // For serialization. IndexType() {} // For serialization.
IndexType(IndexTypeId id, USR usr); IndexType(IndexTypeId id, Usr usr);
bool operator<(const IndexType& other) const { return id < other.id; } bool operator<(const IndexType& other) const { return id < other.id; }
}; };
@ -362,7 +362,7 @@ struct IndexFunc {
IndexFuncRef, IndexFuncRef,
Range>; Range>;
USR usr; Usr usr;
IndexFuncId id; IndexFuncId id;
Def def; Def def;
@ -392,7 +392,7 @@ struct IndexFunc {
std::vector<IndexFuncRef> callers; std::vector<IndexFuncRef> callers;
IndexFunc() {} // For serialization. IndexFunc() {} // For serialization.
IndexFunc(IndexFuncId id, USR usr) : usr(usr), id(id) { IndexFunc(IndexFuncId id, Usr usr) : usr(usr), id(id) {
// assert(usr.size() > 0); // assert(usr.size() > 0);
} }
@ -469,7 +469,7 @@ void Reflect(TVisitor& visitor,
struct IndexVar { struct IndexVar {
using Def = VarDefDefinitionData<IndexTypeId, IndexFuncId, IndexVarId, Range>; using Def = VarDefDefinitionData<IndexTypeId, IndexFuncId, IndexVarId, Range>;
USR usr; Usr usr;
IndexVarId id; IndexVarId id;
Def def; Def def;
@ -478,7 +478,7 @@ struct IndexVar {
std::vector<Range> uses; std::vector<Range> uses;
IndexVar() {} // For serialization. IndexVar() {} // For serialization.
IndexVar(IndexVarId id, USR usr) : usr(usr), id(id) { IndexVar(IndexVarId id, Usr usr) : usr(usr), id(id) {
// assert(usr.size() > 0); // assert(usr.size() > 0);
} }
@ -488,12 +488,12 @@ MAKE_HASHABLE(IndexVar, t.id);
struct IdCache { struct IdCache {
std::string primary_file; std::string primary_file;
std::unordered_map<USR, IndexTypeId> usr_to_type_id; std::unordered_map<Usr, IndexTypeId> usr_to_type_id;
std::unordered_map<USR, IndexFuncId> usr_to_func_id; std::unordered_map<Usr, IndexFuncId> usr_to_func_id;
std::unordered_map<USR, IndexVarId> usr_to_var_id; std::unordered_map<Usr, IndexVarId> usr_to_var_id;
std::unordered_map<IndexTypeId, USR> type_id_to_usr; std::unordered_map<IndexTypeId, Usr> type_id_to_usr;
std::unordered_map<IndexFuncId, USR> func_id_to_usr; std::unordered_map<IndexFuncId, Usr> func_id_to_usr;
std::unordered_map<IndexVarId, USR> var_id_to_usr; std::unordered_map<IndexVarId, Usr> var_id_to_usr;
IdCache(const std::string& primary_file); IdCache(const std::string& primary_file);
}; };
@ -545,9 +545,9 @@ struct IndexFile {
IndexFile(const std::string& path, const optional<std::string>& contents); IndexFile(const std::string& path, const optional<std::string>& contents);
IndexTypeId ToTypeId(USR usr); IndexTypeId ToTypeId(Usr usr);
IndexFuncId ToFuncId(USR usr); IndexFuncId ToFuncId(Usr usr);
IndexVarId ToVarId(USR usr); IndexVarId ToVarId(Usr usr);
IndexTypeId ToTypeId(const CXCursor& usr); IndexTypeId ToTypeId(const CXCursor& usr);
IndexFuncId ToFuncId(const CXCursor& usr); IndexFuncId ToFuncId(const CXCursor& usr);
IndexVarId ToVarId(const CXCursor& usr); IndexVarId ToVarId(const CXCursor& usr);

View File

@ -291,7 +291,7 @@ QueryFileId GetQueryFileIdFromPath(QueryDatabase* query_db,
return QueryFileId(idx); return QueryFileId(idx);
} }
QueryTypeId GetQueryTypeIdFromUsr(QueryDatabase* query_db, USR usr) { QueryTypeId GetQueryTypeIdFromUsr(QueryDatabase* query_db, Usr usr) {
auto it = query_db->usr_to_type.find(usr); auto it = query_db->usr_to_type.find(usr);
if (it != query_db->usr_to_type.end()) if (it != query_db->usr_to_type.end())
return QueryTypeId(it->second.id); return QueryTypeId(it->second.id);
@ -302,7 +302,7 @@ QueryTypeId GetQueryTypeIdFromUsr(QueryDatabase* query_db, USR usr) {
return QueryTypeId(idx); return QueryTypeId(idx);
} }
QueryFuncId GetQueryFuncIdFromUsr(QueryDatabase* query_db, USR usr) { QueryFuncId GetQueryFuncIdFromUsr(QueryDatabase* query_db, Usr usr) {
auto it = query_db->usr_to_func.find(usr); auto it = query_db->usr_to_func.find(usr);
if (it != query_db->usr_to_func.end()) if (it != query_db->usr_to_func.end())
return QueryFuncId(it->second.id); return QueryFuncId(it->second.id);

View File

@ -7,8 +7,6 @@
#include <functional> #include <functional>
using Usr = USR;
struct QueryFile; struct QueryFile;
struct QueryType; struct QueryType;
struct QueryFunc; struct QueryFunc;
@ -170,10 +168,10 @@ void Reflect(TVisitor& visitor, MergeableUpdate<TId, TValue>& value) {
template <typename T> template <typename T>
struct WithUsr { struct WithUsr {
USR usr; Usr usr;
T value; T value;
WithUsr(USR usr, const T& value) : usr(usr), value(value) {} WithUsr(Usr usr, const T& value) : usr(usr), value(value) {}
}; };
template <typename TVisitor, typename T> template <typename TVisitor, typename T>
void Reflect(TVisitor& visitor, WithUsr<T>& value) { void Reflect(TVisitor& visitor, WithUsr<T>& value) {
@ -225,7 +223,7 @@ struct QueryType {
using InstancesUpdate = MergeableUpdate<QueryTypeId, QueryVarId>; using InstancesUpdate = MergeableUpdate<QueryTypeId, QueryVarId>;
using UsesUpdate = MergeableUpdate<QueryTypeId, QueryLocation>; using UsesUpdate = MergeableUpdate<QueryTypeId, QueryLocation>;
USR usr; Usr usr;
optional<Def> def; optional<Def> def;
std::vector<QueryTypeId> derived; std::vector<QueryTypeId> derived;
std::vector<QueryVarId> instances; std::vector<QueryVarId> instances;
@ -246,7 +244,7 @@ struct QueryFunc {
using DerivedUpdate = MergeableUpdate<QueryFuncId, QueryFuncId>; using DerivedUpdate = MergeableUpdate<QueryFuncId, QueryFuncId>;
using CallersUpdate = MergeableUpdate<QueryFuncId, QueryFuncRef>; using CallersUpdate = MergeableUpdate<QueryFuncId, QueryFuncRef>;
USR usr; Usr usr;
optional<Def> def; optional<Def> def;
std::vector<QueryLocation> declarations; std::vector<QueryLocation> declarations;
std::vector<QueryFuncId> derived; std::vector<QueryFuncId> derived;