bool path_prefix_is(string & path, string const & pre, path_case how) { #ifdef __APPLE__ docstring const p1 = from_utf8(path); docstring const p2 = from_utf8(pre); docstring::size_type const p1_len = p1.length(); docstring::size_type const p2_len = p2.length(); docstring::size_type common_len = common_path(p1, p2); if (p2[p2_len - 1] == '/' && p1_len != p2_len) ++common_len; if (common_len != p2_len) return false; if (how == CASE_ADJUSTED && !prefixIs(path, pre)) { if (p1_len < common_len) path = to_utf8(p2.substr(0, p1_len)); else path = to_utf8(p2 + p1.substr(common_len, p1_len - common_len)); } return true; #else // silence compiler warnings (void)how; return prefixIs(path, pre); #endif }
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; }
int GuiFontMetrics::signedWidth(docstring const & s) const { if (s.empty()) return 0; if (s[0] == '-') return -width(s.substr(1, s.size() - 1)); else return width(s); }
bool IndicesList::add(docstring const & n, docstring const & s) { bool added = false; size_t i = 0; while (true) { size_t const j = n.find_first_of(separator_, i); docstring name; if (j == docstring::npos) name = n.substr(i); else name = n.substr(i, j - i); // Is this name already in the list? bool const already = find_if(list.begin(), list.end(), IndexNamesEqual(name)) != list.end(); if (!already) { added = true; Index in; in.setIndex(name); docstring sc = s.empty() ? trim(lowercase(name.substr(0, 3))) : s; if (findShortcut(sc) != 0) { int i = 1; docstring scn = sc + convert<docstring>(i); while (findShortcut(scn) != 0) { ++i; scn = sc + convert<docstring>(i); } in.setShortcut(scn); } else in.setShortcut(sc); list.push_back(in); } if (j == docstring::npos) break; i = j + 1; } return added; }