diff options
author | Ted Kremenek <kremenek@apple.com> | 2010-03-03 06:36:57 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2010-03-03 06:36:57 +0000 |
commit | 16b4259aecaa22b642d35d36fd89965ed700c1e0 (patch) | |
tree | de184cbd9e805e175a8b02e4745cf07202a7223f /tools/CIndex/CIndex.cpp | |
parent | 7ada111fd5e81aff355e67bad0e4083f552b34bd (diff) |
Add clang_getCursorLinkage(), which returns the
underlying linkage for the entity referred to by a
CXCursor.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97646 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/CIndex/CIndex.cpp')
-rw-r--r-- | tools/CIndex/CIndex.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tools/CIndex/CIndex.cpp b/tools/CIndex/CIndex.cpp index e13dddfcad..6fc7b53030 100644 --- a/tools/CIndex/CIndex.cpp +++ b/tools/CIndex/CIndex.cpp @@ -2210,6 +2210,25 @@ void clang_disposeTokens(CXTranslationUnit TU, } // end: extern "C" //===----------------------------------------------------------------------===// +// Operations for querying linkage of a cursor. +//===----------------------------------------------------------------------===// + +extern "C" { +CXLinkageKind clang_getCursorLinkage(CXCursor cursor) { + Decl *D = cxcursor::getCursorDecl(cursor); + if (NamedDecl *ND = dyn_cast_or_null<NamedDecl>(D)) + switch (ND->getLinkage()) { + case NoLinkage: return CXLinkage_NoLinkage; + case InternalLinkage: return CXLinkage_Internal; + case UniqueExternalLinkage: return CXLinkage_UniqueExternal; + case ExternalLinkage: return CXLinkage_External; + }; + + return CXLinkage_Invalid; +} +} // end: extern "C" + +//===----------------------------------------------------------------------===// // CXString Operations. //===----------------------------------------------------------------------===// |