Clang: Workaround missing std::make_reverse_iterator

Because of the ancient compiler support we cannot use
std::make_reverse_iterator. If we support newer compilers we can revert
this patch.

Change-Id: I9b20ab1e53a0e9784b0455eafbbfd966797ad91e
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Marco Bubke
2016-11-29 12:50:18 +01:00
parent 15de02ea0c
commit 6f362072d6

View File

@@ -55,12 +55,20 @@ SourceRangeExtractor::SourceRangeExtractor(const clang::SourceManager &sourceMan
{
}
namespace {
template<typename Iterator>
std::reverse_iterator<Iterator> make_reverse_iterator(Iterator iterator)
{
return std::reverse_iterator<Iterator>(iterator);
}
}
const char *SourceRangeExtractor::findStartOfLineInBuffer(llvm::StringRef buffer, uint startOffset)
{
auto beginText = buffer.begin() + startOffset;
auto reverseEnd = std::make_reverse_iterator(buffer.begin());
auto reverseEnd = make_reverse_iterator(buffer.begin());
auto found = std::find_if(std::make_reverse_iterator(beginText),
auto found = std::find_if(make_reverse_iterator(beginText),
reverseEnd,
[] (const char character) {
return character == '\n' || character == '\r';