зеркало из https://github.com/mozilla/gecko-dev.git
80 строки
2.9 KiB
Diff
80 строки
2.9 KiB
Diff
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
|