<line_pos_iterator
>- легкий итератор положения линии. Этот адаптер итератора сохраняет только текущий номер строки. отличиеДух.Классика's<position_iterator
>, он не сохраняет номер столбца и не нуждается в конечном итераторе. При необходимости можно вычислить текущую колонку.
template <class Iterator>
class line_pos_iterator : public boost::iterator_adaptor<
line_pos_iterator<Iterator>
, Iterator
, boost::use_default
, boost::forward_traversal_tag
> {
public:
line_pos_iterator();
explicit line_pos_iterator(Iterator);
std::size_t position() const;
private:
friend class boost::iterator_core_access;
void increment();
std::size_t line;
typename std::iterator_traits<Iterator>::value_type prev;
};
template <class Iterator>
inline std::size_t get_line(Iterator);
Займите позицию. Возвращается -1, если итератор не является<line_pos_iterator
>.
template <class Iterator>
inline Iterator get_line_start(Iterator lower_bound, Iterator current);
Получите итератор в начале строки. Применимо к любому итератору.
template <class Iterator>
inline iterator_range<Iterator>
get_current_line(Iterator lower_bound, Iterator current,
Iterator upper_bound);
Получить<iterator_range
>, содержащий текущую строку. Применимо к любому итератору.
template <class Iterator>
inline std::size_t get_column(Iterator lower_bound, Iterator current,
std::size_t tabs = 4);
Возьмите текущую колонку. Применимо к любому итератору.