//===--- Token.h - Symbol Search primitive ----------------------*- C++ -*-===// // // 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 // //===----------------------------------------------------------------------===// /// /// \file /// Token objects represent a characteristic of a symbol, which can be used to /// perform efficient search. Tokens are keys for inverted index which are /// mapped to the corresponding posting lists. /// /// The symbol std::cout might have the tokens: /// * Scope "std::" /// * Trigram "cou" /// * Trigram "out" /// * Type "std::ostream" /// //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_INDEX_DEX_TOKEN_H #define LLVM_CLANG_TOOLS_EXTRA_CLANGD_INDEX_DEX_TOKEN_H #include "llvm/ADT/Hashing.h" #include "llvm/Support/raw_ostream.h" #include <string> #include <vector> namespace clang { namespace clangd { namespace dex { /// A Token represents an attribute of a symbol, such as a particular trigram /// present in the name (used for fuzzy search). /// /// Tokens can be used to perform more sophisticated search queries by /// constructing complex iterator trees. class Token { … }; } // namespace dex } // namespace clangd } // namespace clang namespace llvm { // Support Tokens as DenseMap keys. template <> struct DenseMapInfo<clang::clangd::dex::Token> { … }; } // namespace llvm #endif // LLVM_CLANG_TOOLS_EXTRA_CLANGD_INDEX_DEX_TOKEN_H