clang: libclang: C Interface to Clang (original) (raw)

Describes the kind of entity that a cursor refers to.

Enumerator

CXCursor_UnexposedDecl

A declaration whose specific kind is not exposed via this interface.

Unexposed declarations have the same operations as any other kind of declaration; one can extract their location information, spelling, find their definitions, etc. However, the specific kind of the declaration is not reported.

CXCursor_StructDecl

A C or C++ struct.

CXCursor_UnionDecl

A C or C++ union.

CXCursor_ClassDecl

A C++ class.

CXCursor_EnumDecl

An enumeration.

CXCursor_FieldDecl

A field (in C) or non-static data member (in C++) in a struct, union, or C++ class.

CXCursor_EnumConstantDecl

An enumerator constant.

CXCursor_FunctionDecl

A function.

CXCursor_VarDecl

A variable.

CXCursor_ParmDecl

A function or method parameter.

CXCursor_ObjCInterfaceDecl

An Objective-C @interface.

CXCursor_ObjCCategoryDecl

An Objective-C @interface for a category.

CXCursor_ObjCProtocolDecl

An Objective-C @protocol declaration.

CXCursor_ObjCPropertyDecl

An Objective-C @property declaration.

CXCursor_ObjCIvarDecl

An Objective-C instance variable.

CXCursor_ObjCInstanceMethodDecl

An Objective-C instance method.

CXCursor_ObjCClassMethodDecl

An Objective-C class method.

CXCursor_ObjCImplementationDecl

An Objective-C @implementation.

CXCursor_ObjCCategoryImplDecl

An Objective-C @implementation for a category.

CXCursor_TypedefDecl

A typedef.

CXCursor_CXXMethod

A C++ class method.

CXCursor_Namespace

A C++ namespace.

CXCursor_LinkageSpec

A linkage specification, e.g.

'extern "C"'.

CXCursor_Constructor

A C++ constructor.

CXCursor_Destructor

A C++ destructor.

CXCursor_ConversionFunction

A C++ conversion function.

CXCursor_TemplateTypeParameter

A C++ template type parameter.

CXCursor_NonTypeTemplateParameter

A C++ non-type template parameter.

CXCursor_TemplateTemplateParameter

A C++ template template parameter.

CXCursor_FunctionTemplate

A C++ function template.

CXCursor_ClassTemplate

A C++ class template.

CXCursor_ClassTemplatePartialSpecialization

A C++ class template partial specialization.

CXCursor_NamespaceAlias

A C++ namespace alias declaration.

CXCursor_UsingDirective

A C++ using directive.

CXCursor_UsingDeclaration

A C++ using declaration.

CXCursor_TypeAliasDecl

A C++ alias declaration.

CXCursor_ObjCSynthesizeDecl

An Objective-C @synthesize definition.

CXCursor_ObjCDynamicDecl

An Objective-C @dynamic definition.

CXCursor_CXXAccessSpecifier

An access specifier.

CXCursor_FirstDecl

CXCursor_LastDecl

CXCursor_FirstRef

CXCursor_ObjCSuperClassRef

CXCursor_ObjCProtocolRef

CXCursor_ObjCClassRef

CXCursor_TypeRef

A reference to a type declaration.

A type reference occurs anywhere where a type is named but not declared. For example, given:

typedef unsigned size_type;

size_type size;

The typedef is a declaration of size_type (CXCursor_TypedefDecl), while the type of the variable "size" is referenced. The cursor referenced by the type of size is the typedef for size_type.

CXCursor_CXXBaseSpecifier

CXCursor_TemplateRef

A reference to a class template, function template, template template parameter, or class template partial specialization.

CXCursor_NamespaceRef

A reference to a namespace or namespace alias.

CXCursor_MemberRef

A reference to a member of a struct, union, or class that occurs in some non-expression context, e.g., a designated initializer.

CXCursor_LabelRef

A reference to a labeled statement.

This cursor kind is used to describe the jump to "start_over" in the goto statement in the following example:

start_over:

++counter;

goto start_over;

A label reference cursor refers to a label statement.

CXCursor_OverloadedDeclRef

A reference to a set of overloaded functions or function templates that has not yet been resolved to a specific function or function template.

