From baf3c77bd9f6baf60a09ef3625fef84080642b72 Mon Sep 17 00:00:00 2001 From: Jan Korous Date: Wed, 2 Sep 2020 13:11:35 -0700 Subject: [PATCH] [libclang] Add translateCXRangeToCharRange conversion Add new conversion with clearly specified semantics. https://reviews.llvm.org/D86990 --- clang/tools/libclang/CIndex.cpp | 6 ++++++ clang/tools/libclang/CXSourceLocation.h | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp index 93f9797a965e..683b517d79fd 100644 --- a/clang/tools/libclang/CIndex.cpp +++ b/clang/tools/libclang/CIndex.cpp @@ -164,6 +164,12 @@ CXSourceRange cxloc::translateSourceRange(const SourceManager &SM, return Result; } +CharSourceRange cxloc::translateCXRangeToCharRange(CXSourceRange R) { + return CharSourceRange::getCharRange( + SourceLocation::getFromRawEncoding(R.begin_int_data), + SourceLocation::getFromRawEncoding(R.end_int_data)); +} + //===----------------------------------------------------------------------===// // Cursor visitor. //===----------------------------------------------------------------------===// diff --git a/clang/tools/libclang/CXSourceLocation.h b/clang/tools/libclang/CXSourceLocation.h index 6702d0cf9791..ce3d09e1c9eb 100644 --- a/clang/tools/libclang/CXSourceLocation.h +++ b/clang/tools/libclang/CXSourceLocation.h @@ -71,7 +71,11 @@ static inline SourceRange translateCXSourceRange(CXSourceRange R) { SourceLocation::getFromRawEncoding(R.end_int_data)); } - +/// Translates CXSourceRange to CharSourceRange. +/// The semantics of \p R are: +/// R.begin_int_data is first character of the range. +/// R.end_int_data is one character past the end of the range. +CharSourceRange translateCXRangeToCharRange(CXSourceRange R); }} // end namespace: clang::cxloc #endif