clang API Documentation
Classes | |
struct | CXTUResourceUsageEntry |
struct | CXTUResourceUsage |
The memory usage of a CXTranslationUnit, broken into categories. More... | |
Typedefs | |
typedef struct CXTUResourceUsageEntry | CXTUResourceUsageEntry |
typedef struct CXTUResourceUsage | CXTUResourceUsage |
The memory usage of a CXTranslationUnit, broken into categories. | |
Enumerations | |
enum | CXTranslationUnit_Flags { CXTranslationUnit_None = 0x0, CXTranslationUnit_DetailedPreprocessingRecord = 0x01, CXTranslationUnit_Incomplete = 0x02, CXTranslationUnit_PrecompiledPreamble = 0x04, CXTranslationUnit_CacheCompletionResults = 0x08, CXTranslationUnit_ForSerialization = 0x10, CXTranslationUnit_CXXChainedPCH = 0x20, CXTranslationUnit_SkipFunctionBodies = 0x40, CXTranslationUnit_IncludeBriefCommentsInCodeCompletion = 0x80 } |
Flags that control the creation of translation units. More... | |
enum | CXSaveTranslationUnit_Flags { CXSaveTranslationUnit_None = 0x0 } |
Flags that control how translation units are saved. More... | |
enum | CXSaveError { CXSaveError_None = 0, CXSaveError_Unknown = 1, CXSaveError_TranslationErrors = 2, CXSaveError_InvalidTU = 3 } |
Describes the kind of error that occurred (if any) in a call to clang_saveTranslationUnit() . More... | |
enum | CXReparse_Flags { CXReparse_None = 0x0 } |
Flags that control the reparsing of translation units. More... | |
enum | CXTUResourceUsageKind { CXTUResourceUsage_AST = 1, CXTUResourceUsage_Identifiers = 2, CXTUResourceUsage_Selectors = 3, CXTUResourceUsage_GlobalCompletionResults = 4, CXTUResourceUsage_SourceManagerContentCache = 5, CXTUResourceUsage_AST_SideTables = 6, CXTUResourceUsage_SourceManager_Membuffer_Malloc = 7, CXTUResourceUsage_SourceManager_Membuffer_MMap = 8, CXTUResourceUsage_ExternalASTSource_Membuffer_Malloc = 9, CXTUResourceUsage_ExternalASTSource_Membuffer_MMap = 10, CXTUResourceUsage_Preprocessor = 11, CXTUResourceUsage_PreprocessingRecord = 12, CXTUResourceUsage_SourceManager_DataStructures = 13, CXTUResourceUsage_Preprocessor_HeaderSearch = 14, CXTUResourceUsage_MEMORY_IN_BYTES_BEGIN = CXTUResourceUsage_AST, CXTUResourceUsage_MEMORY_IN_BYTES_END, CXTUResourceUsage_First = CXTUResourceUsage_AST, CXTUResourceUsage_Last = CXTUResourceUsage_Preprocessor_HeaderSearch } |
Categorizes how memory is being used by a translation unit. More... | |
Functions | |
CINDEX_LINKAGE CXString | clang_getTranslationUnitSpelling (CXTranslationUnit CTUnit) |
Get the original translation unit source file name. | |
CINDEX_LINKAGE CXTranslationUnit | clang_createTranslationUnitFromSourceFile (CXIndex CIdx, const char *source_filename, int num_clang_command_line_args, const char *const *clang_command_line_args, unsigned num_unsaved_files, struct CXUnsavedFile *unsaved_files) |
Return the CXTranslationUnit for a given source file and the provided command line arguments one would pass to the compiler. | |
CINDEX_LINKAGE CXTranslationUnit | clang_createTranslationUnit (CXIndex CIdx, const char *ast_filename) |
Same as clang_createTranslationUnit2 , but returns the CXTranslationUnit instead of an error code. In case of an error this routine returns a NULL CXTranslationUnit , without further detailed error codes. | |
CINDEX_LINKAGE enum CXErrorCode | clang_createTranslationUnit2 (CXIndex CIdx, const char *ast_filename, CXTranslationUnit *out_TU) |
Create a translation unit from an AST file (-emit-ast ). | |
CINDEX_LINKAGE unsigned | clang_defaultEditingTranslationUnitOptions (void) |
Returns the set of flags that is suitable for parsing a translation unit that is being edited. | |
CINDEX_LINKAGE CXTranslationUnit | clang_parseTranslationUnit (CXIndex CIdx, const char *source_filename, const char *const *command_line_args, int num_command_line_args, struct CXUnsavedFile *unsaved_files, unsigned num_unsaved_files, unsigned options) |
Same as clang_parseTranslationUnit2 , but returns the CXTranslationUnit instead of an error code. In case of an error this routine returns a NULL CXTranslationUnit , without further detailed error codes. | |
CINDEX_LINKAGE enum CXErrorCode | clang_parseTranslationUnit2 (CXIndex CIdx, const char *source_filename, const char *const *command_line_args, int num_command_line_args, struct CXUnsavedFile *unsaved_files, unsigned num_unsaved_files, unsigned options, CXTranslationUnit *out_TU) |
Parse the given source file and the translation unit corresponding to that file. | |
CINDEX_LINKAGE unsigned | clang_defaultSaveOptions (CXTranslationUnit TU) |
Returns the set of flags that is suitable for saving a translation unit. | |
CINDEX_LINKAGE int | clang_saveTranslationUnit (CXTranslationUnit TU, const char *FileName, unsigned options) |
Saves a translation unit into a serialized representation of that translation unit on disk. | |
CINDEX_LINKAGE void | clang_disposeTranslationUnit (CXTranslationUnit) |
Destroy the specified CXTranslationUnit object. | |
CINDEX_LINKAGE unsigned | clang_defaultReparseOptions (CXTranslationUnit TU) |
Returns the set of flags that is suitable for reparsing a translation unit. | |
CINDEX_LINKAGE int | clang_reparseTranslationUnit (CXTranslationUnit TU, unsigned num_unsaved_files, struct CXUnsavedFile *unsaved_files, unsigned options) |
Reparse the source files that produced this translation unit. | |
CINDEX_LINKAGE const char * | clang_getTUResourceUsageName (enum CXTUResourceUsageKind kind) |
Returns the human-readable null-terminated C string that represents the name of the memory category. This string should never be freed. | |
CINDEX_LINKAGE CXTUResourceUsage | clang_getCXTUResourceUsage (CXTranslationUnit TU) |
Return the memory usage of a translation unit. This object should be released with clang_disposeCXTUResourceUsage(). | |
CINDEX_LINKAGE void | clang_disposeCXTUResourceUsage (CXTUResourceUsage usage) |
The routines in this group provide the ability to create and destroy translation units from files, either by parsing the contents of the files or by reading in a serialized representation of a translation unit.
typedef struct CXTUResourceUsage CXTUResourceUsage |
The memory usage of a CXTranslationUnit, broken into categories.
typedef struct CXTUResourceUsageEntry CXTUResourceUsageEntry |
enum CXReparse_Flags |
Flags that control the reparsing of translation units.
The enumerators in this enumeration type are meant to be bitwise ORed together to specify which options should be used when reparsing the translation unit.
enum CXSaveError |
Describes the kind of error that occurred (if any) in a call to clang_saveTranslationUnit()
.
CXSaveError_None |
Indicates that no error occurred while saving a translation unit. |
CXSaveError_Unknown |
Indicates that an unknown error occurred while attempting to save the file. This error typically indicates that file I/O failed when attempting to write the file. |
CXSaveError_TranslationErrors |
Indicates that errors during translation prevented this attempt to save the translation unit. Errors that prevent the translation unit from being saved can be extracted using |
CXSaveError_InvalidTU |
Indicates that the translation unit to be saved was somehow invalid (e.g., NULL). |
Flags that control how translation units are saved.
The enumerators in this enumeration type are meant to be bitwise ORed together to specify which options should be used when saving the translation unit.
Flags that control the creation of translation units.
The enumerators in this enumeration type are meant to be bitwise ORed together to specify which options should be used when constructing the translation unit.
CXTranslationUnit_None |
Used to indicate that no special translation-unit options are needed. |
CXTranslationUnit_DetailedPreprocessingRecord |
Used to indicate that the parser should construct a "detailed" preprocessing record, including all macro definitions and instantiations. Constructing a detailed preprocessing record requires more memory and time to parse, since the information contained in the record is usually not retained. However, it can be useful for applications that require more detailed information about the behavior of the preprocessor. |
CXTranslationUnit_Incomplete |
Used to indicate that the translation unit is incomplete. When a translation unit is considered "incomplete", semantic analysis that is typically performed at the end of the translation unit will be suppressed. For example, this suppresses the completion of tentative declarations in C and of instantiation of implicitly-instantiation function templates in C++. This option is typically used when parsing a header with the intent of producing a precompiled header. |
CXTranslationUnit_PrecompiledPreamble |
Used to indicate that the translation unit should be built with an implicit precompiled header for the preamble. An implicit precompiled header is used as an optimization when a particular translation unit is likely to be reparsed many times when the sources aren't changing that often. In this case, an implicit precompiled header will be built containing all of the initial includes at the top of the main file (what we refer to as the "preamble" of the file). In subsequent parses, if the preamble or the files in it have not changed, |
CXTranslationUnit_CacheCompletionResults |
Used to indicate that the translation unit should cache some code-completion results with each reparse of the source file. Caching of code-completion results is a performance optimization that introduces some overhead to reparsing but improves the performance of code-completion operations. |
CXTranslationUnit_ForSerialization |
Used to indicate that the translation unit will be serialized with This option is typically used when parsing a header with the intent of producing a precompiled header. |
CXTranslationUnit_CXXChainedPCH |
DEPRECATED: Enabled chained precompiled preambles in C++. Note: this is a *temporary* option that is available only while we are testing C++ precompiled preamble support. It is deprecated. |
CXTranslationUnit_SkipFunctionBodies |
Used to indicate that function/method bodies should be skipped while parsing. This option can be used to search for declarations/definitions while ignoring the usages. |
CXTranslationUnit_IncludeBriefCommentsInCodeCompletion |
Used to indicate that brief documentation comments should be included into the set of code completions returned from this translation unit. |
Categorizes how memory is being used by a translation unit.
CINDEX_LINKAGE CXTranslationUnit clang_createTranslationUnit | ( | CXIndex | CIdx, |
const char * | ast_filename | ||
) |
Same as clang_createTranslationUnit2
, but returns the CXTranslationUnit
instead of an error code. In case of an error this routine returns a NULL
CXTranslationUnit
, without further detailed error codes.
CINDEX_LINKAGE enum CXErrorCode clang_createTranslationUnit2 | ( | CXIndex | CIdx, |
const char * | ast_filename, | ||
CXTranslationUnit * | out_TU | ||
) |
Create a translation unit from an AST file (-emit-ast
).
[out] | out_TU | A non-NULL pointer to store the created CXTranslationUnit . |
CINDEX_LINKAGE CXTranslationUnit clang_createTranslationUnitFromSourceFile | ( | CXIndex | CIdx, |
const char * | source_filename, | ||
int | num_clang_command_line_args, | ||
const char *const * | clang_command_line_args, | ||
unsigned | num_unsaved_files, | ||
struct CXUnsavedFile * | unsaved_files | ||
) |
Return the CXTranslationUnit for a given source file and the provided command line arguments one would pass to the compiler.
Note: The 'source_filename' argument is optional. If the caller provides a NULL pointer, the name of the source file is expected to reside in the specified command line arguments.
Note: When encountered in 'clang_command_line_args', the following options are ignored:
'-c' '-emit-ast' '-fsyntax-only' '-o <output file>' (both '-o' and '<output file>' are ignored)
CIdx | The index object with which the translation unit will be associated. |
source_filename | The name of the source file to load, or NULL if the source file is included in clang_command_line_args . |
num_clang_command_line_args | The number of command-line arguments in clang_command_line_args . |
clang_command_line_args | The command-line arguments that would be passed to the clang executable if it were being invoked out-of-process. These command-line options will be parsed and will affect how the translation unit is parsed. Note that the following options are ignored: '-c', '-emit-ast', '-fsyntax-only' (which is the default), and '-o <output file>'. |
num_unsaved_files | the number of unsaved file entries in unsaved_files . |
unsaved_files | the files that have not yet been saved to disk but may be required for code completion, including the contents of those files. The contents and name of these files (as specified by CXUnsavedFile) are copied when necessary, so the client only needs to guarantee their validity until the call to this function returns. |
Returns the set of flags that is suitable for parsing a translation unit that is being edited.
The set of flags returned provide options for clang_parseTranslationUnit()
to indicate that the translation unit is likely to be reparsed many times, either explicitly (via clang_reparseTranslationUnit()
) or implicitly (e.g., by code completion (clang_codeCompletionAt()
)). The returned flag set contains an unspecified set of optimizations (e.g., the precompiled preamble) geared toward improving the performance of these routines. The set of optimizations enabled may change from one version to the next.
Returns the set of flags that is suitable for reparsing a translation unit.
The set of flags returned provide options for clang_reparseTranslationUnit()
by default. The returned flag set contains an unspecified set of optimizations geared toward common uses of reparsing. The set of optimizations enabled may change from one version to the next.
Returns the set of flags that is suitable for saving a translation unit.
The set of flags returned provide options for clang_saveTranslationUnit()
by default. The returned flag set contains an unspecified set of options that save translation units with the most commonly-requested data.
CINDEX_LINKAGE void clang_disposeCXTUResourceUsage | ( | CXTUResourceUsage | usage | ) |
Destroy the specified CXTranslationUnit object.
Return the memory usage of a translation unit. This object should be released with clang_disposeCXTUResourceUsage().
Get the original translation unit source file name.
CINDEX_LINKAGE const char* clang_getTUResourceUsageName | ( | enum CXTUResourceUsageKind | kind | ) |
Returns the human-readable null-terminated C string that represents the name of the memory category. This string should never be freed.
CINDEX_LINKAGE CXTranslationUnit clang_parseTranslationUnit | ( | CXIndex | CIdx, |
const char * | source_filename, | ||
const char *const * | command_line_args, | ||
int | num_command_line_args, | ||
struct CXUnsavedFile * | unsaved_files, | ||
unsigned | num_unsaved_files, | ||
unsigned | options | ||
) |
Same as clang_parseTranslationUnit2
, but returns the CXTranslationUnit
instead of an error code. In case of an error this routine returns a NULL
CXTranslationUnit
, without further detailed error codes.
CINDEX_LINKAGE enum CXErrorCode clang_parseTranslationUnit2 | ( | CXIndex | CIdx, |
const char * | source_filename, | ||
const char *const * | command_line_args, | ||
int | num_command_line_args, | ||
struct CXUnsavedFile * | unsaved_files, | ||
unsigned | num_unsaved_files, | ||
unsigned | options, | ||
CXTranslationUnit * | out_TU | ||
) |
Parse the given source file and the translation unit corresponding to that file.
This routine is the main entry point for the Clang C API, providing the ability to parse a source file into a translation unit that can then be queried by other functions in the API. This routine accepts a set of command-line arguments so that the compilation can be configured in the same way that the compiler is configured on the command line.
CIdx | The index object with which the translation unit will be associated. | |
source_filename | The name of the source file to load, or NULL if the source file is included in command_line_args . | |
command_line_args | The command-line arguments that would be passed to the clang executable if it were being invoked out-of-process. These command-line options will be parsed and will affect how the translation unit is parsed. Note that the following options are ignored: '-c', '-emit-ast', '-fsyntax-only' (which is the default), and '-o <output file>'. | |
num_command_line_args | The number of command-line arguments in command_line_args . | |
unsaved_files | the files that have not yet been saved to disk but may be required for parsing, including the contents of those files. The contents and name of these files (as specified by CXUnsavedFile) are copied when necessary, so the client only needs to guarantee their validity until the call to this function returns. | |
num_unsaved_files | the number of unsaved file entries in unsaved_files . | |
options | A bitmask of options that affects how the translation unit is managed but not its compilation. This should be a bitwise OR of the CXTranslationUnit_XXX flags. | |
[out] | out_TU | A non-NULL pointer to store the created CXTranslationUnit , describing the parsed code and containing any diagnostics produced by the compiler. |
CINDEX_LINKAGE int clang_reparseTranslationUnit | ( | CXTranslationUnit | TU, |
unsigned | num_unsaved_files, | ||
struct CXUnsavedFile * | unsaved_files, | ||
unsigned | options | ||
) |
Reparse the source files that produced this translation unit.
This routine can be used to re-parse the source files that originally created the given translation unit, for example because those source files have changed (either on disk or as passed via unsaved_files
). The source code will be reparsed with the same command-line options as it was originally parsed.
Reparsing a translation unit invalidates all cursors and source locations that refer into that translation unit. This makes reparsing a translation unit semantically equivalent to destroying the translation unit and then creating a new translation unit with the same command-line arguments. However, it may be more efficient to reparse a translation unit using this routine.
TU | The translation unit whose contents will be re-parsed. The translation unit must originally have been built with clang_createTranslationUnitFromSourceFile() . |
num_unsaved_files | The number of unsaved file entries in unsaved_files . |
unsaved_files | The files that have not yet been saved to disk but may be required for parsing, including the contents of those files. The contents and name of these files (as specified by CXUnsavedFile) are copied when necessary, so the client only needs to guarantee their validity until the call to this function returns. |
options | A bitset of options composed of the flags in CXReparse_Flags. The function clang_defaultReparseOptions() produces a default set of options recommended for most uses, based on the translation unit. |
TU
is clang_disposeTranslationUnit(TU)
. The error codes returned by this routine are described by the CXErrorCode
enum. CINDEX_LINKAGE int clang_saveTranslationUnit | ( | CXTranslationUnit | TU, |
const char * | FileName, | ||
unsigned | options | ||
) |
Saves a translation unit into a serialized representation of that translation unit on disk.
Any translation unit that was parsed without error can be saved into a file. The translation unit can then be deserialized into a new CXTranslationUnit
with clang_createTranslationUnit()
or, if it is an incomplete translation unit that corresponds to a header, used as a precompiled header when parsing other translation units.
TU | The translation unit to save. |
FileName | The file to which the translation unit will be saved. |
options | A bitmask of options that affects how the translation unit is saved. This should be a bitwise OR of the CXSaveTranslationUnit_XXX flags. |