An overloaded declaration reference cursor occurs in C++ templates where a dependent name refers to a function. For example:

template void swap(T&, T&);

struct X { ... };

void swap(X&, X&);

template

void reverse(T* first, T* last) {

while (first < last - 1) {

swap(*first, *--last);

++first;

}

}

struct Y { };

void swap(Y&, Y&);

Here, the identifier "swap" is associated with an overloaded declaration reference. In the template definition, "swap" refers to either of the two "swap" functions declared above, so both results will be available. At instantiation time, "swap" may also refer to other functions found via argument-dependent lookup (e.g., the "swap" function at the end of the example).

The functions [clang_getNumOverloadedDecls()](group%5F%5FCINDEX%5F%5FTYPES.html#ga6fd1dfa66abaf18574c74a98e12856bc "Determine the number of overloaded declarations referenced by a CXCursor_OverloadedDeclRef cursor.") and [clang_getOverloadedDecl()](group%5F%5FCINDEX%5F%5FTYPES.html#gab1c718b939700a6c23adfb9729c9c28f "Retrieve a cursor for one of the overloaded declarations referenced by a CXCursor_OverloadedDeclRef c...") can be used to retrieve the definitions referenced by this cursor.

CXCursor_VariableRef

A reference to a variable that occurs in some non-expression context, e.g., a C++ lambda capture list.

CXCursor_LastRef

CXCursor_FirstInvalid

CXCursor_InvalidFile

CXCursor_NoDeclFound

CXCursor_NotImplemented

CXCursor_InvalidCode

CXCursor_LastInvalid

CXCursor_FirstExpr

CXCursor_UnexposedExpr

An expression whose specific kind is not exposed via this interface.

Unexposed expressions have the same operations as any other kind of expression; one can extract their location information, spelling, children, etc. However, the specific kind of the expression is not reported.

CXCursor_DeclRefExpr

An expression that refers to some value declaration, such as a function, variable, or enumerator.

CXCursor_MemberRefExpr

An expression that refers to a member of a struct, union, class, Objective-C class, etc.

CXCursor_CallExpr

An expression that calls a function.

CXCursor_ObjCMessageExpr

An expression that sends a message to an Objective-C object or class.

CXCursor_BlockExpr

An expression that represents a block literal.

CXCursor_IntegerLiteral

An integer literal.

CXCursor_FloatingLiteral

A floating point number literal.

CXCursor_ImaginaryLiteral

An imaginary number literal.

CXCursor_StringLiteral

A string literal.

CXCursor_CharacterLiteral

A character literal.

CXCursor_ParenExpr

A parenthesized expression, e.g.

"(1)".

This AST node is only formed if full location information is requested.

CXCursor_UnaryOperator

This represents the unary-expression's (except sizeof and alignof).

CXCursor_ArraySubscriptExpr

[C99 6.5.2.1] Array Subscripting.

CXCursor_BinaryOperator

A builtin binary operation expression such as "x + y" or "x <= y".

CXCursor_CompoundAssignOperator

Compound assignment such as "+=".

CXCursor_ConditionalOperator

The ?

: ternary operator.

CXCursor_CStyleCastExpr

An explicit cast in C (C99 6.5.4) or a C-style cast in C++ (C++ [expr.cast]), which uses the syntax (Type)expr.

For example: (int)f.

CXCursor_CompoundLiteralExpr

[C99 6.5.2.5]

CXCursor_InitListExpr

Describes an C or C++ initializer list.

CXCursor_AddrLabelExpr

The GNU address of label extension, representing &&label.

CXCursor_StmtExpr

This is the GNU Statement Expression extension: ({int X=4; X;})

CXCursor_GenericSelectionExpr

Represents a C11 generic selection.

CXCursor_GNUNullExpr

Implements the GNU __null extension, which is a name for a null pointer constant that has integral type (e.g., int or long) and is the same size and alignment as a pointer.

The __null extension is typically only used by system headers, which define NULL as __null in C++ rather than using 0 (which is an integer that may not match the size of a pointer).

CXCursor_CXXStaticCastExpr

C++'s static_cast<> expression.

CXCursor_CXXDynamicCastExpr

C++'s dynamic_cast<> expression.

CXCursor_CXXReinterpretCastExpr

C++'s reinterpret_cast<> expression.

CXCursor_CXXConstCastExpr

C++'s const_cast<> expression.

CXCursor_CXXFunctionalCastExpr

Represents an explicit C++ type conversion that uses "functional" notion (C++ [expr.type.conv]).

Example:

CXCursor_CXXTypeidExpr

A C++ typeid expression (C++ [expr.typeid]).

CXCursor_CXXBoolLiteralExpr

[C++ 2.13.5] C++ Boolean Literal.

CXCursor_CXXNullPtrLiteralExpr

[C++0x 2.14.7] C++ Pointer Literal.

CXCursor_CXXThisExpr

Represents the "this" expression in C++.

CXCursor_CXXThrowExpr

[C++ 15] C++ Throw Expression.

This handles 'throw' and 'throw' assignment-expression. When assignment-expression isn't present, Op will be null.

CXCursor_CXXNewExpr

A new expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)".

