//===- FileMatchTrie.cpp --------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file contains the implementation of a FileMatchTrie. // //===----------------------------------------------------------------------===// #include "clang/Tooling/FileMatchTrie.h" #include "llvm/ADT/StringMap.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/Path.h" #include "llvm/Support/raw_ostream.h" #include <string> #include <vector> usingnamespaceclang; usingnamespacetooling; namespace { /// Default \c PathComparator using \c llvm::sys::fs::equivalent(). struct DefaultPathComparator : public PathComparator { … }; } // namespace namespace clang { namespace tooling { /// A node of the \c FileMatchTrie. /// /// Each node has storage for up to one path and a map mapping a path segment to /// child nodes. The trie starts with an empty root node. class FileMatchTrieNode { … }; } // namespace tooling } // namespace clang FileMatchTrie::FileMatchTrie() : … { … } FileMatchTrie::FileMatchTrie(PathComparator *Comparator) : … { … } FileMatchTrie::~FileMatchTrie() { … } void FileMatchTrie::insert(StringRef NewPath) { … } StringRef FileMatchTrie::findEquivalent(StringRef FileName, raw_ostream &Error) const { … }