From: Jürgen Spitzmüller Date: Sat, 11 Jul 2009 08:29:30 +0000 (+0000) Subject: * Buffer.cpp: X-Git-Tag: 2.0.0~6102 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=c650dcd540128ab527bdd6de9be636ba87ff197a;p=features.git * Buffer.cpp: - rewrite getUsedBranches() with an InsetIterator approach. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@30465 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/Buffer.cpp b/src/Buffer.cpp index 32cfcf296d..755a6166a0 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -2390,51 +2390,27 @@ void Buffer::updateMacros() const void Buffer::getUsedBranches(std::list & result, bool const from_master) const { - // Iterate over buffer, starting with first paragraph - // The scope must be bigger than any lookup DocIterator - // later. For the global lookup, lastpit+1 is used, hence - // we use lastpit+2 here. - DocIterator it = par_iterator_begin(); - DocIterator scope = it; - scope.pit() = scope.lastpit() + 2; - pit_type lastpit = it.lastpit(); - - while (it.pit() <= lastpit) { - Paragraph & par = it.paragraph(); - - // iterate over the insets of the current paragraph - InsetList const & insets = par.insetList(); - InsetList::const_iterator iit = insets.begin(); - InsetList::const_iterator end = insets.end(); - for (; iit != end; ++iit) { - it.pos() = iit->pos; - - if (iit->inset->lyxCode() == BRANCH_CODE) { - // get buffer of external file - InsetBranch const & br = - static_cast(*iit->inset); - docstring const name = br.branch(); - if (!from_master && !params().branchlist().find(name)) - result.push_back(name); - else if (from_master && !masterBuffer()->params().branchlist().find(name)) - result.push_back(name); + InsetIterator it = inset_iterator_begin(inset()); + InsetIterator const end = inset_iterator_end(inset()); + for (; it != end; ++it) { + if (it->lyxCode() == BRANCH_CODE) { + InsetBranch & br = static_cast(*it); + docstring const name = br.branch(); + if (!from_master && !params().branchlist().find(name)) + result.push_back(name); + else if (from_master && !masterBuffer()->params().branchlist().find(name)) + result.push_back(name); + continue; + } + if (it->lyxCode() == INCLUDE_CODE) { + // get buffer of external file + InsetInclude const & ins = + static_cast(*it); + Buffer * child = ins.getChildBuffer(); + if (!child) continue; - } - - // is it an external file? - if (iit->inset->lyxCode() == INCLUDE_CODE) { - // get buffer of external file - InsetInclude const & inset = - static_cast(*iit->inset); - Buffer * child = inset.getChildBuffer(); - if (!child) - continue; - child->getUsedBranches(result, true); - } + child->getUsedBranches(result, true); } - // next paragraph - it.pit()++; - it.pos() = 0; } // remove duplicates result.unique();