1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- commit 865b9340996f9f9d04b73b187248737dc6fd845e
- Author: Michael Wu <mwu@mozilla.com>
- Date: Mon Sep 14 17:47:21 2015 -0400
- Add support for querying the visibility of a cursor
- diff --git a/clang/include/clang-c/Index.h b/clang/include/clang-c/Index.h
- index fad9cfa..311bfcb 100644
- --- a/clang/include/clang-c/Index.h
- +++ b/clang/include/clang-c/Index.h
- @@ -2440,6 +2440,24 @@ enum CXLinkageKind {
- CINDEX_LINKAGE enum CXLinkageKind clang_getCursorLinkage(CXCursor cursor);
-
- /**
- + * \brief Describe the visibility of the entity referred to by a cursor.
- + */
- +enum CXVisibilityKind {
- + /** \brief This value indicates that no visibility information is available
- + * for a provided CXCursor. */
- + CXVisibility_Invalid,
- +
- + /** \brief Symbol not seen by the linker. */
- + CXVisibility_Hidden,
- + /** \brief Symbol seen by the linker but resolves to a symbol inside this object. */
- + CXVisibility_Protected,
- + /** \brief Symbol seen by the linker and acts like a normal symbol. */
- + CXVisibility_Default,
- +};
- +
- +CINDEX_LINKAGE enum CXVisibilityKind clang_getCursorVisibility(CXCursor cursor);
- +
- +/**
- * \brief Determine the availability of the entity that this cursor refers to,
- * taking the current target platform into account.
- *
- diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp
- index 8225a6c..9fa18d3 100644
- --- a/clang/tools/libclang/CIndex.cpp
- +++ b/clang/tools/libclang/CIndex.cpp
- @@ -6361,6 +6361,27 @@ CXLinkageKind clang_getCursorLinkage(CXCursor cursor) {
- } // end: extern "C"
-
- //===----------------------------------------------------------------------===//
- +// Operations for querying visibility of a cursor.
- +//===----------------------------------------------------------------------===//
- +
- +extern "C" {
- +CXVisibilityKind clang_getCursorVisibility(CXCursor cursor) {
- + if (!clang_isDeclaration(cursor.kind))
- + return CXVisibility_Invalid;
- +
- + const Decl *D = cxcursor::getCursorDecl(cursor);
- + if (const NamedDecl *ND = dyn_cast_or_null<NamedDecl>(D))
- + switch (ND->getVisibility()) {
- + case HiddenVisibility: return CXVisibility_Hidden;
- + case ProtectedVisibility: return CXVisibility_Protected;
- + case DefaultVisibility: return CXVisibility_Default;
- + };
- +
- + return CXVisibility_Invalid;
- +}
- +} // end: extern "C"
- +
- +//===----------------------------------------------------------------------===//
- // Operations for querying language of a cursor.
- //===----------------------------------------------------------------------===//
-
- diff --git a/clang/tools/libclang/libclang.exports b/clang/tools/libclang/libclang.exports
- index f6a7175..a919a8e 100644
- --- a/clang/tools/libclang/libclang.exports
- +++ b/clang/tools/libclang/libclang.exports
- @@ -173,6 +173,7 @@ clang_getCursorSemanticParent
- clang_getCursorSpelling
- clang_getCursorType
- clang_getCursorUSR
- +clang_getCursorVisibility
- clang_getDeclObjCTypeEncoding
- clang_getDefinitionSpellingAndExtent
- clang_getDiagnostic
|