+void Buffer::getUsedBranches(std::list<docstring> & result, bool const from_master) const
+{
+ 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<InsetBranch &>(*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<InsetInclude const &>(*it);
+ Buffer * child = ins.getChildBuffer();
+ if (!child)
+ continue;
+ child->getUsedBranches(result, true);
+ }
+ }
+ // remove duplicates
+ result.unique();
+}
+
+