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