forked from qt-creator/qt-creator
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:
@@ -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)
|
const char *SourceRangeExtractor::findStartOfLineInBuffer(llvm::StringRef buffer, uint startOffset)
|
||||||
{
|
{
|
||||||
auto beginText = buffer.begin() + 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,
|
reverseEnd,
|
||||||
[] (const char character) {
|
[] (const char character) {
|
||||||
return character == '\n' || character == '\r';
|
return character == '\n' || character == '\r';
|
||||||
|
Reference in New Issue
Block a user