// -*- C++ -*-
/* This file is part of
- * ======================================================
- *
+ * ======================================================
+ *
* LyX, The Document Processor
- *
+ *
* Copyright 1995 Matthias Ettrich
* Copyright 1995-2001 The LyX Team.
*
#include "paragraph.h"
#include "ParagraphParameters.h"
-#include <boost/array.hpp>
+#include "counters.h"
+
+class LyXLayout;
struct Paragraph::Pimpl {
+ ///
+ typedef std::vector<value_type> TextContainer;
+
///
Pimpl(Paragraph * owner);
/// Copy constructor
Pimpl(Pimpl const &, Paragraph * owner, bool same_ids = false);
///
- Paragraph::size_type size() const {
+ lyx::pos_type size() const {
return text.size();
}
///
+ bool empty() const {
+ return text.empty();
+ }
+ ///
void clear();
///
void setContentsFromPar(Paragraph const * par);
///
- Paragraph::value_type
- getChar(Paragraph::size_type pos) const;
+ value_type getChar(lyx::pos_type pos) const;
///
- void setChar(Paragraph::size_type pos, Paragraph::value_type c);
+ void setChar(lyx::pos_type pos, value_type c);
///
- void insertChar(Paragraph::size_type pos,
- Paragraph::value_type c,
- LyXFont const & font);
+ void insertChar(lyx::pos_type pos, value_type c, LyXFont const & font);
///
- void insertInset(Paragraph::size_type pos,
- Inset * inset,
- LyXFont const & font);
+ void insertInset(lyx::pos_type pos, Inset * inset, LyXFont const & font);
///
- void erase(Paragraph::size_type pos);
+ void erase(lyx::pos_type pos);
///
LyXFont const realizeFont(LyXFont const & font,
BufferParams const & bparams) const;
///
Inset * inset_owner;
- ///
- boost::array<int, 10> counter_;
-
- ///
- friend struct matchIT;
- ///
- struct matchIT {
- /// used by lower_bound and upper_bound
- inline
- int operator()(Paragraph::InsetTable const & a,
- Paragraph::InsetTable const & b) const {
- return a.pos < b.pos;
- }
- };
+
/** A font entry covers a range of positions. Notice that the
entries in the list are inserted in random order.
I don't think it's worth the effort to implement a more effective
*/
struct FontTable {
///
- FontTable(size_type p, LyXFont const & f)
+ FontTable(lyx::pos_type p, LyXFont const & f)
: pos_(p)
{
font_ = container.get(f);
}
///
- size_type pos() const { return pos_; }
+ lyx::pos_type pos() const { return pos_; }
///
- void pos(size_type p) { pos_ = p; }
+ void pos(lyx::pos_type p) { pos_ = p; }
///
LyXFont const & font() const { return *font_; }
///
void font(LyXFont const & f) { font_ = container.get(f);}
private:
/// End position of paragraph this font attribute covers
- size_type pos_;
+ lyx::pos_type pos_;
/** Font. Interpretation of the font values:
- If a value is LyXFont::INHERIT_*, it means that the font
+ If a value is LyXFont::INHERIT_*, it means that the font
attribute is inherited from either the layout of this
- paragraph or, in the case of nested paragraphs, from the
- layout in the environment one level up until completely
+ paragraph or, in the case of nested paragraphs, from the
+ layout in the environment one level up until completely
resolved.
- The values LyXFont::IGNORE_* and LyXFont::TOGGLE are NOT
+ The values LyXFont::IGNORE_* and LyXFont::TOGGLE are NOT
allowed in these font tables.
*/
boost::shared_ptr<LyXFont> font_;
struct matchFT {
/// used by lower_bound and upper_bound
inline
- int operator()(Paragraph::Pimpl::FontTable const & a,
- Paragraph::Pimpl::FontTable const & b) const {
+ int operator()(FontTable const & a, FontTable const & b) const {
return a.pos() < b.pos();
}
};
std::ostream &, TexRow & texrow);
///
void simpleTeXBlanks(std::ostream &, TexRow & texrow,
- size_type const i,
+ lyx::pos_type const i,
int & column, LyXFont const & font,
LyXLayout const & style);
///
LyXFont & font, LyXFont & running_font,
LyXFont & basefont, bool & open_font,
LyXLayout const & style,
- size_type & i,
+ lyx::pos_type & i,
int & column, value_type const c);
+
+ ///
+ void validate(LaTeXFeatures & features,
+ LyXLayout const & layout) const;
+
///
Paragraph * getParFromID(int id) const;
///
static unsigned int paragraph_id;
///
ParagraphParameters params;
+
private:
/// match a string against a particular point in the paragraph
- bool isTextAt(string const & str, Paragraph::size_type pos);
-
+ bool isTextAt(string const & str, lyx::pos_type pos) const;
+
/// Who owns us?
Paragraph * owner_;
///