diff options
-rw-r--r-- | include/clang-c/Index.h | 7 | ||||
-rw-r--r-- | tools/libclang/CXSourceLocation.cpp | 11 | ||||
-rw-r--r-- | tools/libclang/libclang.exports | 1 |
3 files changed, 18 insertions, 1 deletions
diff --git a/include/clang-c/Index.h b/include/clang-c/Index.h index 42641df110..3da42ab6b5 100644 --- a/include/clang-c/Index.h +++ b/include/clang-c/Index.h @@ -32,7 +32,7 @@ * compatible, thus CINDEX_VERSION_MAJOR is expected to remain stable. */ #define CINDEX_VERSION_MAJOR 0 -#define CINDEX_VERSION_MINOR 16 +#define CINDEX_VERSION_MINOR 17 #define CINDEX_VERSION_ENCODE(major, minor) ( \ ((major) * 10000) \ @@ -409,6 +409,11 @@ CINDEX_LINKAGE CXSourceLocation clang_getLocationForOffset(CXTranslationUnit tu, unsigned offset); /** + * \brief Returns non-zero if the given source location is in a system header. + */ +CINDEX_LINKAGE int clang_Location_isInSystemHeader(CXSourceLocation location); + +/** * \brief Retrieve a NULL (invalid) source range. */ CINDEX_LINKAGE CXSourceRange clang_getNullRange(void); diff --git a/tools/libclang/CXSourceLocation.cpp b/tools/libclang/CXSourceLocation.cpp index bc8d575190..b7c7622c66 100644 --- a/tools/libclang/CXSourceLocation.cpp +++ b/tools/libclang/CXSourceLocation.cpp @@ -198,6 +198,17 @@ static void createNullLocation(CXString *filename, unsigned *line, extern "C" { +int clang_Location_isInSystemHeader(CXSourceLocation location) { + const SourceLocation Loc = + SourceLocation::getFromRawEncoding(location.int_data); + if (Loc.isInvalid()) + return 0; + + const SourceManager &SM = + *static_cast<const SourceManager*>(location.ptr_data[0]); + return SM.isInSystemHeader(Loc); +} + void clang_getExpansionLocation(CXSourceLocation location, CXFile *file, unsigned *line, diff --git a/tools/libclang/libclang.exports b/tools/libclang/libclang.exports index 1f179f13bd..16932a5100 100644 --- a/tools/libclang/libclang.exports +++ b/tools/libclang/libclang.exports @@ -248,6 +248,7 @@ clang_isUnexposed clang_isVirtualBase clang_isVolatileQualifiedType clang_loadDiagnostics +clang_Location_isInSystemHeader clang_parseTranslationUnit clang_remap_dispose clang_remap_getFilenames |