summaryrefslogtreecommitdiffstats
path: root/include/clang-c
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-10-17 19:48:19 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-10-17 19:48:19 +0000
commit4e7064fa7e344e8f87a5b8457e96dfdd252c4a9e (patch)
treedb3fd8ec700eccc7b796986919ef8a4f88eb6696 /include/clang-c
parentb4a686df4de21ec4eeca69211b21f7fe716abeae (diff)
[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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142233 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang-c')
-rw-r--r--include/clang-c/Index.h323
1 files changed, 323 insertions, 0 deletions
diff --git a/include/clang-c/Index.h b/include/clang-c/Index.h
index 1320145a89..d45830ef91 100644
--- a/include/clang-c/Index.h
+++ b/include/clang-c/Index.h
@@ -3855,6 +3855,329 @@ void clang_findReferencesInFileWithBlock(CXCursor, CXFile,
# 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 *);
+
+ CXIdxMacro (*ppMacroDefined)(CXClientData client_data,
+ CXIdxMacroDefinedInfo *);
+
+ void (*ppMacroUndefined)(CXClientData client_data,
+ CXIdxMacroUndefinedInfo *);
+
+ void (*ppMacroExpanded)(CXClientData client_data,
+ CXIdxMacroExpandedInfo *);
+
+ CXIdxASTFile (*importedASTFile)(CXClientData client_data,
+ CXIdxImportedASTFileInfo *);
+
+ CXIdxEntity (*importedEntity)(CXClientData client_data,
+ CXIdxImportedEntityInfo *);
+
+ CXIdxEntity (*importedMacro)(CXClientData client_data,
+ CXIdxImportedMacroInfo *);
+
+ CXIdxContainer (*startedTranslationUnit)(CXClientData client_data,
+ void *reserved);
+
+ CXIdxEntity (*indexTypedef)(CXClientData client_data,
+ CXIdxTypedefInfo *);
+
+ CXIdxEntity (*indexFunction)(CXClientData client_data,
+ CXIdxFunctionInfo *);
+
+ void (*indexFunctionRedeclaration)(CXClientData client_data,
+ CXIdxFunctionRedeclInfo *);
+
+ CXIdxEntity (*indexVariable)(CXClientData client_data,
+ CXIdxVariableInfo *);
+
+ void (*indexVariableRedeclaration)(CXClientData client_data,
+ CXIdxVariableRedeclInfo *);
+
+ CXIdxEntity (*indexTagType)(CXClientData client_data,
+ CXIdxTagTypeInfo *);
+
+ void (*indexTagTypeRedeclaration)(CXClientData client_data,
+ CXIdxTagTypeRedeclInfo *);
+
+ CXIdxEntity (*indexField)(CXClientData client_data,
+ CXIdxFieldInfo *);
+
+ CXIdxEntity (*indexEnumerator)(CXClientData client_data,
+ CXIdxEnumeratorInfo *);
+
+ CXIdxContainer (*startedTagTypeDefinition)(CXClientData client_data,
+ CXIdxTagTypeDefinitionInfo *);
+
+ CXIdxEntity (*indexObjCClass)(CXClientData client_data,
+ CXIdxObjCClassInfo *);
+
+ CXIdxEntity (*indexObjCProtocol)(CXClientData client_data,
+ CXIdxObjCProtocolInfo *);
+
+ CXIdxEntity (*indexObjCCategory)(CXClientData client_data,
+ CXIdxObjCCategoryInfo *);
+
+ CXIdxEntity (*indexObjCMethod)(CXClientData client_data,
+ CXIdxObjCMethodInfo *);
+
+ CXIdxEntity (*indexObjCProperty)(CXClientData client_data,
+ CXIdxObjCPropertyInfo *);
+
+ void (*indexObjCMethodRedeclaration)(CXClientData client_data,
+ CXIdxObjCMethodRedeclInfo *);
+
+ CXIdxContainer (*startedStatementBody)(CXClientData client_data,
+ CXIdxStmtBodyInfo *);
+
+ CXIdxContainer (*startedObjCContainer)(CXClientData client_data,
+ CXIdxObjCContainerInfo *);
+
+ void (*defineObjCClass)(CXClientData client_data,
+ CXIdxObjCClassDefineInfo *);
+
+ void (*endedContainer)(CXClientData client_data,
+ CXIdxEndContainerInfo *);
+
+ void (*indexEntityReference)(CXClientData client_data,
+ CXIdxEntityRefInfo *);
+
+} IndexerCallbacks;
+
+CINDEX_LINKAGE int clang_indexTranslationUnit(CXIndex CIdx,
+ CXClientData client_data,
+ IndexerCallbacks *index_callbacks,
+ unsigned index_callbacks_size,
+ unsigned index_options,
+ const char *source_filename,
+ const char * const *command_line_args,
+ int num_command_line_args,
+ struct CXUnsavedFile *unsaved_files,
+ unsigned num_unsaved_files,
+ CXTranslationUnit *out_TU,
+ unsigned TU_options);
+
+CINDEX_LINKAGE void clang_indexLoc_getFileLocation(CXIdxLoc loc,
+ CXIdxFile *indexFile,
+ CXFile *file,
+ unsigned *line,
+ unsigned *column,
+ unsigned *offset);
+
+CINDEX_LINKAGE
+CXSourceLocation clang_indexLoc_getCXSourceLocation(CXIdxLoc loc);
+
/**
* @}
*/