aboutsummaryrefslogtreecommitdiff
path: root/tools/c-index-test/c-index-test.c
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-11-12 02:16:30 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-11-12 02:16:30 +0000
commit6ec43adc39006a7fce94188956d0239bd54c0363 (patch)
tree76689d6b1d0528535ca34a1e44005a1f9fdba94e /tools/c-index-test/c-index-test.c
parent23d29c861f2770fe9f99ba80cca2e7cf4ac675ea (diff)
[libclang] Further simplify the indexing API.
That stuff can be added later on if we need them. Also add some const goodness. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144446 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.c174
1 files changed, 49 insertions, 125 deletions
diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c
index 833c5b47b2..ac2ab4fdd9 100644
--- a/tools/c-index-test/c-index-test.c
+++ b/tools/c-index-test/c-index-test.c
@@ -1577,7 +1577,8 @@ static void printCXIndexLoc(CXIdxLoc loc) {
printf("%d:%d", line, column);
}
-static CXIdxClientEntity makeClientEntity(CXIdxEntityInfo *info, CXIdxLoc loc) {
+static CXIdxClientContainer makeClientContainer(const CXIdxEntityInfo *info,
+ CXIdxLoc loc) {
const char *name;
char *newStr;
CXIdxClientFile file;
@@ -1591,7 +1592,7 @@ static CXIdxClientEntity makeClientEntity(CXIdxEntityInfo *info, CXIdxLoc loc) {
/* FIXME: free these.*/
newStr = (char *)malloc(strlen(name) + 10);
sprintf(newStr, "%s:%d:%d", name, line, column);
- return (CXIdxClientEntity)newStr;
+ return (CXIdxClientContainer)newStr;
}
static void printCXIndexContainer(CXIdxClientContainer container) {
@@ -1617,12 +1618,13 @@ static const char *getEntityKindString(CXIdxEntityKind kind) {
case CXIdxEntity_Union: return "union";
case CXIdxEntity_CXXClass: return "c++-class";
}
- return "<unknown>";
+ assert(0 && "Garbage entity kind");
+ return 0;
}
static void printEntityInfo(const char *cb,
CXClientData client_data,
- CXIdxEntityInfo *info) {
+ const CXIdxEntityInfo *info) {
const char *name;
IndexData *index_data;
index_data = (IndexData *)client_data;
@@ -1670,7 +1672,7 @@ static CXIdxClientFile index_enteredMainFile(CXClientData client_data,
}
static CXIdxClientFile index_ppIncludedFile(CXClientData client_data,
- CXIdxIncludedFileInfo *info) {
+ const CXIdxIncludedFileInfo *info) {
IndexData *index_data;
index_data = (IndexData *)client_data;
printCheck(index_data);
@@ -1685,62 +1687,6 @@ static CXIdxClientFile index_ppIncludedFile(CXClientData client_data,
return (CXIdxClientFile)info->file;
}
-static CXIdxClientMacro index_ppMacroDefined(CXClientData client_data,
- CXIdxMacroDefinedInfo *info) {
- IndexData *index_data;
- index_data = (IndexData *)client_data;
- printCheck(index_data);
-
- printf("[ppMacroDefined]: %s", info->macroInfo->name);
- printf(" | loc: ");
- printCXIndexLoc(info->macroInfo->loc);
- printf(" | defBegin: ");
- printCXIndexLoc(info->defBegin);
- printf(" | length: %d\n", info->defLength);
-
- return (CXIdxClientMacro)info->macroInfo->name;
-}
-
-static void index_ppMacroUndefined(CXClientData client_data,
- CXIdxMacroUndefinedInfo *info) {
- IndexData *index_data;
- index_data = (IndexData *)client_data;
- printCheck(index_data);
-
- printf("[ppMacroUndefined]: %s", info->name);
- printf(" | loc: ");
- printCXIndexLoc(info->loc);
- printf("\n");
-}
-
-static void index_ppMacroExpanded(CXClientData client_data,
- CXIdxMacroExpandedInfo *info) {
- IndexData *index_data;
- index_data = (IndexData *)client_data;
- printCheck(index_data);
-
- printf("[ppMacroExpanded]: %s", info->name);
- printf(" | loc: ");
- printCXIndexLoc(info->loc);
- printf("\n");
-}
-
-static CXIdxClientEntity index_importedEntity(CXClientData client_data,
- CXIdxImportedEntityInfo *info) {
- IndexData *index_data;
- index_data = (IndexData *)client_data;
- printCheck(index_data);
-
- printEntityInfo("[importedEntity]", client_data, info->entityInfo);
- printf(" | cursor: ");
- PrintCursor(info->cursor);
- printf(" | loc: ");
- printCXIndexLoc(info->loc);
- printf("\n");
-
- return makeClientEntity(info->entityInfo, info->loc);
-}
-
static CXIdxClientContainer index_startedTranslationUnit(CXClientData client_data,
void *reserved) {
IndexData *index_data;
@@ -1751,9 +1697,14 @@ static CXIdxClientContainer index_startedTranslationUnit(CXClientData client_dat
return (CXIdxClientContainer)"TU";
}
-static CXIdxClientEntity index_indexDeclaration(CXClientData client_data,
- CXIdxDeclInfo *info) {
+static void index_indexDeclaration(CXClientData client_data,
+ const CXIdxDeclInfo *info,
+ const CXIdxDeclOut *outData) {
IndexData *index_data;
+ const CXIdxObjCCategoryDeclInfo *CatInfo;
+ const CXIdxObjCInterfaceDeclInfo *InterInfo;
+ const CXIdxObjCProtocolDeclInfo *ProtoInfo;
+ unsigned i;
index_data = (IndexData *)client_data;
printEntityInfo("[indexDeclaration]", client_data, info->entityInfo);
@@ -1766,13 +1717,6 @@ static CXIdxClientEntity index_indexDeclaration(CXClientData client_data,
printf(" | isRedecl: %d", info->isRedeclaration);
printf(" | isDef: %d\n", info->isDefinition);
-
- if (clang_index_isEntityTagKind(info->entityInfo->kind)) {
- printCheck(index_data);
- printf(" <TagInfo>: isAnonymous: %d\n",
- clang_index_getTagDeclInfo(info)->isAnonymous);
- }
-
if (clang_index_isEntityObjCContainerKind(info->entityInfo->kind)) {
const char *kindName = 0;
CXIdxObjCContainerKind K = clang_index_getObjCContainerDeclInfo(info)->kind;
@@ -1788,64 +1732,51 @@ static CXIdxClientEntity index_indexDeclaration(CXClientData client_data,
printf(" <ObjCContainerInfo>: kind: %s\n", kindName);
}
- if (clang_index_isEntityObjCCategoryKind(info->entityInfo->kind)) {
- CXIdxObjCCategoryDeclInfo *
- CatInfo = clang_index_getObjCCategoryDeclInfo(info);
+ if ((CatInfo = clang_index_getObjCCategoryDeclInfo(info))) {
printEntityInfo(" <ObjCCategoryInfo>: class", client_data,
CatInfo->objcClass);
printf("\n");
}
- if (!info->isRedeclaration)
- return makeClientEntity(info->entityInfo, info->loc);
-
- return 0;
-}
-
-static CXIdxClientContainer
-index_startedContainer(CXClientData client_data, CXIdxContainerInfo *info) {
- printEntityInfo("[startedContainer]", client_data, info->entity);
- printf(" | cursor: ");
- PrintCursor(info->cursor);
- printf(" | loc: ");
- printCXIndexLoc(info->loc);
- printf(" | isObjCImpl: %d\n", info->isObjCImpl);
-
- return (CXIdxClientContainer)info->entity->clientEntity;
-}
-
-static void index_defineObjCClass(CXClientData client_data,
- CXIdxObjCClassDefineInfo *info) {
- printEntityInfo("[defineObjCClass]", client_data, info->objcClass);
- printf(" | cursor: ");
- PrintCursor(info->cursor);
- printf(" | container: ");
- printCXIndexContainer(info->container);
-
- if (info->baseInfo) {
- printEntityInfo(" | <base>", client_data, info->baseInfo->objcClass);
- printf(" | base loc: ");
- printCXIndexLoc(info->baseInfo->loc);
+ if ((InterInfo = clang_index_getObjCInterfaceDeclInfo(info))) {
+ if (InterInfo->superInfo) {
+ printEntityInfo(" <ObjCInterfaceInfo>: base", client_data,
+ InterInfo->superInfo->base);
+ printf(" | cursor: ");
+ PrintCursor(InterInfo->superInfo->cursor);
+ printf(" | loc: ");
+ printCXIndexLoc(InterInfo->superInfo->loc);
+ printf("\n");
+ }
+ for (i = 0; i < InterInfo->numProtocols; ++i) {
+ printEntityInfo(" <ObjCInterfaceInfo>: protocol", client_data,
+ InterInfo->protocols[i]->protocol);
+ printf(" | cursor: ");
+ PrintCursor(InterInfo->protocols[i]->cursor);
+ printf(" | loc: ");
+ printCXIndexLoc(InterInfo->protocols[i]->loc);
+ printf("\n");
+ }
}
- printf("\n");
-}
-
-static void index_endedContainer(CXClientData client_data,
- CXIdxEndContainerInfo *info) {
- IndexData *index_data;
- index_data = (IndexData *)client_data;
- printCheck(index_data);
+ if ((ProtoInfo = clang_index_getObjCProtocolDeclInfo(info))) {
+ for (i = 0; i < ProtoInfo->numProtocols; ++i) {
+ printEntityInfo(" <ObjCProtocolInfo>: protocol", client_data,
+ ProtoInfo->protocols[i]->protocol);
+ printf(" | cursor: ");
+ PrintCursor(ProtoInfo->protocols[i]->cursor);
+ printf(" | loc: ");
+ printCXIndexLoc(ProtoInfo->protocols[i]->loc);
+ printf("\n");
+ }
+ }
- printf("[endedContainer]: ");
- printCXIndexContainer(info->container);
- printf(" | end: ");
- printCXIndexLoc(info->endLoc);
- printf("\n");
+ if (outData->outContainer)
+ *outData->outContainer = makeClientContainer(info->entityInfo, info->loc);
}
static void index_indexEntityReference(CXClientData client_data,
- CXIdxEntityRefInfo *info) {
+ const CXIdxEntityRefInfo *info) {
printEntityInfo("[indexEntityReference]", client_data, info->referencedEntity);
printf(" | cursor: ");
PrintCursor(info->cursor);
@@ -1863,20 +1794,13 @@ static void index_indexEntityReference(CXClientData client_data,
}
static IndexerCallbacks IndexCB = {
+ 0, /*abortQuery*/
index_diagnostic,
index_enteredMainFile,
index_ppIncludedFile,
- index_ppMacroDefined,
- index_ppMacroUndefined,
- index_ppMacroExpanded,
0, /*importedASTFile*/
- index_importedEntity,
- 0,/*index_importedMacro,*/
index_startedTranslationUnit,
index_indexDeclaration,
- index_startedContainer,
- index_defineObjCClass,
- index_endedContainer,
index_indexEntityReference
};