]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.h
fix "make check" with gcc 4.3
[lyx.git] / src / Buffer.h
index d73bf1ef09301c94ac98ad0b33adc8002d6ba85e..f57a4c09b5a0d6089be1f99f53d00871a07ea669 100644 (file)
@@ -4,7 +4,7 @@
  * This file is part of LyX, the document processor.
  * Licence details can be found in the file COPYING.
  *
- * \author Lars Gullik Bjønnes
+ * \author Lars Gullik Bjønnes
  *
  * Full author contact details are available in file CREDITS.
  */
@@ -26,6 +26,7 @@ namespace lyx {
 
 class BiblioInfo;
 class BufferParams;
+class BufferSet;
 class DocIterator;
 class ErrorItem;
 class ErrorList;
@@ -73,7 +74,7 @@ class FileNameList;
  *
  * I am not sure if the class is complete or
  * minimal, probably not.
- * \author Lars Gullik Bjønnes
+ * \author Lars Gullik Bjønnes
  */
 class Buffer {
 public:
@@ -91,14 +92,14 @@ public:
        };
 
 
-       /// Method to check if a file is externally modified, used by 
+       /// Method to check if a file is externally modified, used by
        /// isExternallyModified()
        /**
         * timestamp is fast but inaccurate. For example, the granularity
         * of timestamp on a FAT filesystem is 2 second. Also, various operations
         * may touch the timestamp of a file even when its content is unchanged.
         *
-        * checksum is accurate but slow, which can be a problem when it is 
+        * checksum is accurate but slow, which can be a problem when it is
         * frequently used, or used for a large file on a slow (network) file
         * system.
         *
@@ -108,11 +109,8 @@ public:
                checksum_method,  ///< Use file checksum
                timestamp_method, ///< Use timestamp, and checksum if timestamp has changed
        };
-       
-       /** Constructor
-           \param file
-           \param b  optional \c false by default
-       */
+
+       /// Constructor
        explicit Buffer(std::string const & file, bool b = false);
 
        /// Destructor
@@ -139,7 +137,7 @@ public:
 
        /** Reads a file without header.
            \param par if != 0 insert the file.
-           \return \c false if file is not completely read.
+           \return \c true if file is not completely read.
        */
        bool readDocument(Lexer &);
 
@@ -166,7 +164,7 @@ public:
        /// Write file. Returns \c false if unsuccesful.
        bool writeFile(support::FileName const &) const;
 
-  /// Loads LyX file \c filename into buffer, *  and \return success 
+       /// Loads LyX file \c filename into buffer, *  and \return success
        bool loadLyXFile(support::FileName const & s);
 
        /// Fill in the ErrorList with the TeXErrors
@@ -185,14 +183,14 @@ public:
            encoding associated to \p os. Therefore you must not call this
            method with a string stream if the output is supposed to go to a
            file. \code
-           odocfstream ofs;
+           ofdocstream ofs;
            ofs.open("test.tex");
            writeLaTeXSource(ofs, ...);
            ofs.close();
            \endcode is NOT equivalent to \code
            odocstringstream oss;
            writeLaTeXSource(oss, ...);
-           odocfstream ofs;
+           ofdocstream ofs;
            ofs.open("test.tex");
            ofs << oss.str();
            ofs.close();
@@ -272,7 +270,10 @@ public:
 
        /// Set document's parent Buffer.
        void setParent(Buffer const *);
-       Buffer const * parent();
+       Buffer const * parent() const;
+
+       // Collect all relative buffer
+       std::vector<Buffer const *> allRelatives() const;
 
        /** Get the document's master (or \c this if this is not a
            child document)
@@ -281,6 +282,9 @@ public:
 
        /// \return true if \p child is a child of this \c Buffer.
        bool isChild(Buffer * child) const;
+       
+       /// return a vector with all children and grandchildren
+       std::vector<Buffer *> getChildren() const;
 
        /// Is buffer read-only?
        bool isReadonly() const;
@@ -348,6 +352,7 @@ public:
 
        /// Used when typesetting to place errorboxes.
        TexRow const & texrow() const;
+       TexRow & texrow();
 
        ///
        ParIterator par_iterator_begin();
@@ -358,6 +363,9 @@ public:
        ///
        ParConstIterator par_iterator_end() const;
 
+       // Position of the child buffer where it appears first in the master.
+       DocIterator firstChildPosition(Buffer const * child);
+
        /** \returns true only when the file is fully loaded.
         *  Used to prevent the premature generation of previews
         *  and by the citation inset.
@@ -437,7 +445,10 @@ public:
        ///
        void message(docstring const & msg) const;
 
+       ///
        void setGuiDelegate(frontend::GuiBufferDelegate * gui);
+       ///
+       bool hasGuiDelegate() const;
 
        ///
        void autoSave() const;
@@ -465,6 +476,20 @@ public:
        void setInsetLabel(docstring const & label, InsetLabel const * il);
        InsetLabel const * insetLabel(docstring const & label) const;
 
+       /// sets the buffer_ member for every inset in this buffer.
+       // FIXME This really shouldn't be needed, but at the moment it's not
+       // clear how to do it just for the individual pieces we need.
+       void setBuffersForInsets() const;
+       ///
+       enum UpdateScope {
+               UpdateMaster,
+               UpdateChildOnly
+       };
+       ///
+       void updateLabels(UpdateScope = UpdateMaster) const;
+       ///
+       void updateLabels(ParIterator & parit) const;
+
 private:
        /// search for macro in local (buffer) table or in children
        MacroData const * getBufferMacro(docstring const & name,
@@ -475,7 +500,10 @@ private:
        void updateMacros(DocIterator & it,
                                     DocIterator & scope) const;
 
-       /// 
+       ///
+       void collectRelatives(BufferSet & bufs) const;
+
+       ///
        bool readFileHelper(support::FileName const & s);
        ///
        std::vector<std::string> backends() const;