clang API Documentation

Classes | Typedefs | Enumerations | Functions
Higher level API functions
libclang: C Interface to Clang
Collaboration diagram for Higher level API functions:

Classes

struct  CXCursorAndRangeVisitor
struct  CXIdxLoc
 Source location passed to index callbacks. More...
struct  CXIdxIncludedFileInfo
 Data for ppIncludedFile callback. More...
struct  CXIdxImportedASTFileInfo
 Data for IndexerCallbacks::importedASTFile. More...
struct  CXIdxAttrInfo
struct  CXIdxEntityInfo
struct  CXIdxContainerInfo
struct  CXIdxIBOutletCollectionAttrInfo
struct  CXIdxDeclInfo
struct  CXIdxObjCContainerDeclInfo
struct  CXIdxBaseClassInfo
struct  CXIdxObjCProtocolRefInfo
struct  CXIdxObjCProtocolRefListInfo
struct  CXIdxObjCInterfaceDeclInfo
struct  CXIdxObjCCategoryDeclInfo
struct  CXIdxObjCPropertyDeclInfo
struct  CXIdxCXXClassDeclInfo
struct  CXIdxEntityRefInfo
 Data for IndexerCallbacks::indexEntityReference. More...
struct  IndexerCallbacks
 A group of callbacks used by clang_indexSourceFile and clang_indexTranslationUnit. More...

Typedefs

typedef void * CXIdxClientFile
 The client's data object that is associated with a CXFile.
typedef void * CXIdxClientEntity
 The client's data object that is associated with a semantic entity.
typedef void * CXIdxClientContainer
 The client's data object that is associated with a semantic container of entities.
typedef void * CXIdxClientASTFile
 The client's data object that is associated with an AST file (PCH or module).
typedef void * CXIndexAction
 An indexing action/session, to be applied to one or multiple translation units.

Enumerations

enum  CXVisitorResult { CXVisit_Break, CXVisit_Continue }
enum  CXResult { CXResult_Success = 0, CXResult_Invalid = 1, CXResult_VisitBreak = 2 }
enum  CXIdxEntityKind {
  CXIdxEntity_Unexposed = 0, CXIdxEntity_Typedef = 1, CXIdxEntity_Function = 2, CXIdxEntity_Variable = 3,
  CXIdxEntity_Field = 4, CXIdxEntity_EnumConstant = 5, CXIdxEntity_ObjCClass = 6, CXIdxEntity_ObjCProtocol = 7,
  CXIdxEntity_ObjCCategory = 8, CXIdxEntity_ObjCInstanceMethod = 9, CXIdxEntity_ObjCClassMethod = 10, CXIdxEntity_ObjCProperty = 11,
  CXIdxEntity_ObjCIvar = 12, CXIdxEntity_Enum = 13, CXIdxEntity_Struct = 14, CXIdxEntity_Union = 15,
  CXIdxEntity_CXXClass = 16, CXIdxEntity_CXXNamespace = 17, CXIdxEntity_CXXNamespaceAlias = 18, CXIdxEntity_CXXStaticVariable = 19,
  CXIdxEntity_CXXStaticMethod = 20, CXIdxEntity_CXXInstanceMethod = 21, CXIdxEntity_CXXConstructor = 22, CXIdxEntity_CXXDestructor = 23,
  CXIdxEntity_CXXConversionFunction = 24, CXIdxEntity_CXXTypeAlias = 25, CXIdxEntity_CXXInterface = 26
}
enum  CXIdxEntityLanguage { CXIdxEntityLang_None = 0, CXIdxEntityLang_C = 1, CXIdxEntityLang_ObjC = 2, CXIdxEntityLang_CXX = 3 }
enum  CXIdxEntityCXXTemplateKind { CXIdxEntity_NonTemplate = 0, CXIdxEntity_Template = 1, CXIdxEntity_TemplatePartialSpecialization = 2, CXIdxEntity_TemplateSpecialization = 3 }
 Extra C++ template information for an entity. This can apply to: CXIdxEntity_Function CXIdxEntity_CXXClass CXIdxEntity_CXXStaticMethod CXIdxEntity_CXXInstanceMethod CXIdxEntity_CXXConstructor CXIdxEntity_CXXConversionFunction CXIdxEntity_CXXTypeAlias. More...
