]> git.lyx.org Git - lyx.git/blobdiff - src/output_xhtml.h
Add test-refstyle-references to cmake. Also added missing file test-refstyle-referenc...
[lyx.git] / src / output_xhtml.h
index b2abc89d5bd83f5a5edc216e7258f84d9356271e..497ffdbce019f3bbf8dfe0b316d0c701cccc0991 100644 (file)
@@ -17,7 +17,6 @@
 #include "support/strfwd.h"
 
 #include <deque>
-#include <vector>
 
 namespace lyx {
 
@@ -84,6 +83,9 @@ struct CompTag {
        std::string attr_;
 };
 
+// trivial struct for output of newlines
+struct CR{};
+
 } // namespace html
 
 class XHTMLStream {
@@ -91,8 +93,6 @@ public:
        ///
        explicit XHTMLStream(odocstream & os);
        ///
-       void cr();
-       ///
        odocstream & os() { return os_; }
        ///
        // int & tab() { return tab_; }
@@ -101,6 +101,12 @@ public:
        /// \return false if there are open font tags we could not close.
        /// because they are "blocked" by open non-font tags on the stack.
        bool closeFontTags();
+       /// call at start of paragraph. sets a mark so we know what tags
+       /// to close at the end. 
+       void startParagraph(bool keep_empty);
+       /// call at end of paragraph to clear that mark. note that this
+       /// will also close any tags still open. 
+       void endParagraph();
        ///
        XHTMLStream & operator<<(docstring const &);
        ///
@@ -118,6 +124,8 @@ public:
        ///
        XHTMLStream & operator<<(html::CompTag const &);
        ///
+       XHTMLStream & operator<<(html::CR const &);
+       ///
        enum EscapeSettings {
                ESCAPE_NONE,
                ESCAPE_AND, // meaning &
@@ -126,23 +134,27 @@ public:
        /// Sets what we are going to escape on the NEXT write.
        /// Everything is reset for the next time.
        XHTMLStream & operator<<(EscapeSettings);
+#if 0
+       /// This routine is for debugging the tag stack, etc. Code
+       /// for it is disabled by default, however, so you will need
+       /// to enable it if you want to use it.
+       void dumpTagStack(std::string const & msg) const;
+#endif
 private:
        ///
        void clearTagDeque();
        ///
-       bool isTagOpen(std::string const &);
+       bool isTagOpen(std::string const &) const;
        ///
-       void writeError(std::string const &);
+       bool isTagPending(std::string const &) const;
        ///
-       odocstream & os_;
-       ///
-       // int tab_;
+       void writeError(std::string const &) const;
        ///
-       typedef std::deque<html::StartTag> TagDeque;
+       odocstream & os_;
        ///
-       typedef std::vector<html::StartTag> TagStack;
+       typedef std::deque<html::StartTag> TagStack;
        /// holds start tags until we know there is content in them.
-       TagDeque pending_tags_;
+       TagStack pending_tags_;
        /// remembers the history, so we can make sure we nest properly.
        TagStack tag_stack_;
        ///