CXCursor_CXXDeleteExpr

A delete expression for memory deallocation and destructor calls, e.g.

"delete[] pArray".

CXCursor_UnaryExpr

A unary expression.

(noexcept, sizeof, or other traits)

CXCursor_ObjCStringLiteral

An Objective-C string literal i.e.

"foo".

CXCursor_ObjCEncodeExpr

An Objective-C @encode expression.

CXCursor_ObjCSelectorExpr

An Objective-C @selector expression.

CXCursor_ObjCProtocolExpr

An Objective-C @protocol expression.

CXCursor_ObjCBridgedCastExpr

An Objective-C "bridged" cast expression, which casts between Objective-C pointers and C pointers, transferring ownership in the process.

NSString *str = (__bridge_transfer NSString *)CFCreateString();

CXCursor_PackExpansionExpr

Represents a C++0x pack expansion that produces a sequence of expressions.

A pack expansion expression contains a pattern (which itself is an expression) followed by an ellipsis. For example:

template<typename F, typename ...Types>

void forward(F f, Types &&...args) {

f(static_cast<Types&&>(args)...);

}

CXCursor_SizeOfPackExpr

Represents an expression that computes the length of a parameter pack.

template<typename ...Types>

struct count {

static const unsigned value = sizeof...(Types);

};

CXCursor_LambdaExpr

CXCursor_ObjCBoolLiteralExpr

Objective-c Boolean Literal.

CXCursor_ObjCSelfExpr

Represents the "self" expression in an Objective-C method.

CXCursor_ArraySectionExpr

OpenMP 5.0 [2.1.5, Array Section].

OpenACC 3.3 [2.7.1, Data Specification for Data Clauses (Sub Arrays)]

CXCursor_ObjCAvailabilityCheckExpr

Represents an @available(...) check.

CXCursor_FixedPointLiteral

Fixed point literal.

CXCursor_OMPArrayShapingExpr

OpenMP 5.0 [2.1.4, Array Shaping].

CXCursor_OMPIteratorExpr

OpenMP 5.0 [2.1.6 Iterators].

CXCursor_CXXAddrspaceCastExpr

OpenCL's addrspace_cast<> expression.

CXCursor_ConceptSpecializationExpr

Expression that references a C++20 concept.

CXCursor_RequiresExpr

Expression that references a C++20 requires expression.

CXCursor_CXXParenListInitExpr

Expression that references a C++20 parenthesized list aggregate initializer.

CXCursor_PackIndexingExpr

Represents a C++26 pack indexing expression.

CXCursor_LastExpr

CXCursor_FirstStmt

CXCursor_UnexposedStmt

A statement whose specific kind is not exposed via this interface.

Unexposed statements have the same operations as any other kind of statement; one can extract their location information, spelling, children, etc. However, the specific kind of the statement is not reported.

CXCursor_LabelStmt

A labelled statement in a function.

This cursor kind is used to describe the "start_over:" label statement in the following example:

CXCursor_CompoundStmt

A group of statements like { stmt stmt }.

This cursor kind is used to describe compound statements, e.g. function bodies.

CXCursor_CaseStmt

A case statement.

CXCursor_DefaultStmt

