]> git.lyx.org Git - lyx.git/blobdiff - src/lyxparagraph.h
prepare for 1.1.6pre2
[lyx.git] / src / lyxparagraph.h
index 31589a68bf8391c4bae81b45d9be048a6c97602a..6d8d6129109aa9241555ef4440b7b4c563d3ef41 100644 (file)
 #pragma interface
 #endif
 
+//#define HAVE_ROPE 1
+
+#ifdef HAVE_ROPE
+#include <rope>
+#endif
+
 #include <vector>
 #include <list>
 
 #include "insets/lyxinset.h"
-#include "table.h"
 #include "vspace.h"
 #include "layout.h"
-#include "support/block.h"
+#include <boost/array.hpp>
 #include "language.h"
 
 class BufferParams;
@@ -37,10 +42,6 @@ class BufferView;
 // up. (Lgb)
 //#define NEW_INSETS 1
 
-// I dare you to try this one too. It is ortogonal with NEW_INSETS so you
-// can try both or just one of them.
-//#define NEW_TABULAR 1
-
 /// A LyXParagraph holds all text, attributes and insets in a text paragraph
 class LyXParagraph  {
 public:
@@ -127,16 +128,23 @@ public:
        ///
        typedef char value_type;
        ///
+#ifndef HAVE_ROPE
        typedef std::vector<value_type> TextContainer;
+#else
+       typedef std::rope<value_type> TextContainer;
+#endif
        ///
-       typedef int size_type;
+       /* This should be TextContainer::size_type, but we need
+          signed values for now.
+       */
+       typedef TextContainer::difference_type size_type;
 
        ///
        LyXParagraph();
-       /// this konstruktor inserts the new paragraph in a list
+       /// this constructor inserts the new paragraph in a list
        explicit
        LyXParagraph(LyXParagraph * par);
-       /// the destruktors removes the new paragraph from the list
+       /// the destructor removes the new paragraph from the list
        ~LyXParagraph();
 
        ///
@@ -150,9 +158,9 @@ public:
        bool isMultiLingual(BufferParams const &);
        ///
 
-       string String(Buffer const *, bool label);
+       string const String(Buffer const *, bool label);
        ///
-       string String(Buffer const *, size_type beg, size_type end);
+       string const String(Buffer const *, size_type beg, size_type end);
        
        ///
        void writeFile(Buffer const *, std::ostream &, BufferParams const &,
@@ -233,7 +241,9 @@ public:
        size_type size() const { return text.size(); }
        ///
        void fitToSize() {
+#ifndef HAVE_ROPE
                text.resize(text.size());
+#endif
        }
        ///
        void setContentsFromPar(LyXParagraph * par) {
@@ -241,7 +251,11 @@ public:
        }
        ///
        void clearContents() {
+#ifndef HAVE_ROPE
                text.clear();
+#else
+               text.erase(text.mutable_begin(), text.mutable_end());
+#endif
        }
        
        /// 
@@ -291,7 +305,7 @@ public:
        
 private:
        ///
-       block<int, 10> counter_;
+       array<int, 10> counter_;
 public:
        ///
        void setCounter(int i, int v) { counter_[i] = v; }
@@ -336,12 +350,6 @@ public:
        ///
        LyXParagraph * previous;
 
-#ifndef NEW_TABULAR
-       /* table stuff -- begin*/
-       ///
-       LyXTable * table;
-       /* table stuff -- end*/
-#endif
         /// 
         InsetBibKey * bibkey;  // ale970302
 
@@ -388,7 +396,7 @@ public:
        string const & GetLabelstring() const;
        
        /// the next two functions are for the manual labels
-       string GetLabelWidthString() const;
+       string const GetLabelWidthString() const;
        ///
        void SetLabelWidthString(string const & s);
        ///
@@ -418,9 +426,10 @@ public:
          between the characters font and the layoutfont.
          This is what is stored in the fonttable
         */
-       LyXFont GetFontSettings(BufferParams const &, size_type pos) const;
+       LyXFont const
+       GetFontSettings(BufferParams const &, size_type pos) const;
        ///
-       LyXFont GetFirstFontSettings() const;
+       LyXFont const GetFirstFontSettings() const;
 
        /** Get fully instantiated font. If pos == -1, use the layout
            font attached to this paragraph.
@@ -429,18 +438,22 @@ public:
            attributes with values LyXFont::INHERIT, LyXFont::IGNORE or 
            LyXFont::TOGGLE.
        */
-       LyXFont getFont(BufferParams const &, size_type pos) const;
+       LyXFont const getFont(BufferParams const &, size_type pos) const;
        ///
        value_type GetChar(size_type pos) const;
        /// The position must already exist.
        void SetChar(size_type pos, value_type c) {
+#ifndef HAVE_ROPE
                text[pos] = c;
+#else
+               text.replace(pos, c);
+#endif
        }
        
        ///
        void SetFont(size_type pos, LyXFont const & font);
        ///
-        string GetWord(size_type &) const;
+        string const GetWord(size_type &) const;
        /// Returns the height of the highest font in range
        LyXFont::FONT_SIZE HighestFontInRange(size_type startpos,
                                              size_type endpos) const;
@@ -533,23 +546,12 @@ public:
         /* If I set a PExtra Indent on one paragraph of a ENV_LIST-TYPE
            I have to set it on each of it's elements */
        ///
-        void SetPExtraType(BufferParams const &,
-                          int type, char const * width, char const * widthp);
+        void SetPExtraType(BufferParams const &, int type,
+                          string const & width, string const & widthp);
        ///
         void UnsetPExtraType(BufferParams const &);
        ///
        bool linuxDocConvertChar(char c, string & sgml_string);
-#ifndef NEW_TABULAR
-       ///
-       void DocBookContTableRows(Buffer const *,
-                                 std::ostream &, string & extra,
-                                 int & desc_on, size_type i,
-                                 int current_cell_number, int & column);
-       ///
-       void SimpleDocBookOneTablePar(Buffer const *,
-                                     std::ostream &, string & extra,
-                                     int & desc_on, int depth);
-#endif
 private:
        ///
        struct InsetTable {
@@ -633,16 +635,6 @@ private:
                                   std::ostream & foot, TexRow & foot_texrow,
                                   int & foot_count,
                                   bool parent_is_rtl);
-#endif
-#ifndef NEW_TABULAR
-       ///
-       bool SimpleTeXOneTablePar(Buffer const *, BufferParams const &,
-                                 std::ostream &, TexRow & texrow);
-       ///
-       bool TeXContTableRows(Buffer const *, BufferParams const &,
-                             std::ostream &, size_type i,
-                             int current_cell_number,
-                              int & column, TexRow & texrow);
 #endif
        ///
        void SimpleTeXBlanks(std::ostream &, TexRow & texrow,
@@ -678,7 +670,7 @@ public:
                ///
                Inset * operator*() { return (*it).inset; }
                ///
-               size_type getPos() {return (*it).pos; }
+               size_type getPos() const {return (*it).pos; }
                ///
                bool operator==(inset_iterator const & iter) const {
                        return it == iter.it;