#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;
// 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:
///
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();
///
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 &,
size_type size() const { return text.size(); }
///
void fitToSize() {
+#ifndef HAVE_ROPE
text.resize(text.size());
+#endif
}
///
void setContentsFromPar(LyXParagraph * par) {
}
///
void clearContents() {
+#ifndef HAVE_ROPE
text.clear();
+#else
+ text.erase(text.mutable_begin(), text.mutable_end());
+#endif
}
///
private:
///
- block<int, 10> counter_;
+ array<int, 10> counter_;
public:
///
void setCounter(int i, int v) { counter_[i] = v; }
///
LyXParagraph * previous;
-#ifndef NEW_TABULAR
- /* table stuff -- begin*/
- ///
- LyXTable * table;
- /* table stuff -- end*/
-#endif
///
InsetBibKey * bibkey; // ale970302
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);
///
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.
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;
///
void CloseFootnote(size_type pos);
#endif
- /// important for cut and paste
- void CopyIntoMinibuffer(BufferParams const &, size_type pos) const;
+ /** important for cut and paste
+ Temporary change from BufferParams to Buffer. Will revert when we
+ get rid of the argument to Inset::Clone(Buffer const &) */
+ void CopyIntoMinibuffer(Buffer const &, size_type pos) const;
///
void CutIntoMinibuffer(BufferParams const &, size_type pos);
///
/* 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 {
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,
///
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;