enum  CXIdxAttrKind { CXIdxAttr_Unexposed = 0, CXIdxAttr_IBAction = 1, CXIdxAttr_IBOutlet = 2, CXIdxAttr_IBOutletCollection = 3 }
enum  CXIdxDeclInfoFlags { CXIdxDeclFlag_Skipped = 0x1 }
enum  CXIdxObjCContainerKind { CXIdxObjCContainer_ForwardRef = 0, CXIdxObjCContainer_Interface = 1, CXIdxObjCContainer_Implementation = 2 }
enum  CXIdxEntityRefKind { CXIdxEntityRef_Direct = 1, CXIdxEntityRef_Implicit = 2 }
 Data for IndexerCallbacks::indexEntityReference. More...
enum  CXIndexOptFlags {
  CXIndexOpt_None = 0x0, CXIndexOpt_SuppressRedundantRefs = 0x1, CXIndexOpt_IndexFunctionLocalSymbols = 0x2, CXIndexOpt_IndexImplicitTemplateInstantiations = 0x4,
  CXIndexOpt_SuppressWarnings = 0x8, CXIndexOpt_SkipParsedBodiesInSession = 0x10
}

Functions

CINDEX_LINKAGE CXResult clang_findReferencesInFile (CXCursor cursor, CXFile file, CXCursorAndRangeVisitor visitor)
 Find references of a declaration in a specific file.
CINDEX_LINKAGE CXResult clang_findIncludesInFile (CXTranslationUnit TU, CXFile file, CXCursorAndRangeVisitor visitor)
 Find #import/#include directives in a specific file.
CINDEX_LINKAGE int clang_index_isEntityObjCContainerKind (CXIdxEntityKind)
CINDEX_LINKAGE const
CXIdxObjCContainerDeclInfo
clang_index_getObjCContainerDeclInfo (const CXIdxDeclInfo *)
CINDEX_LINKAGE const
CXIdxObjCInterfaceDeclInfo
clang_index_getObjCInterfaceDeclInfo (const CXIdxDeclInfo *)
CINDEX_LINKAGE const
CXIdxObjCCategoryDeclInfo
clang_index_getObjCCategoryDeclInfo (const CXIdxDeclInfo *)
CINDEX_LINKAGE const
CXIdxObjCProtocolRefListInfo
clang_index_getObjCProtocolRefListInfo (const CXIdxDeclInfo *)
CINDEX_LINKAGE const
CXIdxObjCPropertyDeclInfo
clang_index_getObjCPropertyDeclInfo (const CXIdxDeclInfo *)
CINDEX_LINKAGE const
CXIdxIBOutletCollectionAttrInfo
clang_index_getIBOutletCollectionAttrInfo (const CXIdxAttrInfo *)
CINDEX_LINKAGE const
CXIdxCXXClassDeclInfo
clang_index_getCXXClassDeclInfo (const CXIdxDeclInfo *)
CINDEX_LINKAGE CXIdxClientContainer clang_index_getClientContainer (const CXIdxContainerInfo *)
 For retrieving a custom CXIdxClientContainer attached to a container.
CINDEX_LINKAGE void clang_index_setClientContainer (const CXIdxContainerInfo *, CXIdxClientContainer)
 For setting a custom CXIdxClientContainer attached to a container.
CINDEX_LINKAGE CXIdxClientEntity clang_index_getClientEntity (const CXIdxEntityInfo *)
 For retrieving a custom CXIdxClientEntity attached to an entity.
CINDEX_LINKAGE void clang_index_setClientEntity (const CXIdxEntityInfo *, CXIdxClientEntity)
 For setting a custom CXIdxClientEntity attached to an entity.
CINDEX_LINKAGE CXIndexAction clang_IndexAction_create (CXIndex CIdx)
 An indexing action/session, to be applied to one or multiple translation units.
CINDEX_LINKAGE void clang_IndexAction_dispose (CXIndexAction)
 Destroy the given index action.
CINDEX_LINKAGE int clang_indexSourceFile (CXIndexAction, 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)
 Index the given source file and the translation unit corresponding to that file via callbacks implemented through IndexerCallbacks.
CINDEX_LINKAGE int clang_indexTranslationUnit (CXIndexAction, CXClientData client_data, IndexerCallbacks *index_callbacks, unsigned index_callbacks_size, unsigned index_options, CXTranslationUnit)
 Index the given translation unit via callbacks implemented through IndexerCallbacks.
