diff options
author | Steve Naroff <snaroff@apple.com> | 2009-09-03 15:49:00 +0000 |
---|---|---|
committer | Steve Naroff <snaroff@apple.com> | 2009-09-03 15:49:00 +0000 |
commit | af08ddc8f1c53fed8d8d0ad82aa2a0bb7d654bd1 (patch) | |
tree | 6f5c317c5bfe3fb2a49fbe059cb8b90ece9ffedf /tools/c-index-test/c-index-test.c | |
parent | 972d954bd216c86a961bb7f81c53af85de17c2f0 (diff) |
- Add back some harmless code that part of a reverted commit (r80859). I'll investigate the lifetime snafu (with ASTUnit) separately.
- Traverse category methods, add a "class ref" and make the little test harness a bit more flexible.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80921 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/c-index-test/c-index-test.c')
-rw-r--r-- | tools/c-index-test/c-index-test.c | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c index 2d2be158d0..dbf31bea5a 100644 --- a/tools/c-index-test/c-index-test.c +++ b/tools/c-index-test/c-index-test.c @@ -2,26 +2,32 @@ #include "clang-c/Index.h" #include <stdio.h> +#include <string.h> + +static void PrintCursor(CXCursor Cursor) { + printf("%s => %s\n", clang_getCursorKindSpelling(Cursor.kind), + clang_getCursorSpelling(Cursor)); +} static void DeclVisitor(CXDecl Dcl, CXCursor Cursor, CXClientData Filter) { if (!Filter || (Cursor.kind == *(enum CXCursorKind *)Filter)) { - printf("%s => %s", clang_getCursorKindSpelling(Cursor.kind), - clang_getCursorSpelling(Cursor)); - printf(" (%s,%d:%d)\n", clang_getCursorSource(Cursor), - clang_getCursorLine(Cursor), - clang_getCursorColumn(Cursor)); + PrintCursor(Cursor); + printf(" Context: %s\n", clang_getDeclSpelling(Dcl)); + printf(" Source: %s (%d:%d)\n", clang_getCursorSource(Cursor), + clang_getCursorLine(Cursor), + clang_getCursorColumn(Cursor)); } } static void TranslationUnitVisitor(CXTranslationUnit Unit, CXCursor Cursor, CXClientData Filter) { if (!Filter || (Cursor.kind == *(enum CXCursorKind *)Filter)) { - printf("%s => %s", clang_getCursorKindSpelling(Cursor.kind), - clang_getCursorSpelling(Cursor)); - printf(" (%s,%d:%d)\n", clang_getCursorSource(Cursor), - clang_getCursorLine(Cursor), - clang_getCursorColumn(Cursor)); + PrintCursor(Cursor); + printf(" Context: %s\n", clang_getTranslationUnitSpelling(Unit)); + printf(" Source: %s (%d:%d)\n", clang_getCursorSource(Cursor), + clang_getCursorLine(Cursor), + clang_getCursorColumn(Cursor)); clang_loadDeclaration(Cursor.decl, DeclVisitor, 0); } @@ -34,6 +40,18 @@ int main(int argc, char **argv) { CXIndex Idx = clang_createIndex(); CXTranslationUnit TU = clang_createTranslationUnit(Idx, argv[1]); - clang_loadTranslationUnit(TU, TranslationUnitVisitor, 0); + if (argc == 2) + clang_loadTranslationUnit(TU, TranslationUnitVisitor, 0); + else if (argc == 3) { + enum CXCursorKind K = CXCursor_Invalid; + + if (!strcmp(argv[2], "category")) K = CXCursor_ObjCCategoryDecl; + else if (!strcmp(argv[2], "interface")) K = CXCursor_ObjCInterfaceDecl; + else if (!strcmp(argv[2], "protocol")) K = CXCursor_ObjCProtocolDecl; + else if (!strcmp(argv[2], "function")) K = CXCursor_FunctionDecl; + else if (!strcmp(argv[2], "typedef")) K = CXCursor_TypedefDecl; + + clang_loadTranslationUnit(TU, TranslationUnitVisitor, &K); + } return 1; } |