*/
CINDEX_LINKAGE enum CXLinkageKind clang_getCursorLinkage(CXCursor 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
-};
-
-/**
- * \brief Describe the visibility of the entity referred to by a cursor.
- *
- * This returns the default visibility if not explicitly specified by
- * a visibility attribute. The default visibility may be changed by
- * commandline arguments.
- *
- * \param cursor The cursor to query.
- *
- * \returns The visibility of the cursor.
- */
-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.
+++ /dev/null
-// RUN: c-index-test -test-print-visibility %s | FileCheck %s
-
-__attribute__ ((visibility ("default"))) void foo1();
-__attribute__ ((visibility ("hidden"))) void foo2();
-
-// CHECK: FunctionDecl=foo1:3:47visibility=Default
-// CHECK: FunctionDecl=foo2:4:46visibility=Hidden
return CXChildVisit_Recurse;
}
-/******************************************************************************/
-/* Visibility testing. */
-/******************************************************************************/
-
-static enum CXChildVisitResult PrintVisibility(CXCursor cursor, CXCursor p,
- CXClientData d) {
- const char *visibility = 0;
-
- if (clang_isInvalid(clang_getCursorKind(cursor)))
- return CXChildVisit_Recurse;
-
- switch (clang_getCursorVisibility(cursor)) {
- case CXVisibility_Invalid: break;
- case CXVisibility_Hidden: visibility = "Hidden"; break;
- case CXVisibility_Protected: visibility = "Protected"; break;
- case CXVisibility_Default: visibility = "Default"; break;
- }
-
- if (visibility) {
- PrintCursor(cursor, NULL);
- printf("visibility=%s\n", visibility);
- }
-
- return CXChildVisit_Recurse;
-}
-
/******************************************************************************/
/* Typekind testing. */
/******************************************************************************/
" c-index-test -test-inclusion-stack-tu <AST file>\n");
fprintf(stderr,
" c-index-test -test-print-linkage-source {<args>}*\n"
- " c-index-test -test-print-visibility {<args>}*\n"
" c-index-test -test-print-type {<args>}*\n"
" c-index-test -test-print-type-size {<args>}*\n"
" c-index-test -test-print-bitwidth {<args>}*\n"
else if (argc > 2 && strcmp(argv[1], "-test-print-linkage-source") == 0)
return perform_test_load_source(argc - 2, argv + 2, "all", PrintLinkage,
NULL);
- else if (argc > 2 && strcmp(argv[1], "-test-print-visibility") == 0)
- return perform_test_load_source(argc - 2, argv + 2, "all", PrintVisibility,
- NULL);
else if (argc > 2 && strcmp(argv[1], "-test-print-type") == 0)
return perform_test_load_source(argc - 2, argv + 2, "all",
PrintType, 0);
}
} // 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.
//===----------------------------------------------------------------------===//
clang_getCursorSpelling
clang_getCursorType
clang_getCursorUSR
-clang_getCursorVisibility
clang_getDeclObjCTypeEncoding
clang_getDefinitionSpellingAndExtent
clang_getDiagnostic