bool BranchList::add(docstring const & s) { bool added = false; size_t i = 0; while (true) { size_t const j = s.find_first_of(separator_, i); docstring name; if (j == docstring::npos) name = s.substr(i); else name = s.substr(i, j - i); // Is this name already in the list? bool const already = find_if(list.begin(), list.end(), BranchNamesEqual(name)) != list.end(); if (!already) { added = true; Branch br; br.setBranch(name); br.setSelected(false); br.setFileNameSuffix(false); list.push_back(br); } if (j == docstring::npos) break; i = j + 1; } return added; }
bool BranchList::rename(docstring const & oldname, docstring const & newname, bool const merge) { if (newname.empty()) return false; if (find_if(list.begin(), list.end(), BranchNamesEqual(newname)) != list.end()) { // new name already taken if (merge) return remove(oldname); return false; } Branch * branch = find(oldname); if (!branch) return false; branch->setBranch(newname); return true; }