using std::endl;
-bool isParEnd(Paragraph const & par, Row const & row)
-{
- return row.end() == par.size();
-}
-
-
-pos_type lastPos(Paragraph const & par, Row const & row)
-{
- if (par.empty())
- return 0;
- pos_type pos = row.end() - 1;
- if (pos == par.size())
- --pos;
- return pos;
-}
-
-
int numberOfSeparators(Paragraph const & par, Row const & row)
{
- pos_type const last = lastPos(par, row);
+ pos_type const first = max(row.pos(), par.beginningOfBody());
+ pos_type const last = row.endpos() - 1;
int n = 0;
- pos_type p = max(row.pos(), par.beginningOfBody());
- for ( ; p < last; ++p)
+ for (pos_type p = first; p < last; ++p) {
if (par.isSeparator(p))
++n;
+ }
+
return n;
}
// an anonymous namespace there. (Lgb)
int numberOfHfills(Paragraph const & par, Row const & row)
{
- pos_type const last = lastPos(par, row);
+ pos_type const last = row.endpos() - 1;
pos_type first = row.pos();
// hfill *DO* count at the beginning of paragraphs!
- if (first)
+ if (first) {
while (first < last && par.isHfill(first))
++first;
+ }
first = max(first, par.beginningOfBody());
// an anonymous namespace there. (Lgb)
int numberOfLabelHfills(Paragraph const & par, Row const & row)
{
- pos_type last = lastPos(par, row);
+ pos_type last = row.endpos() - 1;
pos_type first = row.pos();
// hfill *DO* count at the beginning of paragraphs!
- if (first)
+ if (first) {
while (first < last && par.isHfill(first))
++first;
+ }
last = min(last, par.beginningOfBody());
int n = 0;
// at the end of a row it does not count
// unless another hfill exists on the line
- if (pos >= lastPos(par, row)) {
+ if (pos >= row.endpos()) {
for (pos_type i = row.pos(); i < pos && !par.isHfill(i); ++i)
return false;
}
// at the beginning of a row it does not count, if it is not
// the first row of a paragaph
- if (row.isParStart())
+ if (row.pos() == 0)
return true;
// in some labels it does not count