]> CyberLeo.Net >> Repos - FreeBSD/releng/9.0.git/blob - contrib/llvm/tools/clang/include/clang-c/Index.h
Copy stable/9 to releng/9.0 as part of the FreeBSD 9.0-RELEASE release
[FreeBSD/releng/9.0.git] / contrib / llvm / tools / clang / include / clang-c / Index.h
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 inferface 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 CLANG_C_INDEX_H
17 #define CLANG_C_INDEX_H
18
19 #include <sys/stat.h>
20 #include <time.h>
21 #include <stdio.h>
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 /* MSVC DLL import/export. */
28 #ifdef _MSC_VER
29   #ifdef _CINDEX_LIB_
30     #define CINDEX_LINKAGE __declspec(dllexport)
31   #else
32     #define CINDEX_LINKAGE __declspec(dllimport)
33   #endif
34 #else
35   #define CINDEX_LINKAGE
36 #endif
37
38 /** \defgroup CINDEX libclang: C Interface to Clang
39  *
40  * The C Interface to Clang provides a relatively small API that exposes
41  * facilities for parsing source code into an abstract syntax tree (AST),
42  * loading already-parsed ASTs, traversing the AST, associating
43  * physical source locations with elements within the AST, and other
44  * facilities that support Clang-based development tools.
45  *
46  * This C interface to Clang will never provide all of the information
47  * representation stored in Clang's C++ AST, nor should it: the intent is to
48  * maintain an API that is relatively stable from one release to the next,
49  * providing only the basic functionality needed to support development tools.
50  *
51  * To avoid namespace pollution, data types are prefixed with "CX" and
52  * functions are prefixed with "clang_".
53  *
54  * @{
55  */
56
57 /**
58  * \brief An "index" that consists of a set of translation units that would
59  * typically be linked together into an executable or library.
60  */
61 typedef void *CXIndex;
62
63 /**
64  * \brief A single translation unit, which resides in an index.
65  */
66 typedef struct CXTranslationUnitImpl *CXTranslationUnit;
67
68 /**
69  * \brief Opaque pointer representing client data that will be passed through
70  * to various callbacks and visitors.
71  */
72 typedef void *CXClientData;
73
74 /**
75  * \brief Provides the contents of a file that has not yet been saved to disk.
76  *
77  * Each CXUnsavedFile instance provides the name of a file on the
78  * system along with the current contents of that file that have not
79  * yet been saved to disk.
80  */
81 struct CXUnsavedFile {
82   /**
83    * \brief The file whose contents have not yet been saved.
84    *
85    * This file must already exist in the file system.
86    */
87   const char *Filename;
88
89   /**
90    * \brief A buffer containing the unsaved contents of this file.
91    */
92   const char *Contents;
93
94   /**
95    * \brief The length of the unsaved contents of this buffer.
96    */
97   unsigned long Length;
98 };
99
100 /**
101  * \brief Describes the availability of a particular entity, which indicates
102  * whether the use of this entity will result in a warning or error due to
103  * it being deprecated or unavailable.
104  */
105 enum CXAvailabilityKind {
106   /**
107    * \brief The entity is available.
108    */
109   CXAvailability_Available,
110   /**
111    * \brief The entity is available, but has been deprecated (and its use is
112    * not recommended).
113    */
114   CXAvailability_Deprecated,
115   /**
116    * \brief The entity is not available; any use of it will be an error.
117    */
118   CXAvailability_NotAvailable,
119   /**
120    * \brief The entity is available, but not accessible; any use of it will be
121    * an error.
122    */
123   CXAvailability_NotAccessible
124 };
125   
126 /**
127  * \defgroup CINDEX_STRING String manipulation routines
128  *
129  * @{
130  */
131
132 /**
133  * \brief A character string.
134  *
135  * The \c CXString type is used to return strings from the interface when
136  * the ownership of that string might different from one call to the next.
137  * Use \c clang_getCString() to retrieve the string data and, once finished
138  * with the string data, call \c clang_disposeString() to free the string.
139  */
140 typedef struct {
141   void *data;
142   unsigned private_flags;
143 } CXString;
144
145 /**
146  * \brief Retrieve the character data associated with the given string.
147  */
148 CINDEX_LINKAGE const char *clang_getCString(CXString string);
149
150 /**
151  * \brief Free the given string,
152  */
153 CINDEX_LINKAGE void clang_disposeString(CXString string);
154
155 /**
156  * @}
157  */
158
159 /**
160  * \brief clang_createIndex() provides a shared context for creating
161  * translation units. It provides two options:
162  *
163  * - excludeDeclarationsFromPCH: When non-zero, allows enumeration of "local"
164  * declarations (when loading any new translation units). A "local" declaration
165  * is one that belongs in the translation unit itself and not in a precompiled
166  * header that was used by the translation unit. If zero, all declarations
167  * will be enumerated.
168  *
169  * Here is an example:
170  *
171  *   // excludeDeclsFromPCH = 1, displayDiagnostics=1
172  *   Idx = clang_createIndex(1, 1);
173  *
174  *   // IndexTest.pch was produced with the following command:
175  *   // "clang -x c IndexTest.h -emit-ast -o IndexTest.pch"
176  *   TU = clang_createTranslationUnit(Idx, "IndexTest.pch");
177  *
178  *   // This will load all the symbols from 'IndexTest.pch'
179  *   clang_visitChildren(clang_getTranslationUnitCursor(TU),
180  *                       TranslationUnitVisitor, 0);
181  *   clang_disposeTranslationUnit(TU);
182  *
183  *   // This will load all the symbols from 'IndexTest.c', excluding symbols
184  *   // from 'IndexTest.pch'.
185  *   char *args[] = { "-Xclang", "-include-pch=IndexTest.pch" };
186  *   TU = clang_createTranslationUnitFromSourceFile(Idx, "IndexTest.c", 2, args,
187  *                                                  0, 0);
188  *   clang_visitChildren(clang_getTranslationUnitCursor(TU),
189  *                       TranslationUnitVisitor, 0);
190  *   clang_disposeTranslationUnit(TU);
191  *
192  * This process of creating the 'pch', loading it separately, and using it (via
193  * -include-pch) allows 'excludeDeclsFromPCH' to remove redundant callbacks
194  * (which gives the indexer the same performance benefit as the compiler).
195  */
196 CINDEX_LINKAGE CXIndex clang_createIndex(int excludeDeclarationsFromPCH,
197                                          int displayDiagnostics);
198
199 /**
200  * \brief Destroy the given index.
201  *
202  * The index must not be destroyed until all of the translation units created
203  * within that index have been destroyed.
204  */
205 CINDEX_LINKAGE void clang_disposeIndex(CXIndex index);
206
207 /**
208  * \defgroup CINDEX_FILES File manipulation routines
209  *
210  * @{
211  */
212
213 /**
214  * \brief A particular source file that is part of a translation unit.
215  */
216 typedef void *CXFile;
217
218
219 /**
220  * \brief Retrieve the complete file and path name of the given file.
221  */
222 CINDEX_LINKAGE CXString clang_getFileName(CXFile SFile);
223
224 /**
225  * \brief Retrieve the last modification time of the given file.
226  */
227 CINDEX_LINKAGE time_t clang_getFileTime(CXFile SFile);
228
229 /**
230  * \brief Determine whether the given header is guarded against
231  * multiple inclusions, either with the conventional
232  * #ifndef/#define/#endif macro guards or with #pragma once.
233  */
234 CINDEX_LINKAGE unsigned 
235 clang_isFileMultipleIncludeGuarded(CXTranslationUnit tu, CXFile file);
236
237 /**
238  * \brief Retrieve a file handle within the given translation unit.
239  *
240  * \param tu the translation unit
241  *
242  * \param file_name the name of the file.
243  *
244  * \returns the file handle for the named file in the translation unit \p tu,
245  * or a NULL file handle if the file was not a part of this translation unit.
246  */
247 CINDEX_LINKAGE CXFile clang_getFile(CXTranslationUnit tu,
248                                     const char *file_name);
249
250 /**
251  * @}
252  */
253
254 /**
255  * \defgroup CINDEX_LOCATIONS Physical source locations
256  *
257  * Clang represents physical source locations in its abstract syntax tree in
258  * great detail, with file, line, and column information for the majority of
259  * the tokens parsed in the source code. These data types and functions are
260  * used to represent source location information, either for a particular
261  * point in the program or for a range of points in the program, and extract
262  * specific location information from those data types.
263  *
264  * @{
265  */
266
267 /**
268  * \brief Identifies a specific source location within a translation
269  * unit.
270  *
271  * Use clang_getExpansionLocation() or clang_getSpellingLocation()
272  * to map a source location to a particular file, line, and column.
273  */
274 typedef struct {
275   void *ptr_data[2];
276   unsigned int_data;
277 } CXSourceLocation;
278
279 /**
280  * \brief Identifies a half-open character range in the source code.
281  *
282  * Use clang_getRangeStart() and clang_getRangeEnd() to retrieve the
283  * starting and end locations from a source range, respectively.
284  */
285 typedef struct {
286   void *ptr_data[2];
287   unsigned begin_int_data;
288   unsigned end_int_data;
289 } CXSourceRange;
290
291 /**
292  * \brief Retrieve a NULL (invalid) source location.
293  */
294 CINDEX_LINKAGE CXSourceLocation clang_getNullLocation();
295
296 /**
297  * \determine Determine whether two source locations, which must refer into
298  * the same translation unit, refer to exactly the same point in the source
299  * code.
300  *
301  * \returns non-zero if the source locations refer to the same location, zero
302  * if they refer to different locations.
303  */
304 CINDEX_LINKAGE unsigned clang_equalLocations(CXSourceLocation loc1,
305                                              CXSourceLocation loc2);
306
307 /**
308  * \brief Retrieves the source location associated with a given file/line/column
309  * in a particular translation unit.
310  */
311 CINDEX_LINKAGE CXSourceLocation clang_getLocation(CXTranslationUnit tu,
312                                                   CXFile file,
313                                                   unsigned line,
314                                                   unsigned column);
315 /**
316  * \brief Retrieves the source location associated with a given character offset
317  * in a particular translation unit.
318  */
319 CINDEX_LINKAGE CXSourceLocation clang_getLocationForOffset(CXTranslationUnit tu,
320                                                            CXFile file,
321                                                            unsigned offset);
322
323 /**
324  * \brief Retrieve a NULL (invalid) source range.
325  */
326 CINDEX_LINKAGE CXSourceRange clang_getNullRange();
327
328 /**
329  * \brief Retrieve a source range given the beginning and ending source
330  * locations.
331  */
332 CINDEX_LINKAGE CXSourceRange clang_getRange(CXSourceLocation begin,
333                                             CXSourceLocation end);
334
335 /**
336  * \brief Determine whether two ranges are equivalent.
337  *
338  * \returns non-zero if the ranges are the same, zero if they differ.
339  */
340 CINDEX_LINKAGE unsigned clang_equalRanges(CXSourceRange range1,
341                                           CXSourceRange range2);
342
343 /**
344  * \brief Returns non-zero if \arg range is null.
345  */
346 CINDEX_LINKAGE int clang_Range_isNull(CXSourceRange range);
347
348 /**
349  * \brief Retrieve the file, line, column, and offset represented by
350  * the given source location.
351  *
352  * If the location refers into a macro expansion, retrieves the
353  * location of the macro expansion.
354  *
355  * \param location the location within a source file that will be decomposed
356  * into its parts.
357  *
358  * \param file [out] if non-NULL, will be set to the file to which the given
359  * source location points.
360  *
361  * \param line [out] if non-NULL, will be set to the line to which the given
362  * source location points.
363  *
364  * \param column [out] if non-NULL, will be set to the column to which the given
365  * source location points.
366  *
367  * \param offset [out] if non-NULL, will be set to the offset into the
368  * buffer to which the given source location points.
369  */
370 CINDEX_LINKAGE void clang_getExpansionLocation(CXSourceLocation location,
371                                                CXFile *file,
372                                                unsigned *line,
373                                                unsigned *column,
374                                                unsigned *offset);
375
376 /**
377  * \brief Retrieve the file, line, column, and offset represented by
378  * the given source location, as specified in a # line directive.
379  *
380  * Example: given the following source code in a file somefile.c
381  *
382  * #123 "dummy.c" 1
383  *
384  * static int func(void)
385  * {
386  *     return 0;
387  * }
388  *
389  * the location information returned by this function would be
390  *
391  * File: dummy.c Line: 124 Column: 12
392  *
393  * whereas clang_getExpansionLocation would have returned
394  *
395  * File: somefile.c Line: 3 Column: 12
396  *
397  * \param location the location within a source file that will be decomposed
398  * into its parts.
399  *
400  * \param filename [out] if non-NULL, will be set to the filename of the
401  * source location. Note that filenames returned will be for "virtual" files,
402  * which don't necessarily exist on the machine running clang - e.g. when
403  * parsing preprocessed output obtained from a different environment. If
404  * a non-NULL value is passed in, remember to dispose of the returned value
405  * using \c clang_disposeString() once you've finished with it. For an invalid
406  * source location, an empty string is returned.
407  *
408  * \param line [out] if non-NULL, will be set to the line number of the
409  * source location. For an invalid source location, zero is returned.
410  *
411  * \param column [out] if non-NULL, will be set to the column number of the
412  * source location. For an invalid source location, zero is returned.
413  */
414 CINDEX_LINKAGE void clang_getPresumedLocation(CXSourceLocation location,
415                                               CXString *filename,
416                                               unsigned *line,
417                                               unsigned *column);
418
419 /**
420  * \brief Legacy API to retrieve the file, line, column, and offset represented
421  * by the given source location.
422  *
423  * This interface has been replaced by the newer interface
424  * \see clang_getExpansionLocation(). See that interface's documentation for
425  * details.
426  */
427 CINDEX_LINKAGE void clang_getInstantiationLocation(CXSourceLocation location,
428                                                    CXFile *file,
429                                                    unsigned *line,
430                                                    unsigned *column,
431                                                    unsigned *offset);
432
433 /**
434  * \brief Retrieve the file, line, column, and offset represented by
435  * the given source location.
436  *
437  * If the location refers into a macro instantiation, return where the
438  * location was originally spelled in the source file.
439  *
440  * \param location the location within a source file that will be decomposed
441  * into its parts.
442  *
443  * \param file [out] if non-NULL, will be set to the file to which the given
444  * source location points.
445  *
446  * \param line [out] if non-NULL, will be set to the line to which the given
447  * source location points.
448  *
449  * \param column [out] if non-NULL, will be set to the column to which the given
450  * source location points.
451  *
452  * \param offset [out] if non-NULL, will be set to the offset into the
453  * buffer to which the given source location points.
454  */
455 CINDEX_LINKAGE void clang_getSpellingLocation(CXSourceLocation location,
456                                               CXFile *file,
457                                               unsigned *line,
458                                               unsigned *column,
459                                               unsigned *offset);
460
461 /**
462  * \brief Retrieve a source location representing the first character within a
463  * source range.
464  */
465 CINDEX_LINKAGE CXSourceLocation clang_getRangeStart(CXSourceRange range);
466
467 /**
468  * \brief Retrieve a source location representing the last character within a
469  * source range.
470  */
471 CINDEX_LINKAGE CXSourceLocation clang_getRangeEnd(CXSourceRange range);
472
473 /**
474  * @}
475  */
476
477 /**
478  * \defgroup CINDEX_DIAG Diagnostic reporting
479  *
480  * @{
481  */
482
483 /**
484  * \brief Describes the severity of a particular diagnostic.
485  */
486 enum CXDiagnosticSeverity {
487   /**
488    * \brief A diagnostic that has been suppressed, e.g., by a command-line
489    * option.
490    */
491   CXDiagnostic_Ignored = 0,
492
493   /**
494    * \brief This diagnostic is a note that should be attached to the
495    * previous (non-note) diagnostic.
496    */
497   CXDiagnostic_Note    = 1,
498
499   /**
500    * \brief This diagnostic indicates suspicious code that may not be
501    * wrong.
502    */
503   CXDiagnostic_Warning = 2,
504
505   /**
506    * \brief This diagnostic indicates that the code is ill-formed.
507    */
508   CXDiagnostic_Error   = 3,
509
510   /**
511    * \brief This diagnostic indicates that the code is ill-formed such
512    * that future parser recovery is unlikely to produce useful
513    * results.
514    */
515   CXDiagnostic_Fatal   = 4
516 };
517
518 /**
519  * \brief A single diagnostic, containing the diagnostic's severity,
520  * location, text, source ranges, and fix-it hints.
521  */
522 typedef void *CXDiagnostic;
523
524 /**
525  * \brief Determine the number of diagnostics produced for the given
526  * translation unit.
527  */
528 CINDEX_LINKAGE unsigned clang_getNumDiagnostics(CXTranslationUnit Unit);
529
530 /**
531  * \brief Retrieve a diagnostic associated with the given translation unit.
532  *
533  * \param Unit the translation unit to query.
534  * \param Index the zero-based diagnostic number to retrieve.
535  *
536  * \returns the requested diagnostic. This diagnostic must be freed
537  * via a call to \c clang_disposeDiagnostic().
538  */
539 CINDEX_LINKAGE CXDiagnostic clang_getDiagnostic(CXTranslationUnit Unit,
540                                                 unsigned Index);
541
542 /**
543  * \brief Destroy a diagnostic.
544  */
545 CINDEX_LINKAGE void clang_disposeDiagnostic(CXDiagnostic Diagnostic);
546
547 /**
548  * \brief Options to control the display of diagnostics.
549  *
550  * The values in this enum are meant to be combined to customize the
551  * behavior of \c clang_displayDiagnostic().
552  */
553 enum CXDiagnosticDisplayOptions {
554   /**
555    * \brief Display the source-location information where the
556    * diagnostic was located.
557    *
558    * When set, diagnostics will be prefixed by the file, line, and
559    * (optionally) column to which the diagnostic refers. For example,
560    *
561    * \code
562    * test.c:28: warning: extra tokens at end of #endif directive
563    * \endcode
564    *
565    * This option corresponds to the clang flag \c -fshow-source-location.
566    */
567   CXDiagnostic_DisplaySourceLocation = 0x01,
568
569   /**
570    * \brief If displaying the source-location information of the
571    * diagnostic, also include the column number.
572    *
573    * This option corresponds to the clang flag \c -fshow-column.
574    */
575   CXDiagnostic_DisplayColumn = 0x02,
576
577   /**
578    * \brief If displaying the source-location information of the
579    * diagnostic, also include information about source ranges in a
580    * machine-parsable format.
581    *
582    * This option corresponds to the clang flag
583    * \c -fdiagnostics-print-source-range-info.
584    */
585   CXDiagnostic_DisplaySourceRanges = 0x04,
586   
587   /**
588    * \brief Display the option name associated with this diagnostic, if any.
589    *
590    * The option name displayed (e.g., -Wconversion) will be placed in brackets
591    * after the diagnostic text. This option corresponds to the clang flag
592    * \c -fdiagnostics-show-option.
593    */
594   CXDiagnostic_DisplayOption = 0x08,
595   
596   /**
597    * \brief Display the category number associated with this diagnostic, if any.
598    *
599    * The category number is displayed within brackets after the diagnostic text.
600    * This option corresponds to the clang flag 
601    * \c -fdiagnostics-show-category=id.
602    */
603   CXDiagnostic_DisplayCategoryId = 0x10,
604
605   /**
606    * \brief Display the category name associated with this diagnostic, if any.
607    *
608    * The category name is displayed within brackets after the diagnostic text.
609    * This option corresponds to the clang flag 
610    * \c -fdiagnostics-show-category=name.
611    */
612   CXDiagnostic_DisplayCategoryName = 0x20
613 };
614
615 /**
616  * \brief Format the given diagnostic in a manner that is suitable for display.
617  *
618  * This routine will format the given diagnostic to a string, rendering
619  * the diagnostic according to the various options given. The
620  * \c clang_defaultDiagnosticDisplayOptions() function returns the set of
621  * options that most closely mimics the behavior of the clang compiler.
622  *
623  * \param Diagnostic The diagnostic to print.
624  *
625  * \param Options A set of options that control the diagnostic display,
626  * created by combining \c CXDiagnosticDisplayOptions values.
627  *
628  * \returns A new string containing for formatted diagnostic.
629  */
630 CINDEX_LINKAGE CXString clang_formatDiagnostic(CXDiagnostic Diagnostic,
631                                                unsigned Options);
632
633 /**
634  * \brief Retrieve the set of display options most similar to the
635  * default behavior of the clang compiler.
636  *
637  * \returns A set of display options suitable for use with \c
638  * clang_displayDiagnostic().
639  */
640 CINDEX_LINKAGE unsigned clang_defaultDiagnosticDisplayOptions(void);
641
642 /**
643  * \brief Determine the severity of the given diagnostic.
644  */
645 CINDEX_LINKAGE enum CXDiagnosticSeverity
646 clang_getDiagnosticSeverity(CXDiagnostic);
647
648 /**
649  * \brief Retrieve the source location of the given diagnostic.
650  *
651  * This location is where Clang would print the caret ('^') when
652  * displaying the diagnostic on the command line.
653  */
654 CINDEX_LINKAGE CXSourceLocation clang_getDiagnosticLocation(CXDiagnostic);
655
656 /**
657  * \brief Retrieve the text of the given diagnostic.
658  */
659 CINDEX_LINKAGE CXString clang_getDiagnosticSpelling(CXDiagnostic);
660
661 /**
662  * \brief Retrieve the name of the command-line option that enabled this
663  * diagnostic.
664  *
665  * \param Diag The diagnostic to be queried.
666  *
667  * \param Disable If non-NULL, will be set to the option that disables this
668  * diagnostic (if any).
669  *
670  * \returns A string that contains the command-line option used to enable this
671  * warning, such as "-Wconversion" or "-pedantic". 
672  */
673 CINDEX_LINKAGE CXString clang_getDiagnosticOption(CXDiagnostic Diag,
674                                                   CXString *Disable);
675
676 /**
677  * \brief Retrieve the category number for this diagnostic.
678  *
679  * Diagnostics can be categorized into groups along with other, related
680  * diagnostics (e.g., diagnostics under the same warning flag). This routine 
681  * retrieves the category number for the given diagnostic.
682  *
683  * \returns The number of the category that contains this diagnostic, or zero
684  * if this diagnostic is uncategorized.
685  */
686 CINDEX_LINKAGE unsigned clang_getDiagnosticCategory(CXDiagnostic);
687
688 /**
689  * \brief Retrieve the name of a particular diagnostic category.
690  *
691  * \param Category A diagnostic category number, as returned by 
692  * \c clang_getDiagnosticCategory().
693  *
694  * \returns The name of the given diagnostic category.
695  */
696 CINDEX_LINKAGE CXString clang_getDiagnosticCategoryName(unsigned Category);
697   
698 /**
699  * \brief Determine the number of source ranges associated with the given
700  * diagnostic.
701  */
702 CINDEX_LINKAGE unsigned clang_getDiagnosticNumRanges(CXDiagnostic);
703
704 /**
705  * \brief Retrieve a source range associated with the diagnostic.
706  *
707  * A diagnostic's source ranges highlight important elements in the source
708  * code. On the command line, Clang displays source ranges by
709  * underlining them with '~' characters.
710  *
711  * \param Diagnostic the diagnostic whose range is being extracted.
712  *
713  * \param Range the zero-based index specifying which range to
714  *
715  * \returns the requested source range.
716  */
717 CINDEX_LINKAGE CXSourceRange clang_getDiagnosticRange(CXDiagnostic Diagnostic,
718                                                       unsigned Range);
719
720 /**
721  * \brief Determine the number of fix-it hints associated with the
722  * given diagnostic.
723  */
724 CINDEX_LINKAGE unsigned clang_getDiagnosticNumFixIts(CXDiagnostic Diagnostic);
725
726 /**
727  * \brief Retrieve the replacement information for a given fix-it.
728  *
729  * Fix-its are described in terms of a source range whose contents
730  * should be replaced by a string. This approach generalizes over
731  * three kinds of operations: removal of source code (the range covers
732  * the code to be removed and the replacement string is empty),
733  * replacement of source code (the range covers the code to be
734  * replaced and the replacement string provides the new code), and
735  * insertion (both the start and end of the range point at the
736  * insertion location, and the replacement string provides the text to
737  * insert).
738  *
739  * \param Diagnostic The diagnostic whose fix-its are being queried.
740  *
741  * \param FixIt The zero-based index of the fix-it.
742  *
743  * \param ReplacementRange The source range whose contents will be
744  * replaced with the returned replacement string. Note that source
745  * ranges are half-open ranges [a, b), so the source code should be
746  * replaced from a and up to (but not including) b.
747  *
748  * \returns A string containing text that should be replace the source
749  * code indicated by the \c ReplacementRange.
750  */
751 CINDEX_LINKAGE CXString clang_getDiagnosticFixIt(CXDiagnostic Diagnostic,
752                                                  unsigned FixIt,
753                                                CXSourceRange *ReplacementRange);
754
755 /**
756  * @}
757  */
758
759 /**
760  * \defgroup CINDEX_TRANSLATION_UNIT Translation unit manipulation
761  *
762  * The routines in this group provide the ability to create and destroy
763  * translation units from files, either by parsing the contents of the files or
764  * by reading in a serialized representation of a translation unit.
765  *
766  * @{
767  */
768
769 /**
770  * \brief Get the original translation unit source file name.
771  */
772 CINDEX_LINKAGE CXString
773 clang_getTranslationUnitSpelling(CXTranslationUnit CTUnit);
774
775 /**
776  * \brief Return the CXTranslationUnit for a given source file and the provided
777  * command line arguments one would pass to the compiler.
778  *
779  * Note: The 'source_filename' argument is optional.  If the caller provides a
780  * NULL pointer, the name of the source file is expected to reside in the
781  * specified command line arguments.
782  *
783  * Note: When encountered in 'clang_command_line_args', the following options
784  * are ignored:
785  *
786  *   '-c'
787  *   '-emit-ast'
788  *   '-fsyntax-only'
789  *   '-o <output file>'  (both '-o' and '<output file>' are ignored)
790  *
791  * \param CIdx The index object with which the translation unit will be
792  * associated.
793  *
794  * \param source_filename - The name of the source file to load, or NULL if the
795  * source file is included in \p clang_command_line_args.
796  *
797  * \param num_clang_command_line_args The number of command-line arguments in
798  * \p clang_command_line_args.
799  *
800  * \param clang_command_line_args The command-line arguments that would be
801  * passed to the \c clang executable if it were being invoked out-of-process.
802  * These command-line options will be parsed and will affect how the translation
803  * unit is parsed. Note that the following options are ignored: '-c',
804  * '-emit-ast', '-fsyntex-only' (which is the default), and '-o <output file>'.
805  *
806  * \param num_unsaved_files the number of unsaved file entries in \p
807  * unsaved_files.
808  *
809  * \param unsaved_files the files that have not yet been saved to disk
810  * but may be required for code completion, including the contents of
811  * those files.  The contents and name of these files (as specified by
812  * CXUnsavedFile) are copied when necessary, so the client only needs to
813  * guarantee their validity until the call to this function returns.
814  */
815 CINDEX_LINKAGE CXTranslationUnit clang_createTranslationUnitFromSourceFile(
816                                          CXIndex CIdx,
817                                          const char *source_filename,
818                                          int num_clang_command_line_args,
819                                    const char * const *clang_command_line_args,
820                                          unsigned num_unsaved_files,
821                                          struct CXUnsavedFile *unsaved_files);
822
823 /**
824  * \brief Create a translation unit from an AST file (-emit-ast).
825  */
826 CINDEX_LINKAGE CXTranslationUnit clang_createTranslationUnit(CXIndex,
827                                              const char *ast_filename);
828
829 /**
830  * \brief Flags that control the creation of translation units.
831  *
832  * The enumerators in this enumeration type are meant to be bitwise
833  * ORed together to specify which options should be used when
834  * constructing the translation unit.
835  */
836 enum CXTranslationUnit_Flags {
837   /**
838    * \brief Used to indicate that no special translation-unit options are
839    * needed.
840    */
841   CXTranslationUnit_None = 0x0,
842
843   /**
844    * \brief Used to indicate that the parser should construct a "detailed"
845    * preprocessing record, including all macro definitions and instantiations.
846    *
847    * Constructing a detailed preprocessing record requires more memory
848    * and time to parse, since the information contained in the record
849    * is usually not retained. However, it can be useful for
850    * applications that require more detailed information about the
851    * behavior of the preprocessor.
852    */
853   CXTranslationUnit_DetailedPreprocessingRecord = 0x01,
854
855   /**
856    * \brief Used to indicate that the translation unit is incomplete.
857    *
858    * When a translation unit is considered "incomplete", semantic
859    * analysis that is typically performed at the end of the
860    * translation unit will be suppressed. For example, this suppresses
861    * the completion of tentative declarations in C and of
862    * instantiation of implicitly-instantiation function templates in
863    * C++. This option is typically used when parsing a header with the
864    * intent of producing a precompiled header.
865    */
866   CXTranslationUnit_Incomplete = 0x02,
867   
868   /**
869    * \brief Used to indicate that the translation unit should be built with an 
870    * implicit precompiled header for the preamble.
871    *
872    * An implicit precompiled header is used as an optimization when a
873    * particular translation unit is likely to be reparsed many times
874    * when the sources aren't changing that often. In this case, an
875    * implicit precompiled header will be built containing all of the
876    * initial includes at the top of the main file (what we refer to as
877    * the "preamble" of the file). In subsequent parses, if the
878    * preamble or the files in it have not changed, \c
879    * clang_reparseTranslationUnit() will re-use the implicit
880    * precompiled header to improve parsing performance.
881    */
882   CXTranslationUnit_PrecompiledPreamble = 0x04,
883   
884   /**
885    * \brief Used to indicate that the translation unit should cache some
886    * code-completion results with each reparse of the source file.
887    *
888    * Caching of code-completion results is a performance optimization that
889    * introduces some overhead to reparsing but improves the performance of
890    * code-completion operations.
891    */
892   CXTranslationUnit_CacheCompletionResults = 0x08,
893   /**
894    * \brief DEPRECATED: Enable precompiled preambles in C++.
895    *
896    * Note: this is a *temporary* option that is available only while
897    * we are testing C++ precompiled preamble support. It is deprecated.
898    */
899   CXTranslationUnit_CXXPrecompiledPreamble = 0x10,
900
901   /**
902    * \brief DEPRECATED: Enabled chained precompiled preambles in C++.
903    *
904    * Note: this is a *temporary* option that is available only while
905    * we are testing C++ precompiled preamble support. It is deprecated.
906    */
907   CXTranslationUnit_CXXChainedPCH = 0x20,
908   
909   /**
910    * \brief Used to indicate that the "detailed" preprocessing record,
911    * if requested, should also contain nested macro expansions.
912    *
913    * Nested macro expansions (i.e., macro expansions that occur
914    * inside another macro expansion) can, in some code bases, require
915    * a large amount of storage to due preprocessor metaprogramming. Moreover,
916    * its fairly rare that this information is useful for libclang clients.
917    */
918   CXTranslationUnit_NestedMacroExpansions = 0x40,
919
920   /**
921    * \brief Legacy name to indicate that the "detailed" preprocessing record,
922    * if requested, should contain nested macro expansions.
923    *
924    * \see CXTranslationUnit_NestedMacroExpansions for the current name for this
925    * value, and its semantics. This is just an alias.
926    */
927   CXTranslationUnit_NestedMacroInstantiations =
928     CXTranslationUnit_NestedMacroExpansions
929 };
930
931 /**
932  * \brief Returns the set of flags that is suitable for parsing a translation
933  * unit that is being edited.
934  *
935  * The set of flags returned provide options for \c clang_parseTranslationUnit()
936  * to indicate that the translation unit is likely to be reparsed many times,
937  * either explicitly (via \c clang_reparseTranslationUnit()) or implicitly
938  * (e.g., by code completion (\c clang_codeCompletionAt())). The returned flag
939  * set contains an unspecified set of optimizations (e.g., the precompiled 
940  * preamble) geared toward improving the performance of these routines. The
941  * set of optimizations enabled may change from one version to the next.
942  */
943 CINDEX_LINKAGE unsigned clang_defaultEditingTranslationUnitOptions(void);
944   
945 /**
946  * \brief Parse the given source file and the translation unit corresponding
947  * to that file.
948  *
949  * This routine is the main entry point for the Clang C API, providing the
950  * ability to parse a source file into a translation unit that can then be
951  * queried by other functions in the API. This routine accepts a set of
952  * command-line arguments so that the compilation can be configured in the same
953  * way that the compiler is configured on the command line.
954  *
955  * \param CIdx The index object with which the translation unit will be 
956  * associated.
957  *
958  * \param source_filename The name of the source file to load, or NULL if the
959  * source file is included in \p command_line_args.
960  *
961  * \param command_line_args The command-line arguments that would be
962  * passed to the \c clang executable if it were being invoked out-of-process.
963  * These command-line options will be parsed and will affect how the translation
964  * unit is parsed. Note that the following options are ignored: '-c', 
965  * '-emit-ast', '-fsyntex-only' (which is the default), and '-o <output file>'.
966  *
967  * \param num_command_line_args The number of command-line arguments in
968  * \p command_line_args.
969  *
970  * \param unsaved_files the files that have not yet been saved to disk
971  * but may be required for parsing, including the contents of
972  * those files.  The contents and name of these files (as specified by
973  * CXUnsavedFile) are copied when necessary, so the client only needs to
974  * guarantee their validity until the call to this function returns.
975  *
976  * \param num_unsaved_files the number of unsaved file entries in \p
977  * unsaved_files.
978  *
979  * \param options A bitmask of options that affects how the translation unit
980  * is managed but not its compilation. This should be a bitwise OR of the
981  * CXTranslationUnit_XXX flags.
982  *
983  * \returns A new translation unit describing the parsed code and containing
984  * any diagnostics produced by the compiler. If there is a failure from which
985  * the compiler cannot recover, returns NULL.
986  */
987 CINDEX_LINKAGE CXTranslationUnit clang_parseTranslationUnit(CXIndex CIdx,
988                                                     const char *source_filename,
989                                          const char * const *command_line_args,
990                                                       int num_command_line_args,
991                                             struct CXUnsavedFile *unsaved_files,
992                                                      unsigned num_unsaved_files,
993                                                             unsigned options);
994   
995 /**
996  * \brief Flags that control how translation units are saved.
997  *
998  * The enumerators in this enumeration type are meant to be bitwise
999  * ORed together to specify which options should be used when
1000  * saving the translation unit.
1001  */
1002 enum CXSaveTranslationUnit_Flags {
1003   /**
1004    * \brief Used to indicate that no special saving options are needed.
1005    */
1006   CXSaveTranslationUnit_None = 0x0
1007 };
1008
1009 /**
1010  * \brief Returns the set of flags that is suitable for saving a translation
1011  * unit.
1012  *
1013  * The set of flags returned provide options for
1014  * \c clang_saveTranslationUnit() by default. The returned flag
1015  * set contains an unspecified set of options that save translation units with
1016  * the most commonly-requested data.
1017  */
1018 CINDEX_LINKAGE unsigned clang_defaultSaveOptions(CXTranslationUnit TU);
1019
1020 /**
1021  * \brief Describes the kind of error that occurred (if any) in a call to
1022  * \c clang_saveTranslationUnit().
1023  */
1024 enum CXSaveError {
1025   /**
1026    * \brief Indicates that no error occurred while saving a translation unit.
1027    */
1028   CXSaveError_None = 0,
1029   
1030   /**
1031    * \brief Indicates that an unknown error occurred while attempting to save
1032    * the file.
1033    *
1034    * This error typically indicates that file I/O failed when attempting to 
1035    * write the file.
1036    */
1037   CXSaveError_Unknown = 1,
1038   
1039   /**
1040    * \brief Indicates that errors during translation prevented this attempt
1041    * to save the translation unit.
1042    * 
1043    * Errors that prevent the translation unit from being saved can be
1044    * extracted using \c clang_getNumDiagnostics() and \c clang_getDiagnostic().
1045    */
1046   CXSaveError_TranslationErrors = 2,
1047   
1048   /**
1049    * \brief Indicates that the translation unit to be saved was somehow
1050    * invalid (e.g., NULL).
1051    */
1052   CXSaveError_InvalidTU = 3
1053 };
1054   
1055 /**
1056  * \brief Saves a translation unit into a serialized representation of
1057  * that translation unit on disk.
1058  *
1059  * Any translation unit that was parsed without error can be saved
1060  * into a file. The translation unit can then be deserialized into a
1061  * new \c CXTranslationUnit with \c clang_createTranslationUnit() or,
1062  * if it is an incomplete translation unit that corresponds to a
1063  * header, used as a precompiled header when parsing other translation
1064  * units.
1065  *
1066  * \param TU The translation unit to save.
1067  *
1068  * \param FileName The file to which the translation unit will be saved.
1069  *
1070  * \param options A bitmask of options that affects how the translation unit
1071  * is saved. This should be a bitwise OR of the
1072  * CXSaveTranslationUnit_XXX flags.
1073  *
1074  * \returns A value that will match one of the enumerators of the CXSaveError
1075  * enumeration. Zero (CXSaveError_None) indicates that the translation unit was 
1076  * saved successfully, while a non-zero value indicates that a problem occurred.
1077  */
1078 CINDEX_LINKAGE int clang_saveTranslationUnit(CXTranslationUnit TU,
1079                                              const char *FileName,
1080                                              unsigned options);
1081
1082 /**
1083  * \brief Destroy the specified CXTranslationUnit object.
1084  */
1085 CINDEX_LINKAGE void clang_disposeTranslationUnit(CXTranslationUnit);
1086
1087 /**
1088  * \brief Flags that control the reparsing of translation units.
1089  *
1090  * The enumerators in this enumeration type are meant to be bitwise
1091  * ORed together to specify which options should be used when
1092  * reparsing the translation unit.
1093  */
1094 enum CXReparse_Flags {
1095   /**
1096    * \brief Used to indicate that no special reparsing options are needed.
1097    */
1098   CXReparse_None = 0x0
1099 };
1100  
1101 /**
1102  * \brief Returns the set of flags that is suitable for reparsing a translation
1103  * unit.
1104  *
1105  * The set of flags returned provide options for
1106  * \c clang_reparseTranslationUnit() by default. The returned flag
1107  * set contains an unspecified set of optimizations geared toward common uses
1108  * of reparsing. The set of optimizations enabled may change from one version 
1109  * to the next.
1110  */
1111 CINDEX_LINKAGE unsigned clang_defaultReparseOptions(CXTranslationUnit TU);
1112
1113 /**
1114  * \brief Reparse the source files that produced this translation unit.
1115  *
1116  * This routine can be used to re-parse the source files that originally
1117  * created the given translation unit, for example because those source files
1118  * have changed (either on disk or as passed via \p unsaved_files). The
1119  * source code will be reparsed with the same command-line options as it
1120  * was originally parsed. 
1121  *
1122  * Reparsing a translation unit invalidates all cursors and source locations
1123  * that refer into that translation unit. This makes reparsing a translation
1124  * unit semantically equivalent to destroying the translation unit and then
1125  * creating a new translation unit with the same command-line arguments.
1126  * However, it may be more efficient to reparse a translation 
1127  * unit using this routine.
1128  *
1129  * \param TU The translation unit whose contents will be re-parsed. The
1130  * translation unit must originally have been built with 
1131  * \c clang_createTranslationUnitFromSourceFile().
1132  *
1133  * \param num_unsaved_files The number of unsaved file entries in \p
1134  * unsaved_files.
1135  *
1136  * \param unsaved_files The files that have not yet been saved to disk
1137  * but may be required for parsing, including the contents of
1138  * those files.  The contents and name of these files (as specified by
1139  * CXUnsavedFile) are copied when necessary, so the client only needs to
1140  * guarantee their validity until the call to this function returns.
1141  * 
1142  * \param options A bitset of options composed of the flags in CXReparse_Flags.
1143  * The function \c clang_defaultReparseOptions() produces a default set of
1144  * options recommended for most uses, based on the translation unit.
1145  *
1146  * \returns 0 if the sources could be reparsed. A non-zero value will be
1147  * returned if reparsing was impossible, such that the translation unit is
1148  * invalid. In such cases, the only valid call for \p TU is 
1149  * \c clang_disposeTranslationUnit(TU).
1150  */
1151 CINDEX_LINKAGE int clang_reparseTranslationUnit(CXTranslationUnit TU,
1152                                                 unsigned num_unsaved_files,
1153                                           struct CXUnsavedFile *unsaved_files,
1154                                                 unsigned options);
1155
1156 /**
1157   * \brief Categorizes how memory is being used by a translation unit.
1158   */
1159 enum CXTUResourceUsageKind {
1160   CXTUResourceUsage_AST = 1,
1161   CXTUResourceUsage_Identifiers = 2,
1162   CXTUResourceUsage_Selectors = 3,
1163   CXTUResourceUsage_GlobalCompletionResults = 4,
1164   CXTUResourceUsage_SourceManagerContentCache = 5,
1165   CXTUResourceUsage_AST_SideTables = 6,
1166   CXTUResourceUsage_SourceManager_Membuffer_Malloc = 7,
1167   CXTUResourceUsage_SourceManager_Membuffer_MMap = 8,
1168   CXTUResourceUsage_ExternalASTSource_Membuffer_Malloc = 9, 
1169   CXTUResourceUsage_ExternalASTSource_Membuffer_MMap = 10, 
1170   CXTUResourceUsage_Preprocessor = 11,
1171   CXTUResourceUsage_PreprocessingRecord = 12,
1172   CXTUResourceUsage_SourceManager_DataStructures = 13,
1173   CXTUResourceUsage_Preprocessor_HeaderSearch = 14,
1174   CXTUResourceUsage_MEMORY_IN_BYTES_BEGIN = CXTUResourceUsage_AST,
1175   CXTUResourceUsage_MEMORY_IN_BYTES_END =
1176     CXTUResourceUsage_Preprocessor_HeaderSearch,
1177
1178   CXTUResourceUsage_First = CXTUResourceUsage_AST,
1179   CXTUResourceUsage_Last = CXTUResourceUsage_Preprocessor_HeaderSearch
1180 };
1181
1182 /**
1183   * \brief Returns the human-readable null-terminated C string that represents
1184   *  the name of the memory category.  This string should never be freed.
1185   */
1186 CINDEX_LINKAGE
1187 const char *clang_getTUResourceUsageName(enum CXTUResourceUsageKind kind);
1188
1189 typedef struct CXTUResourceUsageEntry {
1190   /* \brief The memory usage category. */
1191   enum CXTUResourceUsageKind kind;  
1192   /* \brief Amount of resources used. 
1193       The units will depend on the resource kind. */
1194   unsigned long amount;
1195 } CXTUResourceUsageEntry;
1196
1197 /**
1198   * \brief The memory usage of a CXTranslationUnit, broken into categories.
1199   */
1200 typedef struct CXTUResourceUsage {
1201   /* \brief Private data member, used for queries. */
1202   void *data;
1203
1204   /* \brief The number of entries in the 'entries' array. */
1205   unsigned numEntries;
1206
1207   /* \brief An array of key-value pairs, representing the breakdown of memory
1208             usage. */
1209   CXTUResourceUsageEntry *entries;
1210
1211 } CXTUResourceUsage;
1212
1213 /**
1214   * \brief Return the memory usage of a translation unit.  This object
1215   *  should be released with clang_disposeCXTUResourceUsage().
1216   */
1217 CINDEX_LINKAGE CXTUResourceUsage clang_getCXTUResourceUsage(CXTranslationUnit TU);
1218
1219 CINDEX_LINKAGE void clang_disposeCXTUResourceUsage(CXTUResourceUsage usage);
1220
1221 /**
1222  * @}
1223  */
1224
1225 /**
1226  * \brief Describes the kind of entity that a cursor refers to.
1227  */
1228 enum CXCursorKind {
1229   /* Declarations */
1230   /**
1231    * \brief A declaration whose specific kind is not exposed via this
1232    * interface.
1233    *
1234    * Unexposed declarations have the same operations as any other kind
1235    * of declaration; one can extract their location information,
1236    * spelling, find their definitions, etc. However, the specific kind
1237    * of the declaration is not reported.
1238    */
1239   CXCursor_UnexposedDecl                 = 1,
1240   /** \brief A C or C++ struct. */
1241   CXCursor_StructDecl                    = 2,
1242   /** \brief A C or C++ union. */
1243   CXCursor_UnionDecl                     = 3,
1244   /** \brief A C++ class. */
1245   CXCursor_ClassDecl                     = 4,
1246   /** \brief An enumeration. */
1247   CXCursor_EnumDecl                      = 5,
1248   /**
1249    * \brief A field (in C) or non-static data member (in C++) in a
1250    * struct, union, or C++ class.
1251    */
1252   CXCursor_FieldDecl                     = 6,
1253   /** \brief An enumerator constant. */
1254   CXCursor_EnumConstantDecl              = 7,
1255   /** \brief A function. */
1256   CXCursor_FunctionDecl                  = 8,
1257   /** \brief A variable. */
1258   CXCursor_VarDecl                       = 9,
1259   /** \brief A function or method parameter. */
1260   CXCursor_ParmDecl                      = 10,
1261   /** \brief An Objective-C @interface. */
1262   CXCursor_ObjCInterfaceDecl             = 11,
1263   /** \brief An Objective-C @interface for a category. */
1264   CXCursor_ObjCCategoryDecl              = 12,
1265   /** \brief An Objective-C @protocol declaration. */
1266   CXCursor_ObjCProtocolDecl              = 13,
1267   /** \brief An Objective-C @property declaration. */
1268   CXCursor_ObjCPropertyDecl              = 14,
1269   /** \brief An Objective-C instance variable. */
1270   CXCursor_ObjCIvarDecl                  = 15,
1271   /** \brief An Objective-C instance method. */
1272   CXCursor_ObjCInstanceMethodDecl        = 16,
1273   /** \brief An Objective-C class method. */
1274   CXCursor_ObjCClassMethodDecl           = 17,
1275   /** \brief An Objective-C @implementation. */
1276   CXCursor_ObjCImplementationDecl        = 18,
1277   /** \brief An Objective-C @implementation for a category. */
1278   CXCursor_ObjCCategoryImplDecl          = 19,
1279   /** \brief A typedef */
1280   CXCursor_TypedefDecl                   = 20,
1281   /** \brief A C++ class method. */
1282   CXCursor_CXXMethod                     = 21,
1283   /** \brief A C++ namespace. */
1284   CXCursor_Namespace                     = 22,
1285   /** \brief A linkage specification, e.g. 'extern "C"'. */
1286   CXCursor_LinkageSpec                   = 23,
1287   /** \brief A C++ constructor. */
1288   CXCursor_Constructor                   = 24,
1289   /** \brief A C++ destructor. */
1290   CXCursor_Destructor                    = 25,
1291   /** \brief A C++ conversion function. */
1292   CXCursor_ConversionFunction            = 26,
1293   /** \brief A C++ template type parameter. */
1294   CXCursor_TemplateTypeParameter         = 27,
1295   /** \brief A C++ non-type template parameter. */
1296   CXCursor_NonTypeTemplateParameter      = 28,
1297   /** \brief A C++ template template parameter. */
1298   CXCursor_TemplateTemplateParameter     = 29,
1299   /** \brief A C++ function template. */
1300   CXCursor_FunctionTemplate              = 30,
1301   /** \brief A C++ class template. */
1302   CXCursor_ClassTemplate                 = 31,
1303   /** \brief A C++ class template partial specialization. */
1304   CXCursor_ClassTemplatePartialSpecialization = 32,
1305   /** \brief A C++ namespace alias declaration. */
1306   CXCursor_NamespaceAlias                = 33,
1307   /** \brief A C++ using directive. */
1308   CXCursor_UsingDirective                = 34,
1309   /** \brief A C++ using declaration. */
1310   CXCursor_UsingDeclaration              = 35,
1311   /** \brief A C++ alias declaration */
1312   CXCursor_TypeAliasDecl                 = 36,
1313   /** \brief An Objective-C @synthesize definition. */
1314   CXCursor_ObjCSynthesizeDecl            = 37,
1315   /** \brief An Objective-C @dynamic definition. */
1316   CXCursor_ObjCDynamicDecl               = 38,
1317   /** \brief An access specifier. */
1318   CXCursor_CXXAccessSpecifier            = 39,
1319
1320   CXCursor_FirstDecl                     = CXCursor_UnexposedDecl,
1321   CXCursor_LastDecl                      = CXCursor_CXXAccessSpecifier,
1322
1323   /* References */
1324   CXCursor_FirstRef                      = 40, /* Decl references */
1325   CXCursor_ObjCSuperClassRef             = 40,
1326   CXCursor_ObjCProtocolRef               = 41,
1327   CXCursor_ObjCClassRef                  = 42,
1328   /**
1329    * \brief A reference to a type declaration.
1330    *
1331    * A type reference occurs anywhere where a type is named but not
1332    * declared. For example, given:
1333    *
1334    * \code
1335    * typedef unsigned size_type;
1336    * size_type size;
1337    * \endcode
1338    *
1339    * The typedef is a declaration of size_type (CXCursor_TypedefDecl),
1340    * while the type of the variable "size" is referenced. The cursor
1341    * referenced by the type of size is the typedef for size_type.
1342    */
1343   CXCursor_TypeRef                       = 43,
1344   CXCursor_CXXBaseSpecifier              = 44,
1345   /** 
1346    * \brief A reference to a class template, function template, template
1347    * template parameter, or class template partial specialization.
1348    */
1349   CXCursor_TemplateRef                   = 45,
1350   /**
1351    * \brief A reference to a namespace or namespace alias.
1352    */
1353   CXCursor_NamespaceRef                  = 46,
1354   /**
1355    * \brief A reference to a member of a struct, union, or class that occurs in 
1356    * some non-expression context, e.g., a designated initializer.
1357    */
1358   CXCursor_MemberRef                     = 47,
1359   /**
1360    * \brief A reference to a labeled statement.
1361    *
1362    * This cursor kind is used to describe the jump to "start_over" in the 
1363    * goto statement in the following example:
1364    *
1365    * \code
1366    *   start_over:
1367    *     ++counter;
1368    *
1369    *     goto start_over;
1370    * \endcode
1371    *
1372    * A label reference cursor refers to a label statement.
1373    */
1374   CXCursor_LabelRef                      = 48,
1375   
1376   /**
1377    * \brief A reference to a set of overloaded functions or function templates
1378    * that has not yet been resolved to a specific function or function template.
1379    *
1380    * An overloaded declaration reference cursor occurs in C++ templates where
1381    * a dependent name refers to a function. For example:
1382    *
1383    * \code
1384    * template<typename T> void swap(T&, T&);
1385    *
1386    * struct X { ... };
1387    * void swap(X&, X&);
1388    *
1389    * template<typename T>
1390    * void reverse(T* first, T* last) {
1391    *   while (first < last - 1) {
1392    *     swap(*first, *--last);
1393    *     ++first;
1394    *   }
1395    * }
1396    *
1397    * struct Y { };
1398    * void swap(Y&, Y&);
1399    * \endcode
1400    *
1401    * Here, the identifier "swap" is associated with an overloaded declaration
1402    * reference. In the template definition, "swap" refers to either of the two
1403    * "swap" functions declared above, so both results will be available. At
1404    * instantiation time, "swap" may also refer to other functions found via
1405    * argument-dependent lookup (e.g., the "swap" function at the end of the
1406    * example).
1407    *
1408    * The functions \c clang_getNumOverloadedDecls() and 
1409    * \c clang_getOverloadedDecl() can be used to retrieve the definitions
1410    * referenced by this cursor.
1411    */
1412   CXCursor_OverloadedDeclRef             = 49,
1413   
1414   CXCursor_LastRef                       = CXCursor_OverloadedDeclRef,
1415
1416   /* Error conditions */
1417   CXCursor_FirstInvalid                  = 70,
1418   CXCursor_InvalidFile                   = 70,
1419   CXCursor_NoDeclFound                   = 71,
1420   CXCursor_NotImplemented                = 72,
1421   CXCursor_InvalidCode                   = 73,
1422   CXCursor_LastInvalid                   = CXCursor_InvalidCode,
1423
1424   /* Expressions */
1425   CXCursor_FirstExpr                     = 100,
1426
1427   /**
1428    * \brief An expression whose specific kind is not exposed via this
1429    * interface.
1430    *
1431    * Unexposed expressions have the same operations as any other kind
1432    * of expression; one can extract their location information,
1433    * spelling, children, etc. However, the specific kind of the
1434    * expression is not reported.
1435    */
1436   CXCursor_UnexposedExpr                 = 100,
1437
1438   /**
1439    * \brief An expression that refers to some value declaration, such
1440    * as a function, varible, or enumerator.
1441    */
1442   CXCursor_DeclRefExpr                   = 101,
1443
1444   /**
1445    * \brief An expression that refers to a member of a struct, union,
1446    * class, Objective-C class, etc.
1447    */
1448   CXCursor_MemberRefExpr                 = 102,
1449
1450   /** \brief An expression that calls a function. */
1451   CXCursor_CallExpr                      = 103,
1452
1453   /** \brief An expression that sends a message to an Objective-C
1454    object or class. */
1455   CXCursor_ObjCMessageExpr               = 104,
1456
1457   /** \brief An expression that represents a block literal. */
1458   CXCursor_BlockExpr                     = 105,
1459
1460   /** \brief An integer literal.
1461    */
1462   CXCursor_IntegerLiteral                = 106,
1463
1464   /** \brief A floating point number literal.
1465    */
1466   CXCursor_FloatingLiteral               = 107,
1467
1468   /** \brief An imaginary number literal.
1469    */
1470   CXCursor_ImaginaryLiteral              = 108,
1471
1472   /** \brief A string literal.
1473    */
1474   CXCursor_StringLiteral                 = 109,
1475
1476   /** \brief A character literal.
1477    */
1478   CXCursor_CharacterLiteral              = 110,
1479
1480   /** \brief A parenthesized expression, e.g. "(1)".
1481    *
1482    * This AST node is only formed if full location information is requested.
1483    */
1484   CXCursor_ParenExpr                     = 111,
1485
1486   /** \brief This represents the unary-expression's (except sizeof and
1487    * alignof).
1488    */
1489   CXCursor_UnaryOperator                 = 112,
1490
1491   /** \brief [C99 6.5.2.1] Array Subscripting.
1492    */
1493   CXCursor_ArraySubscriptExpr            = 113,
1494
1495   /** \brief A builtin binary operation expression such as "x + y" or
1496    * "x <= y".
1497    */
1498   CXCursor_BinaryOperator                = 114,
1499
1500   /** \brief Compound assignment such as "+=".
1501    */
1502   CXCursor_CompoundAssignOperator        = 115,
1503
1504   /** \brief The ?: ternary operator.
1505    */
1506   CXCursor_ConditionalOperator           = 116,
1507
1508   /** \brief An explicit cast in C (C99 6.5.4) or a C-style cast in C++
1509    * (C++ [expr.cast]), which uses the syntax (Type)expr.
1510    *
1511    * For example: (int)f.
1512    */
1513   CXCursor_CStyleCastExpr                = 117,
1514
1515   /** \brief [C99 6.5.2.5]
1516    */
1517   CXCursor_CompoundLiteralExpr           = 118,
1518
1519   /** \brief Describes an C or C++ initializer list.
1520    */
1521   CXCursor_InitListExpr                  = 119,
1522
1523   /** \brief The GNU address of label extension, representing &&label.
1524    */
1525   CXCursor_AddrLabelExpr                 = 120,
1526
1527   /** \brief This is the GNU Statement Expression extension: ({int X=4; X;})
1528    */
1529   CXCursor_StmtExpr                      = 121,
1530
1531   /** \brief Represents a C1X generic selection.
1532    */
1533   CXCursor_GenericSelectionExpr          = 122,
1534
1535   /** \brief Implements the GNU __null extension, which is a name for a null
1536    * pointer constant that has integral type (e.g., int or long) and is the same
1537    * size and alignment as a pointer.
1538    *
1539    * The __null extension is typically only used by system headers, which define
1540    * NULL as __null in C++ rather than using 0 (which is an integer that may not
1541    * match the size of a pointer).
1542    */
1543   CXCursor_GNUNullExpr                   = 123,
1544
1545   /** \brief C++'s static_cast<> expression.
1546    */
1547   CXCursor_CXXStaticCastExpr             = 124,
1548
1549   /** \brief C++'s dynamic_cast<> expression.
1550    */
1551   CXCursor_CXXDynamicCastExpr            = 125,
1552
1553   /** \brief C++'s reinterpret_cast<> expression.
1554    */
1555   CXCursor_CXXReinterpretCastExpr        = 126,
1556
1557   /** \brief C++'s const_cast<> expression.
1558    */
1559   CXCursor_CXXConstCastExpr              = 127,
1560
1561   /** \brief Represents an explicit C++ type conversion that uses "functional"
1562    * notion (C++ [expr.type.conv]).
1563    *
1564    * Example:
1565    * \code
1566    *   x = int(0.5);
1567    * \endcode
1568    */
1569   CXCursor_CXXFunctionalCastExpr         = 128,
1570
1571   /** \brief A C++ typeid expression (C++ [expr.typeid]).
1572    */
1573   CXCursor_CXXTypeidExpr                 = 129,
1574
1575   /** \brief [C++ 2.13.5] C++ Boolean Literal.
1576    */
1577   CXCursor_CXXBoolLiteralExpr            = 130,
1578
1579   /** \brief [C++0x 2.14.7] C++ Pointer Literal.
1580    */
1581   CXCursor_CXXNullPtrLiteralExpr         = 131,
1582
1583   /** \brief Represents the "this" expression in C++
1584    */
1585   CXCursor_CXXThisExpr                   = 132,
1586
1587   /** \brief [C++ 15] C++ Throw Expression.
1588    *
1589    * This handles 'throw' and 'throw' assignment-expression. When
1590    * assignment-expression isn't present, Op will be null.
1591    */
1592   CXCursor_CXXThrowExpr                  = 133,
1593
1594   /** \brief A new expression for memory allocation and constructor calls, e.g:
1595    * "new CXXNewExpr(foo)".
1596    */
1597   CXCursor_CXXNewExpr                    = 134,
1598
1599   /** \brief A delete expression for memory deallocation and destructor calls,
1600    * e.g. "delete[] pArray".
1601    */
1602   CXCursor_CXXDeleteExpr                 = 135,
1603
1604   /** \brief A unary expression.
1605    */
1606   CXCursor_UnaryExpr                     = 136,
1607
1608   /** \brief ObjCStringLiteral, used for Objective-C string literals i.e. "foo".
1609    */
1610   CXCursor_ObjCStringLiteral             = 137,
1611
1612   /** \brief ObjCEncodeExpr, used for in Objective-C.
1613    */
1614   CXCursor_ObjCEncodeExpr                = 138,
1615
1616   /** \brief ObjCSelectorExpr used for in Objective-C.
1617    */
1618   CXCursor_ObjCSelectorExpr              = 139,
1619
1620   /** \brief Objective-C's protocol expression.
1621    */
1622   CXCursor_ObjCProtocolExpr              = 140,
1623
1624   /** \brief An Objective-C "bridged" cast expression, which casts between
1625    * Objective-C pointers and C pointers, transferring ownership in the process.
1626    *
1627    * \code
1628    *   NSString *str = (__bridge_transfer NSString *)CFCreateString();
1629    * \endcode
1630    */
1631   CXCursor_ObjCBridgedCastExpr           = 141,
1632
1633   /** \brief Represents a C++0x pack expansion that produces a sequence of
1634    * expressions.
1635    *
1636    * A pack expansion expression contains a pattern (which itself is an
1637    * expression) followed by an ellipsis. For example:
1638    *
1639    * \code
1640    * template<typename F, typename ...Types>
1641    * void forward(F f, Types &&...args) {
1642    *  f(static_cast<Types&&>(args)...);
1643    * }
1644    * \endcode
1645    */
1646   CXCursor_PackExpansionExpr             = 142,
1647
1648   /** \brief Represents an expression that computes the length of a parameter
1649    * pack.
1650    *
1651    * \code
1652    * template<typename ...Types>
1653    * struct count {
1654    *   static const unsigned value = sizeof...(Types);
1655    * };
1656    * \endcode
1657    */
1658   CXCursor_SizeOfPackExpr                = 143,
1659
1660   CXCursor_LastExpr                      = CXCursor_SizeOfPackExpr,
1661
1662   /* Statements */
1663   CXCursor_FirstStmt                     = 200,
1664   /**
1665    * \brief A statement whose specific kind is not exposed via this
1666    * interface.
1667    *
1668    * Unexposed statements have the same operations as any other kind of
1669    * statement; one can extract their location information, spelling,
1670    * children, etc. However, the specific kind of the statement is not
1671    * reported.
1672    */
1673   CXCursor_UnexposedStmt                 = 200,
1674   
1675   /** \brief A labelled statement in a function. 
1676    *
1677    * This cursor kind is used to describe the "start_over:" label statement in 
1678    * the following example:
1679    *
1680    * \code
1681    *   start_over:
1682    *     ++counter;
1683    * \endcode
1684    *
1685    */
1686   CXCursor_LabelStmt                     = 201,
1687
1688   /** \brief A group of statements like { stmt stmt }.
1689    *
1690    * This cursor kind is used to describe compound statements, e.g. function
1691    * bodies.
1692    */
1693   CXCursor_CompoundStmt                  = 202,
1694
1695   /** \brief A case statment.
1696    */
1697   CXCursor_CaseStmt                      = 203,
1698
1699   /** \brief A default statement.
1700    */
1701   CXCursor_DefaultStmt                   = 204,
1702
1703   /** \brief An if statement
1704    */
1705   CXCursor_IfStmt                        = 205,
1706
1707   /** \brief A switch statement.
1708    */
1709   CXCursor_SwitchStmt                    = 206,
1710
1711   /** \brief A while statement.
1712    */
1713   CXCursor_WhileStmt                     = 207,
1714
1715   /** \brief A do statement.
1716    */
1717   CXCursor_DoStmt                        = 208,
1718
1719   /** \brief A for statement.
1720    */
1721   CXCursor_ForStmt                       = 209,
1722
1723   /** \brief A goto statement.
1724    */
1725   CXCursor_GotoStmt                      = 210,
1726
1727   /** \brief An indirect goto statement.
1728    */
1729   CXCursor_IndirectGotoStmt              = 211,
1730
1731   /** \brief A continue statement.
1732    */
1733   CXCursor_ContinueStmt                  = 212,
1734
1735   /** \brief A break statement.
1736    */
1737   CXCursor_BreakStmt                     = 213,
1738
1739   /** \brief A return statement.
1740    */
1741   CXCursor_ReturnStmt                    = 214,
1742
1743   /** \brief A GNU inline assembly statement extension.
1744    */
1745   CXCursor_AsmStmt                       = 215,
1746
1747   /** \brief Objective-C's overall @try-@catc-@finall statement.
1748    */
1749   CXCursor_ObjCAtTryStmt                 = 216,
1750
1751   /** \brief Objective-C's @catch statement.
1752    */
1753   CXCursor_ObjCAtCatchStmt               = 217,
1754
1755   /** \brief Objective-C's @finally statement.
1756    */
1757   CXCursor_ObjCAtFinallyStmt             = 218,
1758
1759   /** \brief Objective-C's @throw statement.
1760    */
1761   CXCursor_ObjCAtThrowStmt               = 219,
1762
1763   /** \brief Objective-C's @synchronized statement.
1764    */
1765   CXCursor_ObjCAtSynchronizedStmt        = 220,
1766
1767   /** \brief Objective-C's autorelease pool statement.
1768    */
1769   CXCursor_ObjCAutoreleasePoolStmt       = 221,
1770
1771   /** \brief Objective-C's collection statement.
1772    */
1773   CXCursor_ObjCForCollectionStmt         = 222,
1774
1775   /** \brief C++'s catch statement.
1776    */
1777   CXCursor_CXXCatchStmt                  = 223,
1778
1779   /** \brief C++'s try statement.
1780    */
1781   CXCursor_CXXTryStmt                    = 224,
1782
1783   /** \brief C++'s for (* : *) statement.
1784    */
1785   CXCursor_CXXForRangeStmt               = 225,
1786
1787   /** \brief Windows Structured Exception Handling's try statement.
1788    */
1789   CXCursor_SEHTryStmt                    = 226,
1790
1791   /** \brief Windows Structured Exception Handling's except statement.
1792    */
1793   CXCursor_SEHExceptStmt                 = 227,
1794
1795   /** \brief Windows Structured Exception Handling's finally statement.
1796    */
1797   CXCursor_SEHFinallyStmt                = 228,
1798
1799   /** \brief The null satement ";": C99 6.8.3p3.
1800    *
1801    * This cursor kind is used to describe the null statement.
1802    */
1803   CXCursor_NullStmt                      = 230,
1804
1805   /** \brief Adaptor class for mixing declarations with statements and
1806    * expressions.
1807    */
1808   CXCursor_DeclStmt                      = 231,
1809
1810   CXCursor_LastStmt                      = CXCursor_DeclStmt,
1811
1812   /**
1813    * \brief Cursor that represents the translation unit itself.
1814    *
1815    * The translation unit cursor exists primarily to act as the root
1816    * cursor for traversing the contents of a translation unit.
1817    */
1818   CXCursor_TranslationUnit               = 300,
1819
1820   /* Attributes */
1821   CXCursor_FirstAttr                     = 400,
1822   /**
1823    * \brief An attribute whose specific kind is not exposed via this
1824    * interface.
1825    */
1826   CXCursor_UnexposedAttr                 = 400,
1827
1828   CXCursor_IBActionAttr                  = 401,
1829   CXCursor_IBOutletAttr                  = 402,
1830   CXCursor_IBOutletCollectionAttr        = 403,
1831   CXCursor_CXXFinalAttr                  = 404,
1832   CXCursor_CXXOverrideAttr               = 405,
1833   CXCursor_AnnotateAttr                  = 406,
1834   CXCursor_LastAttr                      = CXCursor_AnnotateAttr,
1835      
1836   /* Preprocessing */
1837   CXCursor_PreprocessingDirective        = 500,
1838   CXCursor_MacroDefinition               = 501,
1839   CXCursor_MacroExpansion                = 502,
1840   CXCursor_MacroInstantiation            = CXCursor_MacroExpansion,
1841   CXCursor_InclusionDirective            = 503,
1842   CXCursor_FirstPreprocessing            = CXCursor_PreprocessingDirective,
1843   CXCursor_LastPreprocessing             = CXCursor_InclusionDirective
1844 };
1845
1846 /**
1847  * \brief A cursor representing some element in the abstract syntax tree for
1848  * a translation unit.
1849  *
1850  * The cursor abstraction unifies the different kinds of entities in a
1851  * program--declaration, statements, expressions, references to declarations,
1852  * etc.--under a single "cursor" abstraction with a common set of operations.
1853  * Common operation for a cursor include: getting the physical location in
1854  * a source file where the cursor points, getting the name associated with a
1855  * cursor, and retrieving cursors for any child nodes of a particular cursor.
1856  *
1857  * Cursors can be produced in two specific ways.
1858  * clang_getTranslationUnitCursor() produces a cursor for a translation unit,
1859  * from which one can use clang_visitChildren() to explore the rest of the
1860  * translation unit. clang_getCursor() maps from a physical source location
1861  * to the entity that resides at that location, allowing one to map from the
1862  * source code into the AST.
1863  */
1864 typedef struct {
1865   enum CXCursorKind kind;
1866   int xdata;
1867   void *data[3];
1868 } CXCursor;
1869
1870 /**
1871  * \defgroup CINDEX_CURSOR_MANIP Cursor manipulations
1872  *
1873  * @{
1874  */
1875
1876 /**
1877  * \brief Retrieve the NULL cursor, which represents no entity.
1878  */
1879 CINDEX_LINKAGE CXCursor clang_getNullCursor(void);
1880
1881 /**
1882  * \brief Retrieve the cursor that represents the given translation unit.
1883  *
1884  * The translation unit cursor can be used to start traversing the
1885  * various declarations within the given translation unit.
1886  */
1887 CINDEX_LINKAGE CXCursor clang_getTranslationUnitCursor(CXTranslationUnit);
1888
1889 /**
1890  * \brief Determine whether two cursors are equivalent.
1891  */
1892 CINDEX_LINKAGE unsigned clang_equalCursors(CXCursor, CXCursor);
1893
1894 /**
1895  * \brief Returns non-zero if \arg cursor is null.
1896  */
1897 int clang_Cursor_isNull(CXCursor);
1898
1899 /**
1900  * \brief Compute a hash value for the given cursor.
1901  */
1902 CINDEX_LINKAGE unsigned clang_hashCursor(CXCursor);
1903   
1904 /**
1905  * \brief Retrieve the kind of the given cursor.
1906  */
1907 CINDEX_LINKAGE enum CXCursorKind clang_getCursorKind(CXCursor);
1908
1909 /**
1910  * \brief Determine whether the given cursor kind represents a declaration.
1911  */
1912 CINDEX_LINKAGE unsigned clang_isDeclaration(enum CXCursorKind);
1913
1914 /**
1915  * \brief Determine whether the given cursor kind represents a simple
1916  * reference.
1917  *
1918  * Note that other kinds of cursors (such as expressions) can also refer to
1919  * other cursors. Use clang_getCursorReferenced() to determine whether a
1920  * particular cursor refers to another entity.
1921  */
1922 CINDEX_LINKAGE unsigned clang_isReference(enum CXCursorKind);
1923
1924 /**
1925  * \brief Determine whether the given cursor kind represents an expression.
1926  */
1927 CINDEX_LINKAGE unsigned clang_isExpression(enum CXCursorKind);
1928
1929 /**
1930  * \brief Determine whether the given cursor kind represents a statement.
1931  */
1932 CINDEX_LINKAGE unsigned clang_isStatement(enum CXCursorKind);
1933
1934 /**
1935  * \brief Determine whether the given cursor kind represents an attribute.
1936  */
1937 CINDEX_LINKAGE unsigned clang_isAttribute(enum CXCursorKind);
1938
1939 /**
1940  * \brief Determine whether the given cursor kind represents an invalid
1941  * cursor.
1942  */
1943 CINDEX_LINKAGE unsigned clang_isInvalid(enum CXCursorKind);
1944
1945 /**
1946  * \brief Determine whether the given cursor kind represents a translation
1947  * unit.
1948  */
1949 CINDEX_LINKAGE unsigned clang_isTranslationUnit(enum CXCursorKind);
1950
1951 /***
1952  * \brief Determine whether the given cursor represents a preprocessing
1953  * element, such as a preprocessor directive or macro instantiation.
1954  */
1955 CINDEX_LINKAGE unsigned clang_isPreprocessing(enum CXCursorKind);
1956   
1957 /***
1958  * \brief Determine whether the given cursor represents a currently
1959  *  unexposed piece of the AST (e.g., CXCursor_UnexposedStmt).
1960  */
1961 CINDEX_LINKAGE unsigned clang_isUnexposed(enum CXCursorKind);
1962
1963 /**
1964  * \brief Describe the linkage of the entity referred to by a cursor.
1965  */
1966 enum CXLinkageKind {
1967   /** \brief This value indicates that no linkage information is available
1968    * for a provided CXCursor. */
1969   CXLinkage_Invalid,
1970   /**
1971    * \brief This is the linkage for variables, parameters, and so on that
1972    *  have automatic storage.  This covers normal (non-extern) local variables.
1973    */
1974   CXLinkage_NoLinkage,
1975   /** \brief This is the linkage for static variables and static functions. */
1976   CXLinkage_Internal,
1977   /** \brief This is the linkage for entities with external linkage that live
1978    * in C++ anonymous namespaces.*/
1979   CXLinkage_UniqueExternal,
1980   /** \brief This is the linkage for entities with true, external linkage. */
1981   CXLinkage_External
1982 };
1983
1984 /**
1985  * \brief Determine the linkage of the entity referred to by a given cursor.
1986  */
1987 CINDEX_LINKAGE enum CXLinkageKind clang_getCursorLinkage(CXCursor cursor);
1988
1989 /**
1990  * \brief Determine the availability of the entity that this cursor refers to.
1991  *
1992  * \param cursor The cursor to query.
1993  *
1994  * \returns The availability of the cursor.
1995  */
1996 CINDEX_LINKAGE enum CXAvailabilityKind 
1997 clang_getCursorAvailability(CXCursor cursor);
1998
1999 /**
2000  * \brief Describe the "language" of the entity referred to by a cursor.
2001  */
2002 CINDEX_LINKAGE enum CXLanguageKind {
2003   CXLanguage_Invalid = 0,
2004   CXLanguage_C,
2005   CXLanguage_ObjC,
2006   CXLanguage_CPlusPlus
2007 };
2008
2009 /**
2010  * \brief Determine the "language" of the entity referred to by a given cursor.
2011  */
2012 CINDEX_LINKAGE enum CXLanguageKind clang_getCursorLanguage(CXCursor cursor);
2013
2014 /**
2015  * \brief Returns the translation unit that a cursor originated from.
2016  */
2017 CINDEX_LINKAGE CXTranslationUnit clang_Cursor_getTranslationUnit(CXCursor);
2018
2019
2020 /**
2021  * \brief A fast container representing a set of CXCursors.
2022  */
2023 typedef struct CXCursorSetImpl *CXCursorSet;
2024
2025 /**
2026  * \brief Creates an empty CXCursorSet.
2027  */
2028 CINDEX_LINKAGE CXCursorSet clang_createCXCursorSet();
2029
2030 /**
2031  * \brief Disposes a CXCursorSet and releases its associated memory.
2032  */
2033 CINDEX_LINKAGE void clang_disposeCXCursorSet(CXCursorSet cset);
2034
2035 /**
2036  * \brief Queries a CXCursorSet to see if it contains a specific CXCursor.
2037  *
2038  * \returns non-zero if the set contains the specified cursor.
2039 */
2040 CINDEX_LINKAGE unsigned clang_CXCursorSet_contains(CXCursorSet cset,
2041                                                    CXCursor cursor);
2042
2043 /**
2044  * \brief Inserts a CXCursor into a CXCursorSet.
2045  *
2046  * \returns zero if the CXCursor was already in the set, and non-zero otherwise.
2047 */
2048 CINDEX_LINKAGE unsigned clang_CXCursorSet_insert(CXCursorSet cset,
2049                                                  CXCursor cursor);
2050
2051 /**
2052  * \brief Determine the semantic parent of the given cursor.
2053  *
2054  * The semantic parent of a cursor is the cursor that semantically contains
2055  * the given \p cursor. For many declarations, the lexical and semantic parents
2056  * are equivalent (the lexical parent is returned by 
2057  * \c clang_getCursorLexicalParent()). They diverge when declarations or
2058  * definitions are provided out-of-line. For example:
2059  *
2060  * \code
2061  * class C {
2062  *  void f();
2063  * };
2064  *
2065  * void C::f() { }
2066  * \endcode
2067  *
2068  * In the out-of-line definition of \c C::f, the semantic parent is the 
2069  * the class \c C, of which this function is a member. The lexical parent is
2070  * the place where the declaration actually occurs in the source code; in this
2071  * case, the definition occurs in the translation unit. In general, the 
2072  * lexical parent for a given entity can change without affecting the semantics
2073  * of the program, and the lexical parent of different declarations of the
2074  * same entity may be different. Changing the semantic parent of a declaration,
2075  * on the other hand, can have a major impact on semantics, and redeclarations
2076  * of a particular entity should all have the same semantic context.
2077  *
2078  * In the example above, both declarations of \c C::f have \c C as their
2079  * semantic context, while the lexical context of the first \c C::f is \c C
2080  * and the lexical context of the second \c C::f is the translation unit.
2081  *
2082  * For global declarations, the semantic parent is the translation unit.
2083  */
2084 CINDEX_LINKAGE CXCursor clang_getCursorSemanticParent(CXCursor cursor);
2085
2086 /**
2087  * \brief Determine the lexical parent of the given cursor.
2088  *
2089  * The lexical parent of a cursor is the cursor in which the given \p cursor
2090  * was actually written. For many declarations, the lexical and semantic parents
2091  * are equivalent (the semantic parent is returned by 
2092  * \c clang_getCursorSemanticParent()). They diverge when declarations or
2093  * definitions are provided out-of-line. For example:
2094  *
2095  * \code
2096  * class C {
2097  *  void f();
2098  * };
2099  *
2100  * void C::f() { }
2101  * \endcode
2102  *
2103  * In the out-of-line definition of \c C::f, the semantic parent is the 
2104  * the class \c C, of which this function is a member. The lexical parent is
2105  * the place where the declaration actually occurs in the source code; in this
2106  * case, the definition occurs in the translation unit. In general, the 
2107  * lexical parent for a given entity can change without affecting the semantics
2108  * of the program, and the lexical parent of different declarations of the
2109  * same entity may be different. Changing the semantic parent of a declaration,
2110  * on the other hand, can have a major impact on semantics, and redeclarations
2111  * of a particular entity should all have the same semantic context.
2112  *
2113  * In the example above, both declarations of \c C::f have \c C as their
2114  * semantic context, while the lexical context of the first \c C::f is \c C
2115  * and the lexical context of the second \c C::f is the translation unit.
2116  *
2117  * For declarations written in the global scope, the lexical parent is
2118  * the translation unit.
2119  */
2120 CINDEX_LINKAGE CXCursor clang_getCursorLexicalParent(CXCursor cursor);
2121
2122 /**
2123  * \brief Determine the set of methods that are overridden by the given
2124  * method.
2125  *
2126  * In both Objective-C and C++, a method (aka virtual member function,
2127  * in C++) can override a virtual method in a base class. For
2128  * Objective-C, a method is said to override any method in the class's
2129  * interface (if we're coming from an implementation), its protocols,
2130  * or its categories, that has the same selector and is of the same
2131  * kind (class or instance). If no such method exists, the search
2132  * continues to the class's superclass, its protocols, and its
2133  * categories, and so on.
2134  *
2135  * For C++, a virtual member function overrides any virtual member
2136  * function with the same signature that occurs in its base
2137  * classes. With multiple inheritance, a virtual member function can
2138  * override several virtual member functions coming from different
2139  * base classes.
2140  *
2141  * In all cases, this function determines the immediate overridden
2142  * method, rather than all of the overridden methods. For example, if
2143  * a method is originally declared in a class A, then overridden in B
2144  * (which in inherits from A) and also in C (which inherited from B),
2145  * then the only overridden method returned from this function when
2146  * invoked on C's method will be B's method. The client may then
2147  * invoke this function again, given the previously-found overridden
2148  * methods, to map out the complete method-override set.
2149  *
2150  * \param cursor A cursor representing an Objective-C or C++
2151  * method. This routine will compute the set of methods that this
2152  * method overrides.
2153  * 
2154  * \param overridden A pointer whose pointee will be replaced with a
2155  * pointer to an array of cursors, representing the set of overridden
2156  * methods. If there are no overridden methods, the pointee will be
2157  * set to NULL. The pointee must be freed via a call to 
2158  * \c clang_disposeOverriddenCursors().
2159  *
2160  * \param num_overridden A pointer to the number of overridden
2161  * functions, will be set to the number of overridden functions in the
2162  * array pointed to by \p overridden.
2163  */
2164 CINDEX_LINKAGE void clang_getOverriddenCursors(CXCursor cursor, 
2165                                                CXCursor **overridden,
2166                                                unsigned *num_overridden);
2167
2168 /**
2169  * \brief Free the set of overridden cursors returned by \c
2170  * clang_getOverriddenCursors().
2171  */
2172 CINDEX_LINKAGE void clang_disposeOverriddenCursors(CXCursor *overridden);
2173
2174 /**
2175  * \brief Retrieve the file that is included by the given inclusion directive
2176  * cursor.
2177  */
2178 CINDEX_LINKAGE CXFile clang_getIncludedFile(CXCursor cursor);
2179   
2180 /**
2181  * @}
2182  */
2183
2184 /**
2185  * \defgroup CINDEX_CURSOR_SOURCE Mapping between cursors and source code
2186  *
2187  * Cursors represent a location within the Abstract Syntax Tree (AST). These
2188  * routines help map between cursors and the physical locations where the
2189  * described entities occur in the source code. The mapping is provided in
2190  * both directions, so one can map from source code to the AST and back.
2191  *
2192  * @{
2193  */
2194
2195 /**
2196  * \brief Map a source location to the cursor that describes the entity at that
2197  * location in the source code.
2198  *
2199  * clang_getCursor() maps an arbitrary source location within a translation
2200  * unit down to the most specific cursor that describes the entity at that
2201  * location. For example, given an expression \c x + y, invoking
2202  * clang_getCursor() with a source location pointing to "x" will return the
2203  * cursor for "x"; similarly for "y". If the cursor points anywhere between
2204  * "x" or "y" (e.g., on the + or the whitespace around it), clang_getCursor()
2205  * will return a cursor referring to the "+" expression.
2206  *
2207  * \returns a cursor representing the entity at the given source location, or
2208  * a NULL cursor if no such entity can be found.
2209  */
2210 CINDEX_LINKAGE CXCursor clang_getCursor(CXTranslationUnit, CXSourceLocation);
2211
2212 /**
2213  * \brief Retrieve the physical location of the source constructor referenced
2214  * by the given cursor.
2215  *
2216  * The location of a declaration is typically the location of the name of that
2217  * declaration, where the name of that declaration would occur if it is
2218  * unnamed, or some keyword that introduces that particular declaration.
2219  * The location of a reference is where that reference occurs within the
2220  * source code.
2221  */
2222 CINDEX_LINKAGE CXSourceLocation clang_getCursorLocation(CXCursor);
2223
2224 /**
2225  * \brief Retrieve the physical extent of the source construct referenced by
2226  * the given cursor.
2227  *
2228  * The extent of a cursor starts with the file/line/column pointing at the
2229  * first character within the source construct that the cursor refers to and
2230  * ends with the last character withinin that source construct. For a
2231  * declaration, the extent covers the declaration itself. For a reference,
2232  * the extent covers the location of the reference (e.g., where the referenced
2233  * entity was actually used).
2234  */
2235 CINDEX_LINKAGE CXSourceRange clang_getCursorExtent(CXCursor);
2236
2237 /**
2238  * @}
2239  */
2240     
2241 /**
2242  * \defgroup CINDEX_TYPES Type information for CXCursors
2243  *
2244  * @{
2245  */
2246
2247 /**
2248  * \brief Describes the kind of type
2249  */
2250 enum CXTypeKind {
2251   /**
2252    * \brief Reprents an invalid type (e.g., where no type is available).
2253    */
2254   CXType_Invalid = 0,
2255
2256   /**
2257    * \brief A type whose specific kind is not exposed via this
2258    * interface.
2259    */
2260   CXType_Unexposed = 1,
2261
2262   /* Builtin types */
2263   CXType_Void = 2,
2264   CXType_Bool = 3,
2265   CXType_Char_U = 4,
2266   CXType_UChar = 5,
2267   CXType_Char16 = 6,
2268   CXType_Char32 = 7,
2269   CXType_UShort = 8,
2270   CXType_UInt = 9,
2271   CXType_ULong = 10,
2272   CXType_ULongLong = 11,
2273   CXType_UInt128 = 12,
2274   CXType_Char_S = 13,
2275   CXType_SChar = 14,
2276   CXType_WChar = 15,
2277   CXType_Short = 16,
2278   CXType_Int = 17,
2279   CXType_Long = 18,
2280   CXType_LongLong = 19,
2281   CXType_Int128 = 20,
2282   CXType_Float = 21,
2283   CXType_Double = 22,
2284   CXType_LongDouble = 23,
2285   CXType_NullPtr = 24,
2286   CXType_Overload = 25,
2287   CXType_Dependent = 26,
2288   CXType_ObjCId = 27,
2289   CXType_ObjCClass = 28,
2290   CXType_ObjCSel = 29,
2291   CXType_FirstBuiltin = CXType_Void,
2292   CXType_LastBuiltin  = CXType_ObjCSel,
2293
2294   CXType_Complex = 100,
2295   CXType_Pointer = 101,
2296   CXType_BlockPointer = 102,
2297   CXType_LValueReference = 103,
2298   CXType_RValueReference = 104,
2299   CXType_Record = 105,
2300   CXType_Enum = 106,
2301   CXType_Typedef = 107,
2302   CXType_ObjCInterface = 108,
2303   CXType_ObjCObjectPointer = 109,
2304   CXType_FunctionNoProto = 110,
2305   CXType_FunctionProto = 111,
2306   CXType_ConstantArray = 112
2307 };
2308
2309 /**
2310  * \brief The type of an element in the abstract syntax tree.
2311  *
2312  */
2313 typedef struct {
2314   enum CXTypeKind kind;
2315   void *data[2];
2316 } CXType;
2317
2318 /**
2319  * \brief Retrieve the type of a CXCursor (if any).
2320  */
2321 CINDEX_LINKAGE CXType clang_getCursorType(CXCursor C);
2322
2323 /**
2324  * \determine Determine whether two CXTypes represent the same type.
2325  *
2326  * \returns non-zero if the CXTypes represent the same type and 
2327             zero otherwise.
2328  */
2329 CINDEX_LINKAGE unsigned clang_equalTypes(CXType A, CXType B);
2330
2331 /**
2332  * \brief Return the canonical type for a CXType.
2333  *
2334  * Clang's type system explicitly models typedefs and all the ways
2335  * a specific type can be represented.  The canonical type is the underlying
2336  * type with all the "sugar" removed.  For example, if 'T' is a typedef
2337  * for 'int', the canonical type for 'T' would be 'int'.
2338  */
2339 CINDEX_LINKAGE CXType clang_getCanonicalType(CXType T);
2340
2341 /**
2342  *  \determine Determine whether a CXType has the "const" qualifier set, 
2343  *  without looking through typedefs that may have added "const" at a different level.
2344  */
2345 CINDEX_LINKAGE unsigned clang_isConstQualifiedType(CXType T);
2346
2347 /**
2348  *  \determine Determine whether a CXType has the "volatile" qualifier set,
2349  *  without looking through typedefs that may have added "volatile" at a different level.
2350  */
2351 CINDEX_LINKAGE unsigned clang_isVolatileQualifiedType(CXType T);
2352
2353 /**
2354  *  \determine Determine whether a CXType has the "restrict" qualifier set,
2355  *  without looking through typedefs that may have added "restrict" at a different level.
2356  */
2357 CINDEX_LINKAGE unsigned clang_isRestrictQualifiedType(CXType T);
2358
2359 /**
2360  * \brief For pointer types, returns the type of the pointee.
2361  *
2362  */
2363 CINDEX_LINKAGE CXType clang_getPointeeType(CXType T);
2364
2365 /**
2366  * \brief Return the cursor for the declaration of the given type.
2367  */
2368 CINDEX_LINKAGE CXCursor clang_getTypeDeclaration(CXType T);
2369
2370 /**
2371  * Returns the Objective-C type encoding for the specified declaration.
2372  */
2373 CINDEX_LINKAGE CXString clang_getDeclObjCTypeEncoding(CXCursor C);
2374
2375 /**
2376  * \brief Retrieve the spelling of a given CXTypeKind.
2377  */
2378 CINDEX_LINKAGE CXString clang_getTypeKindSpelling(enum CXTypeKind K);
2379
2380 /**
2381  * \brief Retrieve the result type associated with a function type.
2382  */
2383 CINDEX_LINKAGE CXType clang_getResultType(CXType T);
2384
2385 /**
2386  * \brief Retrieve the result type associated with a given cursor.  This only
2387  *  returns a valid type of the cursor refers to a function or method.
2388  */
2389 CINDEX_LINKAGE CXType clang_getCursorResultType(CXCursor C);
2390
2391 /**
2392  * \brief Return 1 if the CXType is a POD (plain old data) type, and 0
2393  *  otherwise.
2394  */
2395 CINDEX_LINKAGE unsigned clang_isPODType(CXType T);
2396
2397 /**
2398  * \brief Return the element type of an array type.
2399  *
2400  * If a non-array type is passed in, an invalid type is returned.
2401  */
2402 CINDEX_LINKAGE CXType clang_getArrayElementType(CXType T);
2403
2404 /**
2405  * \brief Return the the array size of a constant array.
2406  *
2407  * If a non-array type is passed in, -1 is returned.
2408  */
2409 CINDEX_LINKAGE long long clang_getArraySize(CXType T);
2410
2411 /**
2412  * \brief Returns 1 if the base class specified by the cursor with kind
2413  *   CX_CXXBaseSpecifier is virtual.
2414  */
2415 CINDEX_LINKAGE unsigned clang_isVirtualBase(CXCursor);
2416     
2417 /**
2418  * \brief Represents the C++ access control level to a base class for a
2419  * cursor with kind CX_CXXBaseSpecifier.
2420  */
2421 enum CX_CXXAccessSpecifier {
2422   CX_CXXInvalidAccessSpecifier,
2423   CX_CXXPublic,
2424   CX_CXXProtected,
2425   CX_CXXPrivate
2426 };
2427
2428 /**
2429  * \brief Returns the access control level for the C++ base specifier
2430  * represented by a cursor with kind CXCursor_CXXBaseSpecifier or
2431  * CXCursor_AccessSpecifier.
2432  */
2433 CINDEX_LINKAGE enum CX_CXXAccessSpecifier clang_getCXXAccessSpecifier(CXCursor);
2434
2435 /**
2436  * \brief Determine the number of overloaded declarations referenced by a 
2437  * \c CXCursor_OverloadedDeclRef cursor.
2438  *
2439  * \param cursor The cursor whose overloaded declarations are being queried.
2440  *
2441  * \returns The number of overloaded declarations referenced by \c cursor. If it
2442  * is not a \c CXCursor_OverloadedDeclRef cursor, returns 0.
2443  */
2444 CINDEX_LINKAGE unsigned clang_getNumOverloadedDecls(CXCursor cursor);
2445
2446 /**
2447  * \brief Retrieve a cursor for one of the overloaded declarations referenced
2448  * by a \c CXCursor_OverloadedDeclRef cursor.
2449  *
2450  * \param cursor The cursor whose overloaded declarations are being queried.
2451  *
2452  * \param index The zero-based index into the set of overloaded declarations in
2453  * the cursor.
2454  *
2455  * \returns A cursor representing the declaration referenced by the given 
2456  * \c cursor at the specified \c index. If the cursor does not have an 
2457  * associated set of overloaded declarations, or if the index is out of bounds,
2458  * returns \c clang_getNullCursor();
2459  */
2460 CINDEX_LINKAGE CXCursor clang_getOverloadedDecl(CXCursor cursor, 
2461                                                 unsigned index);
2462   
2463 /**
2464  * @}
2465  */
2466   
2467 /**
2468  * \defgroup CINDEX_ATTRIBUTES Information for attributes
2469  *
2470  * @{
2471  */
2472
2473
2474 /**
2475  * \brief For cursors representing an iboutletcollection attribute,
2476  *  this function returns the collection element type.
2477  *
2478  */
2479 CINDEX_LINKAGE CXType clang_getIBOutletCollectionType(CXCursor);
2480
2481 /**
2482  * @}
2483  */
2484
2485 /**
2486  * \defgroup CINDEX_CURSOR_TRAVERSAL Traversing the AST with cursors
2487  *
2488  * These routines provide the ability to traverse the abstract syntax tree
2489  * using cursors.
2490  *
2491  * @{
2492  */
2493
2494 /**
2495  * \brief Describes how the traversal of the children of a particular
2496  * cursor should proceed after visiting a particular child cursor.
2497  *
2498  * A value of this enumeration type should be returned by each
2499  * \c CXCursorVisitor to indicate how clang_visitChildren() proceed.
2500  */
2501 enum CXChildVisitResult {
2502   /**
2503    * \brief Terminates the cursor traversal.
2504    */
2505   CXChildVisit_Break,
2506   /**
2507    * \brief Continues the cursor traversal with the next sibling of
2508    * the cursor just visited, without visiting its children.
2509    */
2510   CXChildVisit_Continue,
2511   /**
2512    * \brief Recursively traverse the children of this cursor, using
2513    * the same visitor and client data.
2514    */
2515   CXChildVisit_Recurse
2516 };
2517
2518 /**
2519  * \brief Visitor invoked for each cursor found by a traversal.
2520  *
2521  * This visitor function will be invoked for each cursor found by
2522  * clang_visitCursorChildren(). Its first argument is the cursor being
2523  * visited, its second argument is the parent visitor for that cursor,
2524  * and its third argument is the client data provided to
2525  * clang_visitCursorChildren().
2526  *
2527  * The visitor should return one of the \c CXChildVisitResult values
2528  * to direct clang_visitCursorChildren().
2529  */
2530 typedef enum CXChildVisitResult (*CXCursorVisitor)(CXCursor cursor,
2531                                                    CXCursor parent,
2532                                                    CXClientData client_data);
2533
2534 /**
2535  * \brief Visit the children of a particular cursor.
2536  *
2537  * This function visits all the direct children of the given cursor,
2538  * invoking the given \p visitor function with the cursors of each
2539  * visited child. The traversal may be recursive, if the visitor returns
2540  * \c CXChildVisit_Recurse. The traversal may also be ended prematurely, if
2541  * the visitor returns \c CXChildVisit_Break.
2542  *
2543  * \param parent the cursor whose child may be visited. All kinds of
2544  * cursors can be visited, including invalid cursors (which, by
2545  * definition, have no children).
2546  *
2547  * \param visitor the visitor function that will be invoked for each
2548  * child of \p parent.
2549  *
2550  * \param client_data pointer data supplied by the client, which will
2551  * be passed to the visitor each time it is invoked.
2552  *
2553  * \returns a non-zero value if the traversal was terminated
2554  * prematurely by the visitor returning \c CXChildVisit_Break.
2555  */
2556 CINDEX_LINKAGE unsigned clang_visitChildren(CXCursor parent,
2557                                             CXCursorVisitor visitor,
2558                                             CXClientData client_data);
2559 #ifdef __has_feature
2560 #  if __has_feature(blocks)
2561 /**
2562  * \brief Visitor invoked for each cursor found by a traversal.
2563  *
2564  * This visitor block will be invoked for each cursor found by
2565  * clang_visitChildrenWithBlock(). Its first argument is the cursor being
2566  * visited, its second argument is the parent visitor for that cursor.
2567  *
2568  * The visitor should return one of the \c CXChildVisitResult values
2569  * to direct clang_visitChildrenWithBlock().
2570  */
2571 typedef enum CXChildVisitResult 
2572      (^CXCursorVisitorBlock)(CXCursor cursor, CXCursor parent);
2573
2574 /**
2575  * Visits the children of a cursor using the specified block.  Behaves
2576  * identically to clang_visitChildren() in all other respects.
2577  */
2578 unsigned clang_visitChildrenWithBlock(CXCursor parent,
2579                                       CXCursorVisitorBlock block);
2580 #  endif
2581 #endif
2582
2583 /**
2584  * @}
2585  */
2586
2587 /**
2588  * \defgroup CINDEX_CURSOR_XREF Cross-referencing in the AST
2589  *
2590  * These routines provide the ability to determine references within and
2591  * across translation units, by providing the names of the entities referenced
2592  * by cursors, follow reference cursors to the declarations they reference,
2593  * and associate declarations with their definitions.
2594  *
2595  * @{
2596  */
2597
2598 /**
2599  * \brief Retrieve a Unified Symbol Resolution (USR) for the entity referenced
2600  * by the given cursor.
2601  *
2602  * A Unified Symbol Resolution (USR) is a string that identifies a particular
2603  * entity (function, class, variable, etc.) within a program. USRs can be
2604  * compared across translation units to determine, e.g., when references in
2605  * one translation refer to an entity defined in another translation unit.
2606  */
2607 CINDEX_LINKAGE CXString clang_getCursorUSR(CXCursor);
2608
2609 /**
2610  * \brief Construct a USR for a specified Objective-C class.
2611  */
2612 CINDEX_LINKAGE CXString clang_constructUSR_ObjCClass(const char *class_name);
2613
2614 /**
2615  * \brief Construct a USR for a specified Objective-C category.
2616  */
2617 CINDEX_LINKAGE CXString
2618   clang_constructUSR_ObjCCategory(const char *class_name,
2619                                  const char *category_name);
2620
2621 /**
2622  * \brief Construct a USR for a specified Objective-C protocol.
2623  */
2624 CINDEX_LINKAGE CXString
2625   clang_constructUSR_ObjCProtocol(const char *protocol_name);
2626
2627
2628 /**
2629  * \brief Construct a USR for a specified Objective-C instance variable and
2630  *   the USR for its containing class.
2631  */
2632 CINDEX_LINKAGE CXString clang_constructUSR_ObjCIvar(const char *name,
2633                                                     CXString classUSR);
2634
2635 /**
2636  * \brief Construct a USR for a specified Objective-C method and
2637  *   the USR for its containing class.
2638  */
2639 CINDEX_LINKAGE CXString clang_constructUSR_ObjCMethod(const char *name,
2640                                                       unsigned isInstanceMethod,
2641                                                       CXString classUSR);
2642
2643 /**
2644  * \brief Construct a USR for a specified Objective-C property and the USR
2645  *  for its containing class.
2646  */
2647 CINDEX_LINKAGE CXString clang_constructUSR_ObjCProperty(const char *property,
2648                                                         CXString classUSR);
2649
2650 /**
2651  * \brief Retrieve a name for the entity referenced by this cursor.
2652  */
2653 CINDEX_LINKAGE CXString clang_getCursorSpelling(CXCursor);
2654
2655 /**
2656  * \brief Retrieve the display name for the entity referenced by this cursor.
2657  *
2658  * The display name contains extra information that helps identify the cursor,
2659  * such as the parameters of a function or template or the arguments of a 
2660  * class template specialization.
2661  */
2662 CINDEX_LINKAGE CXString clang_getCursorDisplayName(CXCursor);
2663   
2664 /** \brief For a cursor that is a reference, retrieve a cursor representing the
2665  * entity that it references.
2666  *
2667  * Reference cursors refer to other entities in the AST. For example, an
2668  * Objective-C superclass reference cursor refers to an Objective-C class.
2669  * This function produces the cursor for the Objective-C class from the
2670  * cursor for the superclass reference. If the input cursor is a declaration or
2671  * definition, it returns that declaration or definition unchanged.
2672  * Otherwise, returns the NULL cursor.
2673  */
2674 CINDEX_LINKAGE CXCursor clang_getCursorReferenced(CXCursor);
2675
2676 /**
2677  *  \brief For a cursor that is either a reference to or a declaration
2678  *  of some entity, retrieve a cursor that describes the definition of
2679  *  that entity.
2680  *
2681  *  Some entities can be declared multiple times within a translation
2682  *  unit, but only one of those declarations can also be a
2683  *  definition. For example, given:
2684  *
2685  *  \code
2686  *  int f(int, int);
2687  *  int g(int x, int y) { return f(x, y); }
2688  *  int f(int a, int b) { return a + b; }
2689  *  int f(int, int);
2690  *  \endcode
2691  *
2692  *  there are three declarations of the function "f", but only the
2693  *  second one is a definition. The clang_getCursorDefinition()
2694  *  function will take any cursor pointing to a declaration of "f"
2695  *  (the first or fourth lines of the example) or a cursor referenced
2696  *  that uses "f" (the call to "f' inside "g") and will return a
2697  *  declaration cursor pointing to the definition (the second "f"
2698  *  declaration).
2699  *
2700  *  If given a cursor for which there is no corresponding definition,
2701  *  e.g., because there is no definition of that entity within this
2702  *  translation unit, returns a NULL cursor.
2703  */
2704 CINDEX_LINKAGE CXCursor clang_getCursorDefinition(CXCursor);
2705
2706 /**
2707  * \brief Determine whether the declaration pointed to by this cursor
2708  * is also a definition of that entity.
2709  */
2710 CINDEX_LINKAGE unsigned clang_isCursorDefinition(CXCursor);
2711
2712 /**
2713  * \brief Retrieve the canonical cursor corresponding to the given cursor.
2714  *
2715  * In the C family of languages, many kinds of entities can be declared several
2716  * times within a single translation unit. For example, a structure type can
2717  * be forward-declared (possibly multiple times) and later defined:
2718  *
2719  * \code
2720  * struct X;
2721  * struct X;
2722  * struct X {
2723  *   int member;
2724  * };
2725  * \endcode
2726  *
2727  * The declarations and the definition of \c X are represented by three 
2728  * different cursors, all of which are declarations of the same underlying 
2729  * entity. One of these cursor is considered the "canonical" cursor, which
2730  * is effectively the representative for the underlying entity. One can 
2731  * determine if two cursors are declarations of the same underlying entity by
2732  * comparing their canonical cursors.
2733  *
2734  * \returns The canonical cursor for the entity referred to by the given cursor.
2735  */
2736 CINDEX_LINKAGE CXCursor clang_getCanonicalCursor(CXCursor);
2737
2738 /**
2739  * @}
2740  */
2741
2742 /**
2743  * \defgroup CINDEX_CPP C++ AST introspection
2744  *
2745  * The routines in this group provide access information in the ASTs specific
2746  * to C++ language features.
2747  *
2748  * @{
2749  */
2750
2751 /**
2752  * \brief Determine if a C++ member function or member function template is 
2753  * declared 'static'.
2754  */
2755 CINDEX_LINKAGE unsigned clang_CXXMethod_isStatic(CXCursor C);
2756
2757 /**
2758  * \brief Determine if a C++ member function or member function template is
2759  * explicitly declared 'virtual' or if it overrides a virtual method from
2760  * one of the base classes.
2761  */
2762 CINDEX_LINKAGE unsigned clang_CXXMethod_isVirtual(CXCursor C);
2763
2764 /**
2765  * \brief Given a cursor that represents a template, determine
2766  * the cursor kind of the specializations would be generated by instantiating
2767  * the template.
2768  *
2769  * This routine can be used to determine what flavor of function template,
2770  * class template, or class template partial specialization is stored in the
2771  * cursor. For example, it can describe whether a class template cursor is
2772  * declared with "struct", "class" or "union".
2773  *
2774  * \param C The cursor to query. This cursor should represent a template
2775  * declaration.
2776  *
2777  * \returns The cursor kind of the specializations that would be generated
2778  * by instantiating the template \p C. If \p C is not a template, returns
2779  * \c CXCursor_NoDeclFound.
2780  */
2781 CINDEX_LINKAGE enum CXCursorKind clang_getTemplateCursorKind(CXCursor C);
2782   
2783 /**
2784  * \brief Given a cursor that may represent a specialization or instantiation
2785  * of a template, retrieve the cursor that represents the template that it
2786  * specializes or from which it was instantiated.
2787  *
2788  * This routine determines the template involved both for explicit 
2789  * specializations of templates and for implicit instantiations of the template,
2790  * both of which are referred to as "specializations". For a class template
2791  * specialization (e.g., \c std::vector<bool>), this routine will return 
2792  * either the primary template (\c std::vector) or, if the specialization was
2793  * instantiated from a class template partial specialization, the class template
2794  * partial specialization. For a class template partial specialization and a
2795  * function template specialization (including instantiations), this
2796  * this routine will return the specialized template.
2797  *
2798  * For members of a class template (e.g., member functions, member classes, or
2799  * static data members), returns the specialized or instantiated member. 
2800  * Although not strictly "templates" in the C++ language, members of class
2801  * templates have the same notions of specializations and instantiations that
2802  * templates do, so this routine treats them similarly.
2803  *
2804  * \param C A cursor that may be a specialization of a template or a member
2805  * of a template.
2806  *
2807  * \returns If the given cursor is a specialization or instantiation of a 
2808  * template or a member thereof, the template or member that it specializes or
2809  * from which it was instantiated. Otherwise, returns a NULL cursor.
2810  */
2811 CINDEX_LINKAGE CXCursor clang_getSpecializedCursorTemplate(CXCursor C);
2812
2813 /**
2814  * \brief Given a cursor that references something else, return the source range
2815  * covering that reference.
2816  *
2817  * \param C A cursor pointing to a member reference, a declaration reference, or
2818  * an operator call.
2819  * \param NameFlags A bitset with three independent flags: 
2820  * CXNameRange_WantQualifier, CXNameRange_WantTemplateArgs, and
2821  * CXNameRange_WantSinglePiece.
2822  * \param PieceIndex For contiguous names or when passing the flag 
2823  * CXNameRange_WantSinglePiece, only one piece with index 0 is 
2824  * available. When the CXNameRange_WantSinglePiece flag is not passed for a
2825  * non-contiguous names, this index can be used to retreive the individual
2826  * pieces of the name. See also CXNameRange_WantSinglePiece.
2827  *
2828  * \returns The piece of the name pointed to by the given cursor. If there is no
2829  * name, or if the PieceIndex is out-of-range, a null-cursor will be returned.
2830  */
2831 CINDEX_LINKAGE CXSourceRange clang_getCursorReferenceNameRange(CXCursor C,
2832                                                 unsigned NameFlags, 
2833                                                 unsigned PieceIndex);
2834
2835 enum CXNameRefFlags {
2836   /**
2837    * \brief Include the nested-name-specifier, e.g. Foo:: in x.Foo::y, in the
2838    * range.
2839    */
2840   CXNameRange_WantQualifier = 0x1,
2841   
2842   /**
2843    * \brief Include the explicit template arguments, e.g. <int> in x.f<int>, in 
2844    * the range.
2845    */
2846   CXNameRange_WantTemplateArgs = 0x2,
2847
2848   /**
2849    * \brief If the name is non-contiguous, return the full spanning range.
2850    *
2851    * Non-contiguous names occur in Objective-C when a selector with two or more
2852    * parameters is used, or in C++ when using an operator:
2853    * \code
2854    * [object doSomething:here withValue:there]; // ObjC
2855    * return some_vector[1]; // C++
2856    * \endcode
2857    */
2858   CXNameRange_WantSinglePiece = 0x4
2859 };
2860   
2861 /**
2862  * @}
2863  */
2864
2865 /**
2866  * \defgroup CINDEX_LEX Token extraction and manipulation
2867  *
2868  * The routines in this group provide access to the tokens within a
2869  * translation unit, along with a semantic mapping of those tokens to
2870  * their corresponding cursors.
2871  *
2872  * @{
2873  */
2874
2875 /**
2876  * \brief Describes a kind of token.
2877  */
2878 typedef enum CXTokenKind {
2879   /**
2880    * \brief A token that contains some kind of punctuation.
2881    */
2882   CXToken_Punctuation,
2883
2884   /**
2885    * \brief A language keyword.
2886    */
2887   CXToken_Keyword,
2888
2889   /**
2890    * \brief An identifier (that is not a keyword).
2891    */
2892   CXToken_Identifier,
2893
2894   /**
2895    * \brief A numeric, string, or character literal.
2896    */
2897   CXToken_Literal,
2898
2899   /**
2900    * \brief A comment.
2901    */
2902   CXToken_Comment
2903 } CXTokenKind;
2904
2905 /**
2906  * \brief Describes a single preprocessing token.
2907  */
2908 typedef struct {
2909   unsigned int_data[4];
2910   void *ptr_data;
2911 } CXToken;
2912
2913 /**
2914  * \brief Determine the kind of the given token.
2915  */
2916 CINDEX_LINKAGE CXTokenKind clang_getTokenKind(CXToken);
2917
2918 /**
2919  * \brief Determine the spelling of the given token.
2920  *
2921  * The spelling of a token is the textual representation of that token, e.g.,
2922  * the text of an identifier or keyword.
2923  */
2924 CINDEX_LINKAGE CXString clang_getTokenSpelling(CXTranslationUnit, CXToken);
2925
2926 /**
2927  * \brief Retrieve the source location of the given token.
2928  */
2929 CINDEX_LINKAGE CXSourceLocation clang_getTokenLocation(CXTranslationUnit,
2930                                                        CXToken);
2931
2932 /**
2933  * \brief Retrieve a source range that covers the given token.
2934  */
2935 CINDEX_LINKAGE CXSourceRange clang_getTokenExtent(CXTranslationUnit, CXToken);
2936
2937 /**
2938  * \brief Tokenize the source code described by the given range into raw
2939  * lexical tokens.
2940  *
2941  * \param TU the translation unit whose text is being tokenized.
2942  *
2943  * \param Range the source range in which text should be tokenized. All of the
2944  * tokens produced by tokenization will fall within this source range,
2945  *
2946  * \param Tokens this pointer will be set to point to the array of tokens
2947  * that occur within the given source range. The returned pointer must be
2948  * freed with clang_disposeTokens() before the translation unit is destroyed.
2949  *
2950  * \param NumTokens will be set to the number of tokens in the \c *Tokens
2951  * array.
2952  *
2953  */
2954 CINDEX_LINKAGE void clang_tokenize(CXTranslationUnit TU, CXSourceRange Range,
2955                                    CXToken **Tokens, unsigned *NumTokens);
2956
2957 /**
2958  * \brief Annotate the given set of tokens by providing cursors for each token
2959  * that can be mapped to a specific entity within the abstract syntax tree.
2960  *
2961  * This token-annotation routine is equivalent to invoking
2962  * clang_getCursor() for the source locations of each of the
2963  * tokens. The cursors provided are filtered, so that only those
2964  * cursors that have a direct correspondence to the token are
2965  * accepted. For example, given a function call \c f(x),
2966  * clang_getCursor() would provide the following cursors:
2967  *
2968  *   * when the cursor is over the 'f', a DeclRefExpr cursor referring to 'f'.
2969  *   * when the cursor is over the '(' or the ')', a CallExpr referring to 'f'.
2970  *   * when the cursor is over the 'x', a DeclRefExpr cursor referring to 'x'.
2971  *
2972  * Only the first and last of these cursors will occur within the
2973  * annotate, since the tokens "f" and "x' directly refer to a function
2974  * and a variable, respectively, but the parentheses are just a small
2975  * part of the full syntax of the function call expression, which is
2976  * not provided as an annotation.
2977  *
2978  * \param TU the translation unit that owns the given tokens.
2979  *
2980  * \param Tokens the set of tokens to annotate.
2981  *
2982  * \param NumTokens the number of tokens in \p Tokens.
2983  *
2984  * \param Cursors an array of \p NumTokens cursors, whose contents will be
2985  * replaced with the cursors corresponding to each token.
2986  */
2987 CINDEX_LINKAGE void clang_annotateTokens(CXTranslationUnit TU,
2988                                          CXToken *Tokens, unsigned NumTokens,
2989                                          CXCursor *Cursors);
2990
2991 /**
2992  * \brief Free the given set of tokens.
2993  */
2994 CINDEX_LINKAGE void clang_disposeTokens(CXTranslationUnit TU,
2995                                         CXToken *Tokens, unsigned NumTokens);
2996
2997 /**
2998  * @}
2999  */
3000
3001 /**
3002  * \defgroup CINDEX_DEBUG Debugging facilities
3003  *
3004  * These routines are used for testing and debugging, only, and should not
3005  * be relied upon.
3006  *
3007  * @{
3008  */
3009
3010 /* for debug/testing */
3011 CINDEX_LINKAGE CXString clang_getCursorKindSpelling(enum CXCursorKind Kind);
3012 CINDEX_LINKAGE void clang_getDefinitionSpellingAndExtent(CXCursor,
3013                                           const char **startBuf,
3014                                           const char **endBuf,
3015                                           unsigned *startLine,
3016                                           unsigned *startColumn,
3017                                           unsigned *endLine,
3018                                           unsigned *endColumn);
3019 CINDEX_LINKAGE void clang_enableStackTraces(void);
3020 CINDEX_LINKAGE void clang_executeOnThread(void (*fn)(void*), void *user_data,
3021                                           unsigned stack_size);
3022
3023 /**
3024  * @}
3025  */
3026
3027 /**
3028  * \defgroup CINDEX_CODE_COMPLET Code completion
3029  *
3030  * Code completion involves taking an (incomplete) source file, along with
3031  * knowledge of where the user is actively editing that file, and suggesting
3032  * syntactically- and semantically-valid constructs that the user might want to
3033  * use at that particular point in the source code. These data structures and
3034  * routines provide support for code completion.
3035  *
3036  * @{
3037  */
3038
3039 /**
3040  * \brief A semantic string that describes a code-completion result.
3041  *
3042  * A semantic string that describes the formatting of a code-completion
3043  * result as a single "template" of text that should be inserted into the
3044  * source buffer when a particular code-completion result is selected.
3045  * Each semantic string is made up of some number of "chunks", each of which
3046  * contains some text along with a description of what that text means, e.g.,
3047  * the name of the entity being referenced, whether the text chunk is part of
3048  * the template, or whether it is a "placeholder" that the user should replace
3049  * with actual code,of a specific kind. See \c CXCompletionChunkKind for a
3050  * description of the different kinds of chunks.
3051  */
3052 typedef void *CXCompletionString;
3053
3054 /**
3055  * \brief A single result of code completion.
3056  */
3057 typedef struct {
3058   /**
3059    * \brief The kind of entity that this completion refers to.
3060    *
3061    * The cursor kind will be a macro, keyword, or a declaration (one of the
3062    * *Decl cursor kinds), describing the entity that the completion is
3063    * referring to.
3064    *
3065    * \todo In the future, we would like to provide a full cursor, to allow
3066    * the client to extract additional information from declaration.
3067    */
3068   enum CXCursorKind CursorKind;
3069
3070   /**
3071    * \brief The code-completion string that describes how to insert this
3072    * code-completion result into the editing buffer.
3073    */
3074   CXCompletionString CompletionString;
3075 } CXCompletionResult;
3076
3077 /**
3078  * \brief Describes a single piece of text within a code-completion string.
3079  *
3080  * Each "chunk" within a code-completion string (\c CXCompletionString) is
3081  * either a piece of text with a specific "kind" that describes how that text
3082  * should be interpreted by the client or is another completion string.
3083  */
3084 enum CXCompletionChunkKind {
3085   /**
3086    * \brief A code-completion string that describes "optional" text that
3087    * could be a part of the template (but is not required).
3088    *
3089    * The Optional chunk is the only kind of chunk that has a code-completion
3090    * string for its representation, which is accessible via
3091    * \c clang_getCompletionChunkCompletionString(). The code-completion string
3092    * describes an additional part of the template that is completely optional.
3093    * For example, optional chunks can be used to describe the placeholders for
3094    * arguments that match up with defaulted function parameters, e.g. given:
3095    *
3096    * \code
3097    * void f(int x, float y = 3.14, double z = 2.71828);
3098    * \endcode
3099    *
3100    * The code-completion string for this function would contain:
3101    *   - a TypedText chunk for "f".
3102    *   - a LeftParen chunk for "(".
3103    *   - a Placeholder chunk for "int x"
3104    *   - an Optional chunk containing the remaining defaulted arguments, e.g.,
3105    *       - a Comma chunk for ","
3106    *       - a Placeholder chunk for "float y"
3107    *       - an Optional chunk containing the last defaulted argument:
3108    *           - a Comma chunk for ","
3109    *           - a Placeholder chunk for "double z"
3110    *   - a RightParen chunk for ")"
3111    *
3112    * There are many ways to handle Optional chunks. Two simple approaches are:
3113    *   - Completely ignore optional chunks, in which case the template for the
3114    *     function "f" would only include the first parameter ("int x").
3115    *   - Fully expand all optional chunks, in which case the template for the
3116    *     function "f" would have all of the parameters.
3117    */
3118   CXCompletionChunk_Optional,
3119   /**
3120    * \brief Text that a user would be expected to type to get this
3121    * code-completion result.
3122    *
3123    * There will be exactly one "typed text" chunk in a semantic string, which
3124    * will typically provide the spelling of a keyword or the name of a
3125    * declaration that could be used at the current code point. Clients are
3126    * expected to filter the code-completion results based on the text in this
3127    * chunk.
3128    */
3129   CXCompletionChunk_TypedText,
3130   /**
3131    * \brief Text that should be inserted as part of a code-completion result.
3132    *
3133    * A "text" chunk represents text that is part of the template to be
3134    * inserted into user code should this particular code-completion result
3135    * be selected.
3136    */
3137   CXCompletionChunk_Text,
3138   /**
3139    * \brief Placeholder text that should be replaced by the user.
3140    *
3141    * A "placeholder" chunk marks a place where the user should insert text
3142    * into the code-completion template. For example, placeholders might mark
3143    * the function parameters for a function declaration, to indicate that the
3144    * user should provide arguments for each of those parameters. The actual
3145    * text in a placeholder is a suggestion for the text to display before
3146    * the user replaces the placeholder with real code.
3147    */
3148   CXCompletionChunk_Placeholder,
3149   /**
3150    * \brief Informative text that should be displayed but never inserted as
3151    * part of the template.
3152    *
3153    * An "informative" chunk contains annotations that can be displayed to
3154    * help the user decide whether a particular code-completion result is the
3155    * right option, but which is not part of the actual template to be inserted
3156    * by code completion.
3157    */
3158   CXCompletionChunk_Informative,
3159   /**
3160    * \brief Text that describes the current parameter when code-completion is
3161    * referring to function call, message send, or template specialization.
3162    *
3163    * A "current parameter" chunk occurs when code-completion is providing
3164    * information about a parameter corresponding to the argument at the
3165    * code-completion point. For example, given a function
3166    *
3167    * \code
3168    * int add(int x, int y);
3169    * \endcode
3170    *
3171    * and the source code \c add(, where the code-completion point is after the
3172    * "(", the code-completion string will contain a "current parameter" chunk
3173    * for "int x", indicating that the current argument will initialize that
3174    * parameter. After typing further, to \c add(17, (where the code-completion
3175    * point is after the ","), the code-completion string will contain a
3176    * "current paremeter" chunk to "int y".
3177    */
3178   CXCompletionChunk_CurrentParameter,
3179   /**
3180    * \brief A left parenthesis ('('), used to initiate a function call or
3181    * signal the beginning of a function parameter list.
3182    */
3183   CXCompletionChunk_LeftParen,
3184   /**
3185    * \brief A right parenthesis (')'), used to finish a function call or
3186    * signal the end of a function parameter list.
3187    */
3188   CXCompletionChunk_RightParen,
3189   /**
3190    * \brief A left bracket ('[').
3191    */
3192   CXCompletionChunk_LeftBracket,
3193   /**
3194    * \brief A right bracket (']').
3195    */
3196   CXCompletionChunk_RightBracket,
3197   /**
3198    * \brief A left brace ('{').
3199    */
3200   CXCompletionChunk_LeftBrace,
3201   /**
3202    * \brief A right brace ('}').
3203    */
3204   CXCompletionChunk_RightBrace,
3205   /**
3206    * \brief A left angle bracket ('<').
3207    */
3208   CXCompletionChunk_LeftAngle,
3209   /**
3210    * \brief A right angle bracket ('>').
3211    */
3212   CXCompletionChunk_RightAngle,
3213   /**
3214    * \brief A comma separator (',').
3215    */
3216   CXCompletionChunk_Comma,
3217   /**
3218    * \brief Text that specifies the result type of a given result.
3219    *
3220    * This special kind of informative chunk is not meant to be inserted into
3221    * the text buffer. Rather, it is meant to illustrate the type that an
3222    * expression using the given completion string would have.
3223    */
3224   CXCompletionChunk_ResultType,
3225   /**
3226    * \brief A colon (':').
3227    */
3228   CXCompletionChunk_Colon,
3229   /**
3230    * \brief A semicolon (';').
3231    */
3232   CXCompletionChunk_SemiColon,
3233   /**
3234    * \brief An '=' sign.
3235    */
3236   CXCompletionChunk_Equal,
3237   /**
3238    * Horizontal space (' ').
3239    */
3240   CXCompletionChunk_HorizontalSpace,
3241   /**
3242    * Vertical space ('\n'), after which it is generally a good idea to
3243    * perform indentation.
3244    */
3245   CXCompletionChunk_VerticalSpace
3246 };
3247
3248 /**
3249  * \brief Determine the kind of a particular chunk within a completion string.
3250  *
3251  * \param completion_string the completion string to query.
3252  *
3253  * \param chunk_number the 0-based index of the chunk in the completion string.
3254  *
3255  * \returns the kind of the chunk at the index \c chunk_number.
3256  */
3257 CINDEX_LINKAGE enum CXCompletionChunkKind
3258 clang_getCompletionChunkKind(CXCompletionString completion_string,
3259                              unsigned chunk_number);
3260
3261 /**
3262  * \brief Retrieve the text associated with a particular chunk within a
3263  * completion string.
3264  *
3265  * \param completion_string the completion string to query.
3266  *
3267  * \param chunk_number the 0-based index of the chunk in the completion string.
3268  *
3269  * \returns the text associated with the chunk at index \c chunk_number.
3270  */
3271 CINDEX_LINKAGE CXString
3272 clang_getCompletionChunkText(CXCompletionString completion_string,
3273                              unsigned chunk_number);
3274
3275 /**
3276  * \brief Retrieve the completion string associated with a particular chunk
3277  * within a completion string.
3278  *
3279  * \param completion_string the completion string to query.
3280  *
3281  * \param chunk_number the 0-based index of the chunk in the completion string.
3282  *
3283  * \returns the completion string associated with the chunk at index
3284  * \c chunk_number.
3285  */
3286 CINDEX_LINKAGE CXCompletionString
3287 clang_getCompletionChunkCompletionString(CXCompletionString completion_string,
3288                                          unsigned chunk_number);
3289
3290 /**
3291  * \brief Retrieve the number of chunks in the given code-completion string.
3292  */
3293 CINDEX_LINKAGE unsigned
3294 clang_getNumCompletionChunks(CXCompletionString completion_string);
3295
3296 /**
3297  * \brief Determine the priority of this code completion.
3298  *
3299  * The priority of a code completion indicates how likely it is that this 
3300  * particular completion is the completion that the user will select. The
3301  * priority is selected by various internal heuristics.
3302  *
3303  * \param completion_string The completion string to query.
3304  *
3305  * \returns The priority of this completion string. Smaller values indicate
3306  * higher-priority (more likely) completions.
3307  */
3308 CINDEX_LINKAGE unsigned
3309 clang_getCompletionPriority(CXCompletionString completion_string);
3310   
3311 /**
3312  * \brief Determine the availability of the entity that this code-completion
3313  * string refers to.
3314  *
3315  * \param completion_string The completion string to query.
3316  *
3317  * \returns The availability of the completion string.
3318  */
3319 CINDEX_LINKAGE enum CXAvailabilityKind 
3320 clang_getCompletionAvailability(CXCompletionString completion_string);
3321
3322 /**
3323  * \brief Retrieve the number of annotations associated with the given
3324  * completion string.
3325  *
3326  * \param completion_string the completion string to query.
3327  *
3328  * \returns the number of annotations associated with the given completion
3329  * string.
3330  */
3331 CINDEX_LINKAGE unsigned
3332 clang_getCompletionNumAnnotations(CXCompletionString completion_string);
3333
3334 /**
3335  * \brief Retrieve the annotation associated with the given completion string.
3336  *
3337  * \param completion_string the completion string to query.
3338  *
3339  * \param annotation_number the 0-based index of the annotation of the
3340  * completion string.
3341  *
3342  * \returns annotation string associated with the completion at index
3343  * \c annotation_number, or a NULL string if that annotation is not available.
3344  */
3345 CINDEX_LINKAGE CXString
3346 clang_getCompletionAnnotation(CXCompletionString completion_string,
3347                               unsigned annotation_number);
3348
3349 /**
3350  * \brief Retrieve a completion string for an arbitrary declaration or macro
3351  * definition cursor.
3352  *
3353  * \param cursor The cursor to query.
3354  *
3355  * \returns A non-context-sensitive completion string for declaration and macro
3356  * definition cursors, or NULL for other kinds of cursors.
3357  */
3358 CINDEX_LINKAGE CXCompletionString
3359 clang_getCursorCompletionString(CXCursor cursor);
3360   
3361 /**
3362  * \brief Contains the results of code-completion.
3363  *
3364  * This data structure contains the results of code completion, as
3365  * produced by \c clang_codeCompleteAt(). Its contents must be freed by
3366  * \c clang_disposeCodeCompleteResults.
3367  */
3368 typedef struct {
3369   /**
3370    * \brief The code-completion results.
3371    */
3372   CXCompletionResult *Results;
3373
3374   /**
3375    * \brief The number of code-completion results stored in the
3376    * \c Results array.
3377    */
3378   unsigned NumResults;
3379 } CXCodeCompleteResults;
3380
3381 /**
3382  * \brief Flags that can be passed to \c clang_codeCompleteAt() to
3383  * modify its behavior.
3384  *
3385  * The enumerators in this enumeration can be bitwise-OR'd together to
3386  * provide multiple options to \c clang_codeCompleteAt().
3387  */
3388 enum CXCodeComplete_Flags {
3389   /**
3390    * \brief Whether to include macros within the set of code
3391    * completions returned.
3392    */
3393   CXCodeComplete_IncludeMacros = 0x01,
3394
3395   /**
3396    * \brief Whether to include code patterns for language constructs
3397    * within the set of code completions, e.g., for loops.
3398    */
3399   CXCodeComplete_IncludeCodePatterns = 0x02
3400 };
3401
3402 /**
3403  * \brief Bits that represent the context under which completion is occurring.
3404  *
3405  * The enumerators in this enumeration may be bitwise-OR'd together if multiple
3406  * contexts are occurring simultaneously.
3407  */
3408 enum CXCompletionContext {
3409   /**
3410    * \brief The context for completions is unexposed, as only Clang results
3411    * should be included. (This is equivalent to having no context bits set.)
3412    */
3413   CXCompletionContext_Unexposed = 0,
3414   
3415   /**
3416    * \brief Completions for any possible type should be included in the results.
3417    */
3418   CXCompletionContext_AnyType = 1 << 0,
3419   
3420   /**
3421    * \brief Completions for any possible value (variables, function calls, etc.)
3422    * should be included in the results.
3423    */
3424   CXCompletionContext_AnyValue = 1 << 1,
3425   /**
3426    * \brief Completions for values that resolve to an Objective-C object should
3427    * be included in the results.
3428    */
3429   CXCompletionContext_ObjCObjectValue = 1 << 2,
3430   /**
3431    * \brief Completions for values that resolve to an Objective-C selector
3432    * should be included in the results.
3433    */
3434   CXCompletionContext_ObjCSelectorValue = 1 << 3,
3435   /**
3436    * \brief Completions for values that resolve to a C++ class type should be
3437    * included in the results.
3438    */
3439   CXCompletionContext_CXXClassTypeValue = 1 << 4,
3440   
3441   /**
3442    * \brief Completions for fields of the member being accessed using the dot
3443    * operator should be included in the results.
3444    */
3445   CXCompletionContext_DotMemberAccess = 1 << 5,
3446   /**
3447    * \brief Completions for fields of the member being accessed using the arrow
3448    * operator should be included in the results.
3449    */
3450   CXCompletionContext_ArrowMemberAccess = 1 << 6,
3451   /**
3452    * \brief Completions for properties of the Objective-C object being accessed
3453    * using the dot operator should be included in the results.
3454    */
3455   CXCompletionContext_ObjCPropertyAccess = 1 << 7,
3456   
3457   /**
3458    * \brief Completions for enum tags should be included in the results.
3459    */
3460   CXCompletionContext_EnumTag = 1 << 8,
3461   /**
3462    * \brief Completions for union tags should be included in the results.
3463    */
3464   CXCompletionContext_UnionTag = 1 << 9,
3465   /**
3466    * \brief Completions for struct tags should be included in the results.
3467    */
3468   CXCompletionContext_StructTag = 1 << 10,
3469   
3470   /**
3471    * \brief Completions for C++ class names should be included in the results.
3472    */
3473   CXCompletionContext_ClassTag = 1 << 11,
3474   /**
3475    * \brief Completions for C++ namespaces and namespace aliases should be
3476    * included in the results.
3477    */
3478   CXCompletionContext_Namespace = 1 << 12,
3479   /**
3480    * \brief Completions for C++ nested name specifiers should be included in
3481    * the results.
3482    */
3483   CXCompletionContext_NestedNameSpecifier = 1 << 13,
3484   
3485   /**
3486    * \brief Completions for Objective-C interfaces (classes) should be included
3487    * in the results.
3488    */
3489   CXCompletionContext_ObjCInterface = 1 << 14,
3490   /**
3491    * \brief Completions for Objective-C protocols should be included in
3492    * the results.
3493    */
3494   CXCompletionContext_ObjCProtocol = 1 << 15,
3495   /**
3496    * \brief Completions for Objective-C categories should be included in
3497    * the results.
3498    */
3499   CXCompletionContext_ObjCCategory = 1 << 16,
3500   /**
3501    * \brief Completions for Objective-C instance messages should be included
3502    * in the results.
3503    */
3504   CXCompletionContext_ObjCInstanceMessage = 1 << 17,
3505   /**
3506    * \brief Completions for Objective-C class messages should be included in
3507    * the results.
3508    */
3509   CXCompletionContext_ObjCClassMessage = 1 << 18,
3510   /**
3511    * \brief Completions for Objective-C selector names should be included in
3512    * the results.
3513    */
3514   CXCompletionContext_ObjCSelectorName = 1 << 19,
3515   
3516   /**
3517    * \brief Completions for preprocessor macro names should be included in
3518    * the results.
3519    */
3520   CXCompletionContext_MacroName = 1 << 20,
3521   
3522   /**
3523    * \brief Natural language completions should be included in the results.
3524    */
3525   CXCompletionContext_NaturalLanguage = 1 << 21,
3526   
3527   /**
3528    * \brief The current context is unknown, so set all contexts.
3529    */
3530   CXCompletionContext_Unknown = ((1 << 22) - 1)
3531 };
3532   
3533 /**
3534  * \brief Returns a default set of code-completion options that can be
3535  * passed to\c clang_codeCompleteAt(). 
3536  */
3537 CINDEX_LINKAGE unsigned clang_defaultCodeCompleteOptions(void);
3538
3539 /**
3540  * \brief Perform code completion at a given location in a translation unit.
3541  *
3542  * This function performs code completion at a particular file, line, and
3543  * column within source code, providing results that suggest potential
3544  * code snippets based on the context of the completion. The basic model
3545  * for code completion is that Clang will parse a complete source file,
3546  * performing syntax checking up to the location where code-completion has
3547  * been requested. At that point, a special code-completion token is passed
3548  * to the parser, which recognizes this token and determines, based on the
3549  * current location in the C/Objective-C/C++ grammar and the state of
3550  * semantic analysis, what completions to provide. These completions are
3551  * returned via a new \c CXCodeCompleteResults structure.
3552  *
3553  * Code completion itself is meant to be triggered by the client when the
3554  * user types punctuation characters or whitespace, at which point the
3555  * code-completion location will coincide with the cursor. For example, if \c p
3556  * is a pointer, code-completion might be triggered after the "-" and then
3557  * after the ">" in \c p->. When the code-completion location is afer the ">",
3558  * the completion results will provide, e.g., the members of the struct that
3559  * "p" points to. The client is responsible for placing the cursor at the
3560  * beginning of the token currently being typed, then filtering the results
3561  * based on the contents of the token. For example, when code-completing for
3562  * the expression \c p->get, the client should provide the location just after
3563  * the ">" (e.g., pointing at the "g") to this code-completion hook. Then, the
3564  * client can filter the results based on the current token text ("get"), only
3565  * showing those results that start with "get". The intent of this interface
3566  * is to separate the relatively high-latency acquisition of code-completion
3567  * results from the filtering of results on a per-character basis, which must
3568  * have a lower latency.
3569  *
3570  * \param TU The translation unit in which code-completion should
3571  * occur. The source files for this translation unit need not be
3572  * completely up-to-date (and the contents of those source files may
3573  * be overridden via \p unsaved_files). Cursors referring into the
3574  * translation unit may be invalidated by this invocation.
3575  *
3576  * \param complete_filename The name of the source file where code
3577  * completion should be performed. This filename may be any file
3578  * included in the translation unit.
3579  *
3580  * \param complete_line The line at which code-completion should occur.
3581  *
3582  * \param complete_column The column at which code-completion should occur.
3583  * Note that the column should point just after the syntactic construct that
3584  * initiated code completion, and not in the middle of a lexical token.
3585  *
3586  * \param unsaved_files the Tiles that have not yet been saved to disk
3587  * but may be required for parsing or code completion, including the
3588  * contents of those files.  The contents and name of these files (as
3589  * specified by CXUnsavedFile) are copied when necessary, so the
3590  * client only needs to guarantee their validity until the call to
3591  * this function returns.
3592  *
3593  * \param num_unsaved_files The number of unsaved file entries in \p
3594  * unsaved_files.
3595  *
3596  * \param options Extra options that control the behavior of code
3597  * completion, expressed as a bitwise OR of the enumerators of the
3598  * CXCodeComplete_Flags enumeration. The 
3599  * \c clang_defaultCodeCompleteOptions() function returns a default set
3600  * of code-completion options.
3601  *
3602  * \returns If successful, a new \c CXCodeCompleteResults structure
3603  * containing code-completion results, which should eventually be
3604  * freed with \c clang_disposeCodeCompleteResults(). If code
3605  * completion fails, returns NULL.
3606  */
3607 CINDEX_LINKAGE
3608 CXCodeCompleteResults *clang_codeCompleteAt(CXTranslationUnit TU,
3609                                             const char *complete_filename,
3610                                             unsigned complete_line,
3611                                             unsigned complete_column,
3612                                             struct CXUnsavedFile *unsaved_files,
3613                                             unsigned num_unsaved_files,
3614                                             unsigned options);
3615
3616 /**
3617  * \brief Sort the code-completion results in case-insensitive alphabetical 
3618  * order.
3619  *
3620  * \param Results The set of results to sort.
3621  * \param NumResults The number of results in \p Results.
3622  */
3623 CINDEX_LINKAGE
3624 void clang_sortCodeCompletionResults(CXCompletionResult *Results,
3625                                      unsigned NumResults);
3626   
3627 /**
3628  * \brief Free the given set of code-completion results.
3629  */
3630 CINDEX_LINKAGE
3631 void clang_disposeCodeCompleteResults(CXCodeCompleteResults *Results);
3632   
3633 /**
3634  * \brief Determine the number of diagnostics produced prior to the
3635  * location where code completion was performed.
3636  */
3637 CINDEX_LINKAGE
3638 unsigned clang_codeCompleteGetNumDiagnostics(CXCodeCompleteResults *Results);
3639
3640 /**
3641  * \brief Retrieve a diagnostic associated with the given code completion.
3642  *
3643  * \param Result the code completion results to query.
3644  * \param Index the zero-based diagnostic number to retrieve.
3645  *
3646  * \returns the requested diagnostic. This diagnostic must be freed
3647  * via a call to \c clang_disposeDiagnostic().
3648  */
3649 CINDEX_LINKAGE
3650 CXDiagnostic clang_codeCompleteGetDiagnostic(CXCodeCompleteResults *Results,
3651                                              unsigned Index);
3652
3653 /**
3654  * \brief Determines what compeltions are appropriate for the context
3655  * the given code completion.
3656  * 
3657  * \param Results the code completion results to query
3658  *
3659  * \returns the kinds of completions that are appropriate for use
3660  * along with the given code completion results.
3661  */
3662 CINDEX_LINKAGE
3663 unsigned long long clang_codeCompleteGetContexts(
3664                                                 CXCodeCompleteResults *Results);
3665
3666 /**
3667  * \brief Returns the cursor kind for the container for the current code
3668  * completion context. The container is only guaranteed to be set for
3669  * contexts where a container exists (i.e. member accesses or Objective-C
3670  * message sends); if there is not a container, this function will return
3671  * CXCursor_InvalidCode.
3672  *
3673  * \param Results the code completion results to query
3674  *
3675  * \param IsIncomplete on return, this value will be false if Clang has complete
3676  * information about the container. If Clang does not have complete
3677  * information, this value will be true.
3678  *
3679  * \returns the container kind, or CXCursor_InvalidCode if there is not a
3680  * container
3681  */
3682 CINDEX_LINKAGE
3683 enum CXCursorKind clang_codeCompleteGetContainerKind(
3684                                                  CXCodeCompleteResults *Results,
3685                                                      unsigned *IsIncomplete);
3686
3687 /**
3688  * \brief Returns the USR for the container for the current code completion
3689  * context. If there is not a container for the current context, this
3690  * function will return the empty string.
3691  *
3692  * \param Results the code completion results to query
3693  *
3694  * \returns the USR for the container
3695  */
3696 CINDEX_LINKAGE
3697 CXString clang_codeCompleteGetContainerUSR(CXCodeCompleteResults *Results);
3698   
3699   
3700 /**
3701  * \brief Returns the currently-entered selector for an Objective-C message
3702  * send, formatted like "initWithFoo:bar:". Only guaranteed to return a
3703  * non-empty string for CXCompletionContext_ObjCInstanceMessage and
3704  * CXCompletionContext_ObjCClassMessage.
3705  *
3706  * \param Results the code completion results to query
3707  *
3708  * \returns the selector (or partial selector) that has been entered thus far
3709  * for an Objective-C message send.
3710  */
3711 CINDEX_LINKAGE
3712 CXString clang_codeCompleteGetObjCSelector(CXCodeCompleteResults *Results);
3713   
3714 /**
3715  * @}
3716  */
3717
3718
3719 /**
3720  * \defgroup CINDEX_MISC Miscellaneous utility functions
3721  *
3722  * @{
3723  */
3724
3725 /**
3726  * \brief Return a version string, suitable for showing to a user, but not
3727  *        intended to be parsed (the format is not guaranteed to be stable).
3728  */
3729 CINDEX_LINKAGE CXString clang_getClangVersion();
3730
3731   
3732 /**
3733  * \brief Enable/disable crash recovery.
3734  *
3735  * \param Flag to indicate if crash recovery is enabled.  A non-zero value
3736  *        enables crash recovery, while 0 disables it.
3737  */
3738 CINDEX_LINKAGE void clang_toggleCrashRecovery(unsigned isEnabled);
3739   
3740  /**
3741   * \brief Visitor invoked for each file in a translation unit
3742   *        (used with clang_getInclusions()).
3743   *
3744   * This visitor function will be invoked by clang_getInclusions() for each
3745   * file included (either at the top-level or by #include directives) within
3746   * a translation unit.  The first argument is the file being included, and
3747   * the second and third arguments provide the inclusion stack.  The
3748   * array is sorted in order of immediate inclusion.  For example,
3749   * the first element refers to the location that included 'included_file'.
3750   */
3751 typedef void (*CXInclusionVisitor)(CXFile included_file,
3752                                    CXSourceLocation* inclusion_stack,
3753                                    unsigned include_len,
3754                                    CXClientData client_data);
3755
3756 /**
3757  * \brief Visit the set of preprocessor inclusions in a translation unit.
3758  *   The visitor function is called with the provided data for every included
3759  *   file.  This does not include headers included by the PCH file (unless one
3760  *   is inspecting the inclusions in the PCH file itself).
3761  */
3762 CINDEX_LINKAGE void clang_getInclusions(CXTranslationUnit tu,
3763                                         CXInclusionVisitor visitor,
3764                                         CXClientData client_data);
3765
3766 /**
3767  * @}
3768  */
3769
3770 /** \defgroup CINDEX_REMAPPING Remapping functions
3771  *
3772  * @{
3773  */
3774
3775 /**
3776  * \brief A remapping of original source files and their translated files.
3777  */
3778 typedef void *CXRemapping;
3779
3780 /**
3781  * \brief Retrieve a remapping.
3782  *
3783  * \param path the path that contains metadata about remappings.
3784  *
3785  * \returns the requested remapping. This remapping must be freed
3786  * via a call to \c clang_remap_dispose(). Can return NULL if an error occurred.
3787  */
3788 CINDEX_LINKAGE CXRemapping clang_getRemappings(const char *path);
3789
3790 /**
3791  * \brief Determine the number of remappings.
3792  */
3793 CINDEX_LINKAGE unsigned clang_remap_getNumFiles(CXRemapping);
3794
3795 /**
3796  * \brief Get the original and the associated filename from the remapping.
3797  * 
3798  * \param original If non-NULL, will be set to the original filename.
3799  *
3800  * \param transformed If non-NULL, will be set to the filename that the original
3801  * is associated with.
3802  */
3803 CINDEX_LINKAGE void clang_remap_getFilenames(CXRemapping, unsigned index,
3804                                      CXString *original, CXString *transformed);
3805
3806 /**
3807  * \brief Dispose the remapping.
3808  */
3809 CINDEX_LINKAGE void clang_remap_dispose(CXRemapping);
3810
3811 /**
3812  * @}
3813  */
3814
3815 /** \defgroup CINDEX_HIGH Higher level API functions
3816  *
3817  * @{
3818  */
3819
3820 enum CXVisitorResult {
3821   CXVisit_Break,
3822   CXVisit_Continue
3823 };
3824
3825 typedef struct {
3826   void *context;
3827   enum CXVisitorResult (*visit)(void *context, CXCursor, CXSourceRange);
3828 } CXCursorAndRangeVisitor;
3829
3830 /**
3831  * \brief Find references of a declaration in a specific file.
3832  * 
3833  * \param cursor pointing to a declaration or a reference of one.
3834  *
3835  * \param file to search for references.
3836  *
3837  * \param visitor callback that will receive pairs of CXCursor/CXSourceRange for
3838  * each reference found.
3839  * The CXSourceRange will point inside the file; if the reference is inside
3840  * a macro (and not a macro argument) the CXSourceRange will be invalid.
3841  */
3842 CINDEX_LINKAGE void clang_findReferencesInFile(CXCursor cursor, CXFile file,
3843                                                CXCursorAndRangeVisitor visitor);
3844
3845 #ifdef __has_feature
3846 #  if __has_feature(blocks)
3847
3848 typedef enum CXVisitorResult
3849     (^CXCursorAndRangeVisitorBlock)(CXCursor, CXSourceRange);
3850
3851 CINDEX_LINKAGE
3852 void clang_findReferencesInFileWithBlock(CXCursor, CXFile,
3853                                          CXCursorAndRangeVisitorBlock);
3854
3855 #  endif
3856 #endif
3857
3858 /**
3859  * @}
3860  */
3861
3862 /**
3863  * @}
3864  */
3865
3866 #ifdef __cplusplus
3867 }
3868 #endif
3869 #endif
3870