CINDEX_LINKAGE void clang_indexLoc_getFileLocation (CXIdxLoc loc, CXIdxClientFile *indexFile, CXFile *file, unsigned *line, unsigned *column, unsigned *offset)
 Retrieve the CXIdxFile, file, line, column, and offset represented by the given CXIdxLoc.
CINDEX_LINKAGE CXSourceLocation clang_indexLoc_getCXSourceLocation (CXIdxLoc loc)
 Retrieve the CXSourceLocation represented by the given CXIdxLoc.

Typedef Documentation

typedef void* CXIdxClientASTFile

The client's data object that is associated with an AST file (PCH or module).

Definition at line 5136 of file Index.h.

typedef void* CXIdxClientContainer

The client's data object that is associated with a semantic container of entities.

Definition at line 5130 of file Index.h.

typedef void* CXIdxClientEntity

The client's data object that is associated with a semantic entity.

Definition at line 5124 of file Index.h.

typedef void* CXIdxClientFile

The client's data object that is associated with a CXFile.

Definition at line 5119 of file Index.h.

typedef void* CXIndexAction

An indexing action/session, to be applied to one or multiple translation units.

Definition at line 5527 of file Index.h.


Enumeration Type Documentation

Enumerator:
CXIdxAttr_Unexposed 
CXIdxAttr_IBAction 
CXIdxAttr_IBOutlet 
CXIdxAttr_IBOutletCollection 

Definition at line 5254 of file Index.h.

Enumerator:
CXIdxDeclFlag_Skipped 

Definition at line 5289 of file Index.h.

Extra C++ template information for an entity. This can apply to: CXIdxEntity_Function CXIdxEntity_CXXClass CXIdxEntity_CXXStaticMethod CXIdxEntity_CXXInstanceMethod CXIdxEntity_CXXConstructor CXIdxEntity_CXXConversionFunction CXIdxEntity_CXXTypeAlias.

Enumerator:
CXIdxEntity_NonTemplate 
CXIdxEntity_Template 
CXIdxEntity_TemplatePartialSpecialization 
CXIdxEntity_TemplateSpecialization 

Definition at line 5247 of file Index.h.

Enumerator:
CXIdxEntity_Unexposed 
CXIdxEntity_Typedef 
CXIdxEntity_Function 
CXIdxEntity_Variable 
CXIdxEntity_Field 
CXIdxEntity_EnumConstant 
CXIdxEntity_ObjCClass 
CXIdxEntity_ObjCProtocol 
CXIdxEntity_ObjCCategory 
CXIdxEntity_ObjCInstanceMethod 
CXIdxEntity_ObjCClassMethod 
CXIdxEntity_ObjCProperty 
CXIdxEntity_ObjCIvar 
CXIdxEntity_Enum 
CXIdxEntity_Struct 
CXIdxEntity_Union 
CXIdxEntity_CXXClass 
CXIdxEntity_CXXNamespace 
CXIdxEntity_CXXNamespaceAlias 
CXIdxEntity_CXXStaticVariable 
CXIdxEntity_CXXStaticMethod 
CXIdxEntity_CXXInstanceMethod 
CXIdxEntity_CXXConstructor 
CXIdxEntity_CXXDestructor 
CXIdxEntity_CXXConversionFunction 
CXIdxEntity_CXXTypeAlias 
CXIdxEntity_CXXInterface 

Definition at line 5195 of file Index.h.

Enumerator:
CXIdxEntityLang_None 
CXIdxEntityLang_C 
CXIdxEntityLang_ObjC 
CXIdxEntityLang_CXX 

Definition at line 5230 of file Index.h.

Data for IndexerCallbacks::indexEntityReference.

Enumerator:
CXIdxEntityRef_Direct 

The entity is referenced directly in user's code.

CXIdxEntityRef_Implicit 

An implicit reference, e.g. a reference of an Objective-C method via the dot syntax.

Definition at line 5376 of file Index.h.

Enumerator:
CXIdxObjCContainer_ForwardRef 
CXIdxObjCContainer_Interface 
CXIdxObjCContainer_Implementation 

Definition at line 5319 of file Index.h.

Enumerator:
CXIndexOpt_None 

Used to indicate that no special indexing options are needed.

CXIndexOpt_SuppressRedundantRefs 

