/// \brief Returns a human readable string representation.
std::string toString() const;
- /// \brief Comparator to be able to use Replacement in std::set for uniquing.
- class Less {
- public:
- bool operator()(const Replacement &R1, const Replacement &R2) const;
- };
-
- bool operator==(const Replacement &Other) const;
-
private:
void setFromSourceLocation(SourceManager &Sources, SourceLocation Start,
unsigned Length, StringRef ReplacementText);
std::string ReplacementText;
};
+/// \brief Less-than operator between two Replacements.
+bool operator<(const Replacement &LHS, const Replacement &RHS);
+
+/// \brief Equal-to operator between two Replacements.
+bool operator==(const Replacement &LHS, const Replacement &RHS);
+
/// \brief A set of Replacements.
/// FIXME: Change to a vector and deduplicate in the RefactoringTool.
-typedef std::set<Replacement, Replacement::Less> Replacements;
+typedef std::set<Replacement> Replacements;
/// \brief Apply all replacements in \p Replaces to the Rewriter \p Rewrite.
///
return result;
}
-bool Replacement::Less::operator()(const Replacement &R1,
- const Replacement &R2) const {
- if (R1.FilePath != R2.FilePath) return R1.FilePath < R2.FilePath;
- if (R1.ReplacementRange.getOffset() != R2.ReplacementRange.getOffset())
- return R1.ReplacementRange.getOffset() < R2.ReplacementRange.getOffset();
- if (R1.ReplacementRange.getLength() != R2.ReplacementRange.getLength())
- return R1.ReplacementRange.getLength() < R2.ReplacementRange.getLength();
- return R1.ReplacementText < R2.ReplacementText;
+bool operator<(const Replacement &LHS, const Replacement &RHS) {
+ if (LHS.getOffset() != RHS.getOffset())
+ return LHS.getOffset() < RHS.getOffset();
+ if (LHS.getLength() != RHS.getLength())
+ return LHS.getLength() < RHS.getLength();
+ if (LHS.getFilePath() != RHS.getFilePath())
+ return LHS.getFilePath() < RHS.getFilePath();
+ return LHS.getReplacementText() < RHS.getReplacementText();
}
-bool Replacement::operator==(const Replacement &Other) const {
- return ReplacementRange.getOffset() == Other.ReplacementRange.getOffset() &&
- ReplacementRange.getLength() == Other.ReplacementRange.getLength() &&
- FilePath == Other.FilePath && ReplacementText == Other.ReplacementText;
+bool operator==(const Replacement &LHS, const Replacement &RHS) {
+ return LHS.getOffset() == RHS.getOffset() &&
+ LHS.getLength() == RHS.getLength() &&
+ LHS.getFilePath() == RHS.getFilePath() &&
+ LHS.getReplacementText() == RHS.getReplacementText();
}
void Replacement::setFromSourceLocation(SourceManager &Sources,
return;
// Deduplicate
- std::sort(Replaces.begin(), Replaces.end(), Replacement::Less());
+ std::sort(Replaces.begin(), Replaces.end());
std::vector<Replacement>::iterator End =
std::unique(Replaces.begin(), Replaces.end());
Replaces.erase(End, Replaces.end());