X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fbuffer.h;h=3e7b72c81d3b250760e06e0ac9958ab70d291723;hb=29f01faa17495e3d80c08f234c8f049c7d699ac1;hp=61338d1bf04981565e7cfc47ab1c5d4ae019e90d;hpb=b14e9baa57506ff0d5fb1939ed2fd9bfde725575;p=lyx.git diff --git a/src/buffer.h b/src/buffer.h index 61338d1bf0..3e7b72c81d 100644 --- a/src/buffer.h +++ b/src/buffer.h @@ -24,21 +24,20 @@ #include "lyxvc.h" #include "bufferparams.h" #include "texrow.h" +#include "ParagraphList.h" #include "paragraph.h" +#include #include class BufferView; +class Counters; class LyXRC; class TeXErrors; class LaTeXFeatures; class Language; class ParIterator; -// When lyx 1.3.x starts we should enable this -// btw. we should also test this with 1.2 so that we -// do not get any surprises. (Lgb) -#define NO_COMPABILITY 1 /// struct DEPCLEAN { @@ -128,13 +127,6 @@ public: /// void insertStringAsLines(Paragraph *&, lyx::pos_type &, LyXFont const &, string const &) const; -#ifndef NO_COMPABILITY - /// - Inset * isErtInset(Paragraph * par, int pos) const; - /// - void insertErtContents(Paragraph * par, int & pos, - bool set_inactive = true); -#endif /// Paragraph * getParFromID(int id) const; private: @@ -155,7 +147,7 @@ public: /// void writeFileAscii(std::ostream &, int); /// - string const asciiParagraph(Paragraph const *, unsigned int linelen, + string const asciiParagraph(Paragraph const &, unsigned int linelen, bool noparbreak = false) const; /// Just a wrapper for the method below, first creating the ofstream. void makeLaTeXFile(string const & filename, @@ -200,15 +192,15 @@ public: Language const * getLanguage() const; /// int runChktex(); - /// - bool isLyxClean() const; + /// return true if the main lyx file does not need saving + bool isClean() const; /// bool isBakClean() const; /// bool isDepClean(string const & name) const; - /// - void markLyxClean() const; + /// mark the main lyx file as not needing saving + void markClean() const; /// void markBakClean(); @@ -280,7 +272,7 @@ public: /// std::vector > const getBibkeyList() const; /// - std::vector const getLabelList(); + std::vector const getLabelList() const; /** This will clearly have to change later. Later we can have more than one user per buffer. */ @@ -304,7 +296,7 @@ public: This is a linked list of paragraph, this list holds the whole contents of the document. */ - Paragraph * paragraph; + ParagraphList paragraphs; /// LyX version control object. LyXVC lyxvc; @@ -319,6 +311,9 @@ public: /// Used when typesetting to place errorboxes. TexRow texrow; + /// Buffer-wide counter array + Counters & counters() const; + private: /// is save needed mutable bool lyx_clean; @@ -352,6 +347,9 @@ private: */ BufferView * users; + /// The pointer is const although its contents may not be + boost::scoped_ptr const ctrs; + public: /// class inset_iterator { @@ -361,46 +359,28 @@ public: typedef ptrdiff_t difference_type; typedef Inset * pointer; typedef Inset & reference; - + typedef ParagraphList::iterator base_type; /// - inset_iterator() : par(0) /*, it(0)*/ {} - // - inset_iterator(Paragraph * paragraph) : par(paragraph) { - setParagraph(); - } + inset_iterator(); /// - inset_iterator(Paragraph * paragraph, lyx::pos_type pos); + inset_iterator(base_type p, base_type e); /// - inset_iterator & operator++() { // prefix ++ - if (par) { - ++it; - if (it == par->inset_iterator_end()) { - par = par->next(); - setParagraph(); - } - } - return *this; - } + inset_iterator(base_type p, lyx::pos_type pos, base_type e); + + /// prefix ++ + inset_iterator & operator++(); + /// postfix ++ + inset_iterator operator++(int); /// - inset_iterator operator++(int) { // postfix ++ - inset_iterator tmp(par, it.getPos()); - if (par) { - ++it; - if (it == par->inset_iterator_end()) { - par = par->next(); - setParagraph(); - } - } - return tmp; - } + reference operator*(); /// - Inset * operator*() { return *it; } + pointer operator->(); /// - Paragraph * getPar() { return par; } + Paragraph * getPar(); /// - lyx::pos_type getPos() const { return it.getPos(); } + lyx::pos_type getPos() const; /// friend bool operator==(inset_iterator const & iter1, @@ -409,23 +389,28 @@ public: /// void setParagraph(); /// - Paragraph * par; + ParagraphList::iterator pit; + /// + ParagraphList::iterator pend; /// - Paragraph::inset_iterator it; + InsetList::iterator it; }; /// inset_iterator inset_iterator_begin() { - return inset_iterator(paragraph); + return inset_iterator(paragraphs.begin(), paragraphs.end()); } + /// inset_iterator inset_iterator_end() { return inset_iterator(); } + /// inset_iterator inset_const_iterator_begin() const { - return inset_iterator(paragraph); + return inset_iterator(paragraphs.begin(), paragraphs.end()); } + /// inset_iterator inset_const_iterator_end() const { return inset_iterator(); @@ -440,143 +425,9 @@ public: Inset * getInsetFromID(int id_arg) const; }; - -inline -void Buffer::addUser(BufferView * u) -{ - users = u; -} - - -inline -void Buffer::delUser(BufferView *) -{ - users = 0; -} - - -inline -Language const * Buffer::getLanguage() const -{ - return params.language; -} - - -inline -bool Buffer::isLyxClean() const -{ - return lyx_clean; -} - - -inline -bool Buffer::isBakClean() const -{ - return bak_clean; -} - - -inline -void Buffer::markLyxClean() const -{ - if (!lyx_clean) { - lyx_clean = true; - updateTitles(); - } - // if the .lyx file has been saved, we don't need an - // autosave - bak_clean = true; -} - - -inline -void Buffer::markBakClean() -{ - bak_clean = true; -} - - -inline -void Buffer::setUnnamed(bool flag) -{ - unnamed = flag; -} - - -inline -bool Buffer::isUnnamed() -{ - return unnamed; -} - - -inline -void Buffer::markDirty() -{ - if (lyx_clean) { - lyx_clean = false; - updateTitles(); - } - bak_clean = false; - DEPCLEAN * tmp = dep_clean; - while (tmp) { - tmp->clean = false; - tmp = tmp->next; - } -} - - -inline -string const & Buffer::fileName() const -{ - return filename_; -} - - -inline -string const & Buffer::filePath() const -{ - return filepath_; -} - - -inline -bool Buffer::isReadonly() const -{ - return read_only; -} - - -inline -BufferView * Buffer::getUser() const -{ - return users; -} - - -inline -void Buffer::setParentName(string const & name) -{ - params.parentname = name; -} - - -/// -inline bool operator==(Buffer::inset_iterator const & iter1, - Buffer::inset_iterator const & iter2) -{ - return iter1.par == iter2.par - && (iter1.par == 0 || iter1.it == iter2.it); -} + Buffer::inset_iterator const & iter2); - -/// -inline bool operator!=(Buffer::inset_iterator const & iter1, - Buffer::inset_iterator const & iter2) -{ - return !(iter1 == iter2); -} - + Buffer::inset_iterator const & iter2); #endif