Used to indicate that IndexerCallbacks::indexEntityReference should be invoked for only one reference of an entity per source file that does not also include a declaration/definition of the entity.

CXIndexOpt_IndexFunctionLocalSymbols 

Function-local symbols should be indexed. If this is not set function-local symbols will be ignored.

CXIndexOpt_IndexImplicitTemplateInstantiations 

Implicit function/class template instantiations should be indexed. If this is not set, implicit instantiations will be ignored.

CXIndexOpt_SuppressWarnings 

Suppress all compiler warnings when parsing for indexing.

CXIndexOpt_SkipParsedBodiesInSession 

Skip a function/method body that was already parsed during an indexing session associated with a CXIndexAction object. Bodies in system headers are always skipped.

Definition at line 5545 of file Index.h.

enum CXResult
Enumerator:
CXResult_Success 

Function returned successfully.

CXResult_Invalid 

One of the parameters was invalid for the function.

CXResult_VisitBreak 

The function was terminated by a callback (e.g. it returned CXVisit_Break)

Definition at line 5049 of file Index.h.

Enumerator:
CXVisit_Break 
CXVisit_Continue 

Definition at line 5039 of file Index.h.


Function Documentation

Find #import/#include directives in a specific file.

Parameters:
TUtranslation unit containing the file to query.
fileto search for #import/#include directives.
visitorcallback that will receive pairs of CXCursor/CXSourceRange for each directive found.
Returns:
one of the CXResult enumerators.

Find references of a declaration in a specific file.

Parameters:
cursorpointing to a declaration or a reference of one.
fileto search for references.
visitorcallback that will receive pairs of CXCursor/CXSourceRange for each reference found. The CXSourceRange will point inside the file; if the reference is inside a macro (and not a macro argument) the CXSourceRange will be invalid.
Returns:
one of the CXResult enumerators.

For retrieving a custom CXIdxClientContainer attached to a container.

For retrieving a custom CXIdxClientEntity attached to an entity.

For setting a custom CXIdxClientContainer attached to a container.

For setting a custom CXIdxClientEntity attached to an entity.

An indexing action/session, to be applied to one or multiple translation units.

Parameters:
CIdxThe index object with which the index action will be associated.

Destroy the given index action.

The index action must not be destroyed until all of the translation units created within that index action have been destroyed.

Retrieve the CXSourceLocation represented by the given CXIdxLoc.

CINDEX_LINKAGE void clang_indexLoc_getFileLocation ( CXIdxLoc  loc,
CXIdxClientFile indexFile,
CXFile file,
unsigned line,
unsigned column,
unsigned offset 
)

Retrieve the CXIdxFile, file, line, column, and offset represented by the given CXIdxLoc.

If the location refers into a macro expansion, retrieves the location of the macro expansion and if it refers into a macro argument retrieves the location of the argument.

CINDEX_LINKAGE int clang_indexSourceFile ( CXIndexAction  ,
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 
)

Index the given source file and the translation unit corresponding to that file via callbacks implemented through IndexerCallbacks.

Parameters:
client_datapointer data supplied by the client, which will be passed to the invoked callbacks.
index_callbacksPointer to indexing callbacks that the client implements.
index_callbacks_sizeSize of IndexerCallbacks structure that gets passed in index_callbacks.
index_optionsA bitmask of options that affects how indexing is performed. This should be a bitwise OR of the CXIndexOpt_XXX flags.
[out]out_TUpointer to store a CXTranslationUnit that can be reused after indexing is finished. Set to NULL if you do not require it.
Returns:
0 on success or if there were errors from which the compiler could recover. If there is a failure from which the there is no recovery, returns a non-zero CXErrorCode.

The rest of the parameters are the same as clang_parseTranslationUnit.

CINDEX_LINKAGE int clang_indexTranslationUnit ( CXIndexAction  ,
CXClientData  client_data,
IndexerCallbacks index_callbacks,
unsigned  index_callbacks_size,
unsigned  index_options,
CXTranslationUnit   
)

Index the given translation unit via callbacks implemented through IndexerCallbacks.

The order of callback invocations is not guaranteed to be the same as when indexing a source file. The high level order will be:

-Preprocessor callbacks invocations -Declaration/reference callbacks invocations -Diagnostic callback invocations

The parameters are the same as clang_indexSourceFile.

Returns:
If there is a failure from which the there is no recovery, returns non-zero, otherwise returns 0.