diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-09-13 21:49:08 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-09-13 21:49:08 +0000 |
| commit | 91672b3c0306bde8b44f38c541d59cd8422e3f93 (patch) | |
| tree | a690c9045ffa828ff23f466bae35aa09db6dac1c /clang/include/clang-c | |
| parent | eaa7433c850c5c71ce9708cd3e62e1e65bb05db9 (diff) | |
| download | bcm5719-llvm-91672b3c0306bde8b44f38c541d59cd8422e3f93.tar.gz bcm5719-llvm-91672b3c0306bde8b44f38c541d59cd8422e3f93.zip | |
[libclang] Introduce clang_getPresumedLocation which works like clang_getExpansionLocation
but takes into account #line directives coming from preprocessed files.
Patch by Vinay Sajip!
llvm-svn: 139647
Diffstat (limited to 'clang/include/clang-c')
| -rw-r--r-- | clang/include/clang-c/Index.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/clang/include/clang-c/Index.h b/clang/include/clang-c/Index.h index f54bd08883d..07bcf9eec6e 100644 --- a/clang/include/clang-c/Index.h +++ b/clang/include/clang-c/Index.h @@ -364,6 +364,49 @@ CINDEX_LINKAGE void clang_getExpansionLocation(CXSourceLocation location, unsigned *offset); /** + * \brief Retrieve the file, line, column, and offset represented by + * the given source location, as specified in a # line directive. + * + * Example: given the following source code in a file somefile.c + * + * #123 "dummy.c" 1 + * + * static int func(void) + * { + * return 0; + * } + * + * the location information returned by this function would be + * + * File: dummy.c Line: 124 Column: 12 + * + * whereas clang_getExpansionLocation would have returned + * + * File: somefile.c Line: 3 Column: 12 + * + * \param location the location within a source file that will be decomposed + * into its parts. + * + * \param filename [out] if non-NULL, will be set to the filename of the + * source location. Note that filenames returned will be for "virtual" files, + * which don't necessarily exist on the machine running clang - e.g. when + * parsing preprocessed output obtained from a different environment. If + * a non-NULL value is passed in, remember to dispose of the returned value + * using \c clang_disposeString() once you've finished with it. For an invalid + * source location, an empty string is returned. + * + * \param line [out] if non-NULL, will be set to the line number of the + * source location. For an invalid source location, zero is returned. + * + * \param column [out] if non-NULL, will be set to the column number of the + * source location. For an invalid source location, zero is returned. + */ +CINDEX_LINKAGE void clang_getPresumedLocation(CXSourceLocation location, + CXString *filename, + unsigned *line, + unsigned *column); + +/** * \brief Legacy API to retrieve the file, line, column, and offset represented * by the given source location. * |