A default statement.

CXCursor_IfStmt

An if statement.

CXCursor_SwitchStmt

A switch statement.

CXCursor_WhileStmt

A while statement.

CXCursor_DoStmt

A do statement.

CXCursor_ForStmt

A for statement.

CXCursor_GotoStmt

A goto statement.

CXCursor_IndirectGotoStmt

An indirect goto statement.

CXCursor_ContinueStmt

A continue statement.

CXCursor_BreakStmt

A break statement.

CXCursor_ReturnStmt

A return statement.

CXCursor_GCCAsmStmt

A GCC inline assembly statement extension.

CXCursor_AsmStmt

CXCursor_ObjCAtTryStmt

Objective-C's overall @try-@catch-@finally statement.

CXCursor_ObjCAtCatchStmt

Objective-C's @catch statement.

CXCursor_ObjCAtFinallyStmt

Objective-C's @finally statement.

CXCursor_ObjCAtThrowStmt

Objective-C's @throw statement.

CXCursor_ObjCAtSynchronizedStmt

Objective-C's @synchronized statement.

CXCursor_ObjCAutoreleasePoolStmt

Objective-C's autorelease pool statement.

CXCursor_ObjCForCollectionStmt

Objective-C's collection statement.

CXCursor_CXXCatchStmt

C++'s catch statement.

CXCursor_CXXTryStmt

C++'s try statement.

CXCursor_CXXForRangeStmt

C++'s for (* : *) statement.

CXCursor_SEHTryStmt

Windows Structured Exception Handling's try statement.

CXCursor_SEHExceptStmt

Windows Structured Exception Handling's except statement.

CXCursor_SEHFinallyStmt

Windows Structured Exception Handling's finally statement.

CXCursor_MSAsmStmt

A MS inline assembly statement extension.

CXCursor_NullStmt

The null statement ";": C99 6.8.3p3.

This cursor kind is used to describe the null statement.

CXCursor_DeclStmt

Adaptor class for mixing declarations with statements and expressions.

CXCursor_OMPParallelDirective

OpenMP parallel directive.

CXCursor_OMPSimdDirective

OpenMP SIMD directive.

CXCursor_OMPForDirective

OpenMP for directive.

CXCursor_OMPSectionsDirective

OpenMP sections directive.

CXCursor_OMPSectionDirective

OpenMP section directive.

CXCursor_OMPSingleDirective

OpenMP single directive.

CXCursor_OMPParallelForDirective

OpenMP parallel for directive.

CXCursor_OMPParallelSectionsDirective

OpenMP parallel sections directive.

CXCursor_OMPTaskDirective

OpenMP task directive.

CXCursor_OMPMasterDirective

OpenMP master directive.

CXCursor_OMPCriticalDirective

OpenMP critical directive.

CXCursor_OMPTaskyieldDirective

OpenMP taskyield directive.

CXCursor_OMPBarrierDirective

OpenMP barrier directive.

CXCursor_OMPTaskwaitDirective

OpenMP taskwait directive.

CXCursor_OMPFlushDirective

OpenMP flush directive.

CXCursor_SEHLeaveStmt

Windows Structured Exception Handling's leave statement.

CXCursor_OMPOrderedDirective

OpenMP ordered directive.

CXCursor_OMPAtomicDirective

OpenMP atomic directive.

CXCursor_OMPForSimdDirective

OpenMP for SIMD directive.

CXCursor_OMPParallelForSimdDirective

OpenMP parallel for SIMD directive.

CXCursor_OMPTargetDirective

OpenMP target directive.

CXCursor_OMPTeamsDirective

OpenMP teams directive.

CXCursor_OMPTaskgroupDirective

OpenMP taskgroup directive.

CXCursor_OMPCancellationPointDirective

OpenMP cancellation point directive.

CXCursor_OMPCancelDirective

OpenMP cancel directive.

CXCursor_OMPTargetDataDirective

OpenMP target data directive.

CXCursor_OMPTaskLoopDirective

OpenMP taskloop directive.

CXCursor_OMPTaskLoopSimdDirective

OpenMP taskloop simd directive.

CXCursor_OMPDistributeDirective

OpenMP distribute directive.

