using lyx::pos_type;
-int tex_code_break_column = 72; // needs non-zero initialization. set later.
// this is a bad idea, but how can Paragraph find its buffer to get
// parameters? (JMarc)
Paragraph::Paragraph()
: pimpl_(new Paragraph::Pimpl(this))
{
+#ifndef NO_NEXT
next_ = 0;
previous_ = 0;
+#endif
enumdepth = 0;
itemdepth = 0;
bibkey = 0; // ale970302
}
+#ifndef NO_NEXT
// This constructor inserts the new paragraph in a list.
Paragraph::Paragraph(Paragraph * par)
: pimpl_(new Paragraph::Pimpl(this))
bibkey = 0; // ale970302
params().clear();
}
+#endif
Paragraph::Paragraph(Paragraph const & lp, bool same_ids)
{
enumdepth = 0;
itemdepth = 0;
+#ifndef NO_NEXT
next_ = 0;
previous_ = 0;
-
+#endif
// this is because of the dummy layout of the paragraphs that
// follow footnotes
layout_ = lp.layout();
// copy everything behind the break-position to the new paragraph
insetlist = lp.insetlist;
- for (InsetList::iterator it = insetlist.begin();
- it != insetlist.end(); ++it)
- {
- it->inset = it->inset->clone(*current_view->buffer(), same_ids);
+ InsetList::iterator it = insetlist.begin();
+ InsetList::iterator end = insetlist.end();
+ for (; it != end; ++it) {
+ it.setInset(it.getInset()->clone(*current_view->buffer(),
+ same_ids));
// tell the new inset who is the boss now
- it->inset->parOwner(this);
+ it.getInset()->parOwner(this);
}
}
// the destructor removes the new paragraph from the list
Paragraph::~Paragraph()
{
+#ifndef NO_NEXT
if (previous_)
previous_->next_ = next_;
if (next_)
next_->previous_ = previous_;
-
- for (InsetList::iterator it = insetlist.begin();
- it != insetlist.end(); ++it) {
- delete it->inset;
- }
+#endif
// ale970302
delete bibkey;
minibuffer_inset = 0;
if (minibuffer_char == Paragraph::META_INSET) {
if (getInset(pos)) {
- minibuffer_inset = getInset(pos);
- // This is a little hack since I want exactly
- // the inset, not just a clone. Otherwise
- // the inset would be deleted when calling Erase(pos)
- // find the entry
- InsetList::iterator it = insetlist.begin();
- InsetList::iterator end = insetlist.end();
- for (; it != end; ++it) {
- if (it->pos == pos)
- break;
- }
-
- if (it != end && it->pos == pos)
- it->inset = 0;
// the inset is not in a paragraph anymore
+ minibuffer_inset = insetlist.release(pos);
minibuffer_inset->parOwner(0);
} else {
minibuffer_inset = 0;
{
lyx::Assert(pos < size());
- // Find the inset.
- InsetList::iterator it = insetlist.begin();
- InsetList::iterator end = insetlist.end();
- for (; it != end; ++it) {
- if (it->pos == pos)
- break;
- }
-
- if (it != end && it->pos == pos)
- return it->inset;
-
- lyxerr << "ERROR (Paragraph::getInset): "
- << "Inset does not exist: " << pos << endl;
- //::raise(SIGSTOP);
-
- // text[pos] = ' '; // WHY!!! does this set the pos to ' '????
- // Did this commenting out introduce a bug? So far I have not
- // see any, please enlighten me. (Lgb)
- // My guess is that since the inset does not exist, we might
- // as well replace it with a space to prevent craches. (Asger)
- return 0;
+ return insetlist.get(pos);
}
{
lyx::Assert(pos < size());
- // Find the inset.
- InsetList::const_iterator cit = insetlist.begin();
- InsetList::const_iterator end = insetlist.end();
- for (; cit != end; ++cit) {
- if (cit->pos == pos)
- break;
- }
-
- if (cit != end && cit->pos == pos)
- return cit->inset;
-
- lyxerr << "ERROR (Paragraph::getInset): "
- << "Inset does not exist: " << pos << endl;
- //::raise(SIGSTOP);
- //text[pos] = ' '; // WHY!!! does this set the pos to ' '????
- // Did this commenting out introduce a bug? So far I have not
- // see any, please enlighten me. (Lgb)
- // My guess is that since the inset does not exist, we might
- // as well replace it with a space to prevent craches. (Asger)
- return 0;
+ return insetlist.get(pos);
}
LyXFont retfont;
if (cit != end) {
retfont = cit->font();
- } else if (pos == size() && size()) {
+ } else if (pos == size() && !empty()) {
retfont = getFontSettings(bparams, pos - 1);
} else
retfont = LyXFont(LyXFont::ALL_INHERIT, getParLanguage(bparams));
// Gets uninstantiated font setting at position 0
LyXFont const Paragraph::getFirstFontSettings() const
{
- if (size() > 0 && !pimpl_->fontlist.empty())
+ if (!empty() && !pimpl_->fontlist.empty())
return pimpl_->fontlist[0].font();
return LyXFont(LyXFont::ALL_INHERIT);
// Merge the singleton block with the next block
pimpl_->fontlist.erase(pimpl_->fontlist.begin() + i);
if (i > 0 && pimpl_->fontlist[i - 1].font() == font)
- pimpl_->fontlist.erase(pimpl_->fontlist.begin() + i-1);
+ pimpl_->fontlist.erase(pimpl_->fontlist.begin() + i - 1);
} else if (i > 0 && pimpl_->fontlist[i - 1].font() == font) {
// Merge the singleton block with the previous block
pimpl_->fontlist[i - 1].pos(pos);
}
-
+#ifndef NO_NEXT
void Paragraph::next(Paragraph * p)
{
next_ = p;
{
return previous_;
}
+#endif
void Paragraph::breakParagraph(BufferParams const & bparams,
tmp->setLabelWidthString(params().labelWidthString());
}
- bool isempty = (layout()->keepempty && !size());
+ bool isempty = (layout()->keepempty && empty());
- if (!isempty && (size() > pos || !size() || flag == 2)) {
+ if (!isempty && (size() > pos || empty() || flag == 2)) {
tmp->layout(layout());
tmp->params().align(params().align());
tmp->setLabelWidthString(params().labelWidthString());
}
int i = 0;
- while (size() && (isNewline(0) || isLineSeparator(0))) {
+ while (!empty() && (isNewline(0) || isLineSeparator(0))) {
erase(0);
++i;
}
}
-int Paragraph::getFirstCounter(int i) const
-{
- return pimpl_->counter_[i];
-}
-
-
// the next two functions are for the manual labels
string const Paragraph::getLabelWidthString() const
{
return newpar;
}
+
Paragraph * Paragraph::outerHook()
{
if (!getDepth())
return depthHook(depth_type(getDepth() - 1));
}
+
Paragraph const * Paragraph::outerHook() const
{
if (!getDepth())
}
-Paragraph::inset_iterator
-Paragraph::InsetIterator(pos_type pos)
-{
- InsetList::iterator it = insetlist.begin();
- InsetList::iterator end = insetlist.end();
- for (; it != end; ++it) {
- if (it->pos >= pos)
- break;
- }
-
- return inset_iterator(it);
-}
-
-
// returns -1 if inset not found
int Paragraph::getPositionOfInset(Inset const * inset) const
{
// Find the entry.
- InsetList::const_iterator cit = insetlist.begin();
- InsetList::const_iterator end = insetlist.end();
- for (; cit != end; ++cit) {
- if (cit->inset == inset) {
- return cit->pos;
+ InsetList::iterator it = insetlist.begin();
+ InsetList::iterator end = insetlist.end();
+ for (; it != end; ++it) {
+ if (it.getInset() == inset) {
+ return it.getPos();
}
}
if (inset == bibkey)
texrow.newline();
}
- if (tex_code_break_column && style->isCommand()) {
+ if (style->isCommand()) {
os << '\n';
texrow.newline();
}
// We do not need to use to change the font for the last paragraph
// or for a command.
LyXFont const font =
- (size() == 0
+ (empty()
? getLayoutFont(bparams) : getFont(bparams, size() - 1));
bool is_command = style->isCommand();
return next_;
}
+
// This could go to ParagraphParameters if we want to
int Paragraph::startTeXParParams(BufferParams const & bparams,
ostream & os, bool moving_arg) const
}
break;
}
-
+
switch (params().align()) {
case LYX_ALIGN_NONE:
case LYX_ALIGN_BLOCK:
return column;
}
+
// This could go to ParagraphParameters if we want to
int Paragraph::endTeXParParams(BufferParams const & bparams,
ostream & os, bool moving_arg) const
}
break;
}
-
+
switch (params().align()) {
case LYX_ALIGN_NONE:
case LYX_ALIGN_BLOCK:
texrow.start(this, 0);
// if the paragraph is empty, the loop will not be entered at all
- if (!size()) {
+ if (empty()) {
if (style->isCommand()) {
os << '{';
++column;
}
-bool Paragraph::sgmlConvertChar(char c, string & sgml_string)
-{
- bool retval = false;
- switch (c) {
- case Paragraph::META_HFILL:
- sgml_string.erase();
- break;
- case Paragraph::META_NEWLINE:
- sgml_string = '\n';
- break;
- case '&':
- sgml_string = "&";
- break;
- case '<':
- sgml_string = "<";
- break;
- case '>':
- sgml_string = ">";
- break;
- case '$':
- sgml_string = "$";
- break;
- case '#':
- sgml_string = "#";
- break;
- case '%':
- sgml_string = "%";
- break;
- case '[':
- sgml_string = "[";
- break;
- case ']':
- sgml_string = "]";
- break;
- case '{':
- sgml_string = "{";
- break;
- case '}':
- sgml_string = "}";
- break;
- case '~':
- sgml_string = "˜";
- break;
- case '"':
- sgml_string = """;
- break;
- case '\\':
- sgml_string = "\";
- break;
- case ' ':
- retval = true;
- sgml_string = ' ';
- break;
- case '\0': // Ignore :-)
- sgml_string.erase();
- break;
- default:
- sgml_string = c;
- break;
- }
- return retval;
-}
-
-
Paragraph * Paragraph::TeXEnvironment(Buffer const * buf,
BufferParams const & bparams,
ostream & os, TexRow & texrow)
Language const *
Paragraph::getParLanguage(BufferParams const & bparams) const
{
- if (size() > 0) {
+ if (!empty()) {
#ifndef INHERIT_LANGUAGE
return getFirstFontSettings().language();
#else
void Paragraph::setInsetOwner(Inset * i)
{
pimpl_->inset_owner = i;
- InsetList::const_iterator cit = insetlist.begin();
- InsetList::const_iterator end = insetlist.end();
- for (; cit != end; ++cit) {
- if (cit->inset)
- cit->inset->setOwner(i);
+ InsetList::iterator it = insetlist.begin();
+ InsetList::iterator end = insetlist.end();
+ for (; it != end; ++it) {
+ if (it.getInset())
+ it.getInset()->setOwner(i);
}
}
void Paragraph::deleteInsetsLyXText(BufferView * bv)
{
// then the insets
- InsetList::const_iterator cit = insetlist.begin();
- InsetList::const_iterator end = insetlist.end();
- for (; cit != end; ++cit) {
- if (cit->inset && cit->inset->isTextInset()) {
- static_cast<UpdatableInset *>
- (cit->inset)->deleteLyXText(bv, true);
- }
- }
+ insetlist.deleteInsetsLyXText(bv);
}
void Paragraph::resizeInsetsLyXText(BufferView * bv)
{
// then the insets
- InsetList::const_iterator cit = insetlist.begin();
- InsetList::const_iterator end = insetlist.end();
- for (; cit != end; ++cit) {
- if (cit->inset) {
- if (cit->inset->isTextInset()) {
- static_cast<UpdatableInset *>
- (cit->inset)->resizeLyXText(bv, true);
- }
- }
- }
+ insetlist.resizeInsetsLyXText(bv);
}
}
-Paragraph::value_type Paragraph::getChar(pos_type pos) const
+bool Paragraph::empty() const
{
- return pimpl_->getChar(pos);
+ return pimpl_->empty();
}
-int Paragraph::id() const
+Paragraph::value_type Paragraph::getChar(pos_type pos) const
{
- return pimpl_->id_;
+ return pimpl_->getChar(pos);
}
-void Paragraph::id(int id_arg)
+int Paragraph::id() const
{
- pimpl_->id_ = id_arg;
+ return pimpl_->id_;
}
}
-Paragraph::inset_iterator::inset_iterator(Paragraph::InsetList::iterator const & iter)
- : it(iter)
-{}
-
-
-Paragraph::inset_iterator Paragraph::inset_iterator_begin()
-{
- return inset_iterator(insetlist.begin());
-}
-
-
-Paragraph::inset_iterator Paragraph::inset_iterator_end()
-{
- return inset_iterator(insetlist.end());
-}
-
-
ParagraphParameters & Paragraph::params()
{
return pimpl_->params;
return (pimpl_->inset_owner->owner()->lyxCode() == Inset::ERT_CODE);
return false;
}
-
-
-Counters & Paragraph::counters()
-{
- return pimpl_->ctrs;
-}
-