// -*- C++ -*-
+/**
+ * \file ParagraphList.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Angus Leeming
+ *
+ * Full author contact details are available in file CREDITS.
+ */
#ifndef PARAGRAPH_LIST_H
#define PARAGRAPH_LIST_H
-#define NO_STD_LIST 1
-
-#ifndef NO_STD_LIST
-
#include "paragraph.h"
-#include <list>
-
-typedef std::list<Paragraph> ParagraphList;
-
-#else
-
-class Paragraph;
-
-#include <iterator>
-#include <utility>
+#include "support/RandomAccessList.h"
-///
-class ParagraphList {
-public:
- ///
- class iterator {
- public:
- friend class ParagraphList;
- ///
- typedef std::bidirectional_iterator_tag iterator_category;
- ///
- typedef Paragraph * value_type;
- ///
- typedef ptrdiff_t difference_type;
- ///
- typedef Paragraph * pointer;
- ///
- typedef Paragraph & reference;
- ///
- iterator();
- ///
- reference operator*();
- ///
- pointer operator->();
- ///
- iterator & operator++();
- ///
- iterator operator++(int);
- ///
- iterator & operator--();
- ///
- iterator operator--(int);
- private:
- ///
- iterator(value_type);
- ///
- Paragraph * ptr;
- };
- ///
- class const_iterator {
- public:
- friend class ParagraphList;
- ///
- typedef std::bidirectional_iterator_tag iterator_category;
- ///
- typedef Paragraph * value_type;
- ///
- typedef ptrdiff_t difference_type;
- ///
- typedef Paragraph const * const_pointer;
- ///
- typedef Paragraph const & const_reference;
- ///
- const_iterator();
- ///
- const_reference operator*();
- ///
- const_pointer operator->();
- ///
- const_iterator & operator++();
- ///
- const_iterator operator++(int);
- ///
- const_iterator & operator--();
- ///
- const_iterator operator--(int);
- private:
- ///
- const_iterator(value_type);
- ///
- Paragraph * ptr;
- };
- ///
- ParagraphList();
- ///
- ParagraphList(ParagraphList const &);
- ///
- ParagraphList & operator=(ParagraphList const &);
- ///
- iterator insert(iterator it, Paragraph const & par);
- ///
- void insert(iterator pos, iterator beg, iterator end);
- ///
- void assign(iterator beg, iterator end);
- ///
- void splice(iterator pos, ParagraphList & pl);
- ///
- void clear();
- ///
- iterator erase(iterator it);
- ///
- iterator erase(iterator first, iterator last);
- ///
- iterator begin();
- ///
- const_iterator begin() const;
- ///
- iterator end();
- ///
- const_iterator end() const;
- ///
- void push_back(Paragraph const &);
- ///
- Paragraph const & front() const;
- ///
- Paragraph & front();
- ///
- Paragraph const & back() const;
- ///
- Paragraph & back();
- ///
- int size() const;
- ///
- bool empty() const;
-private:
- ///
- Paragraph * parlist;
-};
+namespace lyx {
+/// Container for all kind of Paragraphs used in Lyx.
+typedef RandomAccessList<Paragraph> ParagraphList;
-typedef std::pair<ParagraphList::iterator, int> PitPosPair;
-
-
-///
-bool operator==(ParagraphList::iterator const & i1,
- ParagraphList::iterator const & i2);
-///
-bool operator!=(ParagraphList::iterator const & i1,
- ParagraphList::iterator const & i2);
-
-///
-bool operator==(ParagraphList::const_iterator const & i1,
- ParagraphList::const_iterator const & i2);
-///
-bool operator!=(ParagraphList::const_iterator const & i1,
- ParagraphList::const_iterator const & i2);
-
-#endif
+} // namespace lyx
#endif