diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-10-01 20:25:15 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-10-01 20:25:15 +0000 |
commit | 99a26afd4968d5221fba932258629489d88b681c (patch) | |
tree | b156f33bcb7a3f008662c6303a1df3d95543be6e /clang/tools/c-index-test/c-index-test.c | |
parent | 13a642da0bfff0c3dd5df8e3dd3a070c96bbe6b4 (diff) | |
download | llvm-99a26afd4968d5221fba932258629489d88b681c.zip llvm-99a26afd4968d5221fba932258629489d88b681c.tar.gz llvm-99a26afd4968d5221fba932258629489d88b681c.tar.bz2 |
Extend libclang with an API that determines, given a C++ virtual
member function or an Objective-C method, which other member
functions/methods it overrides.
llvm-svn: 115338
Diffstat (limited to 'clang/tools/c-index-test/c-index-test.c')
-rw-r--r-- | clang/tools/c-index-test/c-index-test.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/clang/tools/c-index-test/c-index-test.c b/clang/tools/c-index-test/c-index-test.c index 874c732..f831622 100644 --- a/clang/tools/c-index-test/c-index-test.c +++ b/clang/tools/c-index-test/c-index-test.c @@ -167,7 +167,9 @@ static void PrintCursor(CXCursor Cursor) { CXCursor Referenced; unsigned line, column; CXCursor SpecializationOf; - + CXCursor *overridden; + unsigned num_overridden; + ks = clang_getCursorKindSpelling(Cursor.kind); string = clang_getCursorSpelling(Cursor); printf("%s=%s", clang_getCString(ks), @@ -251,6 +253,21 @@ static void PrintCursor(CXCursor Cursor) { clang_getCString(Name), line, column); clang_disposeString(Name); } + + clang_getOverriddenCursors(Cursor, &overridden, &num_overridden); + if (num_overridden) { + unsigned I; + printf(" [Overrides "); + for (I = 0; I != num_overridden; ++I) { + CXSourceLocation Loc = clang_getCursorLocation(overridden[I]); + clang_getInstantiationLocation(Loc, 0, &line, &column, 0); + if (I) + printf(", "); + printf("@%d:%d", line, column); + } + printf("]"); + clang_disposeOverriddenCursors(overridden); + } } } |