LyXParagraph::LyXParagraph()
{
+#ifndef HAVE_ROPE
text.reserve(500); // is this number too big?
-
+#endif
for (int i = 0; i < 10; ++i) setCounter(i , 0);
appendix = false;
enumdepth = 0;
// This konstruktor inserts the new paragraph in a list.
LyXParagraph::LyXParagraph(LyXParagraph * par)
{
+#ifndef HAVE_ROPE
text.reserve(500);
- par->text.resize(par->text.size());
-
+#endif
+ par->fitToSize();
+
for (int i = 0; i < 10; ++i) setCounter(i, 0);
appendix = false;
enumdepth = 0;
font1 = font2;
}
- value_type c = GetChar(i);
+ value_type const c = GetChar(i);
switch (c) {
case META_INSET:
{
// First few functions needed for cut and paste and paragraph breaking.
-void LyXParagraph::CopyIntoMinibuffer(BufferParams const & bparams,
+void LyXParagraph::CopyIntoMinibuffer(Buffer const & buffer,
LyXParagraph::size_type pos) const
{
+ BufferParams bparams = buffer.params;
+
minibuffer_char = GetChar(pos);
minibuffer_font = GetFontSettings(bparams, pos);
minibuffer_inset = 0;
if (minibuffer_char == LyXParagraph::META_INSET) {
if (GetInset(pos)) {
- minibuffer_inset = GetInset(pos)->Clone(*current_view->buffer());
+ minibuffer_inset = GetInset(pos)->Clone(buffer);
} else {
minibuffer_inset = 0;
minibuffer_char = ' ';
insetlist.erase(it);
}
}
+#ifndef HAVE_ROPE
text.erase(text.begin() + pos);
-
+#else
+ text.erase(text.mutable_begin() + pos);
+#endif
// Erase entries in the tables.
FontTable search_font(pos, LyXFont());
search_font, matchFT());
if (it != fontlist.end() && (*it).pos == pos &&
(pos == 0 ||
- (it != fontlist.begin() && (*(it-1)).pos == pos - 1))) {
+ (it != fontlist.begin() && (*(it - 1)).pos == pos - 1))) {
// If it is a multi-character font
// entry, we just make it smaller
// (see update below), otherwise we
// should delete it.
- unsigned int i = it - fontlist.begin();
+ unsigned int const i = it - fontlist.begin();
fontlist.erase(fontlist.begin() + i);
it = fontlist.begin() + i;
if (i > 0 && i < fontlist.size() &&
- fontlist[i-1].font == fontlist[i].font) {
- fontlist.erase(fontlist.begin() + i-1);
- it = fontlist.begin() + i-1;
+ fontlist[i - 1].font == fontlist[i].font) {
+ fontlist.erase(fontlist.begin() + i - 1);
+ it = fontlist.begin() + i - 1;
}
}
void LyXParagraph::InsertChar(LyXParagraph::size_type pos,
LyXParagraph::value_type c)
{
- LyXFont f(LyXFont::ALL_INHERIT);
+ LyXFont const f(LyXFont::ALL_INHERIT);
InsertChar(pos, c, f);
}
#else
Assert(pos <= size());
#endif
+#ifndef HAVE_ROPE
text.insert(text.begin() + pos, c);
+#else
+ text.insert(pos, c);
+#endif
// Update the font table.
FontTable search_font(pos, LyXFont());
for (FontList::iterator it = lower_bound(fontlist.begin(),
void LyXParagraph::InsertInset(LyXParagraph::size_type pos,
Inset * inset)
{
- LyXFont f(LyXFont::ALL_INHERIT);
+ LyXFont const f(LyXFont::ALL_INHERIT);
InsertInset(pos, inset, f);
}
"position does not exist. "
<< pos << " (" << static_cast<int>(pos)
<< ")" << endl;
- }
- else if (pos > 0) {
+ } else if (pos > 0) {
return GetFontSettings(bparams, pos - 1);
}
#else
//return LyXFont(LyXFont::ALL_INHERIT);
}
+
// Gets uninstantiated font setting at position 0
LyXFont const LyXParagraph::GetFirstFontSettings() const
{
bool end = !notfound && fontlist[i].pos == pos;
// Is position pos is the end of a font block?
if (begin && end) { // A single char block
- if (i+1 < fontlist.size() &&
- fontlist[i+1].font == font) {
+ if (i + 1 < fontlist.size() &&
+ fontlist[i + 1].font == font) {
// Merge the singleton block with the next block
fontlist.erase(fontlist.begin() + i);
- if (i > 0 && fontlist[i-1].font == font)
+ if (i > 0 && fontlist[i - 1].font == font)
fontlist.erase(fontlist.begin() + i-1);
- } else if (i > 0 && fontlist[i-1].font == font) {
+ } else if (i > 0 && fontlist[i - 1].font == font) {
// Merge the singleton block with the previous block
- fontlist[i-1].pos = pos;
+ fontlist[i - 1].pos = pos;
fontlist.erase(fontlist.begin() + i);
} else
fontlist[i].font = font;
} else if (begin) {
- if (i > 0 && fontlist[i-1].font == font)
- fontlist[i-1].pos = pos;
+ if (i > 0 && fontlist[i - 1].font == font)
+ fontlist[i - 1].pos = pos;
else
fontlist.insert(fontlist.begin() + i,
FontTable(pos, font));
} else if (end) {
fontlist[i].pos = pos - 1;
- if (!(i+1 < fontlist.size() &&
- fontlist[i+1].font == font))
- fontlist.insert(fontlist.begin() + i+1,
+ if (!(i + 1 < fontlist.size() &&
+ fontlist[i + 1].font == font))
+ fontlist.insert(fontlist.begin() + i + 1,
FontTable(pos, font));
} else { // The general case. The block is splitted into 3 blocks
fontlist.insert(fontlist.begin() + i,
FontTable(pos - 1, fontlist[i].font));
- fontlist.insert(fontlist.begin() + i+1, FontTable(pos, font));
+ fontlist.insert(fontlist.begin() + i + 1,
+ FontTable(pos, font));
}
}
if (tmp->InsertFromMinibuffer(j - pos))
++j;
}
- tmp->text.resize(tmp->text.size());
+
+ tmp->fitToSize();
+
for (i = pos_end; i >= pos; --i)
par->Erase(i - pos_first);
- par->text.resize(par->text.size());
+ par->fitToSize();
#else
size_type pos_end = text.size() - 1;
if (tmp->InsertFromMinibuffer(j - pos))
++j;
}
- tmp->text.resize(tmp->text.size());
+
+ tmp->fitToSize();
+
for (size_type i = pos_end; i >= pos; --i)
par->Erase(i - pos_first);
- par->text.resize(par->text.size());
+ par->fitToSize();
}
#else
// create a new paragraph
if (endlabeltype != END_LABEL_NO_LABEL) {
LyXParagraph const * last = this;
#ifndef NEW_INSETS
- if( footnoteflag == NO_FOOTNOTE)
+ if (footnoteflag == NO_FOOTNOTE)
last = LastPhysicalPar();
else if (next->footnoteflag == NO_FOOTNOTE)
return endlabeltype;
}
if ((par->pextra_type == PEXTRA_NONE) &&
npar && (npar->pextra_type != PEXTRA_NONE)) {
- string
- p1 = npar->pextra_width,
- p2 = npar->pextra_widthp;
+ string const p1 = npar->pextra_width;
+ string const p2 = npar->pextra_widthp;
npar->SetPExtraType(bparams, npar->pextra_type,
p1, p2);
}
#endif
}
if (ppar && (ppar->pextra_type != PEXTRA_NONE)) {
- string
- p1 = ppar->pextra_width,
- p2 = ppar->pextra_widthp;
+ string const p1 = ppar->pextra_width;
+ string const p2 = ppar->pextra_widthp;
ppar->SetPExtraType(bparams, ppar->pextra_type,
p1, p2);
}
if ((par->pextra_type == PEXTRA_NONE) &&
npar && (npar->pextra_type != PEXTRA_NONE)) {
- string
- p1 = npar->pextra_width,
- p2 = npar->pextra_widthp;
+ string const p1 = npar->pextra_width;
+ string const p2 = npar->pextra_widthp;
npar->SetPExtraType(bparams, npar->pextra_type,
p1, p2);
}
&& GetChar(i) != LyXParagraph::META_NEWLINE
) {
++i;
- char previous_char = 0, temp = 0;
+ char previous_char = 0;
+ char temp = 0;
if (i < size()
&& (previous_char = GetChar(i)) != LyXParagraph::META_NEWLINE) {
// Yes, this ^ is supposed to be "= " not "=="
// Think about footnotes.
if (footnoteflag == LyXParagraph::NO_FOOTNOTE
&& next && next->footnoteflag == LyXParagraph::CLOSED_FOOTNOTE) {
- int further =
+ int const further =
NextAfterFootnote()->GetPositionOfInset(inset);
if (further != -1)
return text.size() + 1 + further;
? GetFontSettings(bparams,
size()-1).isRightToLeft()
: language->RightToLeft();
- if ( (p = NextAfterFootnote()) != 0 &&
+ if ((p = NextAfterFootnote()) != 0 &&
p->size() > 0 &&
p->GetFontSettings(bparams, 0).isRightToLeft() != is_rtl)
is_rtl = getParLanguage(bparams)->RightToLeft();
Inset * inset = GetInset(i);
if (inset) {
bool close = false;
- int len = os.tellp();
+ int const len = os.tellp();
if ((inset->LyxCode() == Inset::GRAPHICS_CODE
|| inset->LyxCode() == Inset::MATH_CODE
|| inset->LyxCode() == Inset::URL_CODE)
}
// Otherwise, we use what LaTeX
// provides us.
- switch(c) {
+ switch (c) {
case '<':
os << "\\textless{}";
column += 10;
texrow.newline();
}
os << "\\begin{minipage}";
- switch(pextra_alignment) {
+ switch (pextra_alignment) {
case MINIPAGE_ALIGN_TOP:
os << "[t]";
break;
texrow.newline();
}
os << "\\begin{minipage}";
- switch(par->pextra_alignment) {
+ switch (par->pextra_alignment) {
case MINIPAGE_ALIGN_TOP:
os << "[t]";
break;
"Footnote in a Footnote -- not supported"
<< endl;
}
-//#ifndef HAVE_OSTREAM
-// delete [] dummy.str();
-//#endif
}
switch (footnotekind) {
/// Used by the spellchecker
bool LyXParagraph::IsLetter(LyXParagraph::size_type pos) const
{
- value_type c = GetChar(pos);
+ value_type const c = GetChar(pos);
if (IsLetterChar(c))
return true;
// '\0' is not a letter, allthough every string contains "" (below)
- if( c == '\0')
+ if (c == '\0')
return false;
// We want to pass the ' and escape chars to ispell
- string extra = lyxrc.isp_esc_chars + '\'';
+ string const extra = lyxrc.isp_esc_chars + '\'';
char ch[2] = { c, 0 };
return contains(extra, ch);
}
void LyXParagraph::ChangeLanguage(BufferParams const & bparams,
Language const * from, Language const * to)
{
- for(size_type i = 0; i < size(); ++i) {
+ for (size_type i = 0; i < size(); ++i) {
LyXFont font = GetFontSettings(bparams, i);
if (font.language() == from) {
font.setLanguage(to);
if (label && !labelstring.empty())
#endif
s += labelstring + ' ';
- string::size_type len = s.size();
+ string::size_type const len = s.size();
for (LyXParagraph::size_type i = 0; i < size(); ++i) {
value_type c = GetChar(i);
GetInset(i)->LyxCode() == Inset::MATH_CODE) {
std::ostringstream ost;
GetInset(i)->Ascii(buffer, ost);
- s += subst(ost.str(),'\n',' ');
+ s += subst(ost.str().c_str(),'\n',' ');
}
}
else if (c == META_INSET) {
std::ostringstream ost;
GetInset(i)->Ascii(buffer, ost);
- s += ost.str();
+ s += ost.str().c_str();
}
}