lyx_mirror/src/pariterator.h
Georg Baum 5822df009a Merge Abdel's ParagraphList from trunk
* output_latex.h:
        * buffer.h:
        * CutAndPaste.h:
        * pariterator.h:
        * paragraph_funcs.h:
        * output_linuxdoc.h:
        * output_docbook.h:
        * insets/insettext.h: get forward declaration of ParagraphList

        * output_plaintext.C:
        * bufferlist.C:
        * undo.C:
        * lyxtext.h:
        * undo.h:
        * buffer_funcs.C:
        * insets/insetbibitem.C: get proper ParagraphList decls

        * output_linuxdoc.C (linuxdocParagraphs):
        * output_latex.C (TeXOnePar):
        * insets/insettext.C (appendParagraphs):
        * insets/insetcharstyle.C (docbook): use std::distance

        * CutAndPaste.C (pasteSelectionHelper, copySelectionHelper):
        * paragraph_funcs.C (breakParagraph,
        breakParagraphConservative, mergeParagraph):
        * text.C (acceptChange, rejectChange):
        * text2.C (deleteEmptyParagraphMechanism): use boost::next

        * output_docbook.C (several places): use boost::next and
        std::distance

        * ParagraphList_fwd.h: modify to provid a forward declaratoin
        of the new ParagraphList.

        * RandomAccessList.h: New container for Paragraphs from
        Abdelrazak Younes

        * ParagraphList.h: new file, setup user of RandomAccessList

        * paragraph.C: remove ParagraphList constructor from this file


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_1_4_X@13487 a592a061-630c-0410-9148-cb99ea01b6c8
2006-03-24 17:37:15 +00:00

122 lines
2.5 KiB
C++

// -*- C++ -*-
/* \file pariterator.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author unknown
* \author Lars Gullik Bjønnes
*
* Full author contact details are available in file CREDITS.
*/
#ifndef PARITERATOR_H
#define PARITERATOR_H
#include "dociterator.h"
#include "ParagraphList_fwd.h"
#include "support/types.h"
#include <boost/optional.hpp>
#include <vector>
class InsetBase;
class LyXText;
class ParIterator : public std::iterator<std::forward_iterator_tag, Paragraph>,
public DocIterator
{
public:
typedef std::iterator<std::forward_iterator_tag, Paragraph> StdIt;
typedef StdIt::value_type value_type;
typedef StdIt::difference_type difference_type;
typedef StdIt::pointer pointer;
typedef StdIt::reference reference;
///
ParIterator() : DocIterator() {}
///
ParIterator(InsetBase &, lyx::pit_type pit);
///
ParIterator(ParIterator const &);
///
ParIterator(DocIterator const &);
/// This really should be implemented...
//ParIterator & operator=(ParIterator const &);
///
ParIterator & operator++();
///
ParIterator operator++(int);
/// See comment in pariterator.C
//ParIterator & operator--();
///
Paragraph & operator*() const;
///
Paragraph * operator->() const;
/// This gives us the top-most parent paragraph
lyx::pit_type outerPar() const;
///
lyx::pit_type pit() const;
///
ParagraphList & plist() const;
};
DocIterator makeDocIterator(ParIterator const &, lyx::pos_type);
ParIterator par_iterator_begin(InsetBase & inset);
ParIterator par_iterator_end(InsetBase & inset);
///
bool operator==(ParIterator const & iter1, ParIterator const & iter2);
///
bool operator!=(ParIterator const & iter1, ParIterator const & iter2);
class ParConstIterator : public std::iterator<std::forward_iterator_tag,
Paragraph>,
public DocIterator
{
public:
///
ParConstIterator(ParConstIterator const &);
///
ParConstIterator(DocIterator const &);
///
ParConstIterator & operator++();
///
ParConstIterator & operator--();
///
Paragraph const & operator*() const;
///
Paragraph const * operator->() const;
///
ParagraphList const & plist() const;
};
bool operator==(ParConstIterator const & iter1,
ParConstIterator const & iter2);
bool operator!=(ParConstIterator const & iter1,
ParConstIterator const & iter2);
ParConstIterator par_const_iterator_begin(InsetBase const & inset);
ParConstIterator par_const_iterator_end(InsetBase const & inset);
#endif