CXCursor_OMPTargetEnterDataDirective

OpenMP target enter data directive.

CXCursor_OMPTargetExitDataDirective

OpenMP target exit data directive.

CXCursor_OMPTargetParallelDirective

OpenMP target parallel directive.

CXCursor_OMPTargetParallelForDirective

OpenMP target parallel for directive.

CXCursor_OMPTargetUpdateDirective

OpenMP target update directive.

CXCursor_OMPDistributeParallelForDirective

OpenMP distribute parallel for directive.

CXCursor_OMPDistributeParallelForSimdDirective

OpenMP distribute parallel for simd directive.

CXCursor_OMPDistributeSimdDirective

OpenMP distribute simd directive.

CXCursor_OMPTargetParallelForSimdDirective

OpenMP target parallel for simd directive.

CXCursor_OMPTargetSimdDirective

OpenMP target simd directive.

CXCursor_OMPTeamsDistributeDirective

OpenMP teams distribute directive.

CXCursor_OMPTeamsDistributeSimdDirective

OpenMP teams distribute simd directive.

CXCursor_OMPTeamsDistributeParallelForSimdDirective

OpenMP teams distribute parallel for simd directive.

CXCursor_OMPTeamsDistributeParallelForDirective

OpenMP teams distribute parallel for directive.

CXCursor_OMPTargetTeamsDirective

OpenMP target teams directive.

CXCursor_OMPTargetTeamsDistributeDirective

OpenMP target teams distribute directive.

CXCursor_OMPTargetTeamsDistributeParallelForDirective

OpenMP target teams distribute parallel for directive.

CXCursor_OMPTargetTeamsDistributeParallelForSimdDirective

OpenMP target teams distribute parallel for simd directive.

CXCursor_OMPTargetTeamsDistributeSimdDirective

OpenMP target teams distribute simd directive.

CXCursor_BuiltinBitCastExpr

C++2a std::bit_cast expression.

CXCursor_OMPMasterTaskLoopDirective

OpenMP master taskloop directive.

CXCursor_OMPParallelMasterTaskLoopDirective

OpenMP parallel master taskloop directive.

CXCursor_OMPMasterTaskLoopSimdDirective

OpenMP master taskloop simd directive.

CXCursor_OMPParallelMasterTaskLoopSimdDirective

OpenMP parallel master taskloop simd directive.

CXCursor_OMPParallelMasterDirective

OpenMP parallel master directive.

CXCursor_OMPDepobjDirective

OpenMP depobj directive.

CXCursor_OMPScanDirective

OpenMP scan directive.

CXCursor_OMPTileDirective

OpenMP tile directive.

CXCursor_OMPCanonicalLoop

OpenMP canonical loop.

CXCursor_OMPInteropDirective

OpenMP interop directive.

CXCursor_OMPDispatchDirective

OpenMP dispatch directive.

CXCursor_OMPMaskedDirective

OpenMP masked directive.

CXCursor_OMPUnrollDirective

OpenMP unroll directive.

CXCursor_OMPMetaDirective

OpenMP metadirective directive.

CXCursor_OMPGenericLoopDirective

OpenMP loop directive.

CXCursor_OMPTeamsGenericLoopDirective

OpenMP teams loop directive.

CXCursor_OMPTargetTeamsGenericLoopDirective

OpenMP target teams loop directive.

CXCursor_OMPParallelGenericLoopDirective

OpenMP parallel loop directive.

CXCursor_OMPTargetParallelGenericLoopDirective

OpenMP target parallel loop directive.

CXCursor_OMPParallelMaskedDirective

OpenMP parallel masked directive.

CXCursor_OMPMaskedTaskLoopDirective

OpenMP masked taskloop directive.

CXCursor_OMPMaskedTaskLoopSimdDirective

OpenMP masked taskloop simd directive.

CXCursor_OMPParallelMaskedTaskLoopDirective

OpenMP parallel masked taskloop directive.

CXCursor_OMPParallelMaskedTaskLoopSimdDirective

OpenMP parallel masked taskloop simd directive.

CXCursor_OMPErrorDirective

OpenMP error directive.

CXCursor_OMPScopeDirective

OpenMP scope directive.

