aboutsummaryrefslogtreecommitdiff
path: root/clang/tools/c-index-test/c-index-test.c
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-08-27 21:34:58 +0000
committerTed Kremenek <kremenek@apple.com>2010-08-27 21:34:58 +0000
commitae9e2215133d89d28a03b79ff70da85868a50129 (patch)
treee62d30baa1085d437a77d7f8fd9a3e983a1d351a /clang/tools/c-index-test/c-index-test.c
parent2c2c5f3789a969fac1166a57164ab3cec5b9fcfa (diff)
downloadllvm-ae9e2215133d89d28a03b79ff70da85868a50129.zip
llvm-ae9e2215133d89d28a03b79ff70da85868a50129.tar.gz
llvm-ae9e2215133d89d28a03b79ff70da85868a50129.tar.bz2
Implement CXCursor support for walking C++ base specifiers. This includes adding the API hooks clang_isVirtualBase() and clang_getCXXAccessSpecifier() to query properties of the base specifier.
Implements <rdar://problem/8274883>. llvm-svn: 112296
Diffstat (limited to 'clang/tools/c-index-test/c-index-test.c')
-rw-r--r--clang/tools/c-index-test/c-index-test.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/clang/tools/c-index-test/c-index-test.c b/clang/tools/c-index-test/c-index-test.c
index 67e0c77..cdf0cd0 100644
--- a/clang/tools/c-index-test/c-index-test.c
+++ b/clang/tools/c-index-test/c-index-test.c
@@ -204,6 +204,26 @@ static void PrintCursor(CXCursor Cursor) {
printf(" [IBOutletCollection=%s]", clang_getCString(S));
clang_disposeString(S);
}
+
+ if (Cursor.kind == CXCursor_CXXBaseSpecifier) {
+ enum CX_CXXAccessSpecifier access = clang_getCXXAccessSpecifier(Cursor);
+ unsigned isVirtual = clang_isVirtualBase(Cursor);
+ const char *accessStr = 0;
+
+ switch (access) {
+ case CX_CXXInvalidAccessSpecifier:
+ accessStr = "invalid"; break;
+ case CX_CXXPublic:
+ accessStr = "public"; break;
+ case CX_CXXProtected:
+ accessStr = "protected"; break;
+ case CX_CXXPrivate:
+ accessStr = "private"; break;
+ }
+
+ printf(" [access=%s isVirtual=%s]", accessStr,
+ isVirtual ? "true" : "false");
+ }
}
}