forked from OSchip/llvm-project
Implement clang_getCanonicalCursor() in libclang, which does the obvious thing.
llvm-svn: 119874
This commit is contained in:
parent
6ae70b2e0f
commit
fec4dc9418
|
@ -2074,6 +2074,32 @@ CINDEX_LINKAGE CXCursor clang_getCursorDefinition(CXCursor);
|
|||
*/
|
||||
CINDEX_LINKAGE unsigned clang_isCursorDefinition(CXCursor);
|
||||
|
||||
/**
|
||||
* \brief Retrieve the canonical cursor corresponding to the given cursor.
|
||||
*
|
||||
* In the C family of languages, many kinds of entities can be declared several
|
||||
* times within a single translation unit. For example, a structure type can
|
||||
* be forward-declared (possibly multiple times) and later defined:
|
||||
*
|
||||
* \code
|
||||
* struct X;
|
||||
* struct X;
|
||||
* struct X {
|
||||
* int member;
|
||||
* };
|
||||
* \endcode
|
||||
*
|
||||
* The declarations and the definition of \c X are represented by three
|
||||
* different cursors, all of which are declarations of the same underlying
|
||||
* entity. One of these cursor is considered the "canonical" cursor, which
|
||||
* is effectively the representative for the underlying entity. One can
|
||||
* determine if two cursors are declarations of the same underlying entity by
|
||||
* comparing their canonical cursors.
|
||||
*
|
||||
* \returns The canonical cursor for the entity referred to by the given cursor.
|
||||
*/
|
||||
CINDEX_LINKAGE CXCursor clang_getCanonicalCursor(CXCursor);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
|
|
@ -3717,6 +3717,16 @@ unsigned clang_isCursorDefinition(CXCursor C) {
|
|||
return clang_getCursorDefinition(C) == C;
|
||||
}
|
||||
|
||||
CXCursor clang_getCanonicalCursor(CXCursor C) {
|
||||
if (!clang_isDeclaration(C.kind))
|
||||
return C;
|
||||
|
||||
if (Decl *D = getCursorDecl(C))
|
||||
return MakeCXCursor(D->getCanonicalDecl(), getCursorTU(C));
|
||||
|
||||
return C;
|
||||
}
|
||||
|
||||
unsigned clang_getNumOverloadedDecls(CXCursor C) {
|
||||
if (C.kind != CXCursor_OverloadedDeclRef)
|
||||
return 0;
|
||||
|
|
|
@ -32,6 +32,7 @@ _clang_equalTypes
|
|||
_clang_formatDiagnostic
|
||||
_clang_getCString
|
||||
_clang_getCXXAccessSpecifier
|
||||
_clang_getCanonicalCursor
|
||||
_clang_getCanonicalType
|
||||
_clang_getClangVersion
|
||||
_clang_getCompletionAvailability
|
||||
|
|
|
@ -32,6 +32,7 @@ clang_equalTypes
|
|||
clang_formatDiagnostic
|
||||
clang_getCString
|
||||
clang_getCXXAccessSpecifier
|
||||
clang_getCanonicalCursor
|
||||
clang_getCanonicalType
|
||||
clang_getClangVersion
|
||||
clang_getCompletionAvailability
|
||||
|
|
Loading…
Reference in New Issue