Am Montag, 20. März 2006 20:16 schrieb Juergen Spitzmueller:
> Jean-Marc Lasgouttes wrote:
> > Juergen> It does not compile as is (not that I tried too hard).
> >
> > I suspect it works with --disable-concept-checks.
> 
> No, it doesn't. I'm trying with --disable-pch later, but I have to leave 
now.

The problem were missing conversions of

pars.begin() + x

to

boost::next(pars.begin(), x)

. This patch compiles for 1.4 (I did not yet try it out).


Georg
Index: src/insets/insettext.h
===================================================================
--- src/insets/insettext.h	(Revision 13444)
+++ src/insets/insettext.h	(Arbeitskopie)
@@ -16,6 +16,7 @@
 #include "RowList_fwd.h"
 #include "lyxfont.h"
 #include "lyxtext.h"
+#include "ParagraphList_fwd.h"
 
 #include "support/types.h"
 
@@ -27,7 +28,6 @@ class BufferView;
 class CursorSlice;
 class Dimension;
 class LColor_color;
-class ParagraphList;
 
 
 /**
Index: src/insets/insetbibitem.C
===================================================================
--- src/insets/insetbibitem.C	(Revision 13444)
+++ src/insets/insetbibitem.C	(Arbeitskopie)
@@ -19,7 +19,7 @@
 #include "lyxfont.h"
 #include "lyxlex.h"
 #include "paragraph.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
 
 #include "frontends/font_metrics.h"
 
Index: src/insets/insetcharstyle.C
===================================================================
--- src/insets/insetcharstyle.C	(Revision 13444)
+++ src/insets/insetcharstyle.C	(Arbeitskopie)
@@ -289,6 +289,7 @@ int InsetCharStyle::linuxdoc(Buffer cons
 int InsetCharStyle::docbook(Buffer const & buf, ostream & os,
 			    OutputParams const & runparams) const
 {
+	ParagraphList::const_iterator beg = paragraphs().begin();
 	ParagraphList::const_iterator par = paragraphs().begin();
         ParagraphList::const_iterator end = paragraphs().end();
 
@@ -298,7 +299,7 @@ int InsetCharStyle::docbook(Buffer const
 
         for (; par != end; ++par) {
 		par->simpleDocBookOnePar(buf, os, runparams,
-				 outerFont(par - paragraphs().begin(),
+					 outerFont(std::distance(beg, par),
 						   paragraphs()));
         }
 
Index: src/insets/insettext.C
===================================================================
--- src/insets/insettext.C	(Revision 13444)
+++ src/insets/insettext.C	(Arbeitskopie)
@@ -412,7 +412,8 @@ void InsetText::appendParagraphs(Buffer 
 	ParagraphList::iterator pit = plist.begin();
 	ParagraphList::iterator ins = pl.insert(pl.end(), *pit);
 	++pit;
-	mergeParagraph(buffer->params(), pl, ins - pl.begin() - 1);
+	mergeParagraph(buffer->params(), pl,
+		       std::distance(pl.begin(), ins) - 1);
 
 	for_each(pit, plist.end(),
 		 bind(&ParagraphList::push_back, ref(pl), _1));
Index: src/output_plaintext.C
===================================================================
--- src/output_plaintext.C	(Revision 13444)
+++ src/output_plaintext.C	(Arbeitskopie)
@@ -19,7 +19,7 @@
 #include "output.h"
 #include "outputparams.h"
 #include "paragraph.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
 #include "ParagraphParameters.h"
 
 #include "support/lstrings.h"
Index: src/output_latex.h
===================================================================
--- src/output_latex.h	(Revision 13444)
+++ src/output_latex.h	(Arbeitskopie)
@@ -12,11 +12,12 @@
 #ifndef OUTPUT_LATEX_H
 #define OUTPUT_LATEX_H
 
+#include "ParagraphList_fwd.h"
+
 #include <string>
 
 class Buffer;
 class OutputParams;
-class ParagraphList;
 class TexRow;
 
 /// Just a wrapper for the method below, first creating the ofstream.
Index: src/bufferlist.C
===================================================================
--- src/bufferlist.C	(Revision 13444)
+++ src/bufferlist.C	(Arbeitskopie)
@@ -22,7 +22,7 @@
 #include "lyx_main.h"
 #include "output_latex.h"
 #include "paragraph.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
 
 #include "frontends/Alert.h"
 
Index: src/undo.C
===================================================================
--- src/undo.C	(Revision 13444)
+++ src/undo.C	(Arbeitskopie)
@@ -22,6 +22,7 @@
 #include "BufferView.h"
 #include "lyxtext.h"
 #include "paragraph.h"
+#include "ParagraphList.h"
 
 #include "mathed/math_support.h"
 #include "insets/inset.h"
Index: src/ParagraphList_fwd.h
===================================================================
--- src/ParagraphList_fwd.h	(Revision 13444)
+++ src/ParagraphList_fwd.h	(Arbeitskopie)
@@ -12,22 +12,11 @@
 #ifndef PARAGRAPH_LIST_FWD_H
 #define PARAGRAPH_LIST_FWD_H
 
-#include "paragraph.h"
+template <class T>
+class RandomAccessList;
 
-#include <vector>
+class Paragraph;
 
-class ParagraphList : public std::vector<Paragraph>
-{
-public:
-	///
-	typedef std::vector<Paragraph> BaseType;
-	///
-	ParagraphList();
-	///
-	template <class Iter>
-	ParagraphList(Iter beg, Iter end)
-		: BaseType(beg, end)
-	{}
-};
+typedef RandomAccessList<Paragraph> ParagraphList;
 
 #endif
Index: src/text2.C
===================================================================
--- src/text2.C	(Revision 13444)
+++ src/text2.C	(Arbeitskopie)
@@ -1258,7 +1258,7 @@ bool LyXText::deleteEmptyParagraphMechan
 			   max(old.pit() - 1, pit_type(0)),
 			   min(old.pit() + 1, old.lastpit()));
 		ParagraphList & plist = old.text()->paragraphs();
-		plist.erase(plist.begin() + old.pit());
+		plist.erase(boost::next(plist.begin(), old.pit()));
 
 		// see #warning above
 		if (cur.depth() >= old.depth()) {
Index: src/CutAndPaste.C
===================================================================
--- src/CutAndPaste.C	(Revision 13444)
+++ src/CutAndPaste.C	(Arbeitskopie)
@@ -214,14 +214,16 @@ pasteSelectionHelper(Buffer const & buff
 
 	// Paste it!
 	if (empty) {
-		pars.insert(pars.begin() + pit, insertion.begin(),
+		pars.insert(boost::next(pars.begin(), pit),
+			    insertion.begin(),
 		            insertion.end());
 
 		// merge the empty par with the last par of the insertion
 		mergeParagraph(buffer.params(), pars,
 		               pit + insertion.size() - 1);
 	} else {
-		pars.insert(pars.begin() + pit + 1, insertion.begin(),
+		pars.insert(boost::next(pars.begin(), pit + 1),
+			    insertion.begin(),
 		            insertion.end());
 
 		// merge the first par of the insertion with the current par
@@ -291,7 +293,7 @@ PitPosPair eraseSelectionHelper(BufferPa
 			pars[pit].erase(0, pars[pit].size());
 			if (pars[pit].empty()) {
 				// remove the par if it's now empty
-				pars.erase(pars.begin() + pit);
+				pars.erase(boost::next(pars.begin(), pit));
 				--endpit;
 			} else {
 				++pit;
@@ -299,7 +301,8 @@ PitPosPair eraseSelectionHelper(BufferPa
 			}
 		}
 	} else {
-		pars.erase(pars.begin() + startpit + 1, pars.begin() + endpit);
+		pars.erase(boost::next(pars.begin(), startpit + 1),
+		           boost::next(pars.begin(), endpit));
 		endpit = startpit + 1;
 	}
 	
@@ -342,7 +345,8 @@ void copySelectionHelper(ParagraphList &
 	BOOST_ASSERT(startpit != endpit || start <= end);
 
 	// Clone the paragraphs within the selection.
-	ParagraphList paragraphs(pars.begin() + startpit, pars.begin() + endpit + 1);
+	ParagraphList paragraphs(boost::next(pars.begin(), startpit),
+				 boost::next(pars.begin(), endpit + 1));
 
 	for_each(paragraphs.begin(), paragraphs.end(), resetOwnerAndChanges());
 
Index: src/lyxtext.h
===================================================================
--- src/lyxtext.h	(Revision 13444)
+++ src/lyxtext.h	(Arbeitskopie)
@@ -21,7 +21,7 @@
 #include "lyxfont.h"
 #include "layout.h"
 #include "lyxlayout_ptr_fwd.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
 
 #include <iosfwd>
 
Index: src/undo.h
===================================================================
--- src/undo.h	(Revision 13444)
+++ src/undo.h	(Arbeitskopie)
@@ -17,7 +17,7 @@
 #define UNDO_H
 
 #include "dociterator.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
 #include "bufferparams.h"
 
 #include "support/types.h"
Index: src/buffer.h
===================================================================
--- src/buffer.h	(Revision 13444)
+++ src/buffer.h	(Arbeitskopie)
@@ -15,6 +15,7 @@
 #include "InsetList.h"
 
 #include "dociterator.h"
+#include "ParagraphList_fwd.h"
 
 #include "support/limited_stack.h"
 #include "support/types.h"
@@ -42,7 +43,6 @@ class LaTeXFeatures;
 class Language;
 class MacroData;
 class OutputParams;
-class ParagraphList;
 class ParConstIterator;
 class ParIterator;
 class TeXErrors;
Index: src/CutAndPaste.h
===================================================================
--- src/CutAndPaste.h	(Revision 13444)
+++ src/CutAndPaste.h	(Arbeitskopie)
@@ -14,6 +14,8 @@
 #ifndef CUTANDPASTE_H
 #define CUTANDPASTE_H
 
+#include "ParagraphList_fwd.h"
+
 #include "support/types.h"
 
 #include <string>
@@ -23,7 +25,6 @@ class Buffer;
 class ErrorList;
 class LyXTextClass;
 class LCursor;
-class ParagraphList;
 
 ///
 namespace lyx {
Index: src/support/RandomAccessList.h
===================================================================
--- src/support/RandomAccessList.h	(Revision 0)
+++ src/support/RandomAccessList.h	(Revision 0)
@@ -0,0 +1,279 @@
+// -*- C++ -*-
+/**
+ * \file RandomAccessList.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Abdelrazak Younes
+ *
+ * Full author contact details are available in file CREDITS.
+ *
+ */
+
+#ifndef RANDOM_ACESS_LIST_H
+#define RANDOM_ACESS_LIST_H
+
+//#include "debug.h"
+
+#include <boost/utility.hpp>
+
+#include <vector>
+#include <list>
+#include <algorithm>
+
+#define USE_OLD_ITERATOR 1
+
+/// Random Access List.
+/**
+This templatized class provide a std::vector like interface to a
+standard std::list underneath. An important property is that it
+keeps the std::list::iterator interface. A typical use would be:
+
+	typedef RandomAccessList<some_class> MyContainer;
+
+Then you can use MyContainer as if it was a standard 
+std::vector<some_class> for operator[] access and as if it was a
+standard std::list for iterator access. The main difference with
+std::vector is that insertion of elements is much less costly. Compared
+to a standard list alone, there is of course a small overhead because
+the class always keeps its internal vector of iterator (it_vector_) up
+to date.
+*/
+template <class T>
+class RandomAccessList {
+public:
+	// types
+	typedef std::list<T> Container;
+	typedef typename Container::reference reference;
+	typedef typename Container::const_reference const_reference;
+#if USE_OLD_ITERATOR
+	// iterator (below)
+	typedef typename Container::iterator iterator;
+	// const_iterator (below)
+	typedef typename Container::const_iterator const_iterator;
+#else
+	// wip
+#endif
+	typedef typename Container::size_type size_type;
+	typedef typename Container::difference_type difference_type;
+	typedef typename Container::value_type value_type;
+	typedef typename Container::allocator_type allocator_type;
+	typedef typename Container::pointer pointer;
+	typedef typename Container::const_pointer const_pointer;
+	// reverse_iterator
+	// const_reverse_iterator
+
+	typedef std::vector<typename Container::iterator> IterCont;
+
+	// construct/copy/destroy
+
+	RandomAccessList()
+	{}
+
+	// RandomAccessList(size_type n T const & value = T())
+
+	template<class InputIterator>
+	RandomAccessList(InputIterator first, InputIterator last)
+	{
+		assign(first, last);
+	}
+
+
+
+	RandomAccessList(RandomAccessList const & x)
+	{
+		assign(x.begin(), x.end());
+	}
+
+	// ~RandomAccessList()
+
+	///
+	RandomAccessList & operator=(RandomAccessList const & x)
+	{
+		assign(x.begin(), x.end());
+		return *this;
+	}
+
+	template<class InputIterator>
+	void assign(InputIterator first, InputIterator last)
+	{
+		container_.assign(first, last);
+		recreateVector();
+	}
+
+
+	// void assign(size_type n, T const & u);
+
+	// iterators
+
+	iterator begin()
+	{
+		return container_.begin();
+	}
+
+	const_iterator begin() const
+	{
+		return container_.begin();
+	}
+
+	iterator end()
+	{
+		return container_.end();
+	}
+
+	const_iterator end() const
+	{
+		return container_.end();
+	}
+
+	// reverse_iterator rbegin();
+	// const_reverse_iterator rbegin() const;
+	// reverse_iterator rend();
+	// const_reverse_iterator rend() const;
+
+	// capacity
+	size_type size() const
+	{
+		return iterCont_.size();
+	}
+
+	size_type max_size() const
+	{
+		return iterCont_.max_size();
+	}
+
+	// void resize(size_type sz,  T c = T());
+
+	size_type capacity() const
+	{
+		return iterCont_.capacity();
+	}
+
+	bool empty() const
+	{
+		return container_.empty();
+	}
+
+	// void reserve(size_type n);
+
+	// element access
+
+	reference operator[](size_type pos)
+	{
+		return *iterCont_[pos];
+	}
+
+	///
+	const_reference operator[](size_type pos) const
+	{
+		return *iterCont_[pos];
+	}
+
+	reference at(size_type pos)
+	{
+		return *iterCont_.at(pos);
+	}
+
+	const_reference at(size_type pos) const
+	{
+		return *iterCont_.at(pos);
+	}
+
+	reference front()
+	{
+		return container_.front();
+	}
+
+	const_reference front() const
+	{
+		return container_.front();
+	}
+
+	reference back()
+	{
+		return container_.back();
+	}
+
+	const_reference back() const
+	{
+		return container_.back();
+	}
+
+	// modifiers
+
+	void push_back(T const & x)
+	{
+		typename Container::iterator it =
+			container_.insert(container_.end(), x);
+		iterCont_.push_back(it);
+	}
+
+	void pop_back()
+	{
+		container_.pop_back();
+		iterCont_.pop_back();
+	}
+
+	iterator insert(iterator position, T const & x)
+	{
+		typename Container::iterator it =
+			container_.insert(position, x);
+		recreateVector();
+		return it;
+	}
+
+	// void insert(iterator position, size_type n, T const & x);
+
+	template<class InputIterator>
+	void insert(iterator position,
+		    InputIterator first, InputIterator last)
+	{
+		container_.insert(position, first, last);
+		recreateVector();
+	}
+
+	iterator erase(iterator position)
+	{
+		typename Container::iterator it =
+			container_.erase(position);
+		recreateVector();
+		return it;
+	}
+
+	iterator erase(iterator first, iterator last)
+	{
+		typename Container::iterator it =
+			container_.erase(first, last);
+		recreateVector();
+		return it;
+	}
+
+	void swap(RandomAccessList & x)
+	{
+		std::swap(container_, x.container_);
+		std::swap(iterCont_, x.iterCont_);
+	}
+
+	void clear()
+	{
+		container_.clear();
+		iterCont_.clear();
+	}
+
+private:
+	void recreateVector()
+	{
+		iterCont_.clear();
+		typename Container::iterator beg = container_.begin();
+		typename Container::iterator end = container_.end();
+		for (; beg != end; ++beg)
+			iterCont_.push_back(beg);
+	}
+
+	/// Our container.
+	Container container_;
+	/// Our container of iterators.
+	IterCont iterCont_;
+};
+
+#endif
Index: src/paragraph_funcs.C
===================================================================
--- src/paragraph_funcs.C	(Revision 13444)
+++ src/paragraph_funcs.C	(Arbeitskopie)
@@ -96,7 +96,8 @@ void breakParagraph(BufferParams const &
 {
 	// create a new paragraph, and insert into the list
 	ParagraphList::iterator tmp =
-		pars.insert(pars.begin() + par_offset + 1, Paragraph());
+		pars.insert(boost::next(pars.begin(), par_offset + 1),
+			    Paragraph());
 
 	Paragraph & par = pars[par_offset];
 
@@ -193,7 +194,8 @@ void breakParagraphConservative(BufferPa
 	ParagraphList & pars, pit_type par_offset, pos_type pos)
 {
 	// create a new paragraph
-	Paragraph & tmp = *pars.insert(pars.begin() + par_offset + 1, Paragraph());
+	Paragraph & tmp = *pars.insert(boost::next(pars.begin(), par_offset + 1),
+				       Paragraph());
 	Paragraph & par = pars[par_offset];
 
 	if (bparams.tracking_changes)
@@ -240,7 +242,7 @@ void mergeParagraph(BufferParams const &
 			++j;
 	}
 
-	pars.erase(pars.begin() + par_offset + 1);
+	pars.erase(boost::next(pars.begin(), par_offset + 1));
 }
 
 
Index: src/pariterator.h
===================================================================
--- src/pariterator.h	(Revision 13444)
+++ src/pariterator.h	(Arbeitskopie)
@@ -13,6 +13,7 @@
 #define PARITERATOR_H
 
 #include "dociterator.h"
+#include "ParagraphList_fwd.h"
 
 #include "support/types.h"
 
@@ -24,7 +25,6 @@
 
 class InsetBase;
 class LyXText;
-class ParagraphList;
 
 
 class ParIterator : public std::iterator<std::forward_iterator_tag, Paragraph>,
Index: src/output_linuxdoc.C
===================================================================
--- src/output_linuxdoc.C	(Revision 13444)
+++ src/output_linuxdoc.C	(Arbeitskopie)
@@ -17,7 +17,7 @@
 #include "bufferparams.h"
 #include "paragraph.h"
 #include "paragraph_funcs.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
 #include "ParagraphParameters.h"
 #include "sgml.h"
 
@@ -133,7 +133,7 @@ void linuxdocParagraphs(Buffer const & b
 		}
 
 		pit->simpleLinuxDocOnePar(buf, os,
-			outerFont(pit - paragraphs.begin(), paragraphs),
+					  outerFont(std::distance(paragraphs.begin(), pit), paragraphs),
 					  runparams, depth);
 
 		os << "\n";
Index: src/paragraph_funcs.h
===================================================================
--- src/paragraph_funcs.h	(Revision 13444)
+++ src/paragraph_funcs.h	(Arbeitskopie)
@@ -12,6 +12,8 @@
 #ifndef PARAGRAPH_FUNCS_H
 #define PARAGRAPH_FUNCS_H
 
+#include "ParagraphList_fwd.h"
+
 #include "support/types.h"
 
 class Buffer;
@@ -19,7 +21,6 @@ class BufferParams;
 class InsetBase;
 class LyXFont;
 class Paragraph;
-class ParagraphList;
 
 /**
  * This breaks a paragraph at the specified position.
Index: src/output_docbook.C
===================================================================
--- src/output_docbook.C	(Revision 13444)
+++ src/output_docbook.C	(Arbeitskopie)
@@ -20,7 +20,7 @@
 #include "debug.h"
 #include "paragraph.h"
 #include "paragraph_funcs.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
 #include "ParagraphParameters.h"
 #include "sgml.h"
 
@@ -47,7 +47,7 @@ namespace {
 ParagraphList::const_iterator searchParagraph(ParagraphList::const_iterator const & par,
 					      ParagraphList::const_iterator const & pend)
 {
-	ParagraphList::const_iterator p = par + 1;
+	ParagraphList::const_iterator p = boost::next(par);
 
 	for( ; p != pend && p->layout()->latextype == LATEX_PARAGRAPH; ++p);
 
@@ -59,7 +59,7 @@ ParagraphList::const_iterator searchComm
 					    ParagraphList::const_iterator const & pend)
 {
 	LyXLayout_ptr const & bstyle = par->layout();
-	ParagraphList::const_iterator p = par + 1;
+	ParagraphList::const_iterator p = boost::next(par);
 
 	for( ; p != pend; ++p) {
 		LyXLayout_ptr const & style = p->layout();
@@ -74,7 +74,7 @@ ParagraphList::const_iterator searchEnvi
 						ParagraphList::const_iterator const & pend)
 {
 	LyXLayout_ptr const & bstyle = par->layout();
-	ParagraphList::const_iterator p = par + 1;
+	ParagraphList::const_iterator p = boost::next(par);
 	for( ; p != pend; ++p) {
 		LyXLayout_ptr const & style = p->layout();
 		if( style->latextype == LATEX_COMMAND)
@@ -108,10 +108,10 @@ ParagraphList::const_iterator makeParagr
 		if (par != pbegin)
 			os << '\n';
 		if (par->layout() == defaultstyle && par->emptyTag()) {
-			par->simpleDocBookOnePar(buf, os, runparams, outerFont(par - paragraphs.begin(), paragraphs));
+			par->simpleDocBookOnePar(buf, os, runparams, outerFont(std::distance(paragraphs.begin(), par), paragraphs));
 		} else {
 			sgml::openTag(buf, os, runparams, *par);
-			par->simpleDocBookOnePar(buf, os, runparams, outerFont(par - paragraphs.begin(), paragraphs));
+			par->simpleDocBookOnePar(buf, os, runparams, outerFont(std::distance(paragraphs.begin(), par), paragraphs));
 			sgml::closeTag(os, *par);
 		}
 	}
@@ -170,7 +170,7 @@ ParagraphList::const_iterator makeEnviro
 		case LATEX_ITEM_ENVIRONMENT: {
 			if(par->params().depth() == pbegin->params().depth()) {
 				sgml::openTag(os, wrapper);
-				par->simpleDocBookOnePar(buf, os, runparams, outerFont(par - paragraphs.begin(), paragraphs), sep);
+				par->simpleDocBookOnePar(buf, os, runparams, outerFont(std::distance(paragraphs.begin(), par), paragraphs), sep);
 				sgml::closeTag(os, wrapper);
 				++par;
 			}
@@ -239,7 +239,7 @@ ParagraphList::const_iterator makeComman
 
 	// Opend inner tag and	close inner tags
 	sgml::openTag(os, bstyle->innertag());
-	par->simpleDocBookOnePar(buf, os, runparams,  outerFont(par - paragraphs.begin(), paragraphs));
+	par->simpleDocBookOnePar(buf, os, runparams,  outerFont(std::distance(paragraphs.begin(), par), paragraphs));
 	sgml::closeTag(os, bstyle->innertag());
 	os << '\n';
 
Index: src/output_linuxdoc.h
===================================================================
--- src/output_linuxdoc.h	(Revision 13444)
+++ src/output_linuxdoc.h	(Arbeitskopie)
@@ -13,10 +13,11 @@
 #ifndef OUTPUT_LINUXDOC_H
 #define OUTPUT_LINUXDOC_H
 
+#include "ParagraphList_fwd.h"
+
 #include <iosfwd>
 
 class Buffer;
-class ParagraphList;
 class OutputParams;
 
 ///
Index: src/output_docbook.h
===================================================================
--- src/output_docbook.h	(Revision 13444)
+++ src/output_docbook.h	(Arbeitskopie)
@@ -13,11 +13,12 @@
 #ifndef OUTPUT_DOCBOOK_H
 #define OUTPUT_DOCBOOK_H
 
+#include "ParagraphList_fwd.h"
+
 #include <iosfwd>
 
 class Buffer;
 class OutputParams;
-class ParagraphList;
 
 ///
 void docbookParagraphs(ParagraphList const & subset,
Index: src/paragraph.C
===================================================================
--- src/paragraph.C	(Revision 13444)
+++ src/paragraph.C	(Arbeitskopie)
@@ -66,10 +66,6 @@ using std::ostream;
 using std::ostringstream;
 
 
-ParagraphList::ParagraphList()
-{}
-
-
 Paragraph::Paragraph()
 	: begin_of_body_(0), pimpl_(new Paragraph::Pimpl(this))
 {
Index: src/buffer_funcs.C
===================================================================
--- src/buffer_funcs.C	(Revision 13444)
+++ src/buffer_funcs.C	(Arbeitskopie)
@@ -27,7 +27,7 @@
 #include "lyxtextclass.h"
 #include "paragraph.h"
 #include "paragraph_funcs.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
 #include "ParagraphParameters.h"
 #include "pariterator.h"
 #include "lyxvc.h"
Index: src/output_latex.C
===================================================================
--- src/output_latex.C	(Revision 13444)
+++ src/output_latex.C	(Arbeitskopie)
@@ -333,7 +333,7 @@ TeXOnePar(Buffer const & buf,
 
 	os << everypar;
 	bool need_par = pit->simpleTeXOnePar(buf, bparams,
-			outerFont(pit - paragraphs.begin(), paragraphs),
+					     outerFont(std::distance(paragraphs.begin(), pit), paragraphs),
 					     os, texrow, runparams);
 
 	// Make sure that \\par is done with the font of the last
@@ -346,8 +346,8 @@ TeXOnePar(Buffer const & buf,
 	// We do not need to use to change the font for the last paragraph
 	// or for a command.
 	LyXFont const outerfont =
-			outerFont(pit - paragraphs.begin(),
-paragraphs);
+		outerFont(std::distance(paragraphs.begin(), pit),
+			  paragraphs);
 
 	LyXFont const font =
 		(pit->empty()

Reply via email to