#ifndef PARAGRAPH_H
#define PARAGRAPH_H
-#include "Changes.h"
-#include "InsetList.h"
#include "lyxlayout_ptr_fwd.h"
-#include "insets/Inset.h" // only for Inset::Code
+#include "insets/InsetCode.h"
+#include "support/docstring.h"
+// FIXME: would be nice to forward declare odocstream instead of
+// including this:
+#include "support/docstream.h"
-namespace lyx {
+#include <vector>
+namespace lyx {
+class AuthorList;
class Buffer;
class BufferParams;
+class Change;
class Counters;
class Inset;
class InsetBibitem;
class LaTeXFeatures;
class Inset_code;
+class InsetList;
class Language;
class Font;
class Font_size;
///
Language const * getParLanguage(BufferParams const &) const;
///
- bool isRightToLeftPar(BufferParams const &) const;
+ bool isRTL(BufferParams const &) const;
///
void changeLanguage(BufferParams const & bparams,
Language const * from, Language const * to);
///
Inset * inInset() const;
///
- Inset::Code ownerCode() const;
+ InsetCode ownerCode() const;
///
bool forceDefaultParagraphs() const;
/// is there a change within the given range ?
bool isChanged(pos_type start, pos_type end) const;
/// is there an unchanged char at the given pos ?
- bool isUnchanged(pos_type pos) const {
- return lookupChange(pos).type == Change::UNCHANGED;
- }
+ bool isUnchanged(pos_type pos) const;
/// is there an insertion at the given pos ?
- bool isInserted(pos_type pos) const {
- return lookupChange(pos).type == Change::INSERTED;
- }
+ bool isInserted(pos_type pos) const;
/// is there a deletion at the given pos ?
- bool isDeleted(pos_type pos) const {
- return lookupChange(pos).type == Change::DELETED;
- }
+ bool isDeleted(pos_type pos) const;
/// will the paragraph be physically merged with the next
/// one if the imaginary end-of-par character is logically deleted?
void insertInset(pos_type pos, Inset * inset,
Font const &, Change const & change);
///
- bool insetAllowed(Inset_code code);
+ bool insetAllowed(InsetCode code);
///
- Inset * getInset(pos_type pos) {
- return insetlist.get(pos);
- }
+ Inset * getInset(pos_type pos);
///
- Inset const * getInset(pos_type pos) const {
- return insetlist.get(pos);
- }
+ Inset const * getInset(pos_type pos) const;
+
+ /// Release inset at given position.
+ /// \warning does not honour change tracking!
+ /// Therefore, it should only be used for breaking and merging
+ /// paragraphs
+ Inset * releaseInset(pos_type pos);
///
- bool isHfill(pos_type pos) const {
- return isInset(pos)
- && getInset(pos)->lyxCode() == Inset::HFILL_CODE;
- }
+ InsetList const & insetList() const;
+
+ ///
+ bool isHfill(pos_type pos) const;
+
/// hinted by profiler
bool isInset(pos_type pos) const {
return getChar(pos) == static_cast<value_type>(META_INSET);
/// by this author in the paragraph.
void checkAuthors(AuthorList const & authorList);
-public:
- ///
- InsetList insetlist;
-
private:
///
pos_type begin_of_body_;
/// Pimpl away stuff
- class Pimpl;
+ class Private;
///
- friend class Paragraph::Pimpl;
+ friend class Paragraph::Private;
///
- Pimpl * pimpl_;
+ Private * d;
};
} // namespace lyx