]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.h
Embedding: saving inzip name to .lyx file so that embedded files can always be found...
[lyx.git] / src / Buffer.h
index 2c5a5a1c77251377f13990232462437383ed9e4c..61f6c4ae09cf451ac91fec342a4deb1b03cf6613 100644 (file)
@@ -17,6 +17,7 @@
 #include "support/strfwd.h"
 #include "support/types.h"
 
+#include <set>
 #include <string>
 #include <vector>
 
@@ -24,7 +25,8 @@
 namespace lyx {
 
 class BufferParams;
-class EmbeddedFiles;
+class EmbeddedFileList;
+class DocIterator;
 class ErrorItem;
 class ErrorList;
 class FuncRequest;
@@ -55,7 +57,6 @@ class WorkAreaManager;
 
 namespace support {
 class FileName;
-class FileNameList;
 }
 
 /** The buffer object.
@@ -302,7 +303,7 @@ public:
        void updateBibfilesCache() const;
        /// Return the cache with all bibfiles in use (including bibfiles
        /// of loaded child documents).
-       support::FileNameList const & getBibfilesCache() const;
+       EmbeddedFileList const & getBibfilesCache() const;
        ///
        void getLabelList(std::vector<docstring> &) const;
 
@@ -359,16 +360,25 @@ public:
        //
        // Macro handling
        //
-       /// Collect macros in paragraphs
-       void updateMacros();
-       /// Look for macro defined before par (or in the master buffer)
-       bool hasMacro(docstring const & name, Paragraph const & par) const;
-       /// Look for macro defined anywhere in the buffer (or in the master buffer)
-       bool hasMacro(docstring const & name) const;
-       /// Return macro defined before par (or in the master buffer)
-       MacroData const & getMacro(docstring const & name, Paragraph const & par) const;
+       /// Collect macro definitions in paragraphs
+       void updateMacros() const;
+       /// Iterate through the whole buffer and try to resolve macros
+       void updateMacroInstances() const;
+
+       typedef std::set<docstring> MacroNameSet;
+       /// List macro names of this buffer. the parent and the children
+       void listMacroNames(MacroNameSet & macros) const;
+       /// Write out all macros somewhere defined in the parent,
+       /// its parents and its children, which are visible at the beginning 
+       /// of this buffer
+       void writeParentMacros(odocstream & os) const;
+
+       /// Return macro defined before pos (or in the master buffer)
+       MacroData const * getMacro(docstring const & name, DocIterator const & pos, bool global = true) const;
        /// Return macro defined anywhere in the buffer (or in the master buffer)
-       MacroData const & getMacro(docstring const & name) const;
+       MacroData const * getMacro(docstring const & name, bool global = true) const;
+       /// Return macro defined before the inclusion of the child
+       MacroData const * getMacro(docstring const & name, Buffer const & child, bool global = true) const;
 
        /// Replace the inset contents for insets which InsetCode is equal
        /// to the passed \p inset_code.
@@ -394,8 +404,9 @@ public:
        TocBackend & tocBackend() const;
        
        //@{
-       EmbeddedFiles & embeddedFiles();
-       EmbeddedFiles const & embeddedFiles() const;
+       EmbeddedFileList & embeddedFiles();
+       EmbeddedFileList const & embeddedFiles() const;
+       bool embedded() const;
        //@}
 
        Undo & undo();
@@ -442,7 +453,30 @@ public:
        std::vector<Format const *> exportableFormats(bool only_viewable) const;
 
 private:
-  /// 
+       /// search for macro in local (buffer) table or in children
+       MacroData const * getBufferMacro(docstring const & name,
+                                        DocIterator const & pos) const;
+       /** Update macro table in the whole text inset
+           \param it at the start of the text inset)
+       */
+       void updateInsetMacros(DocIterator & it, 
+                              DocIterator & scope) const;
+       /** Update macro table for paragraphs until \c lastpit
+           \param it in some text inset
+           \param lastpit last processed paragraph
+       */
+       void updateEnvironmentMacros(DocIterator & it, 
+                                    pit_type lastpit, 
+                                    DocIterator & scope) const;
+       /** Update macro table for one paragraph block with 
+           same layout and depth, until \c lastpit
+           \param it in some text inset
+           \param lastpit last processed paragraph
+       */
+       void updateBlockMacros(DocIterator & it, 
+                              DocIterator & scope) const;
+
+       /// 
        bool readFileHelper(support::FileName const & s);
        ///
        std::vector<std::string> backends() const;