r186670 - Adds overlapsWith and contains predicates on tooling::Range.
Manuel Klimek
klimek at google.com
Fri Jul 19 05:12:36 PDT 2013
Author: klimek
Date: Fri Jul 19 07:12:36 2013
New Revision: 186670
URL: http://llvm.org/viewvc/llvm-project?rev=186670&view=rev
Log:
Adds overlapsWith and contains predicates on tooling::Range.
Patch by Guillaume Papin.
Modified:
cfe/trunk/include/clang/Tooling/Refactoring.h
cfe/trunk/unittests/Tooling/RefactoringTest.cpp
Modified: cfe/trunk/include/clang/Tooling/Refactoring.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Tooling/Refactoring.h?rev=186670&r1=186669&r2=186670&view=diff
==============================================================================
--- cfe/trunk/include/clang/Tooling/Refactoring.h (original)
+++ cfe/trunk/include/clang/Tooling/Refactoring.h Fri Jul 19 07:12:36 2013
@@ -38,8 +38,27 @@ public:
Range() : Offset(0), Length(0) {}
Range(unsigned Offset, unsigned Length) : Offset(Offset), Length(Length) {}
+ /// \brief Accessors.
+ /// @{
unsigned getOffset() const { return Offset; }
unsigned getLength() const { return Length; }
+ /// @}
+
+ /// \name Range Predicates
+ /// @{
+ /// \brief Whether this range overlaps with \p RHS or not.
+ bool overlapsWith(Range RHS) const {
+ if ((Offset + Length) <= RHS.Offset || Offset >= (RHS.Offset + RHS.Length))
+ return false;
+ return true;
+ }
+
+ /// \brief Whether this range contains \p RHS or not.
+ bool contains(Range RHS) const {
+ return RHS.Offset >= Offset &&
+ (RHS.Offset + RHS.Length) <= (Offset + Length);
+ }
+ /// @}
private:
unsigned Offset;
Modified: cfe/trunk/unittests/Tooling/RefactoringTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Tooling/RefactoringTest.cpp?rev=186670&r1=186669&r2=186670&view=diff
==============================================================================
--- cfe/trunk/unittests/Tooling/RefactoringTest.cpp (original)
+++ cfe/trunk/unittests/Tooling/RefactoringTest.cpp Fri Jul 19 07:12:36 2013
@@ -332,5 +332,20 @@ TEST(Replacement, TemplatedFunctionCall)
expectReplacementAt(CallToF.Replace, "input.cc", 43, 8);
}
+TEST(Range, overlaps) {
+ EXPECT_TRUE(Range(10, 10).overlapsWith(Range(0, 11)));
+ EXPECT_TRUE(Range(0, 11).overlapsWith(Range(10, 10)));
+ EXPECT_FALSE(Range(10, 10).overlapsWith(Range(0, 10)));
+ EXPECT_FALSE(Range(0, 10).overlapsWith(Range(10, 10)));
+ EXPECT_TRUE(Range(0, 10).overlapsWith(Range(2, 6)));
+}
+
+TEST(Range, contains) {
+ EXPECT_TRUE(Range(0, 10).contains(Range(0, 10)));
+ EXPECT_TRUE(Range(0, 10).contains(Range(2, 6)));
+ EXPECT_FALSE(Range(2, 6).contains(Range(0, 10)));
+ EXPECT_FALSE(Range(0, 10).contains(Range(0, 11)));
+}
+
} // end namespace tooling
} // end namespace clang
More information about the cfe-commits
mailing list