Home | History | Annotate | Download | only in clang-c
      1 /*===-- clang-c/Index.h - Indexing Public C Interface -------------*- C -*-===*\
      2 |*                                                                            *|
      3 |*                     The LLVM Compiler Infrastructure                       *|
      4 |*                                                                            *|
      5 |* This file is distributed under the University of Illinois Open Source      *|
      6 |* License. See LICENSE.TXT for details.                                      *|
      7 |*                                                                            *|
      8 |*===----------------------------------------------------------------------===*|
      9 |*                                                                            *|
     10 |* This header provides a public interface to a Clang library for extracting  *|
     11 |* high-level symbol information from source files without exposing the full  *|
     12 |* Clang C++ API.                                                             *|
     13 |*                                                                            *|
     14 \*===----------------------------------------------------------------------===*/
     15 
     16 #ifndef LLVM_CLANG_C_INDEX_H
     17 #define LLVM_CLANG_C_INDEX_H
     18 
     19 #include <time.h>
     20 
     21 #include "clang-c/Platform.h"
     22 #include "clang-c/CXErrorCode.h"
     23 #include "clang-c/CXString.h"
     24 #include "clang-c/BuildSystem.h"
     25 
     26 /**
     27  * \brief The version constants for the libclang API.
     28  * CINDEX_VERSION_MINOR should increase when there are API additions.
     29  * CINDEX_VERSION_MAJOR is intended for "major" source/ABI breaking changes.
     30  *
     31  * The policy about the libclang API was always to keep it source and ABI
     32  * compatible, thus CINDEX_VERSION_MAJOR is expected to remain stable.
     33  */
     34 #define CINDEX_VERSION_MAJOR 0
     35 #define CINDEX_VERSION_MINOR 43
     36 
     37 #define CINDEX_VERSION_ENCODE(major, minor) ( \
     38       ((major) * 10000)                       \
     39     + ((minor) *     1))
     40 
     41 #define CINDEX_VERSION CINDEX_VERSION_ENCODE( \
     42     CINDEX_VERSION_MAJOR,                     \
     43     CINDEX_VERSION_MINOR )
     44 
     45 #define CINDEX_VERSION_STRINGIZE_(major, minor)   \
     46     #major"."#minor
     47 #define CINDEX_VERSION_STRINGIZE(major, minor)    \
     48     CINDEX_VERSION_STRINGIZE_(major, minor)
     49 
     50 #define CINDEX_VERSION_STRING CINDEX_VERSION_STRINGIZE( \
     51     CINDEX_VERSION_MAJOR,                               \
     52     CINDEX_VERSION_MINOR)
     53 
     54 #ifdef __cplusplus
     55 extern "C" {
     56 #endif
     57 
     58 /** \defgroup CINDEX libclang: C Interface to Clang
     59  *
     60  * The C Interface to Clang provides a relatively small API that exposes
     61  * facilities for parsing source code into an abstract syntax tree (AST),
     62  * loading already-parsed ASTs, traversing the AST, associating
     63  * physical source locations with elements within the AST, and other
     64  * facilities that support Clang-based development tools.
     65  *
     66  * This C interface to Clang will never provide all of the information
     67  * representation stored in Clang's C++ AST, nor should it: the intent is to
     68  * maintain an API that is relatively stable from one release to the next,
     69  * providing only the basic functionality needed to support development tools.
     70  *
     71  * To avoid namespace pollution, data types are prefixed with "CX" and
     72  * functions are prefixed with "clang_".
     73  *
     74  * @{
     75  */
     76 
     77 /**
     78  * \brief An "index" that consists of a set of translation units that would
     79  * typically be linked together into an executable or library.
     80  */
     81 typedef void *CXIndex;
     82 
     83 /**
     84  * \brief An opaque type representing target information for a given translation
     85  * unit.
     86  */
     87 typedef struct CXTargetInfoImpl *CXTargetInfo;
     88 
     89 /**
     90  * \brief A single translation unit, which resides in an index.
     91  */
     92 typedef struct CXTranslationUnitImpl *CXTranslationUnit;
     93 
     94 /**
     95  * \brief Opaque pointer representing client data that will be passed through
     96  * to various callbacks and visitors.
     97  */
     98 typedef void *CXClientData;
     99 
    100 /**
    101  * \brief Provides the contents of a file that has not yet been saved to disk.
    102  *
    103  * Each CXUnsavedFile instance provides the name of a file on the
    104  * system along with the current contents of that file that have not
    105  * yet been saved to disk.
    106  */
    107 struct CXUnsavedFile {
    108   /**
    109    * \brief The file whose contents have not yet been saved.
    110    *
    111    * This file must already exist in the file system.
    112    */
    113   const char *Filename;
    114 
    115   /**
    116    * \brief A buffer containing the unsaved contents of this file.
    117    */
    118   const char *Contents;
    119 
    120   /**
    121    * \brief The length of the unsaved contents of this buffer.
    122    */
    123   unsigned long Length;
    124 };
    125 
    126 /**
    127  * \brief Describes the availability of a particular entity, which indicates
    128  * whether the use of this entity will result in a warning or error due to
    129  * it being deprecated or unavailable.
    130  */
    131 enum CXAvailabilityKind {
    132   /**
    133    * \brief The entity is available.
    134    */
    135   CXAvailability_Available,
    136   /**
    137    * \brief The entity is available, but has been deprecated (and its use is
    138    * not recommended).
    139    */
    140   CXAvailability_Deprecated,
    141   /**
    142    * \brief The entity is not available; any use of it will be an error.
    143    */
    144   CXAvailability_NotAvailable,
    145   /**
    146    * \brief The entity is available, but not accessible; any use of it will be
    147    * an error.
    148    */
    149   CXAvailability_NotAccessible
    150 };
    151 
    152 /**
    153  * \brief Describes a version number of the form major.minor.subminor.
    154  */
    155 typedef struct CXVersion {
    156   /**
    157    * \brief The major version number, e.g., the '10' in '10.7.3'. A negative
    158    * value indicates that there is no version number at all.
    159    */
    160   int Major;
    161   /**
    162    * \brief The minor version number, e.g., the '7' in '10.7.3'. This value
    163    * will be negative if no minor version number was provided, e.g., for
    164    * version '10'.
    165    */
    166   int Minor;
    167   /**
    168    * \brief The subminor version number, e.g., the '3' in '10.7.3'. This value
    169    * will be negative if no minor or subminor version number was provided,
    170    * e.g., in version '10' or '10.7'.
    171    */
    172   int Subminor;
    173 } CXVersion;
    174 
    175 /**
    176  * \brief Describes the exception specification of a cursor.
    177  *
    178  * A negative value indicates that the cursor is not a function declaration.
    179  */
    180 enum CXCursor_ExceptionSpecificationKind {
    181 
    182   /**
    183    * \brief The cursor has no exception specification.
    184    */
    185   CXCursor_ExceptionSpecificationKind_None,
    186 
    187   /**
    188    * \brief The cursor has exception specification throw()
    189    */
    190   CXCursor_ExceptionSpecificationKind_DynamicNone,
    191 
    192   /**
    193    * \brief The cursor has exception specification throw(T1, T2)
    194    */
    195   CXCursor_ExceptionSpecificationKind_Dynamic,
    196 
    197   /**
    198    * \brief The cursor has exception specification throw(...).
    199    */
    200   CXCursor_ExceptionSpecificationKind_MSAny,
    201 
    202   /**
    203    * \brief The cursor has exception specification basic noexcept.
    204    */
    205   CXCursor_ExceptionSpecificationKind_BasicNoexcept,
    206 
    207   /**
    208    * \brief The cursor has exception specification computed noexcept.
    209    */
    210   CXCursor_ExceptionSpecificationKind_ComputedNoexcept,
    211 
    212   /**
    213    * \brief The exception specification has not yet been evaluated.
    214    */
    215   CXCursor_ExceptionSpecificationKind_Unevaluated,
    216 
    217   /**
    218    * \brief The exception specification has not yet been instantiated.
    219    */
    220   CXCursor_ExceptionSpecificationKind_Uninstantiated,
    221 
    222   /**
    223    * \brief The exception specification has not been parsed yet.
    224    */
    225   CXCursor_ExceptionSpecificationKind_Unparsed
    226 };
    227 
    228 /**
    229  * \brief Provides a shared context for creating translation units.
    230  *
    231  * It provides two options:
    232  *
    233  * - excludeDeclarationsFromPCH: When non-zero, allows enumeration of "local"
    234  * declarations (when loading any new translation units). A "local" declaration
    235  * is one that belongs in the translation unit itself and not in a precompiled
    236  * header that was used by the translation unit. If zero, all declarations
    237  * will be enumerated.
    238  *
    239  * Here is an example:
    240  *
    241  * \code
    242  *   // excludeDeclsFromPCH = 1, displayDiagnostics=1
    243  *   Idx = clang_createIndex(1, 1);
    244  *
    245  *   // IndexTest.pch was produced with the following command:
    246  *   // "clang -x c IndexTest.h -emit-ast -o IndexTest.pch"
    247  *   TU = clang_createTranslationUnit(Idx, "IndexTest.pch");
    248  *
    249  *   // This will load all the symbols from 'IndexTest.pch'
    250  *   clang_visitChildren(clang_getTranslationUnitCursor(TU),
    251  *                       TranslationUnitVisitor, 0);
    252  *   clang_disposeTranslationUnit(TU);
    253  *
    254  *   // This will load all the symbols from 'IndexTest.c', excluding symbols
    255  *   // from 'IndexTest.pch'.
    256  *   char *args[] = { "-Xclang", "-include-pch=IndexTest.pch" };
    257  *   TU = clang_createTranslationUnitFromSourceFile(Idx, "IndexTest.c", 2, args,
    258  *                                                  0, 0);
    259  *   clang_visitChildren(clang_getTranslationUnitCursor(TU),
    260  *                       TranslationUnitVisitor, 0);
    261  *   clang_disposeTranslationUnit(TU);
    262  * \endcode
    263  *
    264  * This process of creating the 'pch', loading it separately, and using it (via
    265  * -include-pch) allows 'excludeDeclsFromPCH' to remove redundant callbacks
    266  * (which gives the indexer the same performance benefit as the compiler).
    267  */
    268 CINDEX_LINKAGE CXIndex clang_createIndex(int excludeDeclarationsFromPCH,
    269                                          int displayDiagnostics);
    270 
    271 /**
    272  * \brief Destroy the given index.
    273  *
    274  * The index must not be destroyed until all of the translation units created
    275  * within that index have been destroyed.
    276  */
    277 CINDEX_LINKAGE void clang_disposeIndex(CXIndex index);
    278 
    279 typedef enum {
    280   /**
    281    * \brief Used to indicate that no special CXIndex options are needed.
    282    */
    283   CXGlobalOpt_None = 0x0,
    284 
    285   /**
    286    * \brief Used to indicate that threads that libclang creates for indexing
    287    * purposes should use background priority.
    288    *
    289    * Affects #clang_indexSourceFile, #clang_indexTranslationUnit,
    290    * #clang_parseTranslationUnit, #clang_saveTranslationUnit.
    291    */
    292   CXGlobalOpt_ThreadBackgroundPriorityForIndexing = 0x1,
    293 
    294   /**
    295    * \brief Used to indicate that threads that libclang creates for editing
    296    * purposes should use background priority.
    297    *
    298    * Affects #clang_reparseTranslationUnit, #clang_codeCompleteAt,
    299    * #clang_annotateTokens
    300    */
    301   CXGlobalOpt_ThreadBackgroundPriorityForEditing = 0x2,
    302 
    303   /**
    304    * \brief Used to indicate that all threads that libclang creates should use
    305    * background priority.
    306    */
    307   CXGlobalOpt_ThreadBackgroundPriorityForAll =
    308       CXGlobalOpt_ThreadBackgroundPriorityForIndexing |
    309       CXGlobalOpt_ThreadBackgroundPriorityForEditing
    310 
    311 } CXGlobalOptFlags;
    312 
    313 /**
    314  * \brief Sets general options associated with a CXIndex.
    315  *
    316  * For example:
    317  * \code
    318  * CXIndex idx = ...;
    319  * clang_CXIndex_setGlobalOptions(idx,
    320  *     clang_CXIndex_getGlobalOptions(idx) |
    321  *     CXGlobalOpt_ThreadBackgroundPriorityForIndexing);
    322  * \endcode
    323  *
    324  * \param options A bitmask of options, a bitwise OR of CXGlobalOpt_XXX flags.
    325  */
    326 CINDEX_LINKAGE void clang_CXIndex_setGlobalOptions(CXIndex, unsigned options);
    327 
    328 /**
    329  * \brief Gets the general options associated with a CXIndex.
    330  *
    331  * \returns A bitmask of options, a bitwise OR of CXGlobalOpt_XXX flags that
    332  * are associated with the given CXIndex object.
    333  */
    334 CINDEX_LINKAGE unsigned clang_CXIndex_getGlobalOptions(CXIndex);
    335 
    336 /**
    337  * \defgroup CINDEX_FILES File manipulation routines
    338  *
    339  * @{
    340  */
    341 
    342 /**
    343  * \brief A particular source file that is part of a translation unit.
    344  */
    345 typedef void *CXFile;
    346 
    347 /**
    348  * \brief Retrieve the complete file and path name of the given file.
    349  */
    350 CINDEX_LINKAGE CXString clang_getFileName(CXFile SFile);
    351 
    352 /**
    353  * \brief Retrieve the last modification time of the given file.
    354  */
    355 CINDEX_LINKAGE time_t clang_getFileTime(CXFile SFile);
    356 
    357 /**
    358  * \brief Uniquely identifies a CXFile, that refers to the same underlying file,
    359  * across an indexing session.
    360  */
    361 typedef struct {
    362   unsigned long long data[3];
    363 } CXFileUniqueID;
    364 
    365 /**
    366  * \brief Retrieve the unique ID for the given \c file.
    367  *
    368  * \param file the file to get the ID for.
    369  * \param outID stores the returned CXFileUniqueID.
    370  * \returns If there was a failure getting the unique ID, returns non-zero,
    371  * otherwise returns 0.
    372 */
    373 CINDEX_LINKAGE int clang_getFileUniqueID(CXFile file, CXFileUniqueID *outID);
    374 
    375 /**
    376  * \brief Determine whether the given header is guarded against
    377  * multiple inclusions, either with the conventional
    378  * \#ifndef/\#define/\#endif macro guards or with \#pragma once.
    379  */
    380 CINDEX_LINKAGE unsigned
    381 clang_isFileMultipleIncludeGuarded(CXTranslationUnit tu, CXFile file);
    382 
    383 /**
    384  * \brief Retrieve a file handle within the given translation unit.
    385  *
    386  * \param tu the translation unit
    387  *
    388  * \param file_name the name of the file.
    389  *
    390  * \returns the file handle for the named file in the translation unit \p tu,
    391  * or a NULL file handle if the file was not a part of this translation unit.
    392  */
    393 CINDEX_LINKAGE CXFile clang_getFile(CXTranslationUnit tu,
    394                                     const char *file_name);
    395 
    396 /**
    397  * \brief Returns non-zero if the \c file1 and \c file2 point to the same file,
    398  * or they are both NULL.
    399  */
    400 CINDEX_LINKAGE int clang_File_isEqual(CXFile file1, CXFile file2);
    401 
    402 /**
    403  * @}
    404  */
    405 
    406 /**
    407  * \defgroup CINDEX_LOCATIONS Physical source locations
    408  *
    409  * Clang represents physical source locations in its abstract syntax tree in
    410  * great detail, with file, line, and column information for the majority of
    411  * the tokens parsed in the source code. These data types and functions are
    412  * used to represent source location information, either for a particular
    413  * point in the program or for a range of points in the program, and extract
    414  * specific location information from those data types.
    415  *
    416  * @{
    417  */
    418 
    419 /**
    420  * \brief Identifies a specific source location within a translation
    421  * unit.
    422  *
    423  * Use clang_getExpansionLocation() or clang_getSpellingLocation()
    424  * to map a source location to a particular file, line, and column.
    425  */
    426 typedef struct {
    427   const void *ptr_data[2];
    428   unsigned int_data;
    429 } CXSourceLocation;
    430 
    431 /**
    432  * \brief Identifies a half-open character range in the source code.
    433  *
    434  * Use clang_getRangeStart() and clang_getRangeEnd() to retrieve the
    435  * starting and end locations from a source range, respectively.
    436  */
    437 typedef struct {
    438   const void *ptr_data[2];
    439   unsigned begin_int_data;
    440   unsigned end_int_data;
    441 } CXSourceRange;
    442 
    443 /**
    444  * \brief Retrieve a NULL (invalid) source location.
    445  */
    446 CINDEX_LINKAGE CXSourceLocation clang_getNullLocation(void);
    447 
    448 /**
    449  * \brief Determine whether two source locations, which must refer into
    450  * the same translation unit, refer to exactly the same point in the source
    451  * code.
    452  *
    453  * \returns non-zero if the source locations refer to the same location, zero
    454  * if they refer to different locations.
    455  */
    456 CINDEX_LINKAGE unsigned clang_equalLocations(CXSourceLocation loc1,
    457                                              CXSourceLocation loc2);
    458 
    459 /**
    460  * \brief Retrieves the source location associated with a given file/line/column
    461  * in a particular translation unit.
    462  */
    463 CINDEX_LINKAGE CXSourceLocation clang_getLocation(CXTranslationUnit tu,
    464                                                   CXFile file,
    465                                                   unsigned line,
    466                                                   unsigned column);
    467 /**
    468  * \brief Retrieves the source location associated with a given character offset
    469  * in a particular translation unit.
    470  */
    471 CINDEX_LINKAGE CXSourceLocation clang_getLocationForOffset(CXTranslationUnit tu,
    472                                                            CXFile file,
    473                                                            unsigned offset);
    474 
    475 /**
    476  * \brief Returns non-zero if the given source location is in a system header.
    477  */
    478 CINDEX_LINKAGE int clang_Location_isInSystemHeader(CXSourceLocation location);
    479 
    480 /**
    481  * \brief Returns non-zero if the given source location is in the main file of
    482  * the corresponding translation unit.
    483  */
    484 CINDEX_LINKAGE int clang_Location_isFromMainFile(CXSourceLocation location);
    485 
    486 /**
    487  * \brief Retrieve a NULL (invalid) source range.
    488  */
    489 CINDEX_LINKAGE CXSourceRange clang_getNullRange(void);
    490 
    491 /**
    492  * \brief Retrieve a source range given the beginning and ending source
    493  * locations.
    494  */
    495 CINDEX_LINKAGE CXSourceRange clang_getRange(CXSourceLocation begin,
    496                                             CXSourceLocation end);
    497 
    498 /**
    499  * \brief Determine whether two ranges are equivalent.
    500  *
    501  * \returns non-zero if the ranges are the same, zero if they differ.
    502  */
    503 CINDEX_LINKAGE unsigned clang_equalRanges(CXSourceRange range1,
    504                                           CXSourceRange range2);
    505 
    506 /**
    507  * \brief Returns non-zero if \p range is null.
    508  */
    509 CINDEX_LINKAGE int clang_Range_isNull(CXSourceRange range);
    510 
    511 /**
    512  * \brief Retrieve the file, line, column, and offset represented by
    513  * the given source location.
    514  *
    515  * If the location refers into a macro expansion, retrieves the
    516  * location of the macro expansion.
    517  *
    518  * \param location the location within a source file that will be decomposed
    519  * into its parts.
    520  *
    521  * \param file [out] if non-NULL, will be set to the file to which the given
    522  * source location points.
    523  *
    524  * \param line [out] if non-NULL, will be set to the line to which the given
    525  * source location points.
    526  *
    527  * \param column [out] if non-NULL, will be set to the column to which the given
    528  * source location points.
    529  *
    530  * \param offset [out] if non-NULL, will be set to the offset into the
    531  * buffer to which the given source location points.
    532  */
    533 CINDEX_LINKAGE void clang_getExpansionLocation(CXSourceLocation location,
    534                                                CXFile *file,
    535                                                unsigned *line,
    536                                                unsigned *column,
    537                                                unsigned *offset);
    538 
    539 /**
    540  * \brief Retrieve the file, line and column represented by the given source
    541  * location, as specified in a # line directive.
    542  *
    543  * Example: given the following source code in a file somefile.c
    544  *
    545  * \code
    546  * #123 "dummy.c" 1
    547  *
    548  * static int func(void)
    549  * {
    550  *     return 0;
    551  * }
    552  * \endcode
    553  *
    554  * the location information returned by this function would be
    555  *
    556  * File: dummy.c Line: 124 Column: 12
    557  *
    558  * whereas clang_getExpansionLocation would have returned
    559  *
    560  * File: somefile.c Line: 3 Column: 12
    561  *
    562  * \param location the location within a source file that will be decomposed
    563  * into its parts.
    564  *
    565  * \param filename [out] if non-NULL, will be set to the filename of the
    566  * source location. Note that filenames returned will be for "virtual" files,
    567  * which don't necessarily exist on the machine running clang - e.g. when
    568  * parsing preprocessed output obtained from a different environment. If
    569  * a non-NULL value is passed in, remember to dispose of the returned value
    570  * using \c clang_disposeString() once you've finished with it. For an invalid
    571  * source location, an empty string is returned.
    572  *
    573  * \param line [out] if non-NULL, will be set to the line number of the
    574  * source location. For an invalid source location, zero is returned.
    575  *
    576  * \param column [out] if non-NULL, will be set to the column number of the
    577  * source location. For an invalid source location, zero is returned.
    578  */
    579 CINDEX_LINKAGE void clang_getPresumedLocation(CXSourceLocation location,
    580                                               CXString *filename,
    581                                               unsigned *line,
    582                                               unsigned *column);
    583 
    584 /**
    585  * \brief Legacy API to retrieve the file, line, column, and offset represented
    586  * by the given source location.
    587  *
    588  * This interface has been replaced by the newer interface
    589  * #clang_getExpansionLocation(). See that interface's documentation for
    590  * details.
    591  */
    592 CINDEX_LINKAGE void clang_getInstantiationLocation(CXSourceLocation location,
    593                                                    CXFile *file,
    594                                                    unsigned *line,
    595                                                    unsigned *column,
    596                                                    unsigned *offset);
    597 
    598 /**
    599  * \brief Retrieve the file, line, column, and offset represented by
    600  * the given source location.
    601  *
    602  * If the location refers into a macro instantiation, return where the
    603  * location was originally spelled in the source file.
    604  *
    605  * \param location the location within a source file that will be decomposed
    606  * into its parts.
    607  *
    608  * \param file [out] if non-NULL, will be set to the file to which the given
    609  * source location points.
    610  *
    611  * \param line [out] if non-NULL, will be set to the line to which the given
    612  * source location points.
    613  *
    614  * \param column [out] if non-NULL, will be set to the column to which the given
    615  * source location points.
    616  *
    617  * \param offset [out] if non-NULL, will be set to the offset into the
    618  * buffer to which the given source location points.
    619  */
    620 CINDEX_LINKAGE void clang_getSpellingLocation(CXSourceLocation location,
    621                                               CXFile *file,
    622                                               unsigned *line,
    623                                               unsigned *column,
    624                                               unsigned *offset);
    625 
    626 /**
    627  * \brief Retrieve the file, line, column, and offset represented by
    628  * the given source location.
    629  *
    630  * If the location refers into a macro expansion, return where the macro was
    631  * expanded or where the macro argument was written, if the location points at
    632  * a macro argument.
    633  *
    634  * \param location the location within a source file that will be decomposed
    635  * into its parts.
    636  *
    637  * \param file [out] if non-NULL, will be set to the file to which the given
    638  * source location points.
    639  *
    640  * \param line [out] if non-NULL, will be set to the line to which the given
    641  * source location points.
    642  *
    643  * \param column [out] if non-NULL, will be set to the column to which the given
    644  * source location points.
    645  *
    646  * \param offset [out] if non-NULL, will be set to the offset into the
    647  * buffer to which the given source location points.
    648  */
    649 CINDEX_LINKAGE void clang_getFileLocation(CXSourceLocation location,
    650                                           CXFile *file,
    651                                           unsigned *line,
    652                                           unsigned *column,
    653                                           unsigned *offset);
    654 
    655 /**
    656  * \brief Retrieve a source location representing the first character within a
    657  * source range.
    658  */
    659 CINDEX_LINKAGE CXSourceLocation clang_getRangeStart(CXSourceRange range);
    660 
    661 /**
    662  * \brief Retrieve a source location representing the last character within a
    663  * source range.
    664  */
    665 CINDEX_LINKAGE CXSourceLocation clang_getRangeEnd(CXSourceRange range);
    666 
    667 /**
    668  * \brief Identifies an array of ranges.
    669  */
    670 typedef struct {
    671   /** \brief The number of ranges in the \c ranges array. */
    672   unsigned count;
    673   /**
    674    * \brief An array of \c CXSourceRanges.
    675    */
    676   CXSourceRange *ranges;
    677 } CXSourceRangeList;
    678 
    679 /**
    680  * \brief Retrieve all ranges that were skipped by the preprocessor.
    681  *
    682  * The preprocessor will skip lines when they are surrounded by an
    683  * if/ifdef/ifndef directive whose condition does not evaluate to true.
    684  */
    685 CINDEX_LINKAGE CXSourceRangeList *clang_getSkippedRanges(CXTranslationUnit tu,
    686                                                          CXFile file);
    687 
    688 /**
    689  * \brief Retrieve all ranges from all files that were skipped by the
    690  * preprocessor.
    691  *
    692  * The preprocessor will skip lines when they are surrounded by an
    693  * if/ifdef/ifndef directive whose condition does not evaluate to true.
    694  */
    695 CINDEX_LINKAGE CXSourceRangeList *clang_getAllSkippedRanges(CXTranslationUnit tu);
    696 
    697 /**
    698  * \brief Destroy the given \c CXSourceRangeList.
    699  */
    700 CINDEX_LINKAGE void clang_disposeSourceRangeList(CXSourceRangeList *ranges);
    701 
    702 /**
    703  * @}
    704  */
    705 
    706 /**
    707  * \defgroup CINDEX_DIAG Diagnostic reporting
    708  *
    709  * @{
    710  */
    711 
    712 /**
    713  * \brief Describes the severity of a particular diagnostic.
    714  */
    715 enum CXDiagnosticSeverity {
    716   /**
    717    * \brief A diagnostic that has been suppressed, e.g., by a command-line
    718    * option.
    719    */
    720   CXDiagnostic_Ignored = 0,
    721 
    722   /**
    723    * \brief This diagnostic is a note that should be attached to the
    724    * previous (non-note) diagnostic.
    725    */
    726   CXDiagnostic_Note    = 1,
    727 
    728   /**
    729    * \brief This diagnostic indicates suspicious code that may not be
    730    * wrong.
    731    */
    732   CXDiagnostic_Warning = 2,
    733 
    734   /**
    735    * \brief This diagnostic indicates that the code is ill-formed.
    736    */
    737   CXDiagnostic_Error   = 3,
    738 
    739   /**
    740    * \brief This diagnostic indicates that the code is ill-formed such
    741    * that future parser recovery is unlikely to produce useful
    742    * results.
    743    */
    744   CXDiagnostic_Fatal   = 4
    745 };
    746 
    747 /**
    748  * \brief A single diagnostic, containing the diagnostic's severity,
    749  * location, text, source ranges, and fix-it hints.
    750  */
    751 typedef void *CXDiagnostic;
    752 
    753 /**
    754  * \brief A group of CXDiagnostics.
    755  */
    756 typedef void *CXDiagnosticSet;
    757 
    758 /**
    759  * \brief Determine the number of diagnostics in a CXDiagnosticSet.
    760  */
    761 CINDEX_LINKAGE unsigned clang_getNumDiagnosticsInSet(CXDiagnosticSet Diags);
    762 
    763 /**
    764  * \brief Retrieve a diagnostic associated with the given CXDiagnosticSet.
    765  *
    766  * \param Diags the CXDiagnosticSet to query.
    767  * \param Index the zero-based diagnostic number to retrieve.
    768  *
    769  * \returns the requested diagnostic. This diagnostic must be freed
    770  * via a call to \c clang_disposeDiagnostic().
    771  */
    772 CINDEX_LINKAGE CXDiagnostic clang_getDiagnosticInSet(CXDiagnosticSet Diags,
    773                                                      unsigned Index);
    774 
    775 /**
    776  * \brief Describes the kind of error that occurred (if any) in a call to
    777  * \c clang_loadDiagnostics.
    778  */
    779 enum CXLoadDiag_Error {
    780   /**
    781    * \brief Indicates that no error occurred.
    782    */
    783   CXLoadDiag_None = 0,
    784 
    785   /**
    786    * \brief Indicates that an unknown error occurred while attempting to
    787    * deserialize diagnostics.
    788    */
    789   CXLoadDiag_Unknown = 1,
    790 
    791   /**
    792    * \brief Indicates that the file containing the serialized diagnostics
    793    * could not be opened.
    794    */
    795   CXLoadDiag_CannotLoad = 2,
    796 
    797   /**
    798    * \brief Indicates that the serialized diagnostics file is invalid or
    799    * corrupt.
    800    */
    801   CXLoadDiag_InvalidFile = 3
    802 };
    803 
    804 /**
    805  * \brief Deserialize a set of diagnostics from a Clang diagnostics bitcode
    806  * file.
    807  *
    808  * \param file The name of the file to deserialize.
    809  * \param error A pointer to a enum value recording if there was a problem
    810  *        deserializing the diagnostics.
    811  * \param errorString A pointer to a CXString for recording the error string
    812  *        if the file was not successfully loaded.
    813  *
    814  * \returns A loaded CXDiagnosticSet if successful, and NULL otherwise.  These
    815  * diagnostics should be released using clang_disposeDiagnosticSet().
    816  */
    817 CINDEX_LINKAGE CXDiagnosticSet clang_loadDiagnostics(const char *file,
    818                                                   enum CXLoadDiag_Error *error,
    819                                                   CXString *errorString);
    820 
    821 /**
    822  * \brief Release a CXDiagnosticSet and all of its contained diagnostics.
    823  */
    824 CINDEX_LINKAGE void clang_disposeDiagnosticSet(CXDiagnosticSet Diags);
    825 
    826 /**
    827  * \brief Retrieve the child diagnostics of a CXDiagnostic.
    828  *
    829  * This CXDiagnosticSet does not need to be released by
    830  * clang_disposeDiagnosticSet.
    831  */
    832 CINDEX_LINKAGE CXDiagnosticSet clang_getChildDiagnostics(CXDiagnostic D);
    833 
    834 /**
    835  * \brief Determine the number of diagnostics produced for the given
    836  * translation unit.
    837  */
    838 CINDEX_LINKAGE unsigned clang_getNumDiagnostics(CXTranslationUnit Unit);
    839 
    840 /**
    841  * \brief Retrieve a diagnostic associated with the given translation unit.
    842  *
    843  * \param Unit the translation unit to query.
    844  * \param Index the zero-based diagnostic number to retrieve.
    845  *
    846  * \returns the requested diagnostic. This diagnostic must be freed
    847  * via a call to \c clang_disposeDiagnostic().
    848  */
    849 CINDEX_LINKAGE CXDiagnostic clang_getDiagnostic(CXTranslationUnit Unit,
    850                                                 unsigned Index);
    851 
    852 /**
    853  * \brief Retrieve the complete set of diagnostics associated with a
    854  *        translation unit.
    855  *
    856  * \param Unit the translation unit to query.
    857  */
    858 CINDEX_LINKAGE CXDiagnosticSet
    859   clang_getDiagnosticSetFromTU(CXTranslationUnit Unit);
    860 
    861 /**
    862  * \brief Destroy a diagnostic.
    863  */
    864 CINDEX_LINKAGE void clang_disposeDiagnostic(CXDiagnostic Diagnostic);
    865 
    866 /**
    867  * \brief Options to control the display of diagnostics.
    868  *
    869  * The values in this enum are meant to be combined to customize the
    870  * behavior of \c clang_formatDiagnostic().
    871  */
    872 enum CXDiagnosticDisplayOptions {
    873   /**
    874    * \brief Display the source-location information where the
    875    * diagnostic was located.
    876    *
    877    * When set, diagnostics will be prefixed by the file, line, and
    878    * (optionally) column to which the diagnostic refers. For example,
    879    *
    880    * \code
    881    * test.c:28: warning: extra tokens at end of #endif directive
    882    * \endcode
    883    *
    884    * This option corresponds to the clang flag \c -fshow-source-location.
    885    */
    886   CXDiagnostic_DisplaySourceLocation = 0x01,
    887 
    888   /**
    889    * \brief If displaying the source-location information of the
    890    * diagnostic, also include the column number.
    891    *
    892    * This option corresponds to the clang flag \c -fshow-column.
    893    */
    894   CXDiagnostic_DisplayColumn = 0x02,
    895 
    896   /**
    897    * \brief If displaying the source-location information of the
    898    * diagnostic, also include information about source ranges in a
    899    * machine-parsable format.
    900    *
    901    * This option corresponds to the clang flag
    902    * \c -fdiagnostics-print-source-range-info.
    903    */
    904   CXDiagnostic_DisplaySourceRanges = 0x04,
    905 
    906   /**
    907    * \brief Display the option name associated with this diagnostic, if any.
    908    *
    909    * The option name displayed (e.g., -Wconversion) will be placed in brackets
    910    * after the diagnostic text. This option corresponds to the clang flag
    911    * \c -fdiagnostics-show-option.
    912    */
    913   CXDiagnostic_DisplayOption = 0x08,
    914 
    915   /**
    916    * \brief Display the category number associated with this diagnostic, if any.
    917    *
    918    * The category number is displayed within brackets after the diagnostic text.
    919    * This option corresponds to the clang flag
    920    * \c -fdiagnostics-show-category=id.
    921    */
    922   CXDiagnostic_DisplayCategoryId = 0x10,
    923 
    924   /**
    925    * \brief Display the category name associated with this diagnostic, if any.
    926    *
    927    * The category name is displayed within brackets after the diagnostic text.
    928    * This option corresponds to the clang flag
    929    * \c -fdiagnostics-show-category=name.
    930    */
    931   CXDiagnostic_DisplayCategoryName = 0x20
    932 };
    933 
    934 /**
    935  * \brief Format the given diagnostic in a manner that is suitable for display.
    936  *
    937  * This routine will format the given diagnostic to a string, rendering
    938  * the diagnostic according to the various options given. The
    939  * \c clang_defaultDiagnosticDisplayOptions() function returns the set of
    940  * options that most closely mimics the behavior of the clang compiler.
    941  *
    942  * \param Diagnostic The diagnostic to print.
    943  *
    944  * \param Options A set of options that control the diagnostic display,
    945  * created by combining \c CXDiagnosticDisplayOptions values.
    946  *
    947  * \returns A new string containing for formatted diagnostic.
    948  */
    949 CINDEX_LINKAGE CXString clang_formatDiagnostic(CXDiagnostic Diagnostic,
    950                                                unsigned Options);
    951 
    952 /**
    953  * \brief Retrieve the set of display options most similar to the
    954  * default behavior of the clang compiler.
    955  *
    956  * \returns A set of display options suitable for use with \c
    957  * clang_formatDiagnostic().
    958  */
    959 CINDEX_LINKAGE unsigned clang_defaultDiagnosticDisplayOptions(void);
    960 
    961 /**
    962  * \brief Determine the severity of the given diagnostic.
    963  */
    964 CINDEX_LINKAGE enum CXDiagnosticSeverity
    965 clang_getDiagnosticSeverity(CXDiagnostic);
    966 
    967 /**
    968  * \brief Retrieve the source location of the given diagnostic.
    969  *
    970  * This location is where Clang would print the caret ('^') when
    971  * displaying the diagnostic on the command line.
    972  */
    973 CINDEX_LINKAGE CXSourceLocation clang_getDiagnosticLocation(CXDiagnostic);
    974 
    975 /**
    976  * \brief Retrieve the text of the given diagnostic.
    977  */
    978 CINDEX_LINKAGE CXString clang_getDiagnosticSpelling(CXDiagnostic);
    979 
    980 /**
    981  * \brief Retrieve the name of the command-line option that enabled this
    982  * diagnostic.
    983  *
    984  * \param Diag The diagnostic to be queried.
    985  *
    986  * \param Disable If non-NULL, will be set to the option that disables this
    987  * diagnostic (if any).
    988  *
    989  * \returns A string that contains the command-line option used to enable this
    990  * warning, such as "-Wconversion" or "-pedantic".
    991  */
    992 CINDEX_LINKAGE CXString clang_getDiagnosticOption(CXDiagnostic Diag,
    993                                                   CXString *Disable);
    994 
    995 /**
    996  * \brief Retrieve the category number for this diagnostic.
    997  *
    998  * Diagnostics can be categorized into groups along with other, related
    999  * diagnostics (e.g., diagnostics under the same warning flag). This routine
   1000  * retrieves the category number for the given diagnostic.
   1001  *
   1002  * \returns The number of the category that contains this diagnostic, or zero
   1003  * if this diagnostic is uncategorized.
   1004  */
   1005 CINDEX_LINKAGE unsigned clang_getDiagnosticCategory(CXDiagnostic);
   1006 
   1007 /**
   1008  * \brief Retrieve the name of a particular diagnostic category.  This
   1009  *  is now deprecated.  Use clang_getDiagnosticCategoryText()
   1010  *  instead.
   1011  *
   1012  * \param Category A diagnostic category number, as returned by
   1013  * \c clang_getDiagnosticCategory().
   1014  *
   1015  * \returns The name of the given diagnostic category.
   1016  */
   1017 CINDEX_DEPRECATED CINDEX_LINKAGE
   1018 CXString clang_getDiagnosticCategoryName(unsigned Category);
   1019 
   1020 /**
   1021  * \brief Retrieve the diagnostic category text for a given diagnostic.
   1022  *
   1023  * \returns The text of the given diagnostic category.
   1024  */
   1025 CINDEX_LINKAGE CXString clang_getDiagnosticCategoryText(CXDiagnostic);
   1026 
   1027 /**
   1028  * \brief Determine the number of source ranges associated with the given
   1029  * diagnostic.
   1030  */
   1031 CINDEX_LINKAGE unsigned clang_getDiagnosticNumRanges(CXDiagnostic);
   1032 
   1033 /**
   1034  * \brief Retrieve a source range associated with the diagnostic.
   1035  *
   1036  * A diagnostic's source ranges highlight important elements in the source
   1037  * code. On the command line, Clang displays source ranges by
   1038  * underlining them with '~' characters.
   1039  *
   1040  * \param Diagnostic the diagnostic whose range is being extracted.
   1041  *
   1042  * \param Range the zero-based index specifying which range to
   1043  *
   1044  * \returns the requested source range.
   1045  */
   1046 CINDEX_LINKAGE CXSourceRange clang_getDiagnosticRange(CXDiagnostic Diagnostic,
   1047                                                       unsigned Range);
   1048 
   1049 /**
   1050  * \brief Determine the number of fix-it hints associated with the
   1051  * given diagnostic.
   1052  */
   1053 CINDEX_LINKAGE unsigned clang_getDiagnosticNumFixIts(CXDiagnostic Diagnostic);
   1054 
   1055 /**
   1056  * \brief Retrieve the replacement information for a given fix-it.
   1057  *
   1058  * Fix-its are described in terms of a source range whose contents
   1059  * should be replaced by a string. This approach generalizes over
   1060  * three kinds of operations: removal of source code (the range covers
   1061  * the code to be removed and the replacement string is empty),
   1062  * replacement of source code (the range covers the code to be
   1063  * replaced and the replacement string provides the new code), and
   1064  * insertion (both the start and end of the range point at the
   1065  * insertion location, and the replacement string provides the text to
   1066  * insert).
   1067  *
   1068  * \param Diagnostic The diagnostic whose fix-its are being queried.
   1069  *
   1070  * \param FixIt The zero-based index of the fix-it.
   1071  *
   1072  * \param ReplacementRange The source range whose contents will be
   1073  * replaced with the returned replacement string. Note that source
   1074  * ranges are half-open ranges [a, b), so the source code should be
   1075  * replaced from a and up to (but not including) b.
   1076  *
   1077  * \returns A string containing text that should be replace the source
   1078  * code indicated by the \c ReplacementRange.
   1079  */
   1080 CINDEX_LINKAGE CXString clang_getDiagnosticFixIt(CXDiagnostic Diagnostic,
   1081                                                  unsigned FixIt,
   1082                                                CXSourceRange *ReplacementRange);
   1083 
   1084 /**
   1085  * @}
   1086  */
   1087 
   1088 /**
   1089  * \defgroup CINDEX_TRANSLATION_UNIT Translation unit manipulation
   1090  *
   1091  * The routines in this group provide the ability to create and destroy
   1092  * translation units from files, either by parsing the contents of the files or
   1093  * by reading in a serialized representation of a translation unit.
   1094  *
   1095  * @{
   1096  */
   1097 
   1098 /**
   1099  * \brief Get the original translation unit source file name.
   1100  */
   1101 CINDEX_LINKAGE CXString
   1102 clang_getTranslationUnitSpelling(CXTranslationUnit CTUnit);
   1103 
   1104 /**
   1105  * \brief Return the CXTranslationUnit for a given source file and the provided
   1106  * command line arguments one would pass to the compiler.
   1107  *
   1108  * Note: The 'source_filename' argument is optional.  If the caller provides a
   1109  * NULL pointer, the name of the source file is expected to reside in the
   1110  * specified command line arguments.
   1111  *
   1112  * Note: When encountered in 'clang_command_line_args', the following options
   1113  * are ignored:
   1114  *
   1115  *   '-c'
   1116  *   '-emit-ast'
   1117  *   '-fsyntax-only'
   1118  *   '-o \<output file>'  (both '-o' and '\<output file>' are ignored)
   1119  *
   1120  * \param CIdx The index object with which the translation unit will be
   1121  * associated.
   1122  *
   1123  * \param source_filename The name of the source file to load, or NULL if the
   1124  * source file is included in \p clang_command_line_args.
   1125  *
   1126  * \param num_clang_command_line_args The number of command-line arguments in
   1127  * \p clang_command_line_args.
   1128  *
   1129  * \param clang_command_line_args The command-line arguments that would be
   1130  * passed to the \c clang executable if it were being invoked out-of-process.
   1131  * These command-line options will be parsed and will affect how the translation
   1132  * unit is parsed. Note that the following options are ignored: '-c',
   1133  * '-emit-ast', '-fsyntax-only' (which is the default), and '-o \<output file>'.
   1134  *
   1135  * \param num_unsaved_files the number of unsaved file entries in \p
   1136  * unsaved_files.
   1137  *
   1138  * \param unsaved_files the files that have not yet been saved to disk
   1139  * but may be required for code completion, including the contents of
   1140  * those files.  The contents and name of these files (as specified by
   1141  * CXUnsavedFile) are copied when necessary, so the client only needs to
   1142  * guarantee their validity until the call to this function returns.
   1143  */
   1144 CINDEX_LINKAGE CXTranslationUnit clang_createTranslationUnitFromSourceFile(
   1145                                          CXIndex CIdx,
   1146                                          const char *source_filename,
   1147                                          int num_clang_command_line_args,
   1148                                    const char * const *clang_command_line_args,
   1149                                          unsigned num_unsaved_files,
   1150                                          struct CXUnsavedFile *unsaved_files);
   1151 
   1152 /**
   1153  * \brief Same as \c clang_createTranslationUnit2, but returns
   1154  * the \c CXTranslationUnit instead of an error code.  In case of an error this
   1155  * routine returns a \c NULL \c CXTranslationUnit, without further detailed
   1156  * error codes.
   1157  */
   1158 CINDEX_LINKAGE CXTranslationUnit clang_createTranslationUnit(
   1159     CXIndex CIdx,
   1160     const char *ast_filename);
   1161 
   1162 /**
   1163  * \brief Create a translation unit from an AST file (\c -emit-ast).
   1164  *
   1165  * \param[out] out_TU A non-NULL pointer to store the created
   1166  * \c CXTranslationUnit.
   1167  *
   1168  * \returns Zero on success, otherwise returns an error code.
   1169  */
   1170 CINDEX_LINKAGE enum CXErrorCode clang_createTranslationUnit2(
   1171     CXIndex CIdx,
   1172     const char *ast_filename,
   1173     CXTranslationUnit *out_TU);
   1174 
   1175 /**
   1176  * \brief Flags that control the creation of translation units.
   1177  *
   1178  * The enumerators in this enumeration type are meant to be bitwise
   1179  * ORed together to specify which options should be used when
   1180  * constructing the translation unit.
   1181  */
   1182 enum CXTranslationUnit_Flags {
   1183   /**
   1184    * \brief Used to indicate that no special translation-unit options are
   1185    * needed.
   1186    */
   1187   CXTranslationUnit_None = 0x0,
   1188 
   1189   /**
   1190    * \brief Used to indicate that the parser should construct a "detailed"
   1191    * preprocessing record, including all macro definitions and instantiations.
   1192    *
   1193    * Constructing a detailed preprocessing record requires more memory
   1194    * and time to parse, since the information contained in the record
   1195    * is usually not retained. However, it can be useful for
   1196    * applications that require more detailed information about the
   1197    * behavior of the preprocessor.
   1198    */
   1199   CXTranslationUnit_DetailedPreprocessingRecord = 0x01,
   1200 
   1201   /**
   1202    * \brief Used to indicate that the translation unit is incomplete.
   1203    *
   1204    * When a translation unit is considered "incomplete", semantic
   1205    * analysis that is typically performed at the end of the
   1206    * translation unit will be suppressed. For example, this suppresses
   1207    * the completion of tentative declarations in C and of
   1208    * instantiation of implicitly-instantiation function templates in
   1209    * C++. This option is typically used when parsing a header with the
   1210    * intent of producing a precompiled header.
   1211    */
   1212   CXTranslationUnit_Incomplete = 0x02,
   1213 
   1214   /**
   1215    * \brief Used to indicate that the translation unit should be built with an
   1216    * implicit precompiled header for the preamble.
   1217    *
   1218    * An implicit precompiled header is used as an optimization when a
   1219    * particular translation unit is likely to be reparsed many times
   1220    * when the sources aren't changing that often. In this case, an
   1221    * implicit precompiled header will be built containing all of the
   1222    * initial includes at the top of the main file (what we refer to as
   1223    * the "preamble" of the file). In subsequent parses, if the
   1224    * preamble or the files in it have not changed, \c
   1225    * clang_reparseTranslationUnit() will re-use the implicit
   1226    * precompiled header to improve parsing performance.
   1227    */
   1228   CXTranslationUnit_PrecompiledPreamble = 0x04,
   1229 
   1230   /**
   1231    * \brief Used to indicate that the translation unit should cache some
   1232    * code-completion results with each reparse of the source file.
   1233    *
   1234    * Caching of code-completion results is a performance optimization that
   1235    * introduces some overhead to reparsing but improves the performance of
   1236    * code-completion operations.
   1237    */
   1238   CXTranslationUnit_CacheCompletionResults = 0x08,
   1239 
   1240   /**
   1241    * \brief Used to indicate that the translation unit will be serialized with
   1242    * \c clang_saveTranslationUnit.
   1243    *
   1244    * This option is typically used when parsing a header with the intent of
   1245    * producing a precompiled header.
   1246    */
   1247   CXTranslationUnit_ForSerialization = 0x10,
   1248 
   1249   /**
   1250    * \brief DEPRECATED: Enabled chained precompiled preambles in C++.
   1251    *
   1252    * Note: this is a *temporary* option that is available only while
   1253    * we are testing C++ precompiled preamble support. It is deprecated.
   1254    */
   1255   CXTranslationUnit_CXXChainedPCH = 0x20,
   1256 
   1257   /**
   1258    * \brief Used to indicate that function/method bodies should be skipped while
   1259    * parsing.
   1260    *
   1261    * This option can be used to search for declarations/definitions while
   1262    * ignoring the usages.
   1263    */
   1264   CXTranslationUnit_SkipFunctionBodies = 0x40,
   1265 
   1266   /**
   1267    * \brief Used to indicate that brief documentation comments should be
   1268    * included into the set of code completions returned from this translation
   1269    * unit.
   1270    */
   1271   CXTranslationUnit_IncludeBriefCommentsInCodeCompletion = 0x80,
   1272 
   1273   /**
   1274    * \brief Used to indicate that the precompiled preamble should be created on
   1275    * the first parse. Otherwise it will be created on the first reparse. This
   1276    * trades runtime on the first parse (serializing the preamble takes time) for
   1277    * reduced runtime on the second parse (can now reuse the preamble).
   1278    */
   1279   CXTranslationUnit_CreatePreambleOnFirstParse = 0x100,
   1280 
   1281   /**
   1282    * \brief Do not stop processing when fatal errors are encountered.
   1283    *
   1284    * When fatal errors are encountered while parsing a translation unit,
   1285    * semantic analysis is typically stopped early when compiling code. A common
   1286    * source for fatal errors are unresolvable include files. For the
   1287    * purposes of an IDE, this is undesirable behavior and as much information
   1288    * as possible should be reported. Use this flag to enable this behavior.
   1289    */
   1290   CXTranslationUnit_KeepGoing = 0x200,
   1291 
   1292   /**
   1293    * \brief Sets the preprocessor in a mode for parsing a single file only.
   1294    */
   1295   CXTranslationUnit_SingleFileParse = 0x400
   1296 };
   1297 
   1298 /**
   1299  * \brief Returns the set of flags that is suitable for parsing a translation
   1300  * unit that is being edited.
   1301  *
   1302  * The set of flags returned provide options for \c clang_parseTranslationUnit()
   1303  * to indicate that the translation unit is likely to be reparsed many times,
   1304  * either explicitly (via \c clang_reparseTranslationUnit()) or implicitly
   1305  * (e.g., by code completion (\c clang_codeCompletionAt())). The returned flag
   1306  * set contains an unspecified set of optimizations (e.g., the precompiled
   1307  * preamble) geared toward improving the performance of these routines. The
   1308  * set of optimizations enabled may change from one version to the next.
   1309  */
   1310 CINDEX_LINKAGE unsigned clang_defaultEditingTranslationUnitOptions(void);
   1311 
   1312 /**
   1313  * \brief Same as \c clang_parseTranslationUnit2, but returns
   1314  * the \c CXTranslationUnit instead of an error code.  In case of an error this
   1315  * routine returns a \c NULL \c CXTranslationUnit, without further detailed
   1316  * error codes.
   1317  */
   1318 CINDEX_LINKAGE CXTranslationUnit
   1319 clang_parseTranslationUnit(CXIndex CIdx,
   1320                            const char *source_filename,
   1321                            const char *const *command_line_args,
   1322                            int num_command_line_args,
   1323                            struct CXUnsavedFile *unsaved_files,
   1324                            unsigned num_unsaved_files,
   1325                            unsigned options);
   1326 
   1327 /**
   1328  * \brief Parse the given source file and the translation unit corresponding
   1329  * to that file.
   1330  *
   1331  * This routine is the main entry point for the Clang C API, providing the
   1332  * ability to parse a source file into a translation unit that can then be
   1333  * queried by other functions in the API. This routine accepts a set of
   1334  * command-line arguments so that the compilation can be configured in the same
   1335  * way that the compiler is configured on the command line.
   1336  *
   1337  * \param CIdx The index object with which the translation unit will be
   1338  * associated.
   1339  *
   1340  * \param source_filename The name of the source file to load, or NULL if the
   1341  * source file is included in \c command_line_args.
   1342  *
   1343  * \param command_line_args The command-line arguments that would be
   1344  * passed to the \c clang executable if it were being invoked out-of-process.
   1345  * These command-line options will be parsed and will affect how the translation
   1346  * unit is parsed. Note that the following options are ignored: '-c',
   1347  * '-emit-ast', '-fsyntax-only' (which is the default), and '-o \<output file>'.
   1348  *
   1349  * \param num_command_line_args The number of command-line arguments in
   1350  * \c command_line_args.
   1351  *
   1352  * \param unsaved_files the files that have not yet been saved to disk
   1353  * but may be required for parsing, including the contents of
   1354  * those files.  The contents and name of these files (as specified by
   1355  * CXUnsavedFile) are copied when necessary, so the client only needs to
   1356  * guarantee their validity until the call to this function returns.
   1357  *
   1358  * \param num_unsaved_files the number of unsaved file entries in \p
   1359  * unsaved_files.
   1360  *
   1361  * \param options A bitmask of options that affects how the translation unit
   1362  * is managed but not its compilation. This should be a bitwise OR of the
   1363  * CXTranslationUnit_XXX flags.
   1364  *
   1365  * \param[out] out_TU A non-NULL pointer to store the created
   1366  * \c CXTranslationUnit, describing the parsed code and containing any
   1367  * diagnostics produced by the compiler.
   1368  *
   1369  * \returns Zero on success, otherwise returns an error code.
   1370  */
   1371 CINDEX_LINKAGE enum CXErrorCode
   1372 clang_parseTranslationUnit2(CXIndex CIdx,
   1373                             const char *source_filename,
   1374                             const char *const *command_line_args,
   1375                             int num_command_line_args,
   1376                             struct CXUnsavedFile *unsaved_files,
   1377                             unsigned num_unsaved_files,
   1378                             unsigned options,
   1379                             CXTranslationUnit *out_TU);
   1380 
   1381 /**
   1382  * \brief Same as clang_parseTranslationUnit2 but requires a full command line
   1383  * for \c command_line_args including argv[0]. This is useful if the standard
   1384  * library paths are relative to the binary.
   1385  */
   1386 CINDEX_LINKAGE enum CXErrorCode clang_parseTranslationUnit2FullArgv(
   1387     CXIndex CIdx, const char *source_filename,
   1388     const char *const *command_line_args, int num_command_line_args,
   1389     struct CXUnsavedFile *unsaved_files, unsigned num_unsaved_files,
   1390     unsigned options, CXTranslationUnit *out_TU);
   1391 
   1392 /**
   1393  * \brief Flags that control how translation units are saved.
   1394  *
   1395  * The enumerators in this enumeration type are meant to be bitwise
   1396  * ORed together to specify which options should be used when
   1397  * saving the translation unit.
   1398  */
   1399 enum CXSaveTranslationUnit_Flags {
   1400   /**
   1401    * \brief Used to indicate that no special saving options are needed.
   1402    */
   1403   CXSaveTranslationUnit_None = 0x0
   1404 };
   1405 
   1406 /**
   1407  * \brief Returns the set of flags that is suitable for saving a translation
   1408  * unit.
   1409  *
   1410  * The set of flags returned provide options for
   1411  * \c clang_saveTranslationUnit() by default. The returned flag
   1412  * set contains an unspecified set of options that save translation units with
   1413  * the most commonly-requested data.
   1414  */
   1415 CINDEX_LINKAGE unsigned clang_defaultSaveOptions(CXTranslationUnit TU);
   1416 
   1417 /**
   1418  * \brief Describes the kind of error that occurred (if any) in a call to
   1419  * \c clang_saveTranslationUnit().
   1420  */
   1421 enum CXSaveError {
   1422   /**
   1423    * \brief Indicates that no error occurred while saving a translation unit.
   1424    */
   1425   CXSaveError_None = 0,
   1426 
   1427   /**
   1428    * \brief Indicates that an unknown error occurred while attempting to save
   1429    * the file.
   1430    *
   1431    * This error typically indicates that file I/O failed when attempting to
   1432    * write the file.
   1433    */
   1434   CXSaveError_Unknown = 1,
   1435 
   1436   /**
   1437    * \brief Indicates that errors during translation prevented this attempt
   1438    * to save the translation unit.
   1439    *
   1440    * Errors that prevent the translation unit from being saved can be
   1441    * extracted using \c clang_getNumDiagnostics() and \c clang_getDiagnostic().
   1442    */
   1443   CXSaveError_TranslationErrors = 2,
   1444 
   1445   /**
   1446    * \brief Indicates that the translation unit to be saved was somehow
   1447    * invalid (e.g., NULL).
   1448    */
   1449   CXSaveError_InvalidTU = 3
   1450 };
   1451 
   1452 /**
   1453  * \brief Saves a translation unit into a serialized representation of
   1454  * that translation unit on disk.
   1455  *
   1456  * Any translation unit that was parsed without error can be saved
   1457  * into a file. The translation unit can then be deserialized into a
   1458  * new \c CXTranslationUnit with \c clang_createTranslationUnit() or,
   1459  * if it is an incomplete translation unit that corresponds to a
   1460  * header, used as a precompiled header when parsing other translation
   1461  * units.
   1462  *
   1463  * \param TU The translation unit to save.
   1464  *
   1465  * \param FileName The file to which the translation unit will be saved.
   1466  *
   1467  * \param options A bitmask of options that affects how the translation unit
   1468  * is saved. This should be a bitwise OR of the
   1469  * CXSaveTranslationUnit_XXX flags.
   1470  *
   1471  * \returns A value that will match one of the enumerators of the CXSaveError
   1472  * enumeration. Zero (CXSaveError_None) indicates that the translation unit was
   1473  * saved successfully, while a non-zero value indicates that a problem occurred.
   1474  */
   1475 CINDEX_LINKAGE int clang_saveTranslationUnit(CXTranslationUnit TU,
   1476                                              const char *FileName,
   1477                                              unsigned options);
   1478 
   1479 /**
   1480  * \brief Suspend a translation unit in order to free memory associated with it.
   1481  *
   1482  * A suspended translation unit uses significantly less memory but on the other
   1483  * side does not support any other calls than \c clang_reparseTranslationUnit
   1484  * to resume it or \c clang_disposeTranslationUnit to dispose it completely.
   1485  */
   1486 CINDEX_LINKAGE unsigned clang_suspendTranslationUnit(CXTranslationUnit);
   1487 
   1488 /**
   1489  * \brief Destroy the specified CXTranslationUnit object.
   1490  */
   1491 CINDEX_LINKAGE void clang_disposeTranslationUnit(CXTranslationUnit);
   1492 
   1493 /**
   1494  * \brief Flags that control the reparsing of translation units.
   1495  *
   1496  * The enumerators in this enumeration type are meant to be bitwise
   1497  * ORed together to specify which options should be used when
   1498  * reparsing the translation unit.
   1499  */
   1500 enum CXReparse_Flags {
   1501   /**
   1502    * \brief Used to indicate that no special reparsing options are needed.
   1503    */
   1504   CXReparse_None = 0x0
   1505 };
   1506 
   1507 /**
   1508  * \brief Returns the set of flags that is suitable for reparsing a translation
   1509  * unit.
   1510  *
   1511  * The set of flags returned provide options for
   1512  * \c clang_reparseTranslationUnit() by default. The returned flag
   1513  * set contains an unspecified set of optimizations geared toward common uses
   1514  * of reparsing. The set of optimizations enabled may change from one version
   1515  * to the next.
   1516  */
   1517 CINDEX_LINKAGE unsigned clang_defaultReparseOptions(CXTranslationUnit TU);
   1518 
   1519 /**
   1520  * \brief Reparse the source files that produced this translation unit.
   1521  *
   1522  * This routine can be used to re-parse the source files that originally
   1523  * created the given translation unit, for example because those source files
   1524  * have changed (either on disk or as passed via \p unsaved_files). The
   1525  * source code will be reparsed with the same command-line options as it
   1526  * was originally parsed.
   1527  *
   1528  * Reparsing a translation unit invalidates all cursors and source locations
   1529  * that refer into that translation unit. This makes reparsing a translation
   1530  * unit semantically equivalent to destroying the translation unit and then
   1531  * creating a new translation unit with the same command-line arguments.
   1532  * However, it may be more efficient to reparse a translation
   1533  * unit using this routine.
   1534  *
   1535  * \param TU The translation unit whose contents will be re-parsed. The
   1536  * translation unit must originally have been built with
   1537  * \c clang_createTranslationUnitFromSourceFile().
   1538  *
   1539  * \param num_unsaved_files The number of unsaved file entries in \p
   1540  * unsaved_files.
   1541  *
   1542  * \param unsaved_files The files that have not yet been saved to disk
   1543  * but may be required for parsing, including the contents of
   1544  * those files.  The contents and name of these files (as specified by
   1545  * CXUnsavedFile) are copied when necessary, so the client only needs to
   1546  * guarantee their validity until the call to this function returns.
   1547  *
   1548  * \param options A bitset of options composed of the flags in CXReparse_Flags.
   1549  * The function \c clang_defaultReparseOptions() produces a default set of
   1550  * options recommended for most uses, based on the translation unit.
   1551  *
   1552  * \returns 0 if the sources could be reparsed.  A non-zero error code will be
   1553  * returned if reparsing was impossible, such that the translation unit is
   1554  * invalid. In such cases, the only valid call for \c TU is
   1555  * \c clang_disposeTranslationUnit(TU).  The error codes returned by this
   1556  * routine are described by the \c CXErrorCode enum.
   1557  */
   1558 CINDEX_LINKAGE int clang_reparseTranslationUnit(CXTranslationUnit TU,
   1559                                                 unsigned num_unsaved_files,
   1560                                           struct CXUnsavedFile *unsaved_files,
   1561                                                 unsigned options);
   1562 
   1563 /**
   1564   * \brief Categorizes how memory is being used by a translation unit.
   1565   */
   1566 enum CXTUResourceUsageKind {
   1567   CXTUResourceUsage_AST = 1,
   1568   CXTUResourceUsage_Identifiers = 2,
   1569   CXTUResourceUsage_Selectors = 3,
   1570   CXTUResourceUsage_GlobalCompletionResults = 4,
   1571   CXTUResourceUsage_SourceManagerContentCache = 5,
   1572   CXTUResourceUsage_AST_SideTables = 6,
   1573   CXTUResourceUsage_SourceManager_Membuffer_Malloc = 7,
   1574   CXTUResourceUsage_SourceManager_Membuffer_MMap = 8,
   1575   CXTUResourceUsage_ExternalASTSource_Membuffer_Malloc = 9,
   1576   CXTUResourceUsage_ExternalASTSource_Membuffer_MMap = 10,
   1577   CXTUResourceUsage_Preprocessor = 11,
   1578   CXTUResourceUsage_PreprocessingRecord = 12,
   1579   CXTUResourceUsage_SourceManager_DataStructures = 13,
   1580   CXTUResourceUsage_Preprocessor_HeaderSearch = 14,
   1581   CXTUResourceUsage_MEMORY_IN_BYTES_BEGIN = CXTUResourceUsage_AST,
   1582   CXTUResourceUsage_MEMORY_IN_BYTES_END =
   1583     CXTUResourceUsage_Preprocessor_HeaderSearch,
   1584 
   1585   CXTUResourceUsage_First = CXTUResourceUsage_AST,
   1586   CXTUResourceUsage_Last = CXTUResourceUsage_Preprocessor_HeaderSearch
   1587 };
   1588 
   1589 /**
   1590   * \brief Returns the human-readable null-terminated C string that represents
   1591   *  the name of the memory category.  This string should never be freed.
   1592   */
   1593 CINDEX_LINKAGE
   1594 const char *clang_getTUResourceUsageName(enum CXTUResourceUsageKind kind);
   1595 
   1596 typedef struct CXTUResourceUsageEntry {
   1597   /* \brief The memory usage category. */
   1598   enum CXTUResourceUsageKind kind;
   1599   /* \brief Amount of resources used.
   1600       The units will depend on the resource kind. */
   1601   unsigned long amount;
   1602 } CXTUResourceUsageEntry;
   1603 
   1604 /**
   1605   * \brief The memory usage of a CXTranslationUnit, broken into categories.
   1606   */
   1607 typedef struct CXTUResourceUsage {
   1608   /* \brief Private data member, used for queries. */
   1609   void *data;
   1610 
   1611   /* \brief The number of entries in the 'entries' array. */
   1612   unsigned numEntries;
   1613 
   1614   /* \brief An array of key-value pairs, representing the breakdown of memory
   1615             usage. */
   1616   CXTUResourceUsageEntry *entries;
   1617 
   1618 } CXTUResourceUsage;
   1619 
   1620 /**
   1621   * \brief Return the memory usage of a translation unit.  This object
   1622   *  should be released with clang_disposeCXTUResourceUsage().
   1623   */
   1624 CINDEX_LINKAGE CXTUResourceUsage clang_getCXTUResourceUsage(CXTranslationUnit TU);
   1625 
   1626 CINDEX_LINKAGE void clang_disposeCXTUResourceUsage(CXTUResourceUsage usage);
   1627 
   1628 /**
   1629  * \brief Get target information for this translation unit.
   1630  *
   1631  * The CXTargetInfo object cannot outlive the CXTranslationUnit object.
   1632  */
   1633 CINDEX_LINKAGE CXTargetInfo
   1634 clang_getTranslationUnitTargetInfo(CXTranslationUnit CTUnit);
   1635 
   1636 /**
   1637  * \brief Destroy the CXTargetInfo object.
   1638  */
   1639 CINDEX_LINKAGE void
   1640 clang_TargetInfo_dispose(CXTargetInfo Info);
   1641 
   1642 /**
   1643  * \brief Get the normalized target triple as a string.
   1644  *
   1645  * Returns the empty string in case of any error.
   1646  */
   1647 CINDEX_LINKAGE CXString
   1648 clang_TargetInfo_getTriple(CXTargetInfo Info);
   1649 
   1650 /**
   1651  * \brief Get the pointer width of the target in bits.
   1652  *
   1653  * Returns -1 in case of error.
   1654  */
   1655 CINDEX_LINKAGE int
   1656 clang_TargetInfo_getPointerWidth(CXTargetInfo Info);
   1657 
   1658 /**
   1659  * @}
   1660  */
   1661 
   1662 /**
   1663  * \brief Describes the kind of entity that a cursor refers to.
   1664  */
   1665 enum CXCursorKind {
   1666   /* Declarations */
   1667   /**
   1668    * \brief A declaration whose specific kind is not exposed via this
   1669    * interface.
   1670    *
   1671    * Unexposed declarations have the same operations as any other kind
   1672    * of declaration; one can extract their location information,
   1673    * spelling, find their definitions, etc. However, the specific kind
   1674    * of the declaration is not reported.
   1675    */
   1676   CXCursor_UnexposedDecl                 = 1,
   1677   /** \brief A C or C++ struct. */
   1678   CXCursor_StructDecl                    = 2,
   1679   /** \brief A C or C++ union. */
   1680   CXCursor_UnionDecl                     = 3,
   1681   /** \brief A C++ class. */
   1682   CXCursor_ClassDecl                     = 4,
   1683   /** \brief An enumeration. */
   1684   CXCursor_EnumDecl                      = 5,
   1685   /**
   1686    * \brief A field (in C) or non-static data member (in C++) in a
   1687    * struct, union, or C++ class.
   1688    */
   1689   CXCursor_FieldDecl                     = 6,
   1690   /** \brief An enumerator constant. */
   1691   CXCursor_EnumConstantDecl              = 7,
   1692   /** \brief A function. */
   1693   CXCursor_FunctionDecl                  = 8,
   1694   /** \brief A variable. */
   1695   CXCursor_VarDecl                       = 9,
   1696   /** \brief A function or method parameter. */
   1697   CXCursor_ParmDecl                      = 10,
   1698   /** \brief An Objective-C \@interface. */
   1699   CXCursor_ObjCInterfaceDecl             = 11,
   1700   /** \brief An Objective-C \@interface for a category. */
   1701   CXCursor_ObjCCategoryDecl              = 12,
   1702   /** \brief An Objective-C \@protocol declaration. */
   1703   CXCursor_ObjCProtocolDecl              = 13,
   1704   /** \brief An Objective-C \@property declaration. */
   1705   CXCursor_ObjCPropertyDecl              = 14,
   1706   /** \brief An Objective-C instance variable. */
   1707   CXCursor_ObjCIvarDecl                  = 15,
   1708   /** \brief An Objective-C instance method. */
   1709   CXCursor_ObjCInstanceMethodDecl        = 16,
   1710   /** \brief An Objective-C class method. */
   1711   CXCursor_ObjCClassMethodDecl           = 17,
   1712   /** \brief An Objective-C \@implementation. */
   1713   CXCursor_ObjCImplementationDecl        = 18,
   1714   /** \brief An Objective-C \@implementation for a category. */
   1715   CXCursor_ObjCCategoryImplDecl          = 19,
   1716   /** \brief A typedef. */
   1717   CXCursor_TypedefDecl                   = 20,
   1718   /** \brief A C++ class method. */
   1719   CXCursor_CXXMethod                     = 21,
   1720   /** \brief A C++ namespace. */
   1721   CXCursor_Namespace                     = 22,
   1722   /** \brief A linkage specification, e.g. 'extern "C"'. */
   1723   CXCursor_LinkageSpec                   = 23,
   1724   /** \brief A C++ constructor. */
   1725   CXCursor_Constructor                   = 24,
   1726   /** \brief A C++ destructor. */
   1727   CXCursor_Destructor                    = 25,
   1728   /** \brief A C++ conversion function. */
   1729   CXCursor_ConversionFunction            = 26,
   1730   /** \brief A C++ template type parameter. */
   1731   CXCursor_TemplateTypeParameter         = 27,
   1732   /** \brief A C++ non-type template parameter. */
   1733   CXCursor_NonTypeTemplateParameter      = 28,
   1734   /** \brief A C++ template template parameter. */
   1735   CXCursor_TemplateTemplateParameter     = 29,
   1736   /** \brief A C++ function template. */
   1737   CXCursor_FunctionTemplate              = 30,
   1738   /** \brief A C++ class template. */
   1739   CXCursor_ClassTemplate                 = 31,
   1740   /** \brief A C++ class template partial specialization. */
   1741   CXCursor_ClassTemplatePartialSpecialization = 32,
   1742   /** \brief A C++ namespace alias declaration. */
   1743   CXCursor_NamespaceAlias                = 33,
   1744   /** \brief A C++ using directive. */
   1745   CXCursor_UsingDirective                = 34,
   1746   /** \brief A C++ using declaration. */
   1747   CXCursor_UsingDeclaration              = 35,
   1748   /** \brief A C++ alias declaration */
   1749   CXCursor_TypeAliasDecl                 = 36,
   1750   /** \brief An Objective-C \@synthesize definition. */
   1751   CXCursor_ObjCSynthesizeDecl            = 37,
   1752   /** \brief An Objective-C \@dynamic definition. */
   1753   CXCursor_ObjCDynamicDecl               = 38,
   1754   /** \brief An access specifier. */
   1755   CXCursor_CXXAccessSpecifier            = 39,
   1756 
   1757   CXCursor_FirstDecl                     = CXCursor_UnexposedDecl,
   1758   CXCursor_LastDecl                      = CXCursor_CXXAccessSpecifier,
   1759 
   1760   /* References */
   1761   CXCursor_FirstRef                      = 40, /* Decl references */
   1762   CXCursor_ObjCSuperClassRef             = 40,
   1763   CXCursor_ObjCProtocolRef               = 41,
   1764   CXCursor_ObjCClassRef                  = 42,
   1765   /**
   1766    * \brief A reference to a type declaration.
   1767    *
   1768    * A type reference occurs anywhere where a type is named but not
   1769    * declared. For example, given:
   1770    *
   1771    * \code
   1772    * typedef unsigned size_type;
   1773    * size_type size;
   1774    * \endcode
   1775    *
   1776    * The typedef is a declaration of size_type (CXCursor_TypedefDecl),
   1777    * while the type of the variable "size" is referenced. The cursor
   1778    * referenced by the type of size is the typedef for size_type.
   1779    */
   1780   CXCursor_TypeRef                       = 43,
   1781   CXCursor_CXXBaseSpecifier              = 44,
   1782   /**
   1783    * \brief A reference to a class template, function template, template
   1784    * template parameter, or class template partial specialization.
   1785    */
   1786   CXCursor_TemplateRef                   = 45,
   1787   /**
   1788    * \brief A reference to a namespace or namespace alias.
   1789    */
   1790   CXCursor_NamespaceRef                  = 46,
   1791   /**
   1792    * \brief A reference to a member of a struct, union, or class that occurs in
   1793    * some non-expression context, e.g., a designated initializer.
   1794    */
   1795   CXCursor_MemberRef                     = 47,
   1796   /**
   1797    * \brief A reference to a labeled statement.
   1798    *
   1799    * This cursor kind is used to describe the jump to "start_over" in the
   1800    * goto statement in the following example:
   1801    *
   1802    * \code
   1803    *   start_over:
   1804    *     ++counter;
   1805    *
   1806    *     goto start_over;
   1807    * \endcode
   1808    *
   1809    * A label reference cursor refers to a label statement.
   1810    */
   1811   CXCursor_LabelRef                      = 48,
   1812 
   1813   /**
   1814    * \brief A reference to a set of overloaded functions or function templates
   1815    * that has not yet been resolved to a specific function or function template.
   1816    *
   1817    * An overloaded declaration reference cursor occurs in C++ templates where
   1818    * a dependent name refers to a function. For example:
   1819    *
   1820    * \code
   1821    * template<typename T> void swap(T&, T&);
   1822    *
   1823    * struct X { ... };
   1824    * void swap(X&, X&);
   1825    *
   1826    * template<typename T>
   1827    * void reverse(T* first, T* last) {
   1828    *   while (first < last - 1) {
   1829    *     swap(*first, *--last);
   1830    *     ++first;
   1831    *   }
   1832    * }
   1833    *
   1834    * struct Y { };
   1835    * void swap(Y&, Y&);
   1836    * \endcode
   1837    *
   1838    * Here, the identifier "swap" is associated with an overloaded declaration
   1839    * reference. In the template definition, "swap" refers to either of the two
   1840    * "swap" functions declared above, so both results will be available. At
   1841    * instantiation time, "swap" may also refer to other functions found via
   1842    * argument-dependent lookup (e.g., the "swap" function at the end of the
   1843    * example).
   1844    *
   1845    * The functions \c clang_getNumOverloadedDecls() and
   1846    * \c clang_getOverloadedDecl() can be used to retrieve the definitions
   1847    * referenced by this cursor.
   1848    */
   1849   CXCursor_OverloadedDeclRef             = 49,
   1850 
   1851   /**
   1852    * \brief A reference to a variable that occurs in some non-expression
   1853    * context, e.g., a C++ lambda capture list.
   1854    */
   1855   CXCursor_VariableRef                   = 50,
   1856 
   1857   CXCursor_LastRef                       = CXCursor_VariableRef,
   1858 
   1859   /* Error conditions */
   1860   CXCursor_FirstInvalid                  = 70,
   1861   CXCursor_InvalidFile                   = 70,
   1862   CXCursor_NoDeclFound                   = 71,
   1863   CXCursor_NotImplemented                = 72,
   1864   CXCursor_InvalidCode                   = 73,
   1865   CXCursor_LastInvalid                   = CXCursor_InvalidCode,
   1866 
   1867   /* Expressions */
   1868   CXCursor_FirstExpr                     = 100,
   1869 
   1870   /**
   1871    * \brief An expression whose specific kind is not exposed via this
   1872    * interface.
   1873    *
   1874    * Unexposed expressions have the same operations as any other kind
   1875    * of expression; one can extract their location information,
   1876    * spelling, children, etc. However, the specific kind of the
   1877    * expression is not reported.
   1878    */
   1879   CXCursor_UnexposedExpr                 = 100,
   1880 
   1881   /**
   1882    * \brief An expression that refers to some value declaration, such
   1883    * as a function, variable, or enumerator.
   1884    */
   1885   CXCursor_DeclRefExpr                   = 101,
   1886 
   1887   /**
   1888    * \brief An expression that refers to a member of a struct, union,
   1889    * class, Objective-C class, etc.
   1890    */
   1891   CXCursor_MemberRefExpr                 = 102,
   1892 
   1893   /** \brief An expression that calls a function. */
   1894   CXCursor_CallExpr                      = 103,
   1895 
   1896   /** \brief An expression that sends a message to an Objective-C
   1897    object or class. */
   1898   CXCursor_ObjCMessageExpr               = 104,
   1899 
   1900   /** \brief An expression that represents a block literal. */
   1901   CXCursor_BlockExpr                     = 105,
   1902 
   1903   /** \brief An integer literal.
   1904    */
   1905   CXCursor_IntegerLiteral                = 106,
   1906 
   1907   /** \brief A floating point number literal.
   1908    */
   1909   CXCursor_FloatingLiteral               = 107,
   1910 
   1911   /** \brief An imaginary number literal.
   1912    */
   1913   CXCursor_ImaginaryLiteral              = 108,
   1914 
   1915   /** \brief A string literal.
   1916    */
   1917   CXCursor_StringLiteral                 = 109,
   1918 
   1919   /** \brief A character literal.
   1920    */
   1921   CXCursor_CharacterLiteral              = 110,
   1922 
   1923   /** \brief A parenthesized expression, e.g. "(1)".
   1924    *
   1925    * This AST node is only formed if full location information is requested.
   1926    */
   1927   CXCursor_ParenExpr                     = 111,
   1928 
   1929   /** \brief This represents the unary-expression's (except sizeof and
   1930    * alignof).
   1931    */
   1932   CXCursor_UnaryOperator                 = 112,
   1933 
   1934   /** \brief [C99 6.5.2.1] Array Subscripting.
   1935    */
   1936   CXCursor_ArraySubscriptExpr            = 113,
   1937 
   1938   /** \brief A builtin binary operation expression such as "x + y" or
   1939    * "x <= y".
   1940    */
   1941   CXCursor_BinaryOperator                = 114,
   1942 
   1943   /** \brief Compound assignment such as "+=".
   1944    */
   1945   CXCursor_CompoundAssignOperator        = 115,
   1946 
   1947   /** \brief The ?: ternary operator.
   1948    */
   1949   CXCursor_ConditionalOperator           = 116,
   1950 
   1951   /** \brief An explicit cast in C (C99 6.5.4) or a C-style cast in C++
   1952    * (C++ [expr.cast]), which uses the syntax (Type)expr.
   1953    *
   1954    * For example: (int)f.
   1955    */
   1956   CXCursor_CStyleCastExpr                = 117,
   1957 
   1958   /** \brief [C99 6.5.2.5]
   1959    */
   1960   CXCursor_CompoundLiteralExpr           = 118,
   1961 
   1962   /** \brief Describes an C or C++ initializer list.
   1963    */
   1964   CXCursor_InitListExpr                  = 119,
   1965 
   1966   /** \brief The GNU address of label extension, representing &&label.
   1967    */
   1968   CXCursor_AddrLabelExpr                 = 120,
   1969 
   1970   /** \brief This is the GNU Statement Expression extension: ({int X=4; X;})
   1971    */
   1972   CXCursor_StmtExpr                      = 121,
   1973 
   1974   /** \brief Represents a C11 generic selection.
   1975    */
   1976   CXCursor_GenericSelectionExpr          = 122,
   1977 
   1978   /** \brief Implements the GNU __null extension, which is a name for a null
   1979    * pointer constant that has integral type (e.g., int or long) and is the same
   1980    * size and alignment as a pointer.
   1981    *
   1982    * The __null extension is typically only used by system headers, which define
   1983    * NULL as __null in C++ rather than using 0 (which is an integer that may not
   1984    * match the size of a pointer).
   1985    */
   1986   CXCursor_GNUNullExpr                   = 123,
   1987 
   1988   /** \brief C++'s static_cast<> expression.
   1989    */
   1990   CXCursor_CXXStaticCastExpr             = 124,
   1991 
   1992   /** \brief C++'s dynamic_cast<> expression.
   1993    */
   1994   CXCursor_CXXDynamicCastExpr            = 125,
   1995 
   1996   /** \brief C++'s reinterpret_cast<> expression.
   1997    */
   1998   CXCursor_CXXReinterpretCastExpr        = 126,
   1999 
   2000   /** \brief C++'s const_cast<> expression.
   2001    */
   2002   CXCursor_CXXConstCastExpr              = 127,
   2003 
   2004   /** \brief Represents an explicit C++ type conversion that uses "functional"
   2005    * notion (C++ [expr.type.conv]).
   2006    *
   2007    * Example:
   2008    * \code
   2009    *   x = int(0.5);
   2010    * \endcode
   2011    */
   2012   CXCursor_CXXFunctionalCastExpr         = 128,
   2013 
   2014   /** \brief A C++ typeid expression (C++ [expr.typeid]).
   2015    */
   2016   CXCursor_CXXTypeidExpr                 = 129,
   2017 
   2018   /** \brief [C++ 2.13.5] C++ Boolean Literal.
   2019    */
   2020   CXCursor_CXXBoolLiteralExpr            = 130,
   2021 
   2022   /** \brief [C++0x 2.14.7] C++ Pointer Literal.
   2023    */
   2024   CXCursor_CXXNullPtrLiteralExpr         = 131,
   2025 
   2026   /** \brief Represents the "this" expression in C++
   2027    */
   2028   CXCursor_CXXThisExpr                   = 132,
   2029 
   2030   /** \brief [C++ 15] C++ Throw Expression.
   2031    *
   2032    * This handles 'throw' and 'throw' assignment-expression. When
   2033    * assignment-expression isn't present, Op will be null.
   2034    */
   2035   CXCursor_CXXThrowExpr                  = 133,
   2036 
   2037   /** \brief A new expression for memory allocation and constructor calls, e.g:
   2038    * "new CXXNewExpr(foo)".
   2039    */
   2040   CXCursor_CXXNewExpr                    = 134,
   2041 
   2042   /** \brief A delete expression for memory deallocation and destructor calls,
   2043    * e.g. "delete[] pArray".
   2044    */
   2045   CXCursor_CXXDeleteExpr                 = 135,
   2046 
   2047   /** \brief A unary expression. (noexcept, sizeof, or other traits)
   2048    */
   2049   CXCursor_UnaryExpr                     = 136,
   2050 
   2051   /** \brief An Objective-C string literal i.e. @"foo".
   2052    */
   2053   CXCursor_ObjCStringLiteral             = 137,
   2054 
   2055   /** \brief An Objective-C \@encode expression.
   2056    */
   2057   CXCursor_ObjCEncodeExpr                = 138,
   2058 
   2059   /** \brief An Objective-C \@selector expression.
   2060    */
   2061   CXCursor_ObjCSelectorExpr              = 139,
   2062 
   2063   /** \brief An Objective-C \@protocol expression.
   2064    */
   2065   CXCursor_ObjCProtocolExpr              = 140,
   2066 
   2067   /** \brief An Objective-C "bridged" cast expression, which casts between
   2068    * Objective-C pointers and C pointers, transferring ownership in the process.
   2069    *
   2070    * \code
   2071    *   NSString *str = (__bridge_transfer NSString *)CFCreateString();
   2072    * \endcode
   2073    */
   2074   CXCursor_ObjCBridgedCastExpr           = 141,
   2075 
   2076   /** \brief Represents a C++0x pack expansion that produces a sequence of
   2077    * expressions.
   2078    *
   2079    * A pack expansion expression contains a pattern (which itself is an
   2080    * expression) followed by an ellipsis. For example:
   2081    *
   2082    * \code
   2083    * template<typename F, typename ...Types>
   2084    * void forward(F f, Types &&...args) {
   2085    *  f(static_cast<Types&&>(args)...);
   2086    * }
   2087    * \endcode
   2088    */
   2089   CXCursor_PackExpansionExpr             = 142,
   2090 
   2091   /** \brief Represents an expression that computes the length of a parameter
   2092    * pack.
   2093    *
   2094    * \code
   2095    * template<typename ...Types>
   2096    * struct count {
   2097    *   static const unsigned value = sizeof...(Types);
   2098    * };
   2099    * \endcode
   2100    */
   2101   CXCursor_SizeOfPackExpr                = 143,
   2102 
   2103   /* \brief Represents a C++ lambda expression that produces a local function
   2104    * object.
   2105    *
   2106    * \code
   2107    * void abssort(float *x, unsigned N) {
   2108    *   std::sort(x, x + N,
   2109    *             [](float a, float b) {
   2110    *               return std::abs(a) < std::abs(b);
   2111    *             });
   2112    * }
   2113    * \endcode
   2114    */
   2115   CXCursor_LambdaExpr                    = 144,
   2116 
   2117   /** \brief Objective-c Boolean Literal.
   2118    */
   2119   CXCursor_ObjCBoolLiteralExpr           = 145,
   2120 
   2121   /** \brief Represents the "self" expression in an Objective-C method.
   2122    */
   2123   CXCursor_ObjCSelfExpr                  = 146,
   2124 
   2125   /** \brief OpenMP 4.0 [2.4, Array Section].
   2126    */
   2127   CXCursor_OMPArraySectionExpr           = 147,
   2128 
   2129   /** \brief Represents an @available(...) check.
   2130    */
   2131   CXCursor_ObjCAvailabilityCheckExpr     = 148,
   2132 
   2133   CXCursor_LastExpr                      = CXCursor_ObjCAvailabilityCheckExpr,
   2134 
   2135   /* Statements */
   2136   CXCursor_FirstStmt                     = 200,
   2137   /**
   2138    * \brief A statement whose specific kind is not exposed via this
   2139    * interface.
   2140    *
   2141    * Unexposed statements have the same operations as any other kind of
   2142    * statement; one can extract their location information, spelling,
   2143    * children, etc. However, the specific kind of the statement is not
   2144    * reported.
   2145    */
   2146   CXCursor_UnexposedStmt                 = 200,
   2147 
   2148   /** \brief A labelled statement in a function.
   2149    *
   2150    * This cursor kind is used to describe the "start_over:" label statement in
   2151    * the following example:
   2152    *
   2153    * \code
   2154    *   start_over:
   2155    *     ++counter;
   2156    * \endcode
   2157    *
   2158    */
   2159   CXCursor_LabelStmt                     = 201,
   2160 
   2161   /** \brief A group of statements like { stmt stmt }.
   2162    *
   2163    * This cursor kind is used to describe compound statements, e.g. function
   2164    * bodies.
   2165    */
   2166   CXCursor_CompoundStmt                  = 202,
   2167 
   2168   /** \brief A case statement.
   2169    */
   2170   CXCursor_CaseStmt                      = 203,
   2171 
   2172   /** \brief A default statement.
   2173    */
   2174   CXCursor_DefaultStmt                   = 204,
   2175 
   2176   /** \brief An if statement
   2177    */
   2178   CXCursor_IfStmt                        = 205,
   2179 
   2180   /** \brief A switch statement.
   2181    */
   2182   CXCursor_SwitchStmt                    = 206,
   2183 
   2184   /** \brief A while statement.
   2185    */
   2186   CXCursor_WhileStmt                     = 207,
   2187 
   2188   /** \brief A do statement.
   2189    */
   2190   CXCursor_DoStmt                        = 208,
   2191 
   2192   /** \brief A for statement.
   2193    */
   2194   CXCursor_ForStmt                       = 209,
   2195 
   2196   /** \brief A goto statement.
   2197    */
   2198   CXCursor_GotoStmt                      = 210,
   2199 
   2200   /** \brief An indirect goto statement.
   2201    */
   2202   CXCursor_IndirectGotoStmt              = 211,
   2203 
   2204   /** \brief A continue statement.
   2205    */
   2206   CXCursor_ContinueStmt                  = 212,
   2207 
   2208   /** \brief A break statement.
   2209    */
   2210   CXCursor_BreakStmt                     = 213,
   2211 
   2212   /** \brief A return statement.
   2213    */
   2214   CXCursor_ReturnStmt                    = 214,
   2215 
   2216   /** \brief A GCC inline assembly statement extension.
   2217    */
   2218   CXCursor_GCCAsmStmt                    = 215,
   2219   CXCursor_AsmStmt                       = CXCursor_GCCAsmStmt,
   2220 
   2221   /** \brief Objective-C's overall \@try-\@catch-\@finally statement.
   2222    */
   2223   CXCursor_ObjCAtTryStmt                 = 216,
   2224 
   2225   /** \brief Objective-C's \@catch statement.
   2226    */
   2227   CXCursor_ObjCAtCatchStmt               = 217,
   2228 
   2229   /** \brief Objective-C's \@finally statement.
   2230    */
   2231   CXCursor_ObjCAtFinallyStmt             = 218,
   2232 
   2233   /** \brief Objective-C's \@throw statement.
   2234    */
   2235   CXCursor_ObjCAtThrowStmt               = 219,
   2236 
   2237   /** \brief Objective-C's \@synchronized statement.
   2238    */
   2239   CXCursor_ObjCAtSynchronizedStmt        = 220,
   2240 
   2241   /** \brief Objective-C's autorelease pool statement.
   2242    */
   2243   CXCursor_ObjCAutoreleasePoolStmt       = 221,
   2244 
   2245   /** \brief Objective-C's collection statement.
   2246    */
   2247   CXCursor_ObjCForCollectionStmt         = 222,
   2248 
   2249   /** \brief C++'s catch statement.
   2250    */
   2251   CXCursor_CXXCatchStmt                  = 223,
   2252 
   2253   /** \brief C++'s try statement.
   2254    */
   2255   CXCursor_CXXTryStmt                    = 224,
   2256 
   2257   /** \brief C++'s for (* : *) statement.
   2258    */
   2259   CXCursor_CXXForRangeStmt               = 225,
   2260 
   2261   /** \brief Windows Structured Exception Handling's try statement.
   2262    */
   2263   CXCursor_SEHTryStmt                    = 226,
   2264 
   2265   /** \brief Windows Structured Exception Handling's except statement.
   2266    */
   2267   CXCursor_SEHExceptStmt                 = 227,
   2268 
   2269   /** \brief Windows Structured Exception Handling's finally statement.
   2270    */
   2271   CXCursor_SEHFinallyStmt                = 228,
   2272 
   2273   /** \brief A MS inline assembly statement extension.
   2274    */
   2275   CXCursor_MSAsmStmt                     = 229,
   2276 
   2277   /** \brief The null statement ";": C99 6.8.3p3.
   2278    *
   2279    * This cursor kind is used to describe the null statement.
   2280    */
   2281   CXCursor_NullStmt                      = 230,
   2282 
   2283   /** \brief Adaptor class for mixing declarations with statements and
   2284    * expressions.
   2285    */
   2286   CXCursor_DeclStmt                      = 231,
   2287 
   2288   /** \brief OpenMP parallel directive.
   2289    */
   2290   CXCursor_OMPParallelDirective          = 232,
   2291 
   2292   /** \brief OpenMP SIMD directive.
   2293    */
   2294   CXCursor_OMPSimdDirective              = 233,
   2295 
   2296   /** \brief OpenMP for directive.
   2297    */
   2298   CXCursor_OMPForDirective               = 234,
   2299 
   2300   /** \brief OpenMP sections directive.
   2301    */
   2302   CXCursor_OMPSectionsDirective          = 235,
   2303 
   2304   /** \brief OpenMP section directive.
   2305    */
   2306   CXCursor_OMPSectionDirective           = 236,
   2307 
   2308   /** \brief OpenMP single directive.
   2309    */
   2310   CXCursor_OMPSingleDirective            = 237,
   2311 
   2312   /** \brief OpenMP parallel for directive.
   2313    */
   2314   CXCursor_OMPParallelForDirective       = 238,
   2315 
   2316   /** \brief OpenMP parallel sections directive.
   2317    */
   2318   CXCursor_OMPParallelSectionsDirective  = 239,
   2319 
   2320   /** \brief OpenMP task directive.
   2321    */
   2322   CXCursor_OMPTaskDirective              = 240,
   2323 
   2324   /** \brief OpenMP master directive.
   2325    */
   2326   CXCursor_OMPMasterDirective            = 241,
   2327 
   2328   /** \brief OpenMP critical directive.
   2329    */
   2330   CXCursor_OMPCriticalDirective          = 242,
   2331 
   2332   /** \brief OpenMP taskyield directive.
   2333    */
   2334   CXCursor_OMPTaskyieldDirective         = 243,
   2335 
   2336   /** \brief OpenMP barrier directive.
   2337    */
   2338   CXCursor_OMPBarrierDirective           = 244,
   2339 
   2340   /** \brief OpenMP taskwait directive.
   2341    */
   2342   CXCursor_OMPTaskwaitDirective          = 245,
   2343 
   2344   /** \brief OpenMP flush directive.
   2345    */
   2346   CXCursor_OMPFlushDirective             = 246,
   2347 
   2348   /** \brief Windows Structured Exception Handling's leave statement.
   2349    */
   2350   CXCursor_SEHLeaveStmt                  = 247,
   2351 
   2352   /** \brief OpenMP ordered directive.
   2353    */
   2354   CXCursor_OMPOrderedDirective           = 248,
   2355 
   2356   /** \brief OpenMP atomic directive.
   2357    */
   2358   CXCursor_OMPAtomicDirective            = 249,
   2359 
   2360   /** \brief OpenMP for SIMD directive.
   2361    */
   2362   CXCursor_OMPForSimdDirective           = 250,
   2363 
   2364   /** \brief OpenMP parallel for SIMD directive.
   2365    */
   2366   CXCursor_OMPParallelForSimdDirective   = 251,
   2367 
   2368   /** \brief OpenMP target directive.
   2369    */
   2370   CXCursor_OMPTargetDirective            = 252,
   2371 
   2372   /** \brief OpenMP teams directive.
   2373    */
   2374   CXCursor_OMPTeamsDirective             = 253,
   2375 
   2376   /** \brief OpenMP taskgroup directive.
   2377    */
   2378   CXCursor_OMPTaskgroupDirective         = 254,
   2379 
   2380   /** \brief OpenMP cancellation point directive.
   2381    */
   2382   CXCursor_OMPCancellationPointDirective = 255,
   2383 
   2384   /** \brief OpenMP cancel directive.
   2385    */
   2386   CXCursor_OMPCancelDirective            = 256,
   2387 
   2388   /** \brief OpenMP target data directive.
   2389    */
   2390   CXCursor_OMPTargetDataDirective        = 257,
   2391 
   2392   /** \brief OpenMP taskloop directive.
   2393    */
   2394   CXCursor_OMPTaskLoopDirective          = 258,
   2395 
   2396   /** \brief OpenMP taskloop simd directive.
   2397    */
   2398   CXCursor_OMPTaskLoopSimdDirective      = 259,
   2399 
   2400   /** \brief OpenMP distribute directive.
   2401    */
   2402   CXCursor_OMPDistributeDirective        = 260,
   2403 
   2404   /** \brief OpenMP target enter data directive.
   2405    */
   2406   CXCursor_OMPTargetEnterDataDirective   = 261,
   2407 
   2408   /** \brief OpenMP target exit data directive.
   2409    */
   2410   CXCursor_OMPTargetExitDataDirective    = 262,
   2411 
   2412   /** \brief OpenMP target parallel directive.
   2413    */
   2414   CXCursor_OMPTargetParallelDirective    = 263,
   2415 
   2416   /** \brief OpenMP target parallel for directive.
   2417    */
   2418   CXCursor_OMPTargetParallelForDirective = 264,
   2419 
   2420   /** \brief OpenMP target update directive.
   2421    */
   2422   CXCursor_OMPTargetUpdateDirective      = 265,
   2423 
   2424   /** \brief OpenMP distribute parallel for directive.
   2425    */
   2426   CXCursor_OMPDistributeParallelForDirective = 266,
   2427 
   2428   /** \brief OpenMP distribute parallel for simd directive.
   2429    */
   2430   CXCursor_OMPDistributeParallelForSimdDirective = 267,
   2431 
   2432   /** \brief OpenMP distribute simd directive.
   2433    */
   2434   CXCursor_OMPDistributeSimdDirective = 268,
   2435 
   2436   /** \brief OpenMP target parallel for simd directive.
   2437    */
   2438   CXCursor_OMPTargetParallelForSimdDirective = 269,
   2439 
   2440   /** \brief OpenMP target simd directive.
   2441    */
   2442   CXCursor_OMPTargetSimdDirective = 270,
   2443 
   2444   /** \brief OpenMP teams distribute directive.
   2445    */
   2446   CXCursor_OMPTeamsDistributeDirective = 271,
   2447 
   2448   /** \brief OpenMP teams distribute simd directive.
   2449    */
   2450   CXCursor_OMPTeamsDistributeSimdDirective = 272,
   2451 
   2452   /** \brief OpenMP teams distribute parallel for simd directive.
   2453    */
   2454   CXCursor_OMPTeamsDistributeParallelForSimdDirective = 273,
   2455 
   2456   /** \brief OpenMP teams distribute parallel for directive.
   2457    */
   2458   CXCursor_OMPTeamsDistributeParallelForDirective = 274,
   2459 
   2460   /** \brief OpenMP target teams directive.
   2461    */
   2462   CXCursor_OMPTargetTeamsDirective = 275,
   2463 
   2464   /** \brief OpenMP target teams distribute directive.
   2465    */
   2466   CXCursor_OMPTargetTeamsDistributeDirective = 276,
   2467 
   2468   /** \brief OpenMP target teams distribute parallel for directive.
   2469    */
   2470   CXCursor_OMPTargetTeamsDistributeParallelForDirective = 277,
   2471 
   2472   /** \brief OpenMP target teams distribute parallel for simd directive.
   2473    */
   2474   CXCursor_OMPTargetTeamsDistributeParallelForSimdDirective = 278,
   2475 
   2476   /** \brief OpenMP target teams distribute simd directive.
   2477    */
   2478   CXCursor_OMPTargetTeamsDistributeSimdDirective = 279,
   2479 
   2480   CXCursor_LastStmt = CXCursor_OMPTargetTeamsDistributeSimdDirective,
   2481 
   2482   /**
   2483    * \brief Cursor that represents the translation unit itself.
   2484    *
   2485    * The translation unit cursor exists primarily to act as the root
   2486    * cursor for traversing the contents of a translation unit.
   2487    */
   2488   CXCursor_TranslationUnit               = 300,
   2489 
   2490   /* Attributes */
   2491   CXCursor_FirstAttr                     = 400,
   2492   /**
   2493    * \brief An attribute whose specific kind is not exposed via this
   2494    * interface.
   2495    */
   2496   CXCursor_UnexposedAttr                 = 400,
   2497 
   2498   CXCursor_IBActionAttr                  = 401,
   2499   CXCursor_IBOutletAttr                  = 402,
   2500   CXCursor_IBOutletCollectionAttr        = 403,
   2501   CXCursor_CXXFinalAttr                  = 404,
   2502   CXCursor_CXXOverrideAttr               = 405,
   2503   CXCursor_AnnotateAttr                  = 406,
   2504   CXCursor_AsmLabelAttr                  = 407,
   2505   CXCursor_PackedAttr                    = 408,
   2506   CXCursor_PureAttr                      = 409,
   2507   CXCursor_ConstAttr                     = 410,
   2508   CXCursor_NoDuplicateAttr               = 411,
   2509   CXCursor_CUDAConstantAttr              = 412,
   2510   CXCursor_CUDADeviceAttr                = 413,
   2511   CXCursor_CUDAGlobalAttr                = 414,
   2512   CXCursor_CUDAHostAttr                  = 415,
   2513   CXCursor_CUDASharedAttr                = 416,
   2514   CXCursor_VisibilityAttr                = 417,
   2515   CXCursor_DLLExport                     = 418,
   2516   CXCursor_DLLImport                     = 419,
   2517   CXCursor_LastAttr                      = CXCursor_DLLImport,
   2518 
   2519   /* Preprocessing */
   2520   CXCursor_PreprocessingDirective        = 500,
   2521   CXCursor_MacroDefinition               = 501,
   2522   CXCursor_MacroExpansion                = 502,
   2523   CXCursor_MacroInstantiation            = CXCursor_MacroExpansion,
   2524   CXCursor_InclusionDirective            = 503,
   2525   CXCursor_FirstPreprocessing            = CXCursor_PreprocessingDirective,
   2526   CXCursor_LastPreprocessing             = CXCursor_InclusionDirective,
   2527 
   2528   /* Extra Declarations */
   2529   /**
   2530    * \brief A module import declaration.
   2531    */
   2532   CXCursor_ModuleImportDecl              = 600,
   2533   CXCursor_TypeAliasTemplateDecl         = 601,
   2534   /**
   2535    * \brief A static_assert or _Static_assert node
   2536    */
   2537   CXCursor_StaticAssert                  = 602,
   2538   /**
   2539    * \brief a friend declaration.
   2540    */
   2541   CXCursor_FriendDecl                    = 603,
   2542   CXCursor_FirstExtraDecl                = CXCursor_ModuleImportDecl,
   2543   CXCursor_LastExtraDecl                 = CXCursor_FriendDecl,
   2544 
   2545   /**
   2546    * \brief A code completion overload candidate.
   2547    */
   2548   CXCursor_OverloadCandidate             = 700
   2549 };
   2550 
   2551 /**
   2552  * \brief A cursor representing some element in the abstract syntax tree for
   2553  * a translation unit.
   2554  *
   2555  * The cursor abstraction unifies the different kinds of entities in a
   2556  * program--declaration, statements, expressions, references to declarations,
   2557  * etc.--under a single "cursor" abstraction with a common set of operations.
   2558  * Common operation for a cursor include: getting the physical location in
   2559  * a source file where the cursor points, getting the name associated with a
   2560  * cursor, and retrieving cursors for any child nodes of a particular cursor.
   2561  *
   2562  * Cursors can be produced in two specific ways.
   2563  * clang_getTranslationUnitCursor() produces a cursor for a translation unit,
   2564  * from which one can use clang_visitChildren() to explore the rest of the
   2565  * translation unit. clang_getCursor() maps from a physical source location
   2566  * to the entity that resides at that location, allowing one to map from the
   2567  * source code into the AST.
   2568  */
   2569 typedef struct {
   2570   enum CXCursorKind kind;
   2571   int xdata;
   2572   const void *data[3];
   2573 } CXCursor;
   2574 
   2575 /**
   2576  * \defgroup CINDEX_CURSOR_MANIP Cursor manipulations
   2577  *
   2578  * @{
   2579  */
   2580 
   2581 /**
   2582  * \brief Retrieve the NULL cursor, which represents no entity.
   2583  */
   2584 CINDEX_LINKAGE CXCursor clang_getNullCursor(void);
   2585 
   2586 /**
   2587  * \brief Retrieve the cursor that represents the given translation unit.
   2588  *
   2589  * The translation unit cursor can be used to start traversing the
   2590  * various declarations within the given translation unit.
   2591  */
   2592 CINDEX_LINKAGE CXCursor clang_getTranslationUnitCursor(CXTranslationUnit);
   2593 
   2594 /**
   2595  * \brief Determine whether two cursors are equivalent.
   2596  */
   2597 CINDEX_LINKAGE unsigned clang_equalCursors(CXCursor, CXCursor);
   2598 
   2599 /**
   2600  * \brief Returns non-zero if \p cursor is null.
   2601  */
   2602 CINDEX_LINKAGE int clang_Cursor_isNull(CXCursor cursor);
   2603 
   2604 /**
   2605  * \brief Compute a hash value for the given cursor.
   2606  */
   2607 CINDEX_LINKAGE unsigned clang_hashCursor(CXCursor);
   2608 
   2609 /**
   2610  * \brief Retrieve the kind of the given cursor.
   2611  */
   2612 CINDEX_LINKAGE enum CXCursorKind clang_getCursorKind(CXCursor);
   2613 
   2614 /**
   2615  * \brief Determine whether the given cursor kind represents a declaration.
   2616  */
   2617 CINDEX_LINKAGE unsigned clang_isDeclaration(enum CXCursorKind);
   2618 
   2619 /**
   2620  * \brief Determine whether the given cursor kind represents a simple
   2621  * reference.
   2622  *
   2623  * Note that other kinds of cursors (such as expressions) can also refer to
   2624  * other cursors. Use clang_getCursorReferenced() to determine whether a
   2625  * particular cursor refers to another entity.
   2626  */
   2627 CINDEX_LINKAGE unsigned clang_isReference(enum CXCursorKind);
   2628 
   2629 /**
   2630  * \brief Determine whether the given cursor kind represents an expression.
   2631  */
   2632 CINDEX_LINKAGE unsigned clang_isExpression(enum CXCursorKind);
   2633 
   2634 /**
   2635  * \brief Determine whether the given cursor kind represents a statement.
   2636  */
   2637 CINDEX_LINKAGE unsigned clang_isStatement(enum CXCursorKind);
   2638 
   2639 /**
   2640  * \brief Determine whether the given cursor kind represents an attribute.
   2641  */
   2642 CINDEX_LINKAGE unsigned clang_isAttribute(enum CXCursorKind);
   2643 
   2644 /**
   2645  * \brief Determine whether the given cursor has any attributes.
   2646  */
   2647 CINDEX_LINKAGE unsigned clang_Cursor_hasAttrs(CXCursor C);
   2648 
   2649 /**
   2650  * \brief Determine whether the given cursor kind represents an invalid
   2651  * cursor.
   2652  */
   2653 CINDEX_LINKAGE unsigned clang_isInvalid(enum CXCursorKind);
   2654 
   2655 /**
   2656  * \brief Determine whether the given cursor kind represents a translation
   2657  * unit.
   2658  */
   2659 CINDEX_LINKAGE unsigned clang_isTranslationUnit(enum CXCursorKind);
   2660 
   2661 /***
   2662  * \brief Determine whether the given cursor represents a preprocessing
   2663  * element, such as a preprocessor directive or macro instantiation.
   2664  */
   2665 CINDEX_LINKAGE unsigned clang_isPreprocessing(enum CXCursorKind);
   2666 
   2667 /***
   2668  * \brief Determine whether the given cursor represents a currently
   2669  *  unexposed piece of the AST (e.g., CXCursor_UnexposedStmt).
   2670  */
   2671 CINDEX_LINKAGE unsigned clang_isUnexposed(enum CXCursorKind);
   2672 
   2673 /**
   2674  * \brief Describe the linkage of the entity referred to by a cursor.
   2675  */
   2676 enum CXLinkageKind {
   2677   /** \brief This value indicates that no linkage information is available
   2678    * for a provided CXCursor. */
   2679   CXLinkage_Invalid,
   2680   /**
   2681    * \brief This is the linkage for variables, parameters, and so on that
   2682    *  have automatic storage.  This covers normal (non-extern) local variables.
   2683    */
   2684   CXLinkage_NoLinkage,
   2685   /** \brief This is the linkage for static variables and static functions. */
   2686   CXLinkage_Internal,
   2687   /** \brief This is the linkage for entities with external linkage that live
   2688    * in C++ anonymous namespaces.*/
   2689   CXLinkage_UniqueExternal,
   2690   /** \brief This is the linkage for entities with true, external linkage. */
   2691   CXLinkage_External
   2692 };
   2693 
   2694 /**
   2695  * \brief Determine the linkage of the entity referred to by a given cursor.
   2696  */
   2697 CINDEX_LINKAGE enum CXLinkageKind clang_getCursorLinkage(CXCursor cursor);
   2698 
   2699 enum CXVisibilityKind {
   2700   /** \brief This value indicates that no visibility information is available
   2701    * for a provided CXCursor. */
   2702   CXVisibility_Invalid,
   2703 
   2704   /** \brief Symbol not seen by the linker. */
   2705   CXVisibility_Hidden,
   2706   /** \brief Symbol seen by the linker but resolves to a symbol inside this object. */
   2707   CXVisibility_Protected,
   2708   /** \brief Symbol seen by the linker and acts like a normal symbol. */
   2709   CXVisibility_Default
   2710 };
   2711 
   2712 /**
   2713  * \brief Describe the visibility of the entity referred to by a cursor.
   2714  *
   2715  * This returns the default visibility if not explicitly specified by
   2716  * a visibility attribute. The default visibility may be changed by
   2717  * commandline arguments.
   2718  *
   2719  * \param cursor The cursor to query.
   2720  *
   2721  * \returns The visibility of the cursor.
   2722  */
   2723 CINDEX_LINKAGE enum CXVisibilityKind clang_getCursorVisibility(CXCursor cursor);
   2724 
   2725 /**
   2726  * \brief Determine the availability of the entity that this cursor refers to,
   2727  * taking the current target platform into account.
   2728  *
   2729  * \param cursor The cursor to query.
   2730  *
   2731  * \returns The availability of the cursor.
   2732  */
   2733 CINDEX_LINKAGE enum CXAvailabilityKind
   2734 clang_getCursorAvailability(CXCursor cursor);
   2735 
   2736 /**
   2737  * Describes the availability of a given entity on a particular platform, e.g.,
   2738  * a particular class might only be available on Mac OS 10.7 or newer.
   2739  */
   2740 typedef struct CXPlatformAvailability {
   2741   /**
   2742    * \brief A string that describes the platform for which this structure
   2743    * provides availability information.
   2744    *
   2745    * Possible values are "ios" or "macos".
   2746    */
   2747   CXString Platform;
   2748   /**
   2749    * \brief The version number in which this entity was introduced.
   2750    */
   2751   CXVersion Introduced;
   2752   /**
   2753    * \brief The version number in which this entity was deprecated (but is
   2754    * still available).
   2755    */
   2756   CXVersion Deprecated;
   2757   /**
   2758    * \brief The version number in which this entity was obsoleted, and therefore
   2759    * is no longer available.
   2760    */
   2761   CXVersion Obsoleted;
   2762   /**
   2763    * \brief Whether the entity is unconditionally unavailable on this platform.
   2764    */
   2765   int Unavailable;
   2766   /**
   2767    * \brief An optional message to provide to a user of this API, e.g., to
   2768    * suggest replacement APIs.
   2769    */
   2770   CXString Message;
   2771 } CXPlatformAvailability;
   2772 
   2773 /**
   2774  * \brief Determine the availability of the entity that this cursor refers to
   2775  * on any platforms for which availability information is known.
   2776  *
   2777  * \param cursor The cursor to query.
   2778  *
   2779  * \param always_deprecated If non-NULL, will be set to indicate whether the
   2780  * entity is deprecated on all platforms.
   2781  *
   2782  * \param deprecated_message If non-NULL, will be set to the message text
   2783  * provided along with the unconditional deprecation of this entity. The client
   2784  * is responsible for deallocating this string.
   2785  *
   2786  * \param always_unavailable If non-NULL, will be set to indicate whether the
   2787  * entity is unavailable on all platforms.
   2788  *
   2789  * \param unavailable_message If non-NULL, will be set to the message text
   2790  * provided along with the unconditional unavailability of this entity. The
   2791  * client is responsible for deallocating this string.
   2792  *
   2793  * \param availability If non-NULL, an array of CXPlatformAvailability instances
   2794  * that will be populated with platform availability information, up to either
   2795  * the number of platforms for which availability information is available (as
   2796  * returned by this function) or \c availability_size, whichever is smaller.
   2797  *
   2798  * \param availability_size The number of elements available in the
   2799  * \c availability array.
   2800  *
   2801  * \returns The number of platforms (N) for which availability information is
   2802  * available (which is unrelated to \c availability_size).
   2803  *
   2804  * Note that the client is responsible for calling
   2805  * \c clang_disposeCXPlatformAvailability to free each of the
   2806  * platform-availability structures returned. There are
   2807  * \c min(N, availability_size) such structures.
   2808  */
   2809 CINDEX_LINKAGE int
   2810 clang_getCursorPlatformAvailability(CXCursor cursor,
   2811                                     int *always_deprecated,
   2812                                     CXString *deprecated_message,
   2813                                     int *always_unavailable,
   2814                                     CXString *unavailable_message,
   2815                                     CXPlatformAvailability *availability,
   2816                                     int availability_size);
   2817 
   2818 /**
   2819  * \brief Free the memory associated with a \c CXPlatformAvailability structure.
   2820  */
   2821 CINDEX_LINKAGE void
   2822 clang_disposeCXPlatformAvailability(CXPlatformAvailability *availability);
   2823 
   2824 /**
   2825  * \brief Describe the "language" of the entity referred to by a cursor.
   2826  */
   2827 enum CXLanguageKind {
   2828   CXLanguage_Invalid = 0,
   2829   CXLanguage_C,
   2830   CXLanguage_ObjC,
   2831   CXLanguage_CPlusPlus
   2832 };
   2833 
   2834 /**
   2835  * \brief Determine the "language" of the entity referred to by a given cursor.
   2836  */
   2837 CINDEX_LINKAGE enum CXLanguageKind clang_getCursorLanguage(CXCursor cursor);
   2838 
   2839 /**
   2840  * \brief Describe the "thread-local storage (TLS) kind" of the declaration
   2841  * referred to by a cursor.
   2842  */
   2843 enum CXTLSKind {
   2844   CXTLS_None = 0,
   2845   CXTLS_Dynamic,
   2846   CXTLS_Static
   2847 };
   2848 
   2849 /**
   2850  * \brief Determine the "thread-local storage (TLS) kind" of the declaration
   2851  * referred to by a cursor.
   2852  */
   2853 CINDEX_LINKAGE enum CXTLSKind clang_getCursorTLSKind(CXCursor cursor);
   2854 
   2855 /**
   2856  * \brief Returns the translation unit that a cursor originated from.
   2857  */
   2858 CINDEX_LINKAGE CXTranslationUnit clang_Cursor_getTranslationUnit(CXCursor);
   2859 
   2860 /**
   2861  * \brief A fast container representing a set of CXCursors.
   2862  */
   2863 typedef struct CXCursorSetImpl *CXCursorSet;
   2864 
   2865 /**
   2866  * \brief Creates an empty CXCursorSet.
   2867  */
   2868 CINDEX_LINKAGE CXCursorSet clang_createCXCursorSet(void);
   2869 
   2870 /**
   2871  * \brief Disposes a CXCursorSet and releases its associated memory.
   2872  */
   2873 CINDEX_LINKAGE void clang_disposeCXCursorSet(CXCursorSet cset);
   2874 
   2875 /**
   2876  * \brief Queries a CXCursorSet to see if it contains a specific CXCursor.
   2877  *
   2878  * \returns non-zero if the set contains the specified cursor.
   2879 */
   2880 CINDEX_LINKAGE unsigned clang_CXCursorSet_contains(CXCursorSet cset,
   2881                                                    CXCursor cursor);
   2882 
   2883 /**
   2884  * \brief Inserts a CXCursor into a CXCursorSet.
   2885  *
   2886  * \returns zero if the CXCursor was already in the set, and non-zero otherwise.
   2887 */
   2888 CINDEX_LINKAGE unsigned clang_CXCursorSet_insert(CXCursorSet cset,
   2889                                                  CXCursor cursor);
   2890 
   2891 /**
   2892  * \brief Determine the semantic parent of the given cursor.
   2893  *
   2894  * The semantic parent of a cursor is the cursor that semantically contains
   2895  * the given \p cursor. For many declarations, the lexical and semantic parents
   2896  * are equivalent (the lexical parent is returned by
   2897  * \c clang_getCursorLexicalParent()). They diverge when declarations or
   2898  * definitions are provided out-of-line. For example:
   2899  *
   2900  * \code
   2901  * class C {
   2902  *  void f();
   2903  * };
   2904  *
   2905  * void C::f() { }
   2906  * \endcode
   2907  *
   2908  * In the out-of-line definition of \c C::f, the semantic parent is
   2909  * the class \c C, of which this function is a member. The lexical parent is
   2910  * the place where the declaration actually occurs in the source code; in this
   2911  * case, the definition occurs in the translation unit. In general, the
   2912  * lexical parent for a given entity can change without affecting the semantics
   2913  * of the program, and the lexical parent of different declarations of the
   2914  * same entity may be different. Changing the semantic parent of a declaration,
   2915  * on the other hand, can have a major impact on semantics, and redeclarations
   2916  * of a particular entity should all have the same semantic context.
   2917  *
   2918  * In the example above, both declarations of \c C::f have \c C as their
   2919  * semantic context, while the lexical context of the first \c C::f is \c C
   2920  * and the lexical context of the second \c C::f is the translation unit.
   2921  *
   2922  * For global declarations, the semantic parent is the translation unit.
   2923  */
   2924 CINDEX_LINKAGE CXCursor clang_getCursorSemanticParent(CXCursor cursor);
   2925 
   2926 /**
   2927  * \brief Determine the lexical parent of the given cursor.
   2928  *
   2929  * The lexical parent of a cursor is the cursor in which the given \p cursor
   2930  * was actually written. For many declarations, the lexical and semantic parents
   2931  * are equivalent (the semantic parent is returned by
   2932  * \c clang_getCursorSemanticParent()). They diverge when declarations or
   2933  * definitions are provided out-of-line. For example:
   2934  *
   2935  * \code
   2936  * class C {
   2937  *  void f();
   2938  * };
   2939  *
   2940  * void C::f() { }
   2941  * \endcode
   2942  *
   2943  * In the out-of-line definition of \c C::f, the semantic parent is
   2944  * the class \c C, of which this function is a member. The lexical parent is
   2945  * the place where the declaration actually occurs in the source code; in this
   2946  * case, the definition occurs in the translation unit. In general, the
   2947  * lexical parent for a given entity can change without affecting the semantics
   2948  * of the program, and the lexical parent of different declarations of the
   2949  * same entity may be different. Changing the semantic parent of a declaration,
   2950  * on the other hand, can have a major impact on semantics, and redeclarations
   2951  * of a particular entity should all have the same semantic context.
   2952  *
   2953  * In the example above, both declarations of \c C::f have \c C as their
   2954  * semantic context, while the lexical context of the first \c C::f is \c C
   2955  * and the lexical context of the second \c C::f is the translation unit.
   2956  *
   2957  * For declarations written in the global scope, the lexical parent is
   2958  * the translation unit.
   2959  */
   2960 CINDEX_LINKAGE CXCursor clang_getCursorLexicalParent(CXCursor cursor);
   2961 
   2962 /**
   2963  * \brief Determine the set of methods that are overridden by the given
   2964  * method.
   2965  *
   2966  * In both Objective-C and C++, a method (aka virtual member function,
   2967  * in C++) can override a virtual method in a base class. For
   2968  * Objective-C, a method is said to override any method in the class's
   2969  * base class, its protocols, or its categories' protocols, that has the same
   2970  * selector and is of the same kind (class or instance).
   2971  * If no such method exists, the search continues to the class's superclass,
   2972  * its protocols, and its categories, and so on. A method from an Objective-C
   2973  * implementation is considered to override the same methods as its
   2974  * corresponding method in the interface.
   2975  *
   2976  * For C++, a virtual member function overrides any virtual member
   2977  * function with the same signature that occurs in its base
   2978  * classes. With multiple inheritance, a virtual member function can
   2979  * override several virtual member functions coming from different
   2980  * base classes.
   2981  *
   2982  * In all cases, this function determines the immediate overridden
   2983  * method, rather than all of the overridden methods. For example, if
   2984  * a method is originally declared in a class A, then overridden in B
   2985  * (which in inherits from A) and also in C (which inherited from B),
   2986  * then the only overridden method returned from this function when
   2987  * invoked on C's method will be B's method. The client may then
   2988  * invoke this function again, given the previously-found overridden
   2989  * methods, to map out the complete method-override set.
   2990  *
   2991  * \param cursor A cursor representing an Objective-C or C++
   2992  * method. This routine will compute the set of methods that this
   2993  * method overrides.
   2994  *
   2995  * \param overridden A pointer whose pointee will be replaced with a
   2996  * pointer to an array of cursors, representing the set of overridden
   2997  * methods. If there are no overridden methods, the pointee will be
   2998  * set to NULL. The pointee must be freed via a call to
   2999  * \c clang_disposeOverriddenCursors().
   3000  *
   3001  * \param num_overridden A pointer to the number of overridden
   3002  * functions, will be set to the number of overridden functions in the
   3003  * array pointed to by \p overridden.
   3004  */
   3005 CINDEX_LINKAGE void clang_getOverriddenCursors(CXCursor cursor,
   3006                                                CXCursor **overridden,
   3007                                                unsigned *num_overridden);
   3008 
   3009 /**
   3010  * \brief Free the set of overridden cursors returned by \c
   3011  * clang_getOverriddenCursors().
   3012  */
   3013 CINDEX_LINKAGE void clang_disposeOverriddenCursors(CXCursor *overridden);
   3014 
   3015 /**
   3016  * \brief Retrieve the file that is included by the given inclusion directive
   3017  * cursor.
   3018  */
   3019 CINDEX_LINKAGE CXFile clang_getIncludedFile(CXCursor cursor);
   3020 
   3021 /**
   3022  * @}
   3023  */
   3024 
   3025 /**
   3026  * \defgroup CINDEX_CURSOR_SOURCE Mapping between cursors and source code
   3027  *
   3028  * Cursors represent a location within the Abstract Syntax Tree (AST). These
   3029  * routines help map between cursors and the physical locations where the
   3030  * described entities occur in the source code. The mapping is provided in
   3031  * both directions, so one can map from source code to the AST and back.
   3032  *
   3033  * @{
   3034  */
   3035 
   3036 /**
   3037  * \brief Map a source location to the cursor that describes the entity at that
   3038  * location in the source code.
   3039  *
   3040  * clang_getCursor() maps an arbitrary source location within a translation
   3041  * unit down to the most specific cursor that describes the entity at that
   3042  * location. For example, given an expression \c x + y, invoking
   3043  * clang_getCursor() with a source location pointing to "x" will return the
   3044  * cursor for "x"; similarly for "y". If the cursor points anywhere between
   3045  * "x" or "y" (e.g., on the + or the whitespace around it), clang_getCursor()
   3046  * will return a cursor referring to the "+" expression.
   3047  *
   3048  * \returns a cursor representing the entity at the given source location, or
   3049  * a NULL cursor if no such entity can be found.
   3050  */
   3051 CINDEX_LINKAGE CXCursor clang_getCursor(CXTranslationUnit, CXSourceLocation);
   3052 
   3053 /**
   3054  * \brief Retrieve the physical location of the source constructor referenced
   3055  * by the given cursor.
   3056  *
   3057  * The location of a declaration is typically the location of the name of that
   3058  * declaration, where the name of that declaration would occur if it is
   3059  * unnamed, or some keyword that introduces that particular declaration.
   3060  * The location of a reference is where that reference occurs within the
   3061  * source code.
   3062  */
   3063 CINDEX_LINKAGE CXSourceLocation clang_getCursorLocation(CXCursor);
   3064 
   3065 /**
   3066  * \brief Retrieve the physical extent of the source construct referenced by
   3067  * the given cursor.
   3068  *
   3069  * The extent of a cursor starts with the file/line/column pointing at the
   3070  * first character within the source construct that the cursor refers to and
   3071  * ends with the last character within that source construct. For a
   3072  * declaration, the extent covers the declaration itself. For a reference,
   3073  * the extent covers the location of the reference (e.g., where the referenced
   3074  * entity was actually used).
   3075  */
   3076 CINDEX_LINKAGE CXSourceRange clang_getCursorExtent(CXCursor);
   3077 
   3078 /**
   3079  * @}
   3080  */
   3081 
   3082 /**
   3083  * \defgroup CINDEX_TYPES Type information for CXCursors
   3084  *
   3085  * @{
   3086  */
   3087 
   3088 /**
   3089  * \brief Describes the kind of type
   3090  */
   3091 enum CXTypeKind {
   3092   /**
   3093    * \brief Represents an invalid type (e.g., where no type is available).
   3094    */
   3095   CXType_Invalid = 0,
   3096 
   3097   /**
   3098    * \brief A type whose specific kind is not exposed via this
   3099    * interface.
   3100    */
   3101   CXType_Unexposed = 1,
   3102 
   3103   /* Builtin types */
   3104   CXType_Void = 2,
   3105   CXType_Bool = 3,
   3106   CXType_Char_U = 4,
   3107   CXType_UChar = 5,
   3108   CXType_Char16 = 6,
   3109   CXType_Char32 = 7,
   3110   CXType_UShort = 8,
   3111   CXType_UInt = 9,
   3112   CXType_ULong = 10,
   3113   CXType_ULongLong = 11,
   3114   CXType_UInt128 = 12,
   3115   CXType_Char_S = 13,
   3116   CXType_SChar = 14,
   3117   CXType_WChar = 15,
   3118   CXType_Short = 16,
   3119   CXType_Int = 17,
   3120   CXType_Long = 18,
   3121   CXType_LongLong = 19,
   3122   CXType_Int128 = 20,
   3123   CXType_Float = 21,
   3124   CXType_Double = 22,
   3125   CXType_LongDouble = 23,
   3126   CXType_NullPtr = 24,
   3127   CXType_Overload = 25,
   3128   CXType_Dependent = 26,
   3129   CXType_ObjCId = 27,
   3130   CXType_ObjCClass = 28,
   3131   CXType_ObjCSel = 29,
   3132   CXType_Float128 = 30,
   3133   CXType_Half = 31,
   3134   CXType_Float16 = 32,
   3135   CXType_FirstBuiltin = CXType_Void,
   3136   CXType_LastBuiltin  = CXType_Float16,
   3137 
   3138   CXType_Complex = 100,
   3139   CXType_Pointer = 101,
   3140   CXType_BlockPointer = 102,
   3141   CXType_LValueReference = 103,
   3142   CXType_RValueReference = 104,
   3143   CXType_Record = 105,
   3144   CXType_Enum = 106,
   3145   CXType_Typedef = 107,
   3146   CXType_ObjCInterface = 108,
   3147   CXType_ObjCObjectPointer = 109,
   3148   CXType_FunctionNoProto = 110,
   3149   CXType_FunctionProto = 111,
   3150   CXType_ConstantArray = 112,
   3151   CXType_Vector = 113,
   3152   CXType_IncompleteArray = 114,
   3153   CXType_VariableArray = 115,
   3154   CXType_DependentSizedArray = 116,
   3155   CXType_MemberPointer = 117,
   3156   CXType_Auto = 118,
   3157 
   3158   /**
   3159    * \brief Represents a type that was referred to using an elaborated type keyword.
   3160    *
   3161    * E.g., struct S, or via a qualified name, e.g., N::M::type, or both.
   3162    */
   3163   CXType_Elaborated = 119,
   3164 
   3165   /* OpenCL PipeType. */
   3166   CXType_Pipe = 120,
   3167 
   3168   /* OpenCL builtin types. */
   3169   CXType_OCLImage1dRO = 121,
   3170   CXType_OCLImage1dArrayRO = 122,
   3171   CXType_OCLImage1dBufferRO = 123,
   3172   CXType_OCLImage2dRO = 124,
   3173   CXType_OCLImage2dArrayRO = 125,
   3174   CXType_OCLImage2dDepthRO = 126,
   3175   CXType_OCLImage2dArrayDepthRO = 127,
   3176   CXType_OCLImage2dMSAARO = 128,
   3177   CXType_OCLImage2dArrayMSAARO = 129,
   3178   CXType_OCLImage2dMSAADepthRO = 130,
   3179   CXType_OCLImage2dArrayMSAADepthRO = 131,
   3180   CXType_OCLImage3dRO = 132,
   3181   CXType_OCLImage1dWO = 133,
   3182   CXType_OCLImage1dArrayWO = 134,
   3183   CXType_OCLImage1dBufferWO = 135,
   3184   CXType_OCLImage2dWO = 136,
   3185   CXType_OCLImage2dArrayWO = 137,
   3186   CXType_OCLImage2dDepthWO = 138,
   3187   CXType_OCLImage2dArrayDepthWO = 139,
   3188   CXType_OCLImage2dMSAAWO = 140,
   3189   CXType_OCLImage2dArrayMSAAWO = 141,
   3190   CXType_OCLImage2dMSAADepthWO = 142,
   3191   CXType_OCLImage2dArrayMSAADepthWO = 143,
   3192   CXType_OCLImage3dWO = 144,
   3193   CXType_OCLImage1dRW = 145,
   3194   CXType_OCLImage1dArrayRW = 146,
   3195   CXType_OCLImage1dBufferRW = 147,
   3196   CXType_OCLImage2dRW = 148,
   3197   CXType_OCLImage2dArrayRW = 149,
   3198   CXType_OCLImage2dDepthRW = 150,
   3199   CXType_OCLImage2dArrayDepthRW = 151,
   3200   CXType_OCLImage2dMSAARW = 152,
   3201   CXType_OCLImage2dArrayMSAARW = 153,
   3202   CXType_OCLImage2dMSAADepthRW = 154,
   3203   CXType_OCLImage2dArrayMSAADepthRW = 155,
   3204   CXType_OCLImage3dRW = 156,
   3205   CXType_OCLSampler = 157,
   3206   CXType_OCLEvent = 158,
   3207   CXType_OCLQueue = 159,
   3208   CXType_OCLReserveID = 160
   3209 };
   3210 
   3211 /**
   3212  * \brief Describes the calling convention of a function type
   3213  */
   3214 enum CXCallingConv {
   3215   CXCallingConv_Default = 0,
   3216   CXCallingConv_C = 1,
   3217   CXCallingConv_X86StdCall = 2,
   3218   CXCallingConv_X86FastCall = 3,
   3219   CXCallingConv_X86ThisCall = 4,
   3220   CXCallingConv_X86Pascal = 5,
   3221   CXCallingConv_AAPCS = 6,
   3222   CXCallingConv_AAPCS_VFP = 7,
   3223   CXCallingConv_X86RegCall = 8,
   3224   CXCallingConv_IntelOclBicc = 9,
   3225   CXCallingConv_Win64 = 10,
   3226   /* Alias for compatibility with older versions of API. */
   3227   CXCallingConv_X86_64Win64 = CXCallingConv_Win64,
   3228   CXCallingConv_X86_64SysV = 11,
   3229   CXCallingConv_X86VectorCall = 12,
   3230   CXCallingConv_Swift = 13,
   3231   CXCallingConv_PreserveMost = 14,
   3232   CXCallingConv_PreserveAll = 15,
   3233 
   3234   CXCallingConv_Invalid = 100,
   3235   CXCallingConv_Unexposed = 200
   3236 };
   3237 
   3238 /**
   3239  * \brief The type of an element in the abstract syntax tree.
   3240  *
   3241  */
   3242 typedef struct {
   3243   enum CXTypeKind kind;
   3244   void *data[2];
   3245 } CXType;
   3246 
   3247 /**
   3248  * \brief Retrieve the type of a CXCursor (if any).
   3249  */
   3250 CINDEX_LINKAGE CXType clang_getCursorType(CXCursor C);
   3251 
   3252 /**
   3253  * \brief Pretty-print the underlying type using the rules of the
   3254  * language of the translation unit from which it came.
   3255  *
   3256  * If the type is invalid, an empty string is returned.
   3257  */
   3258 CINDEX_LINKAGE CXString clang_getTypeSpelling(CXType CT);
   3259 
   3260 /**
   3261  * \brief Retrieve the underlying type of a typedef declaration.
   3262  *
   3263  * If the cursor does not reference a typedef declaration, an invalid type is
   3264  * returned.
   3265  */
   3266 CINDEX_LINKAGE CXType clang_getTypedefDeclUnderlyingType(CXCursor C);
   3267 
   3268 /**
   3269  * \brief Retrieve the integer type of an enum declaration.
   3270  *
   3271  * If the cursor does not reference an enum declaration, an invalid type is
   3272  * returned.
   3273  */
   3274 CINDEX_LINKAGE CXType clang_getEnumDeclIntegerType(CXCursor C);
   3275 
   3276 /**
   3277  * \brief Retrieve the integer value of an enum constant declaration as a signed
   3278  *  long long.
   3279  *
   3280  * If the cursor does not reference an enum constant declaration, LLONG_MIN is returned.
   3281  * Since this is also potentially a valid constant value, the kind of the cursor
   3282  * must be verified before calling this function.
   3283  */
   3284 CINDEX_LINKAGE long long clang_getEnumConstantDeclValue(CXCursor C);
   3285 
   3286 /**
   3287  * \brief Retrieve the integer value of an enum constant declaration as an unsigned
   3288  *  long long.
   3289  *
   3290  * If the cursor does not reference an enum constant declaration, ULLONG_MAX is returned.
   3291  * Since this is also potentially a valid constant value, the kind of the cursor
   3292  * must be verified before calling this function.
   3293  */
   3294 CINDEX_LINKAGE unsigned long long clang_getEnumConstantDeclUnsignedValue(CXCursor C);
   3295 
   3296 /**
   3297  * \brief Retrieve the bit width of a bit field declaration as an integer.
   3298  *
   3299  * If a cursor that is not a bit field declaration is passed in, -1 is returned.
   3300  */
   3301 CINDEX_LINKAGE int clang_getFieldDeclBitWidth(CXCursor C);
   3302 
   3303 /**
   3304  * \brief Retrieve the number of non-variadic arguments associated with a given
   3305  * cursor.
   3306  *
   3307  * The number of arguments can be determined for calls as well as for
   3308  * declarations of functions or methods. For other cursors -1 is returned.
   3309  */
   3310 CINDEX_LINKAGE int clang_Cursor_getNumArguments(CXCursor C);
   3311 
   3312 /**
   3313  * \brief Retrieve the argument cursor of a function or method.
   3314  *
   3315  * The argument cursor can be determined for calls as well as for declarations
   3316  * of functions or methods. For other cursors and for invalid indices, an
   3317  * invalid cursor is returned.
   3318  */
   3319 CINDEX_LINKAGE CXCursor clang_Cursor_getArgument(CXCursor C, unsigned i);
   3320 
   3321 /**
   3322  * \brief Describes the kind of a template argument.
   3323  *
   3324  * See the definition of llvm::clang::TemplateArgument::ArgKind for full
   3325  * element descriptions.
   3326  */
   3327 enum CXTemplateArgumentKind {
   3328   CXTemplateArgumentKind_Null,
   3329   CXTemplateArgumentKind_Type,
   3330   CXTemplateArgumentKind_Declaration,
   3331   CXTemplateArgumentKind_NullPtr,
   3332   CXTemplateArgumentKind_Integral,
   3333   CXTemplateArgumentKind_Template,
   3334   CXTemplateArgumentKind_TemplateExpansion,
   3335   CXTemplateArgumentKind_Expression,
   3336   CXTemplateArgumentKind_Pack,
   3337   /* Indicates an error case, preventing the kind from being deduced. */
   3338   CXTemplateArgumentKind_Invalid
   3339 };
   3340 
   3341 /**
   3342  *\brief Returns the number of template args of a function decl representing a
   3343  * template specialization.
   3344  *
   3345  * If the argument cursor cannot be converted into a template function
   3346  * declaration, -1 is returned.
   3347  *
   3348  * For example, for the following declaration and specialization:
   3349  *   template <typename T, int kInt, bool kBool>
   3350  *   void foo() { ... }
   3351  *
   3352  *   template <>
   3353  *   void foo<float, -7, true>();
   3354  *
   3355  * The value 3 would be returned from this call.
   3356  */
   3357 CINDEX_LINKAGE int clang_Cursor_getNumTemplateArguments(CXCursor C);
   3358 
   3359 /**
   3360  * \brief Retrieve the kind of the I'th template argument of the CXCursor C.
   3361  *
   3362  * If the argument CXCursor does not represent a FunctionDecl, an invalid
   3363  * template argument kind is returned.
   3364  *
   3365  * For example, for the following declaration and specialization:
   3366  *   template <typename T, int kInt, bool kBool>
   3367  *   void foo() { ... }
   3368  *
   3369  *   template <>
   3370  *   void foo<float, -7, true>();
   3371  *
   3372  * For I = 0, 1, and 2, Type, Integral, and Integral will be returned,
   3373  * respectively.
   3374  */
   3375 CINDEX_LINKAGE enum CXTemplateArgumentKind clang_Cursor_getTemplateArgumentKind(
   3376     CXCursor C, unsigned I);
   3377 
   3378 /**
   3379  * \brief Retrieve a CXType representing the type of a TemplateArgument of a
   3380  *  function decl representing a template specialization.
   3381  *
   3382  * If the argument CXCursor does not represent a FunctionDecl whose I'th
   3383  * template argument has a kind of CXTemplateArgKind_Integral, an invalid type
   3384  * is returned.
   3385  *
   3386  * For example, for the following declaration and specialization:
   3387  *   template <typename T, int kInt, bool kBool>
   3388  *   void foo() { ... }
   3389  *
   3390  *   template <>
   3391  *   void foo<float, -7, true>();
   3392  *
   3393  * If called with I = 0, "float", will be returned.
   3394  * Invalid types will be returned for I == 1 or 2.
   3395  */
   3396 CINDEX_LINKAGE CXType clang_Cursor_getTemplateArgumentType(CXCursor C,
   3397                                                            unsigned I);
   3398 
   3399 /**
   3400  * \brief Retrieve the value of an Integral TemplateArgument (of a function
   3401  *  decl representing a template specialization) as a signed long long.
   3402  *
   3403  * It is undefined to call this function on a CXCursor that does not represent a
   3404  * FunctionDecl or whose I'th template argument is not an integral value.
   3405  *
   3406  * For example, for the following declaration and specialization:
   3407  *   template <typename T, int kInt, bool kBool>
   3408  *   void foo() { ... }
   3409  *
   3410  *   template <>
   3411  *   void foo<float, -7, true>();
   3412  *
   3413  * If called with I = 1 or 2, -7 or true will be returned, respectively.
   3414  * For I == 0, this function's behavior is undefined.
   3415  */
   3416 CINDEX_LINKAGE long long clang_Cursor_getTemplateArgumentValue(CXCursor C,
   3417                                                                unsigned I);
   3418 
   3419 /**
   3420  * \brief Retrieve the value of an Integral TemplateArgument (of a function
   3421  *  decl representing a template specialization) as an unsigned long long.
   3422  *
   3423  * It is undefined to call this function on a CXCursor that does not represent a
   3424  * FunctionDecl or whose I'th template argument is not an integral value.
   3425  *
   3426  * For example, for the following declaration and specialization:
   3427  *   template <typename T, int kInt, bool kBool>
   3428  *   void foo() { ... }
   3429  *
   3430  *   template <>
   3431  *   void foo<float, 2147483649, true>();
   3432  *
   3433  * If called with I = 1 or 2, 2147483649 or true will be returned, respectively.
   3434  * For I == 0, this function's behavior is undefined.
   3435  */
   3436 CINDEX_LINKAGE unsigned long long clang_Cursor_getTemplateArgumentUnsignedValue(
   3437     CXCursor C, unsigned I);
   3438 
   3439 /**
   3440  * \brief Determine whether two CXTypes represent the same type.
   3441  *
   3442  * \returns non-zero if the CXTypes represent the same type and
   3443  *          zero otherwise.
   3444  */
   3445 CINDEX_LINKAGE unsigned clang_equalTypes(CXType A, CXType B);
   3446 
   3447 /**
   3448  * \brief Return the canonical type for a CXType.
   3449  *
   3450  * Clang's type system explicitly models typedefs and all the ways
   3451  * a specific type can be represented.  The canonical type is the underlying
   3452  * type with all the "sugar" removed.  For example, if 'T' is a typedef
   3453  * for 'int', the canonical type for 'T' would be 'int'.
   3454  */
   3455 CINDEX_LINKAGE CXType clang_getCanonicalType(CXType T);
   3456 
   3457 /**
   3458  * \brief Determine whether a CXType has the "const" qualifier set,
   3459  * without looking through typedefs that may have added "const" at a
   3460  * different level.
   3461  */
   3462 CINDEX_LINKAGE unsigned clang_isConstQualifiedType(CXType T);
   3463 
   3464 /**
   3465  * \brief Determine whether a  CXCursor that is a macro, is
   3466  * function like.
   3467  */
   3468 CINDEX_LINKAGE unsigned clang_Cursor_isMacroFunctionLike(CXCursor C);
   3469 
   3470 /**
   3471  * \brief Determine whether a  CXCursor that is a macro, is a
   3472  * builtin one.
   3473  */
   3474 CINDEX_LINKAGE unsigned clang_Cursor_isMacroBuiltin(CXCursor C);
   3475 
   3476 /**
   3477  * \brief Determine whether a  CXCursor that is a function declaration, is an
   3478  * inline declaration.
   3479  */
   3480 CINDEX_LINKAGE unsigned clang_Cursor_isFunctionInlined(CXCursor C);
   3481 
   3482 /**
   3483  * \brief Determine whether a CXType has the "volatile" qualifier set,
   3484  * without looking through typedefs that may have added "volatile" at
   3485  * a different level.
   3486  */
   3487 CINDEX_LINKAGE unsigned clang_isVolatileQualifiedType(CXType T);
   3488 
   3489 /**
   3490  * \brief Determine whether a CXType has the "restrict" qualifier set,
   3491  * without looking through typedefs that may have added "restrict" at a
   3492  * different level.
   3493  */
   3494 CINDEX_LINKAGE unsigned clang_isRestrictQualifiedType(CXType T);
   3495 
   3496 /**
   3497  * \brief Returns the address space of the given type.
   3498  */
   3499 CINDEX_LINKAGE unsigned clang_getAddressSpace(CXType T);
   3500 
   3501 /**
   3502  * \brief Returns the typedef name of the given type.
   3503  */
   3504 CINDEX_LINKAGE CXString clang_getTypedefName(CXType CT);
   3505 
   3506 /**
   3507  * \brief For pointer types, returns the type of the pointee.
   3508  */
   3509 CINDEX_LINKAGE CXType clang_getPointeeType(CXType T);
   3510 
   3511 /**
   3512  * \brief Return the cursor for the declaration of the given type.
   3513  */
   3514 CINDEX_LINKAGE CXCursor clang_getTypeDeclaration(CXType T);
   3515 
   3516 /**
   3517  * Returns the Objective-C type encoding for the specified declaration.
   3518  */
   3519 CINDEX_LINKAGE CXString clang_getDeclObjCTypeEncoding(CXCursor C);
   3520 
   3521 /**
   3522  * Returns the Objective-C type encoding for the specified CXType.
   3523  */
   3524 CINDEX_LINKAGE CXString clang_Type_getObjCEncoding(CXType type);
   3525 
   3526 /**
   3527  * \brief Retrieve the spelling of a given CXTypeKind.
   3528  */
   3529 CINDEX_LINKAGE CXString clang_getTypeKindSpelling(enum CXTypeKind K);
   3530 
   3531 /**
   3532  * \brief Retrieve the calling convention associated with a function type.
   3533  *
   3534  * If a non-function type is passed in, CXCallingConv_Invalid is returned.
   3535  */
   3536 CINDEX_LINKAGE enum CXCallingConv clang_getFunctionTypeCallingConv(CXType T);
   3537 
   3538 /**
   3539  * \brief Retrieve the return type associated with a function type.
   3540  *
   3541  * If a non-function type is passed in, an invalid type is returned.
   3542  */
   3543 CINDEX_LINKAGE CXType clang_getResultType(CXType T);
   3544 
   3545 /**
   3546  * \brief Retrieve the exception specification type associated with a function type.
   3547  *
   3548  * If a non-function type is passed in, an error code of -1 is returned.
   3549  */
   3550 CINDEX_LINKAGE int clang_getExceptionSpecificationType(CXType T);
   3551 
   3552 /**
   3553  * \brief Retrieve the number of non-variadic parameters associated with a
   3554  * function type.
   3555  *
   3556  * If a non-function type is passed in, -1 is returned.
   3557  */
   3558 CINDEX_LINKAGE int clang_getNumArgTypes(CXType T);
   3559 
   3560 /**
   3561  * \brief Retrieve the type of a parameter of a function type.
   3562  *
   3563  * If a non-function type is passed in or the function does not have enough
   3564  * parameters, an invalid type is returned.
   3565  */
   3566 CINDEX_LINKAGE CXType clang_getArgType(CXType T, unsigned i);
   3567 
   3568 /**
   3569  * \brief Return 1 if the CXType is a variadic function type, and 0 otherwise.
   3570  */
   3571 CINDEX_LINKAGE unsigned clang_isFunctionTypeVariadic(CXType T);
   3572 
   3573 /**
   3574  * \brief Retrieve the return type associated with a given cursor.
   3575  *
   3576  * This only returns a valid type if the cursor refers to a function or method.
   3577  */
   3578 CINDEX_LINKAGE CXType clang_getCursorResultType(CXCursor C);
   3579 
   3580 /**
   3581  * \brief Retrieve the exception specification type associated with a given cursor.
   3582  *
   3583  * This only returns a valid result if the cursor refers to a function or method.
   3584  */
   3585 CINDEX_LINKAGE int clang_getCursorExceptionSpecificationType(CXCursor C);
   3586 
   3587 /**
   3588  * \brief Return 1 if the CXType is a POD (plain old data) type, and 0
   3589  *  otherwise.
   3590  */
   3591 CINDEX_LINKAGE unsigned clang_isPODType(CXType T);
   3592 
   3593 /**
   3594  * \brief Return the element type of an array, complex, or vector type.
   3595  *
   3596  * If a type is passed in that is not an array, complex, or vector type,
   3597  * an invalid type is returned.
   3598  */
   3599 CINDEX_LINKAGE CXType clang_getElementType(CXType T);
   3600 
   3601 /**
   3602  * \brief Return the number of elements of an array or vector type.
   3603  *
   3604  * If a type is passed in that is not an array or vector type,
   3605  * -1 is returned.
   3606  */
   3607 CINDEX_LINKAGE long long clang_getNumElements(CXType T);
   3608 
   3609 /**
   3610  * \brief Return the element type of an array type.
   3611  *
   3612  * If a non-array type is passed in, an invalid type is returned.
   3613  */
   3614 CINDEX_LINKAGE CXType clang_getArrayElementType(CXType T);
   3615 
   3616 /**
   3617  * \brief Return the array size of a constant array.
   3618  *
   3619  * If a non-array type is passed in, -1 is returned.
   3620  */
   3621 CINDEX_LINKAGE long long clang_getArraySize(CXType T);
   3622 
   3623 /**
   3624  * \brief Retrieve the type named by the qualified-id.
   3625  *
   3626  * If a non-elaborated type is passed in, an invalid type is returned.
   3627  */
   3628 CINDEX_LINKAGE CXType clang_Type_getNamedType(CXType T);
   3629 
   3630 /**
   3631  * \brief Determine if a typedef is 'transparent' tag.
   3632  *
   3633  * A typedef is considered 'transparent' if it shares a name and spelling
   3634  * location with its underlying tag type, as is the case with the NS_ENUM macro.
   3635  *
   3636  * \returns non-zero if transparent and zero otherwise.
   3637  */
   3638 CINDEX_LINKAGE unsigned clang_Type_isTransparentTagTypedef(CXType T);
   3639 
   3640 /**
   3641  * \brief List the possible error codes for \c clang_Type_getSizeOf,
   3642  *   \c clang_Type_getAlignOf, \c clang_Type_getOffsetOf and
   3643  *   \c clang_Cursor_getOffsetOf.
   3644  *
   3645  * A value of this enumeration type can be returned if the target type is not
   3646  * a valid argument to sizeof, alignof or offsetof.
   3647  */
   3648 enum CXTypeLayoutError {
   3649   /**
   3650    * \brief Type is of kind CXType_Invalid.
   3651    */
   3652   CXTypeLayoutError_Invalid = -1,
   3653   /**
   3654    * \brief The type is an incomplete Type.
   3655    */
   3656   CXTypeLayoutError_Incomplete = -2,
   3657   /**
   3658    * \brief The type is a dependent Type.
   3659    */
   3660   CXTypeLayoutError_Dependent = -3,
   3661   /**
   3662    * \brief The type is not a constant size type.
   3663    */
   3664   CXTypeLayoutError_NotConstantSize = -4,
   3665   /**
   3666    * \brief The Field name is not valid for this record.
   3667    */
   3668   CXTypeLayoutError_InvalidFieldName = -5
   3669 };
   3670 
   3671 /**
   3672  * \brief Return the alignment of a type in bytes as per C++[expr.alignof]
   3673  *   standard.
   3674  *
   3675  * If the type declaration is invalid, CXTypeLayoutError_Invalid is returned.
   3676  * If the type declaration is an incomplete type, CXTypeLayoutError_Incomplete
   3677  *   is returned.
   3678  * If the type declaration is a dependent type, CXTypeLayoutError_Dependent is
   3679  *   returned.
   3680  * If the type declaration is not a constant size type,
   3681  *   CXTypeLayoutError_NotConstantSize is returned.
   3682  */
   3683 CINDEX_LINKAGE long long clang_Type_getAlignOf(CXType T);
   3684 
   3685 /**
   3686  * \brief Return the class type of an member pointer type.
   3687  *
   3688  * If a non-member-pointer type is passed in, an invalid type is returned.
   3689  */
   3690 CINDEX_LINKAGE CXType clang_Type_getClassType(CXType T);
   3691 
   3692 /**
   3693  * \brief Return the size of a type in bytes as per C++[expr.sizeof] standard.
   3694  *
   3695  * If the type declaration is invalid, CXTypeLayoutError_Invalid is returned.
   3696  * If the type declaration is an incomplete type, CXTypeLayoutError_Incomplete
   3697  *   is returned.
   3698  * If the type declaration is a dependent type, CXTypeLayoutError_Dependent is
   3699  *   returned.
   3700  */
   3701 CINDEX_LINKAGE long long clang_Type_getSizeOf(CXType T);
   3702 
   3703 /**
   3704  * \brief Return the offset of a field named S in a record of type T in bits
   3705  *   as it would be returned by __offsetof__ as per C++11[18.2p4]
   3706  *
   3707  * If the cursor is not a record field declaration, CXTypeLayoutError_Invalid
   3708  *   is returned.
   3709  * If the field's type declaration is an incomplete type,
   3710  *   CXTypeLayoutError_Incomplete is returned.
   3711  * If the field's type declaration is a dependent type,
   3712  *   CXTypeLayoutError_Dependent is returned.
   3713  * If the field's name S is not found,
   3714  *   CXTypeLayoutError_InvalidFieldName is returned.
   3715  */
   3716 CINDEX_LINKAGE long long clang_Type_getOffsetOf(CXType T, const char *S);
   3717 
   3718 /**
   3719  * \brief Return the offset of the field represented by the Cursor.
   3720  *
   3721  * If the cursor is not a field declaration, -1 is returned.
   3722  * If the cursor semantic parent is not a record field declaration,
   3723  *   CXTypeLayoutError_Invalid is returned.
   3724  * If the field's type declaration is an incomplete type,
   3725  *   CXTypeLayoutError_Incomplete is returned.
   3726  * If the field's type declaration is a dependent type,
   3727  *   CXTypeLayoutError_Dependent is returned.
   3728  * If the field's name S is not found,
   3729  *   CXTypeLayoutError_InvalidFieldName is returned.
   3730  */
   3731 CINDEX_LINKAGE long long clang_Cursor_getOffsetOfField(CXCursor C);
   3732 
   3733 /**
   3734  * \brief Determine whether the given cursor represents an anonymous record
   3735  * declaration.
   3736  */
   3737 CINDEX_LINKAGE unsigned clang_Cursor_isAnonymous(CXCursor C);
   3738 
   3739 enum CXRefQualifierKind {
   3740   /** \brief No ref-qualifier was provided. */
   3741   CXRefQualifier_None = 0,
   3742   /** \brief An lvalue ref-qualifier was provided (\c &). */
   3743   CXRefQualifier_LValue,
   3744   /** \brief An rvalue ref-qualifier was provided (\c &&). */
   3745   CXRefQualifier_RValue
   3746 };
   3747 
   3748 /**
   3749  * \brief Returns the number of template arguments for given template
   3750  * specialization, or -1 if type \c T is not a template specialization.
   3751  */
   3752 CINDEX_LINKAGE int clang_Type_getNumTemplateArguments(CXType T);
   3753 
   3754 /**
   3755  * \brief Returns the type template argument of a template class specialization
   3756  * at given index.
   3757  *
   3758  * This function only returns template type arguments and does not handle
   3759  * template template arguments or variadic packs.
   3760  */
   3761 CINDEX_LINKAGE CXType clang_Type_getTemplateArgumentAsType(CXType T, unsigned i);
   3762 
   3763 /**
   3764  * \brief Retrieve the ref-qualifier kind of a function or method.
   3765  *
   3766  * The ref-qualifier is returned for C++ functions or methods. For other types
   3767  * or non-C++ declarations, CXRefQualifier_None is returned.
   3768  */
   3769 CINDEX_LINKAGE enum CXRefQualifierKind clang_Type_getCXXRefQualifier(CXType T);
   3770 
   3771 /**
   3772  * \brief Returns non-zero if the cursor specifies a Record member that is a
   3773  *   bitfield.
   3774  */
   3775 CINDEX_LINKAGE unsigned clang_Cursor_isBitField(CXCursor C);
   3776 
   3777 /**
   3778  * \brief Returns 1 if the base class specified by the cursor with kind
   3779  *   CX_CXXBaseSpecifier is virtual.
   3780  */
   3781 CINDEX_LINKAGE unsigned clang_isVirtualBase(CXCursor);
   3782 
   3783 /**
   3784  * \brief Represents the C++ access control level to a base class for a
   3785  * cursor with kind CX_CXXBaseSpecifier.
   3786  */
   3787 enum CX_CXXAccessSpecifier {
   3788   CX_CXXInvalidAccessSpecifier,
   3789   CX_CXXPublic,
   3790   CX_CXXProtected,
   3791   CX_CXXPrivate
   3792 };
   3793 
   3794 /**
   3795  * \brief Returns the access control level for the referenced object.
   3796  *
   3797  * If the cursor refers to a C++ declaration, its access control level within its
   3798  * parent scope is returned. Otherwise, if the cursor refers to a base specifier or
   3799  * access specifier, the specifier itself is returned.
   3800  */
   3801 CINDEX_LINKAGE enum CX_CXXAccessSpecifier clang_getCXXAccessSpecifier(CXCursor);
   3802 
   3803 /**
   3804  * \brief Represents the storage classes as declared in the source. CX_SC_Invalid
   3805  * was added for the case that the passed cursor in not a declaration.
   3806  */
   3807 enum CX_StorageClass {
   3808   CX_SC_Invalid,
   3809   CX_SC_None,
   3810   CX_SC_Extern,
   3811   CX_SC_Static,
   3812   CX_SC_PrivateExtern,
   3813   CX_SC_OpenCLWorkGroupLocal,
   3814   CX_SC_Auto,
   3815   CX_SC_Register
   3816 };
   3817 
   3818 /**
   3819  * \brief Returns the storage class for a function or variable declaration.
   3820  *
   3821  * If the passed in Cursor is not a function or variable declaration,
   3822  * CX_SC_Invalid is returned else the storage class.
   3823  */
   3824 CINDEX_LINKAGE enum CX_StorageClass clang_Cursor_getStorageClass(CXCursor);
   3825 
   3826 /**
   3827  * \brief Determine the number of overloaded declarations referenced by a
   3828  * \c CXCursor_OverloadedDeclRef cursor.
   3829  *
   3830  * \param cursor The cursor whose overloaded declarations are being queried.
   3831  *
   3832  * \returns The number of overloaded declarations referenced by \c cursor. If it
   3833  * is not a \c CXCursor_OverloadedDeclRef cursor, returns 0.
   3834  */
   3835 CINDEX_LINKAGE unsigned clang_getNumOverloadedDecls(CXCursor cursor);
   3836 
   3837 /**
   3838  * \brief Retrieve a cursor for one of the overloaded declarations referenced
   3839  * by a \c CXCursor_OverloadedDeclRef cursor.
   3840  *
   3841  * \param cursor The cursor whose overloaded declarations are being queried.
   3842  *
   3843  * \param index The zero-based index into the set of overloaded declarations in
   3844  * the cursor.
   3845  *
   3846  * \returns A cursor representing the declaration referenced by the given
   3847  * \c cursor at the specified \c index. If the cursor does not have an
   3848  * associated set of overloaded declarations, or if the index is out of bounds,
   3849  * returns \c clang_getNullCursor();
   3850  */
   3851 CINDEX_LINKAGE CXCursor clang_getOverloadedDecl(CXCursor cursor,
   3852                                                 unsigned index);
   3853 
   3854 /**
   3855  * @}
   3856  */
   3857 
   3858 /**
   3859  * \defgroup CINDEX_ATTRIBUTES Information for attributes
   3860  *
   3861  * @{
   3862  */
   3863 
   3864 /**
   3865  * \brief For cursors representing an iboutletcollection attribute,
   3866  *  this function returns the collection element type.
   3867  *
   3868  */
   3869 CINDEX_LINKAGE CXType clang_getIBOutletCollectionType(CXCursor);
   3870 
   3871 /**
   3872  * @}
   3873  */
   3874 
   3875 /**
   3876  * \defgroup CINDEX_CURSOR_TRAVERSAL Traversing the AST with cursors
   3877  *
   3878  * These routines provide the ability to traverse the abstract syntax tree
   3879  * using cursors.
   3880  *
   3881  * @{
   3882  */
   3883 
   3884 /**
   3885  * \brief Describes how the traversal of the children of a particular
   3886  * cursor should proceed after visiting a particular child cursor.
   3887  *
   3888  * A value of this enumeration type should be returned by each
   3889  * \c CXCursorVisitor to indicate how clang_visitChildren() proceed.
   3890  */
   3891 enum CXChildVisitResult {
   3892   /**
   3893    * \brief Terminates the cursor traversal.
   3894    */
   3895   CXChildVisit_Break,
   3896   /**
   3897    * \brief Continues the cursor traversal with the next sibling of
   3898    * the cursor just visited, without visiting its children.
   3899    */
   3900   CXChildVisit_Continue,
   3901   /**
   3902    * \brief Recursively traverse the children of this cursor, using
   3903    * the same visitor and client data.
   3904    */
   3905   CXChildVisit_Recurse
   3906 };
   3907 
   3908 /**
   3909  * \brief Visitor invoked for each cursor found by a traversal.
   3910  *
   3911  * This visitor function will be invoked for each cursor found by
   3912  * clang_visitCursorChildren(). Its first argument is the cursor being
   3913  * visited, its second argument is the parent visitor for that cursor,
   3914  * and its third argument is the client data provided to
   3915  * clang_visitCursorChildren().
   3916  *
   3917  * The visitor should return one of the \c CXChildVisitResult values
   3918  * to direct clang_visitCursorChildren().
   3919  */
   3920 typedef enum CXChildVisitResult (*CXCursorVisitor)(CXCursor cursor,
   3921                                                    CXCursor parent,
   3922                                                    CXClientData client_data);
   3923 
   3924 /**
   3925  * \brief Visit the children of a particular cursor.
   3926  *
   3927  * This function visits all the direct children of the given cursor,
   3928  * invoking the given \p visitor function with the cursors of each
   3929  * visited child. The traversal may be recursive, if the visitor returns
   3930  * \c CXChildVisit_Recurse. The traversal may also be ended prematurely, if
   3931  * the visitor returns \c CXChildVisit_Break.
   3932  *
   3933  * \param parent the cursor whose child may be visited. All kinds of
   3934  * cursors can be visited, including invalid cursors (which, by
   3935  * definition, have no children).
   3936  *
   3937  * \param visitor the visitor function that will be invoked for each
   3938  * child of \p parent.
   3939  *
   3940  * \param client_data pointer data supplied by the client, which will
   3941  * be passed to the visitor each time it is invoked.
   3942  *
   3943  * \returns a non-zero value if the traversal was terminated
   3944  * prematurely by the visitor returning \c CXChildVisit_Break.
   3945  */
   3946 CINDEX_LINKAGE unsigned clang_visitChildren(CXCursor parent,
   3947                                             CXCursorVisitor visitor,
   3948                                             CXClientData client_data);
   3949 #ifdef __has_feature
   3950 #  if __has_feature(blocks)
   3951 /**
   3952  * \brief Visitor invoked for each cursor found by a traversal.
   3953  *
   3954  * This visitor block will be invoked for each cursor found by
   3955  * clang_visitChildrenWithBlock(). Its first argument is the cursor being
   3956  * visited, its second argument is the parent visitor for that cursor.
   3957  *
   3958  * The visitor should return one of the \c CXChildVisitResult values
   3959  * to direct clang_visitChildrenWithBlock().
   3960  */
   3961 typedef enum CXChildVisitResult
   3962      (^CXCursorVisitorBlock)(CXCursor cursor, CXCursor parent);
   3963 
   3964 /**
   3965  * Visits the children of a cursor using the specified block.  Behaves
   3966  * identically to clang_visitChildren() in all other respects.
   3967  */
   3968 CINDEX_LINKAGE unsigned clang_visitChildrenWithBlock(CXCursor parent,
   3969                                                     CXCursorVisitorBlock block);
   3970 #  endif
   3971 #endif
   3972 
   3973 /**
   3974  * @}
   3975  */
   3976 
   3977 /**
   3978  * \defgroup CINDEX_CURSOR_XREF Cross-referencing in the AST
   3979  *
   3980  * These routines provide the ability to determine references within and
   3981  * across translation units, by providing the names of the entities referenced
   3982  * by cursors, follow reference cursors to the declarations they reference,
   3983  * and associate declarations with their definitions.
   3984  *
   3985  * @{
   3986  */
   3987 
   3988 /**
   3989  * \brief Retrieve a Unified Symbol Resolution (USR) for the entity referenced
   3990  * by the given cursor.
   3991  *
   3992  * A Unified Symbol Resolution (USR) is a string that identifies a particular
   3993  * entity (function, class, variable, etc.) within a program. USRs can be
   3994  * compared across translation units to determine, e.g., when references in
   3995  * one translation refer to an entity defined in another translation unit.
   3996  */
   3997 CINDEX_LINKAGE CXString clang_getCursorUSR(CXCursor);
   3998 
   3999 /**
   4000  * \brief Construct a USR for a specified Objective-C class.
   4001  */
   4002 CINDEX_LINKAGE CXString clang_constructUSR_ObjCClass(const char *class_name);
   4003 
   4004 /**
   4005  * \brief Construct a USR for a specified Objective-C category.
   4006  */
   4007 CINDEX_LINKAGE CXString
   4008   clang_constructUSR_ObjCCategory(const char *class_name,
   4009                                  const char *category_name);
   4010 
   4011 /**
   4012  * \brief Construct a USR for a specified Objective-C protocol.
   4013  */
   4014 CINDEX_LINKAGE CXString
   4015   clang_constructUSR_ObjCProtocol(const char *protocol_name);
   4016 
   4017 /**
   4018  * \brief Construct a USR for a specified Objective-C instance variable and
   4019  *   the USR for its containing class.
   4020  */
   4021 CINDEX_LINKAGE CXString clang_constructUSR_ObjCIvar(const char *name,
   4022                                                     CXString classUSR);
   4023 
   4024 /**
   4025  * \brief Construct a USR for a specified Objective-C method and
   4026  *   the USR for its containing class.
   4027  */
   4028 CINDEX_LINKAGE CXString clang_constructUSR_ObjCMethod(const char *name,
   4029                                                       unsigned isInstanceMethod,
   4030                                                       CXString classUSR);
   4031 
   4032 /**
   4033  * \brief Construct a USR for a specified Objective-C property and the USR
   4034  *  for its containing class.
   4035  */
   4036 CINDEX_LINKAGE CXString clang_constructUSR_ObjCProperty(const char *property,
   4037                                                         CXString classUSR);
   4038 
   4039 /**
   4040  * \brief Retrieve a name for the entity referenced by this cursor.
   4041  */
   4042 CINDEX_LINKAGE CXString clang_getCursorSpelling(CXCursor);
   4043 
   4044 /**
   4045  * \brief Retrieve a range for a piece that forms the cursors spelling name.
   4046  * Most of the times there is only one range for the complete spelling but for
   4047  * Objective-C methods and Objective-C message expressions, there are multiple
   4048  * pieces for each selector identifier.
   4049  *
   4050  * \param pieceIndex the index of the spelling name piece. If this is greater
   4051  * than the actual number of pieces, it will return a NULL (invalid) range.
   4052  *
   4053  * \param options Reserved.
   4054  */
   4055 CINDEX_LINKAGE CXSourceRange clang_Cursor_getSpellingNameRange(CXCursor,
   4056                                                           unsigned pieceIndex,
   4057                                                           unsigned options);
   4058 
   4059 /**
   4060  * \brief Retrieve the display name for the entity referenced by this cursor.
   4061  *
   4062  * The display name contains extra information that helps identify the cursor,
   4063  * such as the parameters of a function or template or the arguments of a
   4064  * class template specialization.
   4065  */
   4066 CINDEX_LINKAGE CXString clang_getCursorDisplayName(CXCursor);
   4067 
   4068 /** \brief For a cursor that is a reference, retrieve a cursor representing the
   4069  * entity that it references.
   4070  *
   4071  * Reference cursors refer to other entities in the AST. For example, an
   4072  * Objective-C superclass reference cursor refers to an Objective-C class.
   4073  * This function produces the cursor for the Objective-C class from the
   4074  * cursor for the superclass reference. If the input cursor is a declaration or
   4075  * definition, it returns that declaration or definition unchanged.
   4076  * Otherwise, returns the NULL cursor.
   4077  */
   4078 CINDEX_LINKAGE CXCursor clang_getCursorReferenced(CXCursor);
   4079 
   4080 /**
   4081  *  \brief For a cursor that is either a reference to or a declaration
   4082  *  of some entity, retrieve a cursor that describes the definition of
   4083  *  that entity.
   4084  *
   4085  *  Some entities can be declared multiple times within a translation
   4086  *  unit, but only one of those declarations can also be a
   4087  *  definition. For example, given:
   4088  *
   4089  *  \code
   4090  *  int f(int, int);
   4091  *  int g(int x, int y) { return f(x, y); }
   4092  *  int f(int a, int b) { return a + b; }
   4093  *  int f(int, int);
   4094  *  \endcode
   4095  *
   4096  *  there are three declarations of the function "f", but only the
   4097  *  second one is a definition. The clang_getCursorDefinition()
   4098  *  function will take any cursor pointing to a declaration of "f"
   4099  *  (the first or fourth lines of the example) or a cursor referenced
   4100  *  that uses "f" (the call to "f' inside "g") and will return a
   4101  *  declaration cursor pointing to the definition (the second "f"
   4102  *  declaration).
   4103  *
   4104  *  If given a cursor for which there is no corresponding definition,
   4105  *  e.g., because there is no definition of that entity within this
   4106  *  translation unit, returns a NULL cursor.
   4107  */
   4108 CINDEX_LINKAGE CXCursor clang_getCursorDefinition(CXCursor);
   4109 
   4110 /**
   4111  * \brief Determine whether the declaration pointed to by this cursor
   4112  * is also a definition of that entity.
   4113  */
   4114 CINDEX_LINKAGE unsigned clang_isCursorDefinition(CXCursor);
   4115 
   4116 /**
   4117  * \brief Retrieve the canonical cursor corresponding to the given cursor.
   4118  *
   4119  * In the C family of languages, many kinds of entities can be declared several
   4120  * times within a single translation unit. For example, a structure type can
   4121  * be forward-declared (possibly multiple times) and later defined:
   4122  *
   4123  * \code
   4124  * struct X;
   4125  * struct X;
   4126  * struct X {
   4127  *   int member;
   4128  * };
   4129  * \endcode
   4130  *
   4131  * The declarations and the definition of \c X are represented by three
   4132  * different cursors, all of which are declarations of the same underlying
   4133  * entity. One of these cursor is considered the "canonical" cursor, which
   4134  * is effectively the representative for the underlying entity. One can
   4135  * determine if two cursors are declarations of the same underlying entity by
   4136  * comparing their canonical cursors.
   4137  *
   4138  * \returns The canonical cursor for the entity referred to by the given cursor.
   4139  */
   4140 CINDEX_LINKAGE CXCursor clang_getCanonicalCursor(CXCursor);
   4141 
   4142 /**
   4143  * \brief If the cursor points to a selector identifier in an Objective-C
   4144  * method or message expression, this returns the selector index.
   4145  *
   4146  * After getting a cursor with #clang_getCursor, this can be called to
   4147  * determine if the location points to a selector identifier.
   4148  *
   4149  * \returns The selector index if the cursor is an Objective-C method or message
   4150  * expression and the cursor is pointing to a selector identifier, or -1
   4151  * otherwise.
   4152  */
   4153 CINDEX_LINKAGE int clang_Cursor_getObjCSelectorIndex(CXCursor);
   4154 
   4155 /**
   4156  * \brief Given a cursor pointing to a C++ method call or an Objective-C
   4157  * message, returns non-zero if the method/message is "dynamic", meaning:
   4158  *
   4159  * For a C++ method: the call is virtual.
   4160  * For an Objective-C message: the receiver is an object instance, not 'super'
   4161  * or a specific class.
   4162  *
   4163  * If the method/message is "static" or the cursor does not point to a
   4164  * method/message, it will return zero.
   4165  */
   4166 CINDEX_LINKAGE int clang_Cursor_isDynamicCall(CXCursor C);
   4167 
   4168 /**
   4169  * \brief Given a cursor pointing to an Objective-C message or property
   4170  * reference, or C++ method call, returns the CXType of the receiver.
   4171  */
   4172 CINDEX_LINKAGE CXType clang_Cursor_getReceiverType(CXCursor C);
   4173 
   4174 /**
   4175  * \brief Property attributes for a \c CXCursor_ObjCPropertyDecl.
   4176  */
   4177 typedef enum {
   4178   CXObjCPropertyAttr_noattr    = 0x00,
   4179   CXObjCPropertyAttr_readonly  = 0x01,
   4180   CXObjCPropertyAttr_getter    = 0x02,
   4181   CXObjCPropertyAttr_assign    = 0x04,
   4182   CXObjCPropertyAttr_readwrite = 0x08,
   4183   CXObjCPropertyAttr_retain    = 0x10,
   4184   CXObjCPropertyAttr_copy      = 0x20,
   4185   CXObjCPropertyAttr_nonatomic = 0x40,
   4186   CXObjCPropertyAttr_setter    = 0x80,
   4187   CXObjCPropertyAttr_atomic    = 0x100,
   4188   CXObjCPropertyAttr_weak      = 0x200,
   4189   CXObjCPropertyAttr_strong    = 0x400,
   4190   CXObjCPropertyAttr_unsafe_unretained = 0x800,
   4191   CXObjCPropertyAttr_class = 0x1000
   4192 } CXObjCPropertyAttrKind;
   4193 
   4194 /**
   4195  * \brief Given a cursor that represents a property declaration, return the
   4196  * associated property attributes. The bits are formed from
   4197  * \c CXObjCPropertyAttrKind.
   4198  *
   4199  * \param reserved Reserved for future use, pass 0.
   4200  */
   4201 CINDEX_LINKAGE unsigned clang_Cursor_getObjCPropertyAttributes(CXCursor C,
   4202                                                              unsigned reserved);
   4203 
   4204 /**
   4205  * \brief 'Qualifiers' written next to the return and parameter types in
   4206  * Objective-C method declarations.
   4207  */
   4208 typedef enum {
   4209   CXObjCDeclQualifier_None = 0x0,
   4210   CXObjCDeclQualifier_In = 0x1,
   4211   CXObjCDeclQualifier_Inout = 0x2,
   4212   CXObjCDeclQualifier_Out = 0x4,
   4213   CXObjCDeclQualifier_Bycopy = 0x8,
   4214   CXObjCDeclQualifier_Byref = 0x10,
   4215   CXObjCDeclQualifier_Oneway = 0x20
   4216 } CXObjCDeclQualifierKind;
   4217 
   4218 /**
   4219  * \brief Given a cursor that represents an Objective-C method or parameter
   4220  * declaration, return the associated Objective-C qualifiers for the return
   4221  * type or the parameter respectively. The bits are formed from
   4222  * CXObjCDeclQualifierKind.
   4223  */
   4224 CINDEX_LINKAGE unsigned clang_Cursor_getObjCDeclQualifiers(CXCursor C);
   4225 
   4226 /**
   4227  * \brief Given a cursor that represents an Objective-C method or property
   4228  * declaration, return non-zero if the declaration was affected by "\@optional".
   4229  * Returns zero if the cursor is not such a declaration or it is "\@required".
   4230  */
   4231 CINDEX_LINKAGE unsigned clang_Cursor_isObjCOptional(CXCursor C);
   4232 
   4233 /**
   4234  * \brief Returns non-zero if the given cursor is a variadic function or method.
   4235  */
   4236 CINDEX_LINKAGE unsigned clang_Cursor_isVariadic(CXCursor C);
   4237 
   4238 /**
   4239  * \brief Returns non-zero if the given cursor points to a symbol marked with
   4240  * external_source_symbol attribute.
   4241  *
   4242  * \param language If non-NULL, and the attribute is present, will be set to
   4243  * the 'language' string from the attribute.
   4244  *
   4245  * \param definedIn If non-NULL, and the attribute is present, will be set to
   4246  * the 'definedIn' string from the attribute.
   4247  *
   4248  * \param isGenerated If non-NULL, and the attribute is present, will be set to
   4249  * non-zero if the 'generated_declaration' is set in the attribute.
   4250  */
   4251 CINDEX_LINKAGE unsigned clang_Cursor_isExternalSymbol(CXCursor C,
   4252                                        CXString *language, CXString *definedIn,
   4253                                        unsigned *isGenerated);
   4254 
   4255 /**
   4256  * \brief Given a cursor that represents a declaration, return the associated
   4257  * comment's source range.  The range may include multiple consecutive comments
   4258  * with whitespace in between.
   4259  */
   4260 CINDEX_LINKAGE CXSourceRange clang_Cursor_getCommentRange(CXCursor C);
   4261 
   4262 /**
   4263  * \brief Given a cursor that represents a declaration, return the associated
   4264  * comment text, including comment markers.
   4265  */
   4266 CINDEX_LINKAGE CXString clang_Cursor_getRawCommentText(CXCursor C);
   4267 
   4268 /**
   4269  * \brief Given a cursor that represents a documentable entity (e.g.,
   4270  * declaration), return the associated \\brief paragraph; otherwise return the
   4271  * first paragraph.
   4272  */
   4273 CINDEX_LINKAGE CXString clang_Cursor_getBriefCommentText(CXCursor C);
   4274 
   4275 /**
   4276  * @}
   4277  */
   4278 
   4279 /** \defgroup CINDEX_MANGLE Name Mangling API Functions
   4280  *
   4281  * @{
   4282  */
   4283 
   4284 /**
   4285  * \brief Retrieve the CXString representing the mangled name of the cursor.
   4286  */
   4287 CINDEX_LINKAGE CXString clang_Cursor_getMangling(CXCursor);
   4288 
   4289 /**
   4290  * \brief Retrieve the CXStrings representing the mangled symbols of the C++
   4291  * constructor or destructor at the cursor.
   4292  */
   4293 CINDEX_LINKAGE CXStringSet *clang_Cursor_getCXXManglings(CXCursor);
   4294 
   4295 /**
   4296  * \brief Retrieve the CXStrings representing the mangled symbols of the ObjC
   4297  * class interface or implementation at the cursor.
   4298  */
   4299 CINDEX_LINKAGE CXStringSet *clang_Cursor_getObjCManglings(CXCursor);
   4300 
   4301 /**
   4302  * @}
   4303  */
   4304 
   4305 /**
   4306  * \defgroup CINDEX_MODULE Module introspection
   4307  *
   4308  * The functions in this group provide access to information about modules.
   4309  *
   4310  * @{
   4311  */
   4312 
   4313 typedef void *CXModule;
   4314 
   4315 /**
   4316  * \brief Given a CXCursor_ModuleImportDecl cursor, return the associated module.
   4317  */
   4318 CINDEX_LINKAGE CXModule clang_Cursor_getModule(CXCursor C);
   4319 
   4320 /**
   4321  * \brief Given a CXFile header file, return the module that contains it, if one
   4322  * exists.
   4323  */
   4324 CINDEX_LINKAGE CXModule clang_getModuleForFile(CXTranslationUnit, CXFile);
   4325 
   4326 /**
   4327  * \param Module a module object.
   4328  *
   4329  * \returns the module file where the provided module object came from.
   4330  */
   4331 CINDEX_LINKAGE CXFile clang_Module_getASTFile(CXModule Module);
   4332 
   4333 /**
   4334  * \param Module a module object.
   4335  *
   4336  * \returns the parent of a sub-module or NULL if the given module is top-level,
   4337  * e.g. for 'std.vector' it will return the 'std' module.
   4338  */
   4339 CINDEX_LINKAGE CXModule clang_Module_getParent(CXModule Module);
   4340 
   4341 /**
   4342  * \param Module a module object.
   4343  *
   4344  * \returns the name of the module, e.g. for the 'std.vector' sub-module it
   4345  * will return "vector".
   4346  */
   4347 CINDEX_LINKAGE CXString clang_Module_getName(CXModule Module);
   4348 
   4349 /**
   4350  * \param Module a module object.
   4351  *
   4352  * \returns the full name of the module, e.g. "std.vector".
   4353  */
   4354 CINDEX_LINKAGE CXString clang_Module_getFullName(CXModule Module);
   4355 
   4356 /**
   4357  * \param Module a module object.
   4358  *
   4359  * \returns non-zero if the module is a system one.
   4360  */
   4361 CINDEX_LINKAGE int clang_Module_isSystem(CXModule Module);
   4362 
   4363 /**
   4364  * \param Module a module object.
   4365  *
   4366  * \returns the number of top level headers associated with this module.
   4367  */
   4368 CINDEX_LINKAGE unsigned clang_Module_getNumTopLevelHeaders(CXTranslationUnit,
   4369                                                            CXModule Module);
   4370 
   4371 /**
   4372  * \param Module a module object.
   4373  *
   4374  * \param Index top level header index (zero-based).
   4375  *
   4376  * \returns the specified top level header associated with the module.
   4377  */
   4378 CINDEX_LINKAGE
   4379 CXFile clang_Module_getTopLevelHeader(CXTranslationUnit,
   4380                                       CXModule Module, unsigned Index);
   4381 
   4382 /**
   4383  * @}
   4384  */
   4385 
   4386 /**
   4387  * \defgroup CINDEX_CPP C++ AST introspection
   4388  *
   4389  * The routines in this group provide access information in the ASTs specific
   4390  * to C++ language features.
   4391  *
   4392  * @{
   4393  */
   4394 
   4395 /**
   4396  * \brief Determine if a C++ constructor is a converting constructor.
   4397  */
   4398 CINDEX_LINKAGE unsigned clang_CXXConstructor_isConvertingConstructor(CXCursor C);
   4399 
   4400 /**
   4401  * \brief Determine if a C++ constructor is a copy constructor.
   4402  */
   4403 CINDEX_LINKAGE unsigned clang_CXXConstructor_isCopyConstructor(CXCursor C);
   4404 
   4405 /**
   4406  * \brief Determine if a C++ constructor is the default constructor.
   4407  */
   4408 CINDEX_LINKAGE unsigned clang_CXXConstructor_isDefaultConstructor(CXCursor C);
   4409 
   4410 /**
   4411  * \brief Determine if a C++ constructor is a move constructor.
   4412  */
   4413 CINDEX_LINKAGE unsigned clang_CXXConstructor_isMoveConstructor(CXCursor C);
   4414 
   4415 /**
   4416  * \brief Determine if a C++ field is declared 'mutable'.
   4417  */
   4418 CINDEX_LINKAGE unsigned clang_CXXField_isMutable(CXCursor C);
   4419 
   4420 /**
   4421  * \brief Determine if a C++ method is declared '= default'.
   4422  */
   4423 CINDEX_LINKAGE unsigned clang_CXXMethod_isDefaulted(CXCursor C);
   4424 
   4425 /**
   4426  * \brief Determine if a C++ member function or member function template is
   4427  * pure virtual.
   4428  */
   4429 CINDEX_LINKAGE unsigned clang_CXXMethod_isPureVirtual(CXCursor C);
   4430 
   4431 /**
   4432  * \brief Determine if a C++ member function or member function template is
   4433  * declared 'static'.
   4434  */
   4435 CINDEX_LINKAGE unsigned clang_CXXMethod_isStatic(CXCursor C);
   4436 
   4437 /**
   4438  * \brief Determine if a C++ member function or member function template is
   4439  * explicitly declared 'virtual' or if it overrides a virtual method from
   4440  * one of the base classes.
   4441  */
   4442 CINDEX_LINKAGE unsigned clang_CXXMethod_isVirtual(CXCursor C);
   4443 
   4444 /**
   4445  * \brief Determine if an enum declaration refers to a scoped enum.
   4446  */
   4447 CINDEX_LINKAGE unsigned clang_EnumDecl_isScoped(CXCursor C);
   4448 
   4449 /**
   4450  * \brief Determine if a C++ member function or member function template is
   4451  * declared 'const'.
   4452  */
   4453 CINDEX_LINKAGE unsigned clang_CXXMethod_isConst(CXCursor C);
   4454 
   4455 /**
   4456  * \brief Given a cursor that represents a template, determine
   4457  * the cursor kind of the specializations would be generated by instantiating
   4458  * the template.
   4459  *
   4460  * This routine can be used to determine what flavor of function template,
   4461  * class template, or class template partial specialization is stored in the
   4462  * cursor. For example, it can describe whether a class template cursor is
   4463  * declared with "struct", "class" or "union".
   4464  *
   4465  * \param C The cursor to query. This cursor should represent a template
   4466  * declaration.
   4467  *
   4468  * \returns The cursor kind of the specializations that would be generated
   4469  * by instantiating the template \p C. If \p C is not a template, returns
   4470  * \c CXCursor_NoDeclFound.
   4471  */
   4472 CINDEX_LINKAGE enum CXCursorKind clang_getTemplateCursorKind(CXCursor C);
   4473 
   4474 /**
   4475  * \brief Given a cursor that may represent a specialization or instantiation
   4476  * of a template, retrieve the cursor that represents the template that it
   4477  * specializes or from which it was instantiated.
   4478  *
   4479  * This routine determines the template involved both for explicit
   4480  * specializations of templates and for implicit instantiations of the template,
   4481  * both of which are referred to as "specializations". For a class template
   4482  * specialization (e.g., \c std::vector<bool>), this routine will return
   4483  * either the primary template (\c std::vector) or, if the specialization was
   4484  * instantiated from a class template partial specialization, the class template
   4485  * partial specialization. For a class template partial specialization and a
   4486  * function template specialization (including instantiations), this
   4487  * this routine will return the specialized template.
   4488  *
   4489  * For members of a class template (e.g., member functions, member classes, or
   4490  * static data members), returns the specialized or instantiated member.
   4491  * Although not strictly "templates" in the C++ language, members of class
   4492  * templates have the same notions of specializations and instantiations that
   4493  * templates do, so this routine treats them similarly.
   4494  *
   4495  * \param C A cursor that may be a specialization of a template or a member
   4496  * of a template.
   4497  *
   4498  * \returns If the given cursor is a specialization or instantiation of a
   4499  * template or a member thereof, the template or member that it specializes or
   4500  * from which it was instantiated. Otherwise, returns a NULL cursor.
   4501  */
   4502 CINDEX_LINKAGE CXCursor clang_getSpecializedCursorTemplate(CXCursor C);
   4503 
   4504 /**
   4505  * \brief Given a cursor that references something else, return the source range
   4506  * covering that reference.
   4507  *
   4508  * \param C A cursor pointing to a member reference, a declaration reference, or
   4509  * an operator call.
   4510  * \param NameFlags A bitset with three independent flags:
   4511  * CXNameRange_WantQualifier, CXNameRange_WantTemplateArgs, and
   4512  * CXNameRange_WantSinglePiece.
   4513  * \param PieceIndex For contiguous names or when passing the flag
   4514  * CXNameRange_WantSinglePiece, only one piece with index 0 is
   4515  * available. When the CXNameRange_WantSinglePiece flag is not passed for a
   4516  * non-contiguous names, this index can be used to retrieve the individual
   4517  * pieces of the name. See also CXNameRange_WantSinglePiece.
   4518  *
   4519  * \returns The piece of the name pointed to by the given cursor. If there is no
   4520  * name, or if the PieceIndex is out-of-range, a null-cursor will be returned.
   4521  */
   4522 CINDEX_LINKAGE CXSourceRange clang_getCursorReferenceNameRange(CXCursor C,
   4523                                                 unsigned NameFlags,
   4524                                                 unsigned PieceIndex);
   4525 
   4526 enum CXNameRefFlags {
   4527   /**
   4528    * \brief Include the nested-name-specifier, e.g. Foo:: in x.Foo::y, in the
   4529    * range.
   4530    */
   4531   CXNameRange_WantQualifier = 0x1,
   4532 
   4533   /**
   4534    * \brief Include the explicit template arguments, e.g. \<int> in x.f<int>,
   4535    * in the range.
   4536    */
   4537   CXNameRange_WantTemplateArgs = 0x2,
   4538 
   4539   /**
   4540    * \brief If the name is non-contiguous, return the full spanning range.
   4541    *
   4542    * Non-contiguous names occur in Objective-C when a selector with two or more
   4543    * parameters is used, or in C++ when using an operator:
   4544    * \code
   4545    * [object doSomething:here withValue:there]; // Objective-C
   4546    * return some_vector[1]; // C++
   4547    * \endcode
   4548    */
   4549   CXNameRange_WantSinglePiece = 0x4
   4550 };
   4551 
   4552 /**
   4553  * @}
   4554  */
   4555 
   4556 /**
   4557  * \defgroup CINDEX_LEX Token extraction and manipulation
   4558  *
   4559  * The routines in this group provide access to the tokens within a
   4560  * translation unit, along with a semantic mapping of those tokens to
   4561  * their corresponding cursors.
   4562  *
   4563  * @{
   4564  */
   4565 
   4566 /**
   4567  * \brief Describes a kind of token.
   4568  */
   4569 typedef enum CXTokenKind {
   4570   /**
   4571    * \brief A token that contains some kind of punctuation.
   4572    */
   4573   CXToken_Punctuation,
   4574 
   4575   /**
   4576    * \brief A language keyword.
   4577    */
   4578   CXToken_Keyword,
   4579 
   4580   /**
   4581    * \brief An identifier (that is not a keyword).
   4582    */
   4583   CXToken_Identifier,
   4584 
   4585   /**
   4586    * \brief A numeric, string, or character literal.
   4587    */
   4588   CXToken_Literal,
   4589 
   4590   /**
   4591    * \brief A comment.
   4592    */
   4593   CXToken_Comment
   4594 } CXTokenKind;
   4595 
   4596 /**
   4597  * \brief Describes a single preprocessing token.
   4598  */
   4599 typedef struct {
   4600   unsigned int_data[4];
   4601   void *ptr_data;
   4602 } CXToken;
   4603 
   4604 /**
   4605  * \brief Determine the kind of the given token.
   4606  */
   4607 CINDEX_LINKAGE CXTokenKind clang_getTokenKind(CXToken);
   4608 
   4609 /**
   4610  * \brief Determine the spelling of the given token.
   4611  *
   4612  * The spelling of a token is the textual representation of that token, e.g.,
   4613  * the text of an identifier or keyword.
   4614  */
   4615 CINDEX_LINKAGE CXString clang_getTokenSpelling(CXTranslationUnit, CXToken);
   4616 
   4617 /**
   4618  * \brief Retrieve the source location of the given token.
   4619  */
   4620 CINDEX_LINKAGE CXSourceLocation clang_getTokenLocation(CXTranslationUnit,
   4621                                                        CXToken);
   4622 
   4623 /**
   4624  * \brief Retrieve a source range that covers the given token.
   4625  */
   4626 CINDEX_LINKAGE CXSourceRange clang_getTokenExtent(CXTranslationUnit, CXToken);
   4627 
   4628 /**
   4629  * \brief Tokenize the source code described by the given range into raw
   4630  * lexical tokens.
   4631  *
   4632  * \param TU the translation unit whose text is being tokenized.
   4633  *
   4634  * \param Range the source range in which text should be tokenized. All of the
   4635  * tokens produced by tokenization will fall within this source range,
   4636  *
   4637  * \param Tokens this pointer will be set to point to the array of tokens
   4638  * that occur within the given source range. The returned pointer must be
   4639  * freed with clang_disposeTokens() before the translation unit is destroyed.
   4640  *
   4641  * \param NumTokens will be set to the number of tokens in the \c *Tokens
   4642  * array.
   4643  *
   4644  */
   4645 CINDEX_LINKAGE void clang_tokenize(CXTranslationUnit TU, CXSourceRange Range,
   4646                                    CXToken **Tokens, unsigned *NumTokens);
   4647 
   4648 /**
   4649  * \brief Annotate the given set of tokens by providing cursors for each token
   4650  * that can be mapped to a specific entity within the abstract syntax tree.
   4651  *
   4652  * This token-annotation routine is equivalent to invoking
   4653  * clang_getCursor() for the source locations of each of the
   4654  * tokens. The cursors provided are filtered, so that only those
   4655  * cursors that have a direct correspondence to the token are
   4656  * accepted. For example, given a function call \c f(x),
   4657  * clang_getCursor() would provide the following cursors:
   4658  *
   4659  *   * when the cursor is over the 'f', a DeclRefExpr cursor referring to 'f'.
   4660  *   * when the cursor is over the '(' or the ')', a CallExpr referring to 'f'.
   4661  *   * when the cursor is over the 'x', a DeclRefExpr cursor referring to 'x'.
   4662  *
   4663  * Only the first and last of these cursors will occur within the
   4664  * annotate, since the tokens "f" and "x' directly refer to a function
   4665  * and a variable, respectively, but the parentheses are just a small
   4666  * part of the full syntax of the function call expression, which is
   4667  * not provided as an annotation.
   4668  *
   4669  * \param TU the translation unit that owns the given tokens.
   4670  *
   4671  * \param Tokens the set of tokens to annotate.
   4672  *
   4673  * \param NumTokens the number of tokens in \p Tokens.
   4674  *
   4675  * \param Cursors an array of \p NumTokens cursors, whose contents will be
   4676  * replaced with the cursors corresponding to each token.
   4677  */
   4678 CINDEX_LINKAGE void clang_annotateTokens(CXTranslationUnit TU,
   4679                                          CXToken *Tokens, unsigned NumTokens,
   4680                                          CXCursor *Cursors);
   4681 
   4682 /**
   4683  * \brief Free the given set of tokens.
   4684  */
   4685 CINDEX_LINKAGE void clang_disposeTokens(CXTranslationUnit TU,
   4686                                         CXToken *Tokens, unsigned NumTokens);
   4687 
   4688 /**
   4689  * @}
   4690  */
   4691 
   4692 /**
   4693  * \defgroup CINDEX_DEBUG Debugging facilities
   4694  *
   4695  * These routines are used for testing and debugging, only, and should not
   4696  * be relied upon.
   4697  *
   4698  * @{
   4699  */
   4700 
   4701 /* for debug/testing */
   4702 CINDEX_LINKAGE CXString clang_getCursorKindSpelling(enum CXCursorKind Kind);
   4703 CINDEX_LINKAGE void clang_getDefinitionSpellingAndExtent(CXCursor,
   4704                                           const char **startBuf,
   4705                                           const char **endBuf,
   4706                                           unsigned *startLine,
   4707                                           unsigned *startColumn,
   4708                                           unsigned *endLine,
   4709                                           unsigned *endColumn);
   4710 CINDEX_LINKAGE void clang_enableStackTraces(void);
   4711 CINDEX_LINKAGE void clang_executeOnThread(void (*fn)(void*), void *user_data,
   4712                                           unsigned stack_size);
   4713 
   4714 /**
   4715  * @}
   4716  */
   4717 
   4718 /**
   4719  * \defgroup CINDEX_CODE_COMPLET Code completion
   4720  *
   4721  * Code completion involves taking an (incomplete) source file, along with
   4722  * knowledge of where the user is actively editing that file, and suggesting
   4723  * syntactically- and semantically-valid constructs that the user might want to
   4724  * use at that particular point in the source code. These data structures and
   4725  * routines provide support for code completion.
   4726  *
   4727  * @{
   4728  */
   4729 
   4730 /**
   4731  * \brief A semantic string that describes a code-completion result.
   4732  *
   4733  * A semantic string that describes the formatting of a code-completion
   4734  * result as a single "template" of text that should be inserted into the
   4735  * source buffer when a particular code-completion result is selected.
   4736  * Each semantic string is made up of some number of "chunks", each of which
   4737  * contains some text along with a description of what that text means, e.g.,
   4738  * the name of the entity being referenced, whether the text chunk is part of
   4739  * the template, or whether it is a "placeholder" that the user should replace
   4740  * with actual code,of a specific kind. See \c CXCompletionChunkKind for a
   4741  * description of the different kinds of chunks.
   4742  */
   4743 typedef void *CXCompletionString;
   4744 
   4745 /**
   4746  * \brief A single result of code completion.
   4747  */
   4748 typedef struct {
   4749   /**
   4750    * \brief The kind of entity that this completion refers to.
   4751    *
   4752    * The cursor kind will be a macro, keyword, or a declaration (one of the
   4753    * *Decl cursor kinds), describing the entity that the completion is
   4754    * referring to.
   4755    *
   4756    * \todo In the future, we would like to provide a full cursor, to allow
   4757    * the client to extract additional information from declaration.
   4758    */
   4759   enum CXCursorKind CursorKind;
   4760 
   4761   /**
   4762    * \brief The code-completion string that describes how to insert this
   4763    * code-completion result into the editing buffer.
   4764    */
   4765   CXCompletionString CompletionString;
   4766 } CXCompletionResult;
   4767 
   4768 /**
   4769  * \brief Describes a single piece of text within a code-completion string.
   4770  *
   4771  * Each "chunk" within a code-completion string (\c CXCompletionString) is
   4772  * either a piece of text with a specific "kind" that describes how that text
   4773  * should be interpreted by the client or is another completion string.
   4774  */
   4775 enum CXCompletionChunkKind {
   4776   /**
   4777    * \brief A code-completion string that describes "optional" text that
   4778    * could be a part of the template (but is not required).
   4779    *
   4780    * The Optional chunk is the only kind of chunk that has a code-completion
   4781    * string for its representation, which is accessible via
   4782    * \c clang_getCompletionChunkCompletionString(). The code-completion string
   4783    * describes an additional part of the template that is completely optional.
   4784    * For example, optional chunks can be used to describe the placeholders for
   4785    * arguments that match up with defaulted function parameters, e.g. given:
   4786    *
   4787    * \code
   4788    * void f(int x, float y = 3.14, double z = 2.71828);
   4789    * \endcode
   4790    *
   4791    * The code-completion string for this function would contain:
   4792    *   - a TypedText chunk for "f".
   4793    *   - a LeftParen chunk for "(".
   4794    *   - a Placeholder chunk for "int x"
   4795    *   - an Optional chunk containing the remaining defaulted arguments, e.g.,
   4796    *       - a Comma chunk for ","
   4797    *       - a Placeholder chunk for "float y"
   4798    *       - an Optional chunk containing the last defaulted argument:
   4799    *           - a Comma chunk for ","
   4800    *           - a Placeholder chunk for "double z"
   4801    *   - a RightParen chunk for ")"
   4802    *
   4803    * There are many ways to handle Optional chunks. Two simple approaches are:
   4804    *   - Completely ignore optional chunks, in which case the template for the
   4805    *     function "f" would only include the first parameter ("int x").
   4806    *   - Fully expand all optional chunks, in which case the template for the
   4807    *     function "f" would have all of the parameters.
   4808    */
   4809   CXCompletionChunk_Optional,
   4810   /**
   4811    * \brief Text that a user would be expected to type to get this
   4812    * code-completion result.
   4813    *
   4814    * There will be exactly one "typed text" chunk in a semantic string, which
   4815    * will typically provide the spelling of a keyword or the name of a
   4816    * declaration that could be used at the current code point. Clients are
   4817    * expected to filter the code-completion results based on the text in this
   4818    * chunk.
   4819    */
   4820   CXCompletionChunk_TypedText,
   4821   /**
   4822    * \brief Text that should be inserted as part of a code-completion result.
   4823    *
   4824    * A "text" chunk represents text that is part of the template to be
   4825    * inserted into user code should this particular code-completion result
   4826    * be selected.
   4827    */
   4828   CXCompletionChunk_Text,
   4829   /**
   4830    * \brief Placeholder text that should be replaced by the user.
   4831    *
   4832    * A "placeholder" chunk marks a place where the user should insert text
   4833    * into the code-completion template. For example, placeholders might mark
   4834    * the function parameters for a function declaration, to indicate that the
   4835    * user should provide arguments for each of those parameters. The actual
   4836    * text in a placeholder is a suggestion for the text to display before
   4837    * the user replaces the placeholder with real code.
   4838    */
   4839   CXCompletionChunk_Placeholder,
   4840   /**
   4841    * \brief Informative text that should be displayed but never inserted as
   4842    * part of the template.
   4843    *
   4844    * An "informative" chunk contains annotations that can be displayed to
   4845    * help the user decide whether a particular code-completion result is the
   4846    * right option, but which is not part of the actual template to be inserted
   4847    * by code completion.
   4848    */
   4849   CXCompletionChunk_Informative,
   4850   /**
   4851    * \brief Text that describes the current parameter when code-completion is
   4852    * referring to function call, message send, or template specialization.
   4853    *
   4854    * A "current parameter" chunk occurs when code-completion is providing
   4855    * information about a parameter corresponding to the argument at the
   4856    * code-completion point. For example, given a function
   4857    *
   4858    * \code
   4859    * int add(int x, int y);
   4860    * \endcode
   4861    *
   4862    * and the source code \c add(, where the code-completion point is after the
   4863    * "(", the code-completion string will contain a "current parameter" chunk
   4864    * for "int x", indicating that the current argument will initialize that
   4865    * parameter. After typing further, to \c add(17, (where the code-completion
   4866    * point is after the ","), the code-completion string will contain a
   4867    * "current paremeter" chunk to "int y".
   4868    */
   4869   CXCompletionChunk_CurrentParameter,
   4870   /**
   4871    * \brief A left parenthesis ('('), used to initiate a function call or
   4872    * signal the beginning of a function parameter list.
   4873    */
   4874   CXCompletionChunk_LeftParen,
   4875   /**
   4876    * \brief A right parenthesis (')'), used to finish a function call or
   4877    * signal the end of a function parameter list.
   4878    */
   4879   CXCompletionChunk_RightParen,
   4880   /**
   4881    * \brief A left bracket ('[').
   4882    */
   4883   CXCompletionChunk_LeftBracket,
   4884   /**
   4885    * \brief A right bracket (']').
   4886    */
   4887   CXCompletionChunk_RightBracket,
   4888   /**
   4889    * \brief A left brace ('{').
   4890    */
   4891   CXCompletionChunk_LeftBrace,
   4892   /**
   4893    * \brief A right brace ('}').
   4894    */
   4895   CXCompletionChunk_RightBrace,
   4896   /**
   4897    * \brief A left angle bracket ('<').
   4898    */
   4899   CXCompletionChunk_LeftAngle,
   4900   /**
   4901    * \brief A right angle bracket ('>').
   4902    */
   4903   CXCompletionChunk_RightAngle,
   4904   /**
   4905    * \brief A comma separator (',').
   4906    */
   4907   CXCompletionChunk_Comma,
   4908   /**
   4909    * \brief Text that specifies the result type of a given result.
   4910    *
   4911    * This special kind of informative chunk is not meant to be inserted into
   4912    * the text buffer. Rather, it is meant to illustrate the type that an
   4913    * expression using the given completion string would have.
   4914    */
   4915   CXCompletionChunk_ResultType,
   4916   /**
   4917    * \brief A colon (':').
   4918    */
   4919   CXCompletionChunk_Colon,
   4920   /**
   4921    * \brief A semicolon (';').
   4922    */
   4923   CXCompletionChunk_SemiColon,
   4924   /**
   4925    * \brief An '=' sign.
   4926    */
   4927   CXCompletionChunk_Equal,
   4928   /**
   4929    * Horizontal space (' ').
   4930    */
   4931   CXCompletionChunk_HorizontalSpace,
   4932   /**
   4933    * Vertical space ('\\n'), after which it is generally a good idea to
   4934    * perform indentation.
   4935    */
   4936   CXCompletionChunk_VerticalSpace
   4937 };
   4938 
   4939 /**
   4940  * \brief Determine the kind of a particular chunk within a completion string.
   4941  *
   4942  * \param completion_string the completion string to query.
   4943  *
   4944  * \param chunk_number the 0-based index of the chunk in the completion string.
   4945  *
   4946  * \returns the kind of the chunk at the index \c chunk_number.
   4947  */
   4948 CINDEX_LINKAGE enum CXCompletionChunkKind
   4949 clang_getCompletionChunkKind(CXCompletionString completion_string,
   4950                              unsigned chunk_number);
   4951 
   4952 /**
   4953  * \brief Retrieve the text associated with a particular chunk within a
   4954  * completion string.
   4955  *
   4956  * \param completion_string the completion string to query.
   4957  *
   4958  * \param chunk_number the 0-based index of the chunk in the completion string.
   4959  *
   4960  * \returns the text associated with the chunk at index \c chunk_number.
   4961  */
   4962 CINDEX_LINKAGE CXString
   4963 clang_getCompletionChunkText(CXCompletionString completion_string,
   4964                              unsigned chunk_number);
   4965 
   4966 /**
   4967  * \brief Retrieve the completion string associated with a particular chunk
   4968  * within a completion string.
   4969  *
   4970  * \param completion_string the completion string to query.
   4971  *
   4972  * \param chunk_number the 0-based index of the chunk in the completion string.
   4973  *
   4974  * \returns the completion string associated with the chunk at index
   4975  * \c chunk_number.
   4976  */
   4977 CINDEX_LINKAGE CXCompletionString
   4978 clang_getCompletionChunkCompletionString(CXCompletionString completion_string,
   4979                                          unsigned chunk_number);
   4980 
   4981 /**
   4982  * \brief Retrieve the number of chunks in the given code-completion string.
   4983  */
   4984 CINDEX_LINKAGE unsigned
   4985 clang_getNumCompletionChunks(CXCompletionString completion_string);
   4986 
   4987 /**
   4988  * \brief Determine the priority of this code completion.
   4989  *
   4990  * The priority of a code completion indicates how likely it is that this
   4991  * particular completion is the completion that the user will select. The
   4992  * priority is selected by various internal heuristics.
   4993  *
   4994  * \param completion_string The completion string to query.
   4995  *
   4996  * \returns The priority of this completion string. Smaller values indicate
   4997  * higher-priority (more likely) completions.
   4998  */
   4999 CINDEX_LINKAGE unsigned
   5000 clang_getCompletionPriority(CXCompletionString completion_string);
   5001 
   5002 /**
   5003  * \brief Determine the availability of the entity that this code-completion
   5004  * string refers to.
   5005  *
   5006  * \param completion_string The completion string to query.
   5007  *
   5008  * \returns The availability of the completion string.
   5009  */
   5010 CINDEX_LINKAGE enum CXAvailabilityKind
   5011 clang_getCompletionAvailability(CXCompletionString completion_string);
   5012 
   5013 /**
   5014  * \brief Retrieve the number of annotations associated with the given
   5015  * completion string.
   5016  *
   5017  * \param completion_string the completion string to query.
   5018  *
   5019  * \returns the number of annotations associated with the given completion
   5020  * string.
   5021  */
   5022 CINDEX_LINKAGE unsigned
   5023 clang_getCompletionNumAnnotations(CXCompletionString completion_string);
   5024 
   5025 /**
   5026  * \brief Retrieve the annotation associated with the given completion string.
   5027  *
   5028  * \param completion_string the completion string to query.
   5029  *
   5030  * \param annotation_number the 0-based index of the annotation of the
   5031  * completion string.
   5032  *
   5033  * \returns annotation string associated with the completion at index
   5034  * \c annotation_number, or a NULL string if that annotation is not available.
   5035  */
   5036 CINDEX_LINKAGE CXString
   5037 clang_getCompletionAnnotation(CXCompletionString completion_string,
   5038                               unsigned annotation_number);
   5039 
   5040 /**
   5041  * \brief Retrieve the parent context of the given completion string.
   5042  *
   5043  * The parent context of a completion string is the semantic parent of
   5044  * the declaration (if any) that the code completion represents. For example,
   5045  * a code completion for an Objective-C method would have the method's class
   5046  * or protocol as its context.
   5047  *
   5048  * \param completion_string The code completion string whose parent is
   5049  * being queried.
   5050  *
   5051  * \param kind DEPRECATED: always set to CXCursor_NotImplemented if non-NULL.
   5052  *
   5053  * \returns The name of the completion parent, e.g., "NSObject" if
   5054  * the completion string represents a method in the NSObject class.
   5055  */
   5056 CINDEX_LINKAGE CXString
   5057 clang_getCompletionParent(CXCompletionString completion_string,
   5058                           enum CXCursorKind *kind);
   5059 
   5060 /**
   5061  * \brief Retrieve the brief documentation comment attached to the declaration
   5062  * that corresponds to the given completion string.
   5063  */
   5064 CINDEX_LINKAGE CXString
   5065 clang_getCompletionBriefComment(CXCompletionString completion_string);
   5066 
   5067 /**
   5068  * \brief Retrieve a completion string for an arbitrary declaration or macro
   5069  * definition cursor.
   5070  *
   5071  * \param cursor The cursor to query.
   5072  *
   5073  * \returns A non-context-sensitive completion string for declaration and macro
   5074  * definition cursors, or NULL for other kinds of cursors.
   5075  */
   5076 CINDEX_LINKAGE CXCompletionString
   5077 clang_getCursorCompletionString(CXCursor cursor);
   5078 
   5079 /**
   5080  * \brief Contains the results of code-completion.
   5081  *
   5082  * This data structure contains the results of code completion, as
   5083  * produced by \c clang_codeCompleteAt(). Its contents must be freed by
   5084  * \c clang_disposeCodeCompleteResults.
   5085  */
   5086 typedef struct {
   5087   /**
   5088    * \brief The code-completion results.
   5089    */
   5090   CXCompletionResult *Results;
   5091 
   5092   /**
   5093    * \brief The number of code-completion results stored in the
   5094    * \c Results array.
   5095    */
   5096   unsigned NumResults;
   5097 } CXCodeCompleteResults;
   5098 
   5099 /**
   5100  * \brief Flags that can be passed to \c clang_codeCompleteAt() to
   5101  * modify its behavior.
   5102  *
   5103  * The enumerators in this enumeration can be bitwise-OR'd together to
   5104  * provide multiple options to \c clang_codeCompleteAt().
   5105  */
   5106 enum CXCodeComplete_Flags {
   5107   /**
   5108    * \brief Whether to include macros within the set of code
   5109    * completions returned.
   5110    */
   5111   CXCodeComplete_IncludeMacros = 0x01,
   5112 
   5113   /**
   5114    * \brief Whether to include code patterns for language constructs
   5115    * within the set of code completions, e.g., for loops.
   5116    */
   5117   CXCodeComplete_IncludeCodePatterns = 0x02,
   5118 
   5119   /**
   5120    * \brief Whether to include brief documentation within the set of code
   5121    * completions returned.
   5122    */
   5123   CXCodeComplete_IncludeBriefComments = 0x04
   5124 };
   5125 
   5126 /**
   5127  * \brief Bits that represent the context under which completion is occurring.
   5128  *
   5129  * The enumerators in this enumeration may be bitwise-OR'd together if multiple
   5130  * contexts are occurring simultaneously.
   5131  */
   5132 enum CXCompletionContext {
   5133   /**
   5134    * \brief The context for completions is unexposed, as only Clang results
   5135    * should be included. (This is equivalent to having no context bits set.)
   5136    */
   5137   CXCompletionContext_Unexposed = 0,
   5138 
   5139   /**
   5140    * \brief Completions for any possible type should be included in the results.
   5141    */
   5142   CXCompletionContext_AnyType = 1 << 0,
   5143 
   5144   /**
   5145    * \brief Completions for any possible value (variables, function calls, etc.)
   5146    * should be included in the results.
   5147    */
   5148   CXCompletionContext_AnyValue = 1 << 1,
   5149   /**
   5150    * \brief Completions for values that resolve to an Objective-C object should
   5151    * be included in the results.
   5152    */
   5153   CXCompletionContext_ObjCObjectValue = 1 << 2,
   5154   /**
   5155    * \brief Completions for values that resolve to an Objective-C selector
   5156    * should be included in the results.
   5157    */
   5158   CXCompletionContext_ObjCSelectorValue = 1 << 3,
   5159   /**
   5160    * \brief Completions for values that resolve to a C++ class type should be
   5161    * included in the results.
   5162    */
   5163   CXCompletionContext_CXXClassTypeValue = 1 << 4,
   5164 
   5165   /**
   5166    * \brief Completions for fields of the member being accessed using the dot
   5167    * operator should be included in the results.
   5168    */
   5169   CXCompletionContext_DotMemberAccess = 1 << 5,
   5170   /**
   5171    * \brief Completions for fields of the member being accessed using the arrow
   5172    * operator should be included in the results.
   5173    */
   5174   CXCompletionContext_ArrowMemberAccess = 1 << 6,
   5175   /**
   5176    * \brief Completions for properties of the Objective-C object being accessed
   5177    * using the dot operator should be included in the results.
   5178    */
   5179   CXCompletionContext_ObjCPropertyAccess = 1 << 7,
   5180 
   5181   /**
   5182    * \brief Completions for enum tags should be included in the results.
   5183    */
   5184   CXCompletionContext_EnumTag = 1 << 8,
   5185   /**
   5186    * \brief Completions for union tags should be included in the results.
   5187    */
   5188   CXCompletionContext_UnionTag = 1 << 9,
   5189   /**
   5190    * \brief Completions for struct tags should be included in the results.
   5191    */
   5192   CXCompletionContext_StructTag = 1 << 10,
   5193 
   5194   /**
   5195    * \brief Completions for C++ class names should be included in the results.
   5196    */
   5197   CXCompletionContext_ClassTag = 1 << 11,
   5198   /**
   5199    * \brief Completions for C++ namespaces and namespace aliases should be
   5200    * included in the results.
   5201    */
   5202   CXCompletionContext_Namespace = 1 << 12,
   5203   /**
   5204    * \brief Completions for C++ nested name specifiers should be included in
   5205    * the results.
   5206    */
   5207   CXCompletionContext_NestedNameSpecifier = 1 << 13,
   5208 
   5209   /**
   5210    * \brief Completions for Objective-C interfaces (classes) should be included
   5211    * in the results.
   5212    */
   5213   CXCompletionContext_ObjCInterface = 1 << 14,
   5214   /**
   5215    * \brief Completions for Objective-C protocols should be included in
   5216    * the results.
   5217    */
   5218   CXCompletionContext_ObjCProtocol = 1 << 15,
   5219   /**
   5220    * \brief Completions for Objective-C categories should be included in
   5221    * the results.
   5222    */
   5223   CXCompletionContext_ObjCCategory = 1 << 16,
   5224   /**
   5225    * \brief Completions for Objective-C instance messages should be included
   5226    * in the results.
   5227    */
   5228   CXCompletionContext_ObjCInstanceMessage = 1 << 17,
   5229   /**
   5230    * \brief Completions for Objective-C class messages should be included in
   5231    * the results.
   5232    */
   5233   CXCompletionContext_ObjCClassMessage = 1 << 18,
   5234   /**
   5235    * \brief Completions for Objective-C selector names should be included in
   5236    * the results.
   5237    */
   5238   CXCompletionContext_ObjCSelectorName = 1 << 19,
   5239 
   5240   /**
   5241    * \brief Completions for preprocessor macro names should be included in
   5242    * the results.
   5243    */
   5244   CXCompletionContext_MacroName = 1 << 20,
   5245 
   5246   /**
   5247    * \brief Natural language completions should be included in the results.
   5248    */
   5249   CXCompletionContext_NaturalLanguage = 1 << 21,
   5250 
   5251   /**
   5252    * \brief The current context is unknown, so set all contexts.
   5253    */
   5254   CXCompletionContext_Unknown = ((1 << 22) - 1)
   5255 };
   5256 
   5257 /**
   5258  * \brief Returns a default set of code-completion options that can be
   5259  * passed to\c clang_codeCompleteAt().
   5260  */
   5261 CINDEX_LINKAGE unsigned clang_defaultCodeCompleteOptions(void);
   5262 
   5263 /**
   5264  * \brief Perform code completion at a given location in a translation unit.
   5265  *
   5266  * This function performs code completion at a particular file, line, and
   5267  * column within source code, providing results that suggest potential
   5268  * code snippets based on the context of the completion. The basic model
   5269  * for code completion is that Clang will parse a complete source file,
   5270  * performing syntax checking up to the location where code-completion has
   5271  * been requested. At that point, a special code-completion token is passed
   5272  * to the parser, which recognizes this token and determines, based on the
   5273  * current location in the C/Objective-C/C++ grammar and the state of
   5274  * semantic analysis, what completions to provide. These completions are
   5275  * returned via a new \c CXCodeCompleteResults structure.
   5276  *
   5277  * Code completion itself is meant to be triggered by the client when the
   5278  * user types punctuation characters or whitespace, at which point the
   5279  * code-completion location will coincide with the cursor. For example, if \c p
   5280  * is a pointer, code-completion might be triggered after the "-" and then
   5281  * after the ">" in \c p->. When the code-completion location is afer the ">",
   5282  * the completion results will provide, e.g., the members of the struct that
   5283  * "p" points to. The client is responsible for placing the cursor at the
   5284  * beginning of the token currently being typed, then filtering the results
   5285  * based on the contents of the token. For example, when code-completing for
   5286  * the expression \c p->get, the client should provide the location just after
   5287  * the ">" (e.g., pointing at the "g") to this code-completion hook. Then, the
   5288  * client can filter the results based on the current token text ("get"), only
   5289  * showing those results that start with "get". The intent of this interface
   5290  * is to separate the relatively high-latency acquisition of code-completion
   5291  * results from the filtering of results on a per-character basis, which must
   5292  * have a lower latency.
   5293  *
   5294  * \param TU The translation unit in which code-completion should
   5295  * occur. The source files for this translation unit need not be
   5296  * completely up-to-date (and the contents of those source files may
   5297  * be overridden via \p unsaved_files). Cursors referring into the
   5298  * translation unit may be invalidated by this invocation.
   5299  *
   5300  * \param complete_filename The name of the source file where code
   5301  * completion should be performed. This filename may be any file
   5302  * included in the translation unit.
   5303  *
   5304  * \param complete_line The line at which code-completion should occur.
   5305  *
   5306  * \param complete_column The column at which code-completion should occur.
   5307  * Note that the column should point just after the syntactic construct that
   5308  * initiated code completion, and not in the middle of a lexical token.
   5309  *
   5310  * \param unsaved_files the Files that have not yet been saved to disk
   5311  * but may be required for parsing or code completion, including the
   5312  * contents of those files.  The contents and name of these files (as
   5313  * specified by CXUnsavedFile) are copied when necessary, so the
   5314  * client only needs to guarantee their validity until the call to
   5315  * this function returns.
   5316  *
   5317  * \param num_unsaved_files The number of unsaved file entries in \p
   5318  * unsaved_files.
   5319  *
   5320  * \param options Extra options that control the behavior of code
   5321  * completion, expressed as a bitwise OR of the enumerators of the
   5322  * CXCodeComplete_Flags enumeration. The
   5323  * \c clang_defaultCodeCompleteOptions() function returns a default set
   5324  * of code-completion options.
   5325  *
   5326  * \returns If successful, a new \c CXCodeCompleteResults structure
   5327  * containing code-completion results, which should eventually be
   5328  * freed with \c clang_disposeCodeCompleteResults(). If code
   5329  * completion fails, returns NULL.
   5330  */
   5331 CINDEX_LINKAGE
   5332 CXCodeCompleteResults *clang_codeCompleteAt(CXTranslationUnit TU,
   5333                                             const char *complete_filename,
   5334                                             unsigned complete_line,
   5335                                             unsigned complete_column,
   5336                                             struct CXUnsavedFile *unsaved_files,
   5337                                             unsigned num_unsaved_files,
   5338                                             unsigned options);
   5339 
   5340 /**
   5341  * \brief Sort the code-completion results in case-insensitive alphabetical
   5342  * order.
   5343  *
   5344  * \param Results The set of results to sort.
   5345  * \param NumResults The number of results in \p Results.
   5346  */
   5347 CINDEX_LINKAGE
   5348 void clang_sortCodeCompletionResults(CXCompletionResult *Results,
   5349                                      unsigned NumResults);
   5350 
   5351 /**
   5352  * \brief Free the given set of code-completion results.
   5353  */
   5354 CINDEX_LINKAGE
   5355 void clang_disposeCodeCompleteResults(CXCodeCompleteResults *Results);
   5356 
   5357 /**
   5358  * \brief Determine the number of diagnostics produced prior to the
   5359  * location where code completion was performed.
   5360  */
   5361 CINDEX_LINKAGE
   5362 unsigned clang_codeCompleteGetNumDiagnostics(CXCodeCompleteResults *Results);
   5363 
   5364 /**
   5365  * \brief Retrieve a diagnostic associated with the given code completion.
   5366  *
   5367  * \param Results the code completion results to query.
   5368  * \param Index the zero-based diagnostic number to retrieve.
   5369  *
   5370  * \returns the requested diagnostic. This diagnostic must be freed
   5371  * via a call to \c clang_disposeDiagnostic().
   5372  */
   5373 CINDEX_LINKAGE
   5374 CXDiagnostic clang_codeCompleteGetDiagnostic(CXCodeCompleteResults *Results,
   5375                                              unsigned Index);
   5376 
   5377 /**
   5378  * \brief Determines what completions are appropriate for the context
   5379  * the given code completion.
   5380  *
   5381  * \param Results the code completion results to query
   5382  *
   5383  * \returns the kinds of completions that are appropriate for use
   5384  * along with the given code completion results.
   5385  */
   5386 CINDEX_LINKAGE
   5387 unsigned long long clang_codeCompleteGetContexts(
   5388                                                 CXCodeCompleteResults *Results);
   5389 
   5390 /**
   5391  * \brief Returns the cursor kind for the container for the current code
   5392  * completion context. The container is only guaranteed to be set for
   5393  * contexts where a container exists (i.e. member accesses or Objective-C
   5394  * message sends); if there is not a container, this function will return
   5395  * CXCursor_InvalidCode.
   5396  *
   5397  * \param Results the code completion results to query
   5398  *
   5399  * \param IsIncomplete on return, this value will be false if Clang has complete
   5400  * information about the container. If Clang does not have complete
   5401  * information, this value will be true.
   5402  *
   5403  * \returns the container kind, or CXCursor_InvalidCode if there is not a
   5404  * container
   5405  */
   5406 CINDEX_LINKAGE
   5407 enum CXCursorKind clang_codeCompleteGetContainerKind(
   5408                                                  CXCodeCompleteResults *Results,
   5409                                                      unsigned *IsIncomplete);
   5410 
   5411 /**
   5412  * \brief Returns the USR for the container for the current code completion
   5413  * context. If there is not a container for the current context, this
   5414  * function will return the empty string.
   5415  *
   5416  * \param Results the code completion results to query
   5417  *
   5418  * \returns the USR for the container
   5419  */
   5420 CINDEX_LINKAGE
   5421 CXString clang_codeCompleteGetContainerUSR(CXCodeCompleteResults *Results);
   5422 
   5423 /**
   5424  * \brief Returns the currently-entered selector for an Objective-C message
   5425  * send, formatted like "initWithFoo:bar:". Only guaranteed to return a
   5426  * non-empty string for CXCompletionContext_ObjCInstanceMessage and
   5427  * CXCompletionContext_ObjCClassMessage.
   5428  *
   5429  * \param Results the code completion results to query
   5430  *
   5431  * \returns the selector (or partial selector) that has been entered thus far
   5432  * for an Objective-C message send.
   5433  */
   5434 CINDEX_LINKAGE
   5435 CXString clang_codeCompleteGetObjCSelector(CXCodeCompleteResults *Results);
   5436 
   5437 /**
   5438  * @}
   5439  */
   5440 
   5441 /**
   5442  * \defgroup CINDEX_MISC Miscellaneous utility functions
   5443  *
   5444  * @{
   5445  */
   5446 
   5447 /**
   5448  * \brief Return a version string, suitable for showing to a user, but not
   5449  *        intended to be parsed (the format is not guaranteed to be stable).
   5450  */
   5451 CINDEX_LINKAGE CXString clang_getClangVersion(void);
   5452 
   5453 /**
   5454  * \brief Enable/disable crash recovery.
   5455  *
   5456  * \param isEnabled Flag to indicate if crash recovery is enabled.  A non-zero
   5457  *        value enables crash recovery, while 0 disables it.
   5458  */
   5459 CINDEX_LINKAGE void clang_toggleCrashRecovery(unsigned isEnabled);
   5460 
   5461  /**
   5462   * \brief Visitor invoked for each file in a translation unit
   5463   *        (used with clang_getInclusions()).
   5464   *
   5465   * This visitor function will be invoked by clang_getInclusions() for each
   5466   * file included (either at the top-level or by \#include directives) within
   5467   * a translation unit.  The first argument is the file being included, and
   5468   * the second and third arguments provide the inclusion stack.  The
   5469   * array is sorted in order of immediate inclusion.  For example,
   5470   * the first element refers to the location that included 'included_file'.
   5471   */
   5472 typedef void (*CXInclusionVisitor)(CXFile included_file,
   5473                                    CXSourceLocation* inclusion_stack,
   5474                                    unsigned include_len,
   5475                                    CXClientData client_data);
   5476 
   5477 /**
   5478  * \brief Visit the set of preprocessor inclusions in a translation unit.
   5479  *   The visitor function is called with the provided data for every included
   5480  *   file.  This does not include headers included by the PCH file (unless one
   5481  *   is inspecting the inclusions in the PCH file itself).
   5482  */
   5483 CINDEX_LINKAGE void clang_getInclusions(CXTranslationUnit tu,
   5484                                         CXInclusionVisitor visitor,
   5485                                         CXClientData client_data);
   5486 
   5487 typedef enum {
   5488   CXEval_Int = 1 ,
   5489   CXEval_Float = 2,
   5490   CXEval_ObjCStrLiteral = 3,
   5491   CXEval_StrLiteral = 4,
   5492   CXEval_CFStr = 5,
   5493   CXEval_Other = 6,
   5494 
   5495   CXEval_UnExposed = 0
   5496 
   5497 } CXEvalResultKind ;
   5498 
   5499 /**
   5500  * \brief Evaluation result of a cursor
   5501  */
   5502 typedef void * CXEvalResult;
   5503 
   5504 /**
   5505  * \brief If cursor is a statement declaration tries to evaluate the
   5506  * statement and if its variable, tries to evaluate its initializer,
   5507  * into its corresponding type.
   5508  */
   5509 CINDEX_LINKAGE CXEvalResult clang_Cursor_Evaluate(CXCursor C);
   5510 
   5511 /**
   5512  * \brief Returns the kind of the evaluated result.
   5513  */
   5514 CINDEX_LINKAGE CXEvalResultKind clang_EvalResult_getKind(CXEvalResult E);
   5515 
   5516 /**
   5517  * \brief Returns the evaluation result as integer if the
   5518  * kind is Int.
   5519  */
   5520 CINDEX_LINKAGE int clang_EvalResult_getAsInt(CXEvalResult E);
   5521 
   5522 /**
   5523  * \brief Returns the evaluation result as a long long integer if the
   5524  * kind is Int. This prevents overflows that may happen if the result is
   5525  * returned with clang_EvalResult_getAsInt.
   5526  */
   5527 CINDEX_LINKAGE long long clang_EvalResult_getAsLongLong(CXEvalResult E);
   5528 
   5529 /**
   5530  * \brief Returns a non-zero value if the kind is Int and the evaluation
   5531  * result resulted in an unsigned integer.
   5532  */
   5533 CINDEX_LINKAGE unsigned clang_EvalResult_isUnsignedInt(CXEvalResult E);
   5534 
   5535 /**
   5536  * \brief Returns the evaluation result as an unsigned integer if
   5537  * the kind is Int and clang_EvalResult_isUnsignedInt is non-zero.
   5538  */
   5539 CINDEX_LINKAGE unsigned long long clang_EvalResult_getAsUnsigned(CXEvalResult E);
   5540 
   5541 /**
   5542  * \brief Returns the evaluation result as double if the
   5543  * kind is double.
   5544  */
   5545 CINDEX_LINKAGE double clang_EvalResult_getAsDouble(CXEvalResult E);
   5546 
   5547 /**
   5548  * \brief Returns the evaluation result as a constant string if the
   5549  * kind is other than Int or float. User must not free this pointer,
   5550  * instead call clang_EvalResult_dispose on the CXEvalResult returned
   5551  * by clang_Cursor_Evaluate.
   5552  */
   5553 CINDEX_LINKAGE const char* clang_EvalResult_getAsStr(CXEvalResult E);
   5554 
   5555 /**
   5556  * \brief Disposes the created Eval memory.
   5557  */
   5558 CINDEX_LINKAGE void clang_EvalResult_dispose(CXEvalResult E);
   5559 /**
   5560  * @}
   5561  */
   5562 
   5563 /** \defgroup CINDEX_REMAPPING Remapping functions
   5564  *
   5565  * @{
   5566  */
   5567 
   5568 /**
   5569  * \brief A remapping of original source files and their translated files.
   5570  */
   5571 typedef void *CXRemapping;
   5572 
   5573 /**
   5574  * \brief Retrieve a remapping.
   5575  *
   5576  * \param path the path that contains metadata about remappings.
   5577  *
   5578  * \returns the requested remapping. This remapping must be freed
   5579  * via a call to \c clang_remap_dispose(). Can return NULL if an error occurred.
   5580  */
   5581 CINDEX_LINKAGE CXRemapping clang_getRemappings(const char *path);
   5582 
   5583 /**
   5584  * \brief Retrieve a remapping.
   5585  *
   5586  * \param filePaths pointer to an array of file paths containing remapping info.
   5587  *
   5588  * \param numFiles number of file paths.
   5589  *
   5590  * \returns the requested remapping. This remapping must be freed
   5591  * via a call to \c clang_remap_dispose(). Can return NULL if an error occurred.
   5592  */
   5593 CINDEX_LINKAGE
   5594 CXRemapping clang_getRemappingsFromFileList(const char **filePaths,
   5595                                             unsigned numFiles);
   5596 
   5597 /**
   5598  * \brief Determine the number of remappings.
   5599  */
   5600 CINDEX_LINKAGE unsigned clang_remap_getNumFiles(CXRemapping);
   5601 
   5602 /**
   5603  * \brief Get the original and the associated filename from the remapping.
   5604  *
   5605  * \param original If non-NULL, will be set to the original filename.
   5606  *
   5607  * \param transformed If non-NULL, will be set to the filename that the original
   5608  * is associated with.
   5609  */
   5610 CINDEX_LINKAGE void clang_remap_getFilenames(CXRemapping, unsigned index,
   5611                                      CXString *original, CXString *transformed);
   5612 
   5613 /**
   5614  * \brief Dispose the remapping.
   5615  */
   5616 CINDEX_LINKAGE void clang_remap_dispose(CXRemapping);
   5617 
   5618 /**
   5619  * @}
   5620  */
   5621 
   5622 /** \defgroup CINDEX_HIGH Higher level API functions
   5623  *
   5624  * @{
   5625  */
   5626 
   5627 enum CXVisitorResult {
   5628   CXVisit_Break,
   5629   CXVisit_Continue
   5630 };
   5631 
   5632 typedef struct CXCursorAndRangeVisitor {
   5633   void *context;
   5634   enum CXVisitorResult (*visit)(void *context, CXCursor, CXSourceRange);
   5635 } CXCursorAndRangeVisitor;
   5636 
   5637 typedef enum {
   5638   /**
   5639    * \brief Function returned successfully.
   5640    */
   5641   CXResult_Success = 0,
   5642   /**
   5643    * \brief One of the parameters was invalid for the function.
   5644    */
   5645   CXResult_Invalid = 1,
   5646   /**
   5647    * \brief The function was terminated by a callback (e.g. it returned
   5648    * CXVisit_Break)
   5649    */
   5650   CXResult_VisitBreak = 2
   5651 
   5652 } CXResult;
   5653 
   5654 /**
   5655  * \brief Find references of a declaration in a specific file.
   5656  *
   5657  * \param cursor pointing to a declaration or a reference of one.
   5658  *
   5659  * \param file to search for references.
   5660  *
   5661  * \param visitor callback that will receive pairs of CXCursor/CXSourceRange for
   5662  * each reference found.
   5663  * The CXSourceRange will point inside the file; if the reference is inside
   5664  * a macro (and not a macro argument) the CXSourceRange will be invalid.
   5665  *
   5666  * \returns one of the CXResult enumerators.
   5667  */
   5668 CINDEX_LINKAGE CXResult clang_findReferencesInFile(CXCursor cursor, CXFile file,
   5669                                                CXCursorAndRangeVisitor visitor);
   5670 
   5671 /**
   5672  * \brief Find #import/#include directives in a specific file.
   5673  *
   5674  * \param TU translation unit containing the file to query.
   5675  *
   5676  * \param file to search for #import/#include directives.
   5677  *
   5678  * \param visitor callback that will receive pairs of CXCursor/CXSourceRange for
   5679  * each directive found.
   5680  *
   5681  * \returns one of the CXResult enumerators.
   5682  */
   5683 CINDEX_LINKAGE CXResult clang_findIncludesInFile(CXTranslationUnit TU,
   5684                                                  CXFile file,
   5685                                               CXCursorAndRangeVisitor visitor);
   5686 
   5687 #ifdef __has_feature
   5688 #  if __has_feature(blocks)
   5689 
   5690 typedef enum CXVisitorResult
   5691     (^CXCursorAndRangeVisitorBlock)(CXCursor, CXSourceRange);
   5692 
   5693 CINDEX_LINKAGE
   5694 CXResult clang_findReferencesInFileWithBlock(CXCursor, CXFile,
   5695                                              CXCursorAndRangeVisitorBlock);
   5696 
   5697 CINDEX_LINKAGE
   5698 CXResult clang_findIncludesInFileWithBlock(CXTranslationUnit, CXFile,
   5699                                            CXCursorAndRangeVisitorBlock);
   5700 
   5701 #  endif
   5702 #endif
   5703 
   5704 /**
   5705  * \brief The client's data object that is associated with a CXFile.
   5706  */
   5707 typedef void *CXIdxClientFile;
   5708 
   5709 /**
   5710  * \brief The client's data object that is associated with a semantic entity.
   5711  */
   5712 typedef void *CXIdxClientEntity;
   5713 
   5714 /**
   5715  * \brief The client's data object that is associated with a semantic container
   5716  * of entities.
   5717  */
   5718 typedef void *CXIdxClientContainer;
   5719 
   5720 /**
   5721  * \brief The client's data object that is associated with an AST file (PCH
   5722  * or module).
   5723  */
   5724 typedef void *CXIdxClientASTFile;
   5725 
   5726 /**
   5727  * \brief Source location passed to index callbacks.
   5728  */
   5729 typedef struct {
   5730   void *ptr_data[2];
   5731   unsigned int_data;
   5732 } CXIdxLoc;
   5733 
   5734 /**
   5735  * \brief Data for ppIncludedFile callback.
   5736  */
   5737 typedef struct {
   5738   /**
   5739    * \brief Location of '#' in the \#include/\#import directive.
   5740    */
   5741   CXIdxLoc hashLoc;
   5742   /**
   5743    * \brief Filename as written in the \#include/\#import directive.
   5744    */
   5745   const char *filename;
   5746   /**
   5747    * \brief The actual file that the \#include/\#import directive resolved to.
   5748    */
   5749   CXFile file;
   5750   int isImport;
   5751   int isAngled;
   5752   /**
   5753    * \brief Non-zero if the directive was automatically turned into a module
   5754    * import.
   5755    */
   5756   int isModuleImport;
   5757 } CXIdxIncludedFileInfo;
   5758 
   5759 /**
   5760  * \brief Data for IndexerCallbacks#importedASTFile.
   5761  */
   5762 typedef struct {
   5763   /**
   5764    * \brief Top level AST file containing the imported PCH, module or submodule.
   5765    */
   5766   CXFile file;
   5767   /**
   5768    * \brief The imported module or NULL if the AST file is a PCH.
   5769    */
   5770   CXModule module;
   5771   /**
   5772    * \brief Location where the file is imported. Applicable only for modules.
   5773    */
   5774   CXIdxLoc loc;
   5775   /**
   5776    * \brief Non-zero if an inclusion directive was automatically turned into
   5777    * a module import. Applicable only for modules.
   5778    */
   5779   int isImplicit;
   5780 
   5781 } CXIdxImportedASTFileInfo;
   5782 
   5783 typedef enum {
   5784   CXIdxEntity_Unexposed     = 0,
   5785   CXIdxEntity_Typedef       = 1,
   5786   CXIdxEntity_Function      = 2,
   5787   CXIdxEntity_Variable      = 3,
   5788   CXIdxEntity_Field         = 4,
   5789   CXIdxEntity_EnumConstant  = 5,
   5790 
   5791   CXIdxEntity_ObjCClass     = 6,
   5792   CXIdxEntity_ObjCProtocol  = 7,
   5793   CXIdxEntity_ObjCCategory  = 8,
   5794 
   5795   CXIdxEntity_ObjCInstanceMethod = 9,
   5796   CXIdxEntity_ObjCClassMethod    = 10,
   5797   CXIdxEntity_ObjCProperty  = 11,
   5798   CXIdxEntity_ObjCIvar      = 12,
   5799 
   5800   CXIdxEntity_Enum          = 13,
   5801   CXIdxEntity_Struct        = 14,
   5802   CXIdxEntity_Union         = 15,
   5803 
   5804   CXIdxEntity_CXXClass              = 16,
   5805   CXIdxEntity_CXXNamespace          = 17,
   5806   CXIdxEntity_CXXNamespaceAlias     = 18,
   5807   CXIdxEntity_CXXStaticVariable     = 19,
   5808   CXIdxEntity_CXXStaticMethod       = 20,
   5809   CXIdxEntity_CXXInstanceMethod     = 21,
   5810   CXIdxEntity_CXXConstructor        = 22,
   5811   CXIdxEntity_CXXDestructor         = 23,
   5812   CXIdxEntity_CXXConversionFunction = 24,
   5813   CXIdxEntity_CXXTypeAlias          = 25,
   5814   CXIdxEntity_CXXInterface          = 26
   5815 
   5816 } CXIdxEntityKind;
   5817 
   5818 typedef enum {
   5819   CXIdxEntityLang_None = 0,
   5820   CXIdxEntityLang_C    = 1,
   5821   CXIdxEntityLang_ObjC = 2,
   5822   CXIdxEntityLang_CXX  = 3,
   5823   CXIdxEntityLang_Swift  = 4
   5824 } CXIdxEntityLanguage;
   5825 
   5826 /**
   5827  * \brief Extra C++ template information for an entity. This can apply to:
   5828  * CXIdxEntity_Function
   5829  * CXIdxEntity_CXXClass
   5830  * CXIdxEntity_CXXStaticMethod
   5831  * CXIdxEntity_CXXInstanceMethod
   5832  * CXIdxEntity_CXXConstructor
   5833  * CXIdxEntity_CXXConversionFunction
   5834  * CXIdxEntity_CXXTypeAlias
   5835  */
   5836 typedef enum {
   5837   CXIdxEntity_NonTemplate   = 0,
   5838   CXIdxEntity_Template      = 1,
   5839   CXIdxEntity_TemplatePartialSpecialization = 2,
   5840   CXIdxEntity_TemplateSpecialization = 3
   5841 } CXIdxEntityCXXTemplateKind;
   5842 
   5843 typedef enum {
   5844   CXIdxAttr_Unexposed     = 0,
   5845   CXIdxAttr_IBAction      = 1,
   5846   CXIdxAttr_IBOutlet      = 2,
   5847   CXIdxAttr_IBOutletCollection = 3
   5848 } CXIdxAttrKind;
   5849 
   5850 typedef struct {
   5851   CXIdxAttrKind kind;
   5852   CXCursor cursor;
   5853   CXIdxLoc loc;
   5854 } CXIdxAttrInfo;
   5855 
   5856 typedef struct {
   5857   CXIdxEntityKind kind;
   5858   CXIdxEntityCXXTemplateKind templateKind;
   5859   CXIdxEntityLanguage lang;
   5860   const char *name;
   5861   const char *USR;
   5862   CXCursor cursor;
   5863   const CXIdxAttrInfo *const *attributes;
   5864   unsigned numAttributes;
   5865 } CXIdxEntityInfo;
   5866 
   5867 typedef struct {
   5868   CXCursor cursor;
   5869 } CXIdxContainerInfo;
   5870 
   5871 typedef struct {
   5872   const CXIdxAttrInfo *attrInfo;
   5873   const CXIdxEntityInfo *objcClass;
   5874   CXCursor classCursor;
   5875   CXIdxLoc classLoc;
   5876 } CXIdxIBOutletCollectionAttrInfo;
   5877 
   5878 typedef enum {
   5879   CXIdxDeclFlag_Skipped = 0x1
   5880 } CXIdxDeclInfoFlags;
   5881 
   5882 typedef struct {
   5883   const CXIdxEntityInfo *entityInfo;
   5884   CXCursor cursor;
   5885   CXIdxLoc loc;
   5886   const CXIdxContainerInfo *semanticContainer;
   5887   /**
   5888    * \brief Generally same as #semanticContainer but can be different in
   5889    * cases like out-of-line C++ member functions.
   5890    */
   5891   const CXIdxContainerInfo *lexicalContainer;
   5892   int isRedeclaration;
   5893   int isDefinition;
   5894   int isContainer;
   5895   const CXIdxContainerInfo *declAsContainer;
   5896   /**
   5897    * \brief Whether the declaration exists in code or was created implicitly
   5898    * by the compiler, e.g. implicit Objective-C methods for properties.
   5899    */
   5900   int isImplicit;
   5901   const CXIdxAttrInfo *const *attributes;
   5902   unsigned numAttributes;
   5903 
   5904   unsigned flags;
   5905 
   5906 } CXIdxDeclInfo;
   5907 
   5908 typedef enum {
   5909   CXIdxObjCContainer_ForwardRef = 0,
   5910   CXIdxObjCContainer_Interface = 1,
   5911   CXIdxObjCContainer_Implementation = 2
   5912 } CXIdxObjCContainerKind;
   5913 
   5914 typedef struct {
   5915   const CXIdxDeclInfo *declInfo;
   5916   CXIdxObjCContainerKind kind;
   5917 } CXIdxObjCContainerDeclInfo;
   5918 
   5919 typedef struct {
   5920   const CXIdxEntityInfo *base;
   5921   CXCursor cursor;
   5922   CXIdxLoc loc;
   5923 } CXIdxBaseClassInfo;
   5924 
   5925 typedef struct {
   5926   const CXIdxEntityInfo *protocol;
   5927   CXCursor cursor;
   5928   CXIdxLoc loc;
   5929 } CXIdxObjCProtocolRefInfo;
   5930 
   5931 typedef struct {
   5932   const CXIdxObjCProtocolRefInfo *const *protocols;
   5933   unsigned numProtocols;
   5934 } CXIdxObjCProtocolRefListInfo;
   5935 
   5936 typedef struct {
   5937   const CXIdxObjCContainerDeclInfo *containerInfo;
   5938   const CXIdxBaseClassInfo *superInfo;
   5939   const CXIdxObjCProtocolRefListInfo *protocols;
   5940 } CXIdxObjCInterfaceDeclInfo;
   5941 
   5942 typedef struct {
   5943   const CXIdxObjCContainerDeclInfo *containerInfo;
   5944   const CXIdxEntityInfo *objcClass;
   5945   CXCursor classCursor;
   5946   CXIdxLoc classLoc;
   5947   const CXIdxObjCProtocolRefListInfo *protocols;
   5948 } CXIdxObjCCategoryDeclInfo;
   5949 
   5950 typedef struct {
   5951   const CXIdxDeclInfo *declInfo;
   5952   const CXIdxEntityInfo *getter;
   5953   const CXIdxEntityInfo *setter;
   5954 } CXIdxObjCPropertyDeclInfo;
   5955 
   5956 typedef struct {
   5957   const CXIdxDeclInfo *declInfo;
   5958   const CXIdxBaseClassInfo *const *bases;
   5959   unsigned numBases;
   5960 } CXIdxCXXClassDeclInfo;
   5961 
   5962 /**
   5963  * \brief Data for IndexerCallbacks#indexEntityReference.
   5964  */
   5965 typedef enum {
   5966   /**
   5967    * \brief The entity is referenced directly in user's code.
   5968    */
   5969   CXIdxEntityRef_Direct = 1,
   5970   /**
   5971    * \brief An implicit reference, e.g. a reference of an Objective-C method
   5972    * via the dot syntax.
   5973    */
   5974   CXIdxEntityRef_Implicit = 2
   5975 } CXIdxEntityRefKind;
   5976 
   5977 /**
   5978  * \brief Data for IndexerCallbacks#indexEntityReference.
   5979  */
   5980 typedef struct {
   5981   CXIdxEntityRefKind kind;
   5982   /**
   5983    * \brief Reference cursor.
   5984    */
   5985   CXCursor cursor;
   5986   CXIdxLoc loc;
   5987   /**
   5988    * \brief The entity that gets referenced.
   5989    */
   5990   const CXIdxEntityInfo *referencedEntity;
   5991   /**
   5992    * \brief Immediate "parent" of the reference. For example:
   5993    *
   5994    * \code
   5995    * Foo *var;
   5996    * \endcode
   5997    *
   5998    * The parent of reference of type 'Foo' is the variable 'var'.
   5999    * For references inside statement bodies of functions/methods,
   6000    * the parentEntity will be the function/method.
   6001    */
   6002   const CXIdxEntityInfo *parentEntity;
   6003   /**
   6004    * \brief Lexical container context of the reference.
   6005    */
   6006   const CXIdxContainerInfo *container;
   6007 } CXIdxEntityRefInfo;
   6008 
   6009 /**
   6010  * \brief A group of callbacks used by #clang_indexSourceFile and
   6011  * #clang_indexTranslationUnit.
   6012  */
   6013 typedef struct {
   6014   /**
   6015    * \brief Called periodically to check whether indexing should be aborted.
   6016    * Should return 0 to continue, and non-zero to abort.
   6017    */
   6018   int (*abortQuery)(CXClientData client_data, void *reserved);
   6019 
   6020   /**
   6021    * \brief Called at the end of indexing; passes the complete diagnostic set.
   6022    */
   6023   void (*diagnostic)(CXClientData client_data,
   6024                      CXDiagnosticSet, void *reserved);
   6025 
   6026   CXIdxClientFile (*enteredMainFile)(CXClientData client_data,
   6027                                      CXFile mainFile, void *reserved);
   6028 
   6029   /**
   6030    * \brief Called when a file gets \#included/\#imported.
   6031    */
   6032   CXIdxClientFile (*ppIncludedFile)(CXClientData client_data,
   6033                                     const CXIdxIncludedFileInfo *);
   6034 
   6035   /**
   6036    * \brief Called when a AST file (PCH or module) gets imported.
   6037    *
   6038    * AST files will not get indexed (there will not be callbacks to index all
   6039    * the entities in an AST file). The recommended action is that, if the AST
   6040    * file is not already indexed, to initiate a new indexing job specific to
   6041    * the AST file.
   6042    */
   6043   CXIdxClientASTFile (*importedASTFile)(CXClientData client_data,
   6044                                         const CXIdxImportedASTFileInfo *);
   6045 
   6046   /**
   6047    * \brief Called at the beginning of indexing a translation unit.
   6048    */
   6049   CXIdxClientContainer (*startedTranslationUnit)(CXClientData client_data,
   6050                                                  void *reserved);
   6051 
   6052   void (*indexDeclaration)(CXClientData client_data,
   6053                            const CXIdxDeclInfo *);
   6054 
   6055   /**
   6056    * \brief Called to index a reference of an entity.
   6057    */
   6058   void (*indexEntityReference)(CXClientData client_data,
   6059                                const CXIdxEntityRefInfo *);
   6060 
   6061 } IndexerCallbacks;
   6062 
   6063 CINDEX_LINKAGE int clang_index_isEntityObjCContainerKind(CXIdxEntityKind);
   6064 CINDEX_LINKAGE const CXIdxObjCContainerDeclInfo *
   6065 clang_index_getObjCContainerDeclInfo(const CXIdxDeclInfo *);
   6066 
   6067 CINDEX_LINKAGE const CXIdxObjCInterfaceDeclInfo *
   6068 clang_index_getObjCInterfaceDeclInfo(const CXIdxDeclInfo *);
   6069 
   6070 CINDEX_LINKAGE
   6071 const CXIdxObjCCategoryDeclInfo *
   6072 clang_index_getObjCCategoryDeclInfo(const CXIdxDeclInfo *);
   6073 
   6074 CINDEX_LINKAGE const CXIdxObjCProtocolRefListInfo *
   6075 clang_index_getObjCProtocolRefListInfo(const CXIdxDeclInfo *);
   6076 
   6077 CINDEX_LINKAGE const CXIdxObjCPropertyDeclInfo *
   6078 clang_index_getObjCPropertyDeclInfo(const CXIdxDeclInfo *);
   6079 
   6080 CINDEX_LINKAGE const CXIdxIBOutletCollectionAttrInfo *
   6081 clang_index_getIBOutletCollectionAttrInfo(const CXIdxAttrInfo *);
   6082 
   6083 CINDEX_LINKAGE const CXIdxCXXClassDeclInfo *
   6084 clang_index_getCXXClassDeclInfo(const CXIdxDeclInfo *);
   6085 
   6086 /**
   6087  * \brief For retrieving a custom CXIdxClientContainer attached to a
   6088  * container.
   6089  */
   6090 CINDEX_LINKAGE CXIdxClientContainer
   6091 clang_index_getClientContainer(const CXIdxContainerInfo *);
   6092 
   6093 /**
   6094  * \brief For setting a custom CXIdxClientContainer attached to a
   6095  * container.
   6096  */
   6097 CINDEX_LINKAGE void
   6098 clang_index_setClientContainer(const CXIdxContainerInfo *,CXIdxClientContainer);
   6099 
   6100 /**
   6101  * \brief For retrieving a custom CXIdxClientEntity attached to an entity.
   6102  */
   6103 CINDEX_LINKAGE CXIdxClientEntity
   6104 clang_index_getClientEntity(const CXIdxEntityInfo *);
   6105 
   6106 /**
   6107  * \brief For setting a custom CXIdxClientEntity attached to an entity.
   6108  */
   6109 CINDEX_LINKAGE void
   6110 clang_index_setClientEntity(const CXIdxEntityInfo *, CXIdxClientEntity);
   6111 
   6112 /**
   6113  * \brief An indexing action/session, to be applied to one or multiple
   6114  * translation units.
   6115  */
   6116 typedef void *CXIndexAction;
   6117 
   6118 /**
   6119  * \brief An indexing action/session, to be applied to one or multiple
   6120  * translation units.
   6121  *
   6122  * \param CIdx The index object with which the index action will be associated.
   6123  */
   6124 CINDEX_LINKAGE CXIndexAction clang_IndexAction_create(CXIndex CIdx);
   6125 
   6126 /**
   6127  * \brief Destroy the given index action.
   6128  *
   6129  * The index action must not be destroyed until all of the translation units
   6130  * created within that index action have been destroyed.
   6131  */
   6132 CINDEX_LINKAGE void clang_IndexAction_dispose(CXIndexAction);
   6133 
   6134 typedef enum {
   6135   /**
   6136    * \brief Used to indicate that no special indexing options are needed.
   6137    */
   6138   CXIndexOpt_None = 0x0,
   6139 
   6140   /**
   6141    * \brief Used to indicate that IndexerCallbacks#indexEntityReference should
   6142    * be invoked for only one reference of an entity per source file that does
   6143    * not also include a declaration/definition of the entity.
   6144    */
   6145   CXIndexOpt_SuppressRedundantRefs = 0x1,
   6146 
   6147   /**
   6148    * \brief Function-local symbols should be indexed. If this is not set
   6149    * function-local symbols will be ignored.
   6150    */
   6151   CXIndexOpt_IndexFunctionLocalSymbols = 0x2,
   6152 
   6153   /**
   6154    * \brief Implicit function/class template instantiations should be indexed.
   6155    * If this is not set, implicit instantiations will be ignored.
   6156    */
   6157   CXIndexOpt_IndexImplicitTemplateInstantiations = 0x4,
   6158 
   6159   /**
   6160    * \brief Suppress all compiler warnings when parsing for indexing.
   6161    */
   6162   CXIndexOpt_SuppressWarnings = 0x8,
   6163 
   6164   /**
   6165    * \brief Skip a function/method body that was already parsed during an
   6166    * indexing session associated with a \c CXIndexAction object.
   6167    * Bodies in system headers are always skipped.
   6168    */
   6169   CXIndexOpt_SkipParsedBodiesInSession = 0x10
   6170 
   6171 } CXIndexOptFlags;
   6172 
   6173 /**
   6174  * \brief Index the given source file and the translation unit corresponding
   6175  * to that file via callbacks implemented through #IndexerCallbacks.
   6176  *
   6177  * \param client_data pointer data supplied by the client, which will
   6178  * be passed to the invoked callbacks.
   6179  *
   6180  * \param index_callbacks Pointer to indexing callbacks that the client
   6181  * implements.
   6182  *
   6183  * \param index_callbacks_size Size of #IndexerCallbacks structure that gets
   6184  * passed in index_callbacks.
   6185  *
   6186  * \param index_options A bitmask of options that affects how indexing is
   6187  * performed. This should be a bitwise OR of the CXIndexOpt_XXX flags.
   6188  *
   6189  * \param[out] out_TU pointer to store a \c CXTranslationUnit that can be
   6190  * reused after indexing is finished. Set to \c NULL if you do not require it.
   6191  *
   6192  * \returns 0 on success or if there were errors from which the compiler could
   6193  * recover.  If there is a failure from which there is no recovery, returns
   6194  * a non-zero \c CXErrorCode.
   6195  *
   6196  * The rest of the parameters are the same as #clang_parseTranslationUnit.
   6197  */
   6198 CINDEX_LINKAGE int clang_indexSourceFile(CXIndexAction,
   6199                                          CXClientData client_data,
   6200                                          IndexerCallbacks *index_callbacks,
   6201                                          unsigned index_callbacks_size,
   6202                                          unsigned index_options,
   6203                                          const char *source_filename,
   6204                                          const char * const *command_line_args,
   6205                                          int num_command_line_args,
   6206                                          struct CXUnsavedFile *unsaved_files,
   6207                                          unsigned num_unsaved_files,
   6208                                          CXTranslationUnit *out_TU,
   6209                                          unsigned TU_options);
   6210 
   6211 /**
   6212  * \brief Same as clang_indexSourceFile but requires a full command line
   6213  * for \c command_line_args including argv[0]. This is useful if the standard
   6214  * library paths are relative to the binary.
   6215  */
   6216 CINDEX_LINKAGE int clang_indexSourceFileFullArgv(
   6217     CXIndexAction, CXClientData client_data, IndexerCallbacks *index_callbacks,
   6218     unsigned index_callbacks_size, unsigned index_options,
   6219     const char *source_filename, const char *const *command_line_args,
   6220     int num_command_line_args, struct CXUnsavedFile *unsaved_files,
   6221     unsigned num_unsaved_files, CXTranslationUnit *out_TU, unsigned TU_options);
   6222 
   6223 /**
   6224  * \brief Index the given translation unit via callbacks implemented through
   6225  * #IndexerCallbacks.
   6226  *
   6227  * The order of callback invocations is not guaranteed to be the same as
   6228  * when indexing a source file. The high level order will be:
   6229  *
   6230  *   -Preprocessor callbacks invocations
   6231  *   -Declaration/reference callbacks invocations
   6232  *   -Diagnostic callback invocations
   6233  *
   6234  * The parameters are the same as #clang_indexSourceFile.
   6235  *
   6236  * \returns If there is a failure from which there is no recovery, returns
   6237  * non-zero, otherwise returns 0.
   6238  */
   6239 CINDEX_LINKAGE int clang_indexTranslationUnit(CXIndexAction,
   6240                                               CXClientData client_data,
   6241                                               IndexerCallbacks *index_callbacks,
   6242                                               unsigned index_callbacks_size,
   6243                                               unsigned index_options,
   6244                                               CXTranslationUnit);
   6245 
   6246 /**
   6247  * \brief Retrieve the CXIdxFile, file, line, column, and offset represented by
   6248  * the given CXIdxLoc.
   6249  *
   6250  * If the location refers into a macro expansion, retrieves the
   6251  * location of the macro expansion and if it refers into a macro argument
   6252  * retrieves the location of the argument.
   6253  */
   6254 CINDEX_LINKAGE void clang_indexLoc_getFileLocation(CXIdxLoc loc,
   6255                                                    CXIdxClientFile *indexFile,
   6256                                                    CXFile *file,
   6257                                                    unsigned *line,
   6258                                                    unsigned *column,
   6259                                                    unsigned *offset);
   6260 
   6261 /**
   6262  * \brief Retrieve the CXSourceLocation represented by the given CXIdxLoc.
   6263  */
   6264 CINDEX_LINKAGE
   6265 CXSourceLocation clang_indexLoc_getCXSourceLocation(CXIdxLoc loc);
   6266 
   6267 /**
   6268  * \brief Visitor invoked for each field found by a traversal.
   6269  *
   6270  * This visitor function will be invoked for each field found by
   6271  * \c clang_Type_visitFields. Its first argument is the cursor being
   6272  * visited, its second argument is the client data provided to
   6273  * \c clang_Type_visitFields.
   6274  *
   6275  * The visitor should return one of the \c CXVisitorResult values
   6276  * to direct \c clang_Type_visitFields.
   6277  */
   6278 typedef enum CXVisitorResult (*CXFieldVisitor)(CXCursor C,
   6279                                                CXClientData client_data);
   6280 
   6281 /**
   6282  * \brief Visit the fields of a particular type.
   6283  *
   6284  * This function visits all the direct fields of the given cursor,
   6285  * invoking the given \p visitor function with the cursors of each
   6286  * visited field. The traversal may be ended prematurely, if
   6287  * the visitor returns \c CXFieldVisit_Break.
   6288  *
   6289  * \param T the record type whose field may be visited.
   6290  *
   6291  * \param visitor the visitor function that will be invoked for each
   6292  * field of \p T.
   6293  *
   6294  * \param client_data pointer data supplied by the client, which will
   6295  * be passed to the visitor each time it is invoked.
   6296  *
   6297  * \returns a non-zero value if the traversal was terminated
   6298  * prematurely by the visitor returning \c CXFieldVisit_Break.
   6299  */
   6300 CINDEX_LINKAGE unsigned clang_Type_visitFields(CXType T,
   6301                                                CXFieldVisitor visitor,
   6302                                                CXClientData client_data);
   6303 
   6304 /**
   6305  * @}
   6306  */
   6307 
   6308 /**
   6309  * @}
   6310  */
   6311 
   6312 #ifdef __cplusplus
   6313 }
   6314 #endif
   6315 #endif
   6316