CXCursor_OMPReverseDirective

OpenMP reverse directive.

CXCursor_OMPInterchangeDirective

OpenMP interchange directive.

CXCursor_OMPAssumeDirective

OpenMP assume directive.

CXCursor_OMPStripeDirective

OpenMP assume directive.

CXCursor_OMPFuseDirective

OpenMP fuse directive.

CXCursor_OpenACCComputeConstruct

OpenACC Compute Construct.

CXCursor_OpenACCLoopConstruct

OpenACC Loop Construct.

CXCursor_OpenACCCombinedConstruct

OpenACC Combined Constructs.

CXCursor_OpenACCDataConstruct

OpenACC data Construct.

CXCursor_OpenACCEnterDataConstruct

OpenACC enter data Construct.

CXCursor_OpenACCExitDataConstruct

OpenACC exit data Construct.

CXCursor_OpenACCHostDataConstruct

OpenACC host_data Construct.

CXCursor_OpenACCWaitConstruct

OpenACC wait Construct.

CXCursor_OpenACCInitConstruct

OpenACC init Construct.

CXCursor_OpenACCShutdownConstruct

OpenACC shutdown Construct.

CXCursor_OpenACCSetConstruct

OpenACC set Construct.

CXCursor_OpenACCUpdateConstruct

OpenACC update Construct.

CXCursor_OpenACCAtomicConstruct

OpenACC atomic Construct.

CXCursor_OpenACCCacheConstruct

OpenACC cache Construct.

CXCursor_LastStmt

CXCursor_TranslationUnit

Cursor that represents the translation unit itself.

The translation unit cursor exists primarily to act as the root cursor for traversing the contents of a translation unit.

CXCursor_FirstAttr

CXCursor_UnexposedAttr

An attribute whose specific kind is not exposed via this interface.

CXCursor_IBActionAttr

CXCursor_IBOutletAttr

CXCursor_IBOutletCollectionAttr

CXCursor_CXXFinalAttr

CXCursor_CXXOverrideAttr

CXCursor_AnnotateAttr

CXCursor_AsmLabelAttr

CXCursor_PackedAttr

CXCursor_PureAttr

CXCursor_ConstAttr

CXCursor_NoDuplicateAttr

CXCursor_CUDAConstantAttr

CXCursor_CUDADeviceAttr

CXCursor_CUDAGlobalAttr

CXCursor_CUDAHostAttr

CXCursor_CUDASharedAttr

CXCursor_VisibilityAttr

CXCursor_DLLExport

CXCursor_DLLImport

CXCursor_NSReturnsRetained

CXCursor_NSReturnsNotRetained

CXCursor_NSReturnsAutoreleased

CXCursor_NSConsumesSelf

CXCursor_NSConsumed

CXCursor_ObjCException

CXCursor_ObjCNSObject

CXCursor_ObjCIndependentClass

CXCursor_ObjCPreciseLifetime

CXCursor_ObjCReturnsInnerPointer

CXCursor_ObjCRequiresSuper

CXCursor_ObjCRootClass

CXCursor_ObjCSubclassingRestricted

CXCursor_ObjCExplicitProtocolImpl

CXCursor_ObjCDesignatedInitializer

CXCursor_ObjCRuntimeVisible

CXCursor_ObjCBoxable

CXCursor_FlagEnum

CXCursor_ConvergentAttr

CXCursor_WarnUnusedAttr

CXCursor_WarnUnusedResultAttr

CXCursor_AlignedAttr

CXCursor_LastAttr

CXCursor_PreprocessingDirective

CXCursor_MacroDefinition

CXCursor_MacroExpansion

CXCursor_MacroInstantiation

CXCursor_InclusionDirective

CXCursor_FirstPreprocessing

CXCursor_LastPreprocessing

CXCursor_ModuleImportDecl

A module import declaration.

CXCursor_TypeAliasTemplateDecl

CXCursor_StaticAssert

A static_assert or _Static_assert node.

CXCursor_FriendDecl

a friend declaration.

CXCursor_ConceptDecl

a concept declaration.

CXCursor_FirstExtraDecl

CXCursor_LastExtraDecl

CXCursor_OverloadCandidate

A code completion overload candidate.