bool Project::match(const Match &p) { Path paths[] = { p.pattern(), p.pattern() }; paths[1].resolve(); const int count = paths[1].compare(paths[0]) ? 2 : 1; Scope<const FilesMap&> files = lockFilesForRead(); for (int i=0; i<count; ++i) { const Path &path = paths[i]; if (files.data().contains(path) || p.match(mPath)) return true; const uint32_t id = Location::fileId(path); if (isIndexed(id)) return true; } return false; }
bool Project::match(const Match &p, bool *indexed) const { Path paths[] = { p.pattern(), p.pattern() }; paths[1].resolve(); const int count = paths[1].compare(paths[0]) ? 2 : 1; bool ret = false; for (int i=0; i<count; ++i) { const Path &path = paths[i]; const uint32_t id = Location::fileId(path); if (isIndexed(id)) { if (indexed) *indexed = true; return true; } else if (mFiles.contains(path) || p.match(mPath)) { if (!indexed) return true; ret = true; } } if (indexed) *indexed = false; return ret; }