//
//===----------------------------------------------------------------------===//
+#ifndef LLVM_SUPPORT_LINEITERATOR_H
+#define LLVM_SUPPORT_LINEITERATOR_H
+
#include "llvm/ADT/StringRef.h"
+#include "llvm/Support/DataTypes.h"
#include <iterator>
namespace llvm {
///
/// Note that this iterator requires the buffer to be nul terminated.
class line_iterator
- : public std::iterator<std::forward_iterator_tag, StringRef, ptrdiff_t> {
+ : public std::iterator<std::forward_iterator_tag, StringRef> {
const MemoryBuffer *Buffer;
char CommentMarker;
public:
/// \brief Default construct an "end" iterator.
- line_iterator() : Buffer(0) {}
+ line_iterator() : Buffer(nullptr) {}
/// \brief Construct a new iterator around some memory buffer.
explicit line_iterator(const MemoryBuffer &Buffer, char CommentMarker = '\0');
advance();
return *this;
}
+ line_iterator operator++(int) {
+ line_iterator tmp(*this);
+ advance();
+ return tmp;
+ }
/// \brief Get the current line as a \c StringRef.
StringRef operator*() const { return CurrentLine; }
+ const StringRef *operator->() const { return &CurrentLine; }
friend bool operator==(const line_iterator &LHS, const line_iterator &RHS) {
return LHS.Buffer == RHS.Buffer &&
void advance();
};
}
+
+#endif