[cfe-commits] r142233 - in /cfe/trunk: include/clang-c/Index.h tools/c-index-test/c-index-test.c tools/libclang/CIndex.cpp tools/libclang/CIndexUSRs.cpp tools/libclang/CMakeLists.txt tools/libclang/CXCursor.cpp tools/libclang/CXCursor.h tools/libclang/CXTranslationUnit.h tools/libclang/IndexBody.cpp tools/libclang/IndexDecl.cpp tools/libclang/IndexTypeSourceInfo.cpp tools/libclang/Indexing.cpp tools/libclang/IndexingContext.cpp tools/libclang/IndexingContext.h tools/libclang/libclang.exports
Argyrios Kyrtzidis
kyrtzidis at apple.com
Wed Oct 19 08:18:49 PDT 2011
On Oct 18, 2011, at 10:27 PM, Douglas Gregor wrote:
>
> On Oct 17, 2011, at 12:48 PM, Argyrios Kyrtzidis wrote:
>
>> Author: akirtzidis
>> Date: Mon Oct 17 14:48:19 2011
>> New Revision: 142233
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=142233&view=rev
>> Log:
>> [libclang] Introduce a new high level API for indexing clients that assumes
>> more of the work involved in indexing a translation unit and simplifies client
>> implementations.
>>
>> Only C/ObjC for now, C++ (and comments) to come.
>>
>> Added:
>> cfe/trunk/tools/libclang/IndexBody.cpp
>> cfe/trunk/tools/libclang/IndexDecl.cpp
>> cfe/trunk/tools/libclang/IndexTypeSourceInfo.cpp
>> cfe/trunk/tools/libclang/Indexing.cpp
>> cfe/trunk/tools/libclang/IndexingContext.cpp
>> cfe/trunk/tools/libclang/IndexingContext.h
>> Modified:
>> cfe/trunk/include/clang-c/Index.h
>> cfe/trunk/tools/c-index-test/c-index-test.c
>> cfe/trunk/tools/libclang/CIndex.cpp
>> cfe/trunk/tools/libclang/CIndexUSRs.cpp
>> cfe/trunk/tools/libclang/CMakeLists.txt
>> cfe/trunk/tools/libclang/CXCursor.cpp
>> cfe/trunk/tools/libclang/CXCursor.h
>> cfe/trunk/tools/libclang/CXTranslationUnit.h
>> cfe/trunk/tools/libclang/libclang.exports
>>
>> Modified: cfe/trunk/include/clang-c/Index.h
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang-c/Index.h?rev=142233&r1=142232&r2=142233&view=diff
>> ==============================================================================
>> --- cfe/trunk/include/clang-c/Index.h (original)
>> +++ cfe/trunk/include/clang-c/Index.h Mon Oct 17 14:48:19 2011
>> @@ -3855,6 +3855,329 @@
>> # endif
>> #endif
>>
>> +typedef void *CXIdxFile;
>> +typedef void *CXIdxEntity;
>> +typedef void *CXIdxContainer;
>> +typedef void *CXIdxMacro;
>> +typedef void *CXIdxASTFile;
>> +
>> +typedef struct {
>> + void *ptr_data[2];
>> + unsigned int_data;
>> +} CXIdxLoc;
>> +
>> +typedef struct {
>> + CXIdxLoc hashLoc;
>> + const char *filename;
>> + CXIdxFile file;
>> + int isImport;
>> + int isAngled;
>> +} CXIdxIncludedFileInfo;
>> +
>> +typedef struct {
>> + CXFile file;
>> + CXIdxLoc loc;
>> + int isModule;
>> +} CXIdxImportedASTFileInfo;
>> +
>> +typedef struct {
>> + CXIdxLoc loc;
>> + const char *name;
>> +} CXIdxMacroInfo;
>> +
>> +typedef struct {
>> + CXIdxMacroInfo *macroInfo;
>> + CXIdxLoc defBegin;
>> + unsigned defLength;
>> +} CXIdxMacroDefinedInfo;
>> +
>> +typedef struct {
>> + CXIdxLoc loc;
>> + const char *name;
>> + CXIdxMacro macro;
>> +} CXIdxMacroUndefinedInfo;
>> +
>> +typedef struct {
>> + CXIdxLoc loc;
>> + const char *name;
>> + CXIdxMacro macro;
>> +} CXIdxMacroExpandedInfo;
>> +
>> +typedef struct {
>> + const char *name;
>> + const char *USR;
>> +} CXIdxEntityInfo;
>> +
>> +typedef struct {
>> + CXCursor cursor;
>> + CXIdxLoc loc;
>> + CXIdxContainer container;
>> +} CXIdxIndexedDeclInfo;
>> +
>> +typedef struct {
>> + CXIdxEntityInfo *entityInfo;
>> + CXCursor cursor;
>> + CXIdxLoc loc;
>> + CXIdxASTFile ASTFile;
>> +} CXIdxImportedEntityInfo;
>> +
>> +typedef struct {
>> + CXIdxMacroInfo *macroInfo;
>> + CXIdxASTFile ASTFile;
>> +} CXIdxImportedMacroInfo;
>> +
>> +typedef struct {
>> + CXIdxEntityInfo *entityInfo;
>> + CXIdxIndexedDeclInfo *declInfo;
>> +} CXIdxIndexedEntityInfo;
>> +
>> +typedef struct {
>> + CXIdxIndexedDeclInfo *declInfo;
>> + CXIdxEntity entity;
>> +} CXIdxIndexedRedeclInfo;
>> +
>> +typedef struct {
>> + CXCursor cursor;
>> + CXIdxLoc loc;
>> + CXIdxEntity entity;
>> +} CXIdxContainerInfo;
>> +
>> +typedef struct {
>> + CXIdxIndexedEntityInfo *indexedEntityInfo;
>> +} CXIdxTypedefInfo;
>> +
>> +typedef struct {
>> + CXIdxIndexedEntityInfo *indexedEntityInfo;
>> + int isDefinition;
>> +} CXIdxFunctionInfo;
>> +
>> +typedef struct {
>> + CXIdxIndexedRedeclInfo *indexedRedeclInfo;
>> + int isDefinition;
>> +} CXIdxFunctionRedeclInfo;
>> +
>> +typedef struct {
>> + CXIdxIndexedEntityInfo *indexedEntityInfo;
>> + int isDefinition;
>> +} CXIdxVariableInfo;
>> +
>> +typedef struct {
>> + CXIdxIndexedRedeclInfo *indexedRedeclInfo;
>> + int isDefinition;
>> +} CXIdxVariableRedeclInfo;
>> +
>> +typedef struct {
>> + CXIdxIndexedEntityInfo *indexedEntityInfo;
>> + int isDefinition;
>> + int isAnonymous;
>> +} CXIdxTagTypeInfo;
>> +
>> +typedef struct {
>> + CXIdxIndexedRedeclInfo *indexedRedeclInfo;
>> + int isDefinition;
>> +} CXIdxTagTypeRedeclInfo;
>> +
>> +typedef struct {
>> + CXIdxContainerInfo *containerInfo;
>> +} CXIdxTagTypeDefinitionInfo;
>> +
>> +typedef struct {
>> + CXIdxIndexedEntityInfo *indexedEntityInfo;
>> +} CXIdxFieldInfo;
>> +
>> +typedef struct {
>> + CXIdxIndexedEntityInfo *indexedEntityInfo;
>> +} CXIdxEnumeratorInfo;
>> +
>> +typedef struct {
>> + CXIdxIndexedEntityInfo *indexedEntityInfo;
>> + int isForwardRef;
>> +} CXIdxObjCClassInfo;
>> +
>> +typedef struct {
>> + CXIdxIndexedEntityInfo *indexedEntityInfo;
>> + int isForwardRef;
>> +} CXIdxObjCProtocolInfo;
>> +
>> +typedef struct {
>> + CXIdxIndexedEntityInfo *indexedEntityInfo;
>> + CXIdxEntity objcClass;
>> +} CXIdxObjCCategoryInfo;
>> +
>> +typedef struct {
>> + CXIdxIndexedEntityInfo *indexedEntityInfo;
>> + int isDefinition;
>> +} CXIdxObjCMethodInfo;
>> +
>> +typedef struct {
>> + CXIdxIndexedEntityInfo *indexedEntityInfo;
>> +} CXIdxObjCPropertyInfo;
>> +
>> +typedef struct {
>> + CXIdxIndexedRedeclInfo *indexedRedeclInfo;
>> + int isDefinition;
>> +} CXIdxObjCMethodRedeclInfo;
>> +
>> +typedef struct {
>> + CXIdxContainerInfo *containerInfo;
>> + CXIdxLoc bodyBegin;
>> +} CXIdxStmtBodyInfo;
>> +
>> +typedef struct {
>> + CXIdxContainerInfo *containerInfo;
>> +} CXIdxObjCContainerInfo;
>> +
>> +typedef struct {
>> + CXIdxEntity objcClass;
>> + CXIdxLoc loc;
>> +} CXIdxObjCBaseClassInfo;
>> +
>> +typedef struct {
>> + CXIdxEntity protocol;
>> + CXIdxLoc loc;
>> +} CXIdxObjCProtocolRefInfo;
>> +
>> +typedef struct {
>> + CXCursor cursor;
>> + CXIdxEntity objcClass;
>> + CXIdxContainer container;
>> + CXIdxObjCBaseClassInfo *baseInfo;
>> + CXIdxObjCProtocolRefInfo **protocols;
>> + unsigned numProtocols;
>> +} CXIdxObjCClassDefineInfo;
>> +
>> +typedef struct {
>> + CXIdxContainer container;
>> + CXIdxLoc endLoc;
>> +} CXIdxEndContainerInfo;
>> +
>> +typedef struct {
>> + CXCursor cursor;
>> + CXIdxLoc loc;
>> + CXIdxEntity referencedEntity;
>> + CXIdxEntity parentEntity;
>> + CXIdxContainer container;
>> +} CXIdxEntityRefInfo;
>> +
>> +typedef struct {
>> + void (*diagnostic)(CXClientData client_data,
>> + CXDiagnostic, void *reserved);
>> +
>> + CXIdxFile (*recordFile)(CXClientData client_data,
>> + CXFile file, void *reserved);
>> +
>> + void (*ppIncludedFile)(CXClientData client_data,
>> + CXIdxIncludedFileInfo *);
>
> Should you pass the "included from" file here?
You can get that from the hash location; it should be sufficient, right ?
>
> - Doug
>
More information about the cfe-commits
mailing list