brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 2e7a3fa Raw
53 lines · c
1//===--- SymbolOrigin.h ------------------------------------------*- C++-*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_INDEX_SYMBOLORIGIN_H10#define LLVM_CLANG_TOOLS_EXTRA_CLANGD_INDEX_SYMBOLORIGIN_H11 12#include "llvm/Support/raw_ostream.h"13#include <cstdint>14 15namespace clang {16namespace clangd {17 18// Describes the source of information about a symbol.19// Mainly useful for debugging, e.g. understanding code completion results.20// This is a bitfield as information can be combined from several sources.21enum class SymbolOrigin : uint16_t {22  Unknown = 0,23  AST = 1 << 0,        // Directly from the AST (indexes should not set this).24  Open = 1 << 1,       // From the dynamic index of open files.25  Static = 1 << 2,     // From a static, externally-built index.26  Merge = 1 << 3,      // A non-trivial index merge was performed.27  Identifier = 1 << 4, // Raw identifiers in file.28  Remote = 1 << 5,     // Remote index.29  Preamble = 1 << 6,   // From the dynamic index of preambles.30                       // 7 reserved31  Background = 1 << 8, // From the automatic project index.32  StdLib = 1 << 9,     // Standard library index.33};34 35inline SymbolOrigin operator|(SymbolOrigin A, SymbolOrigin B) {36  return static_cast<SymbolOrigin>(static_cast<uint16_t>(A) |37                                   static_cast<uint16_t>(B));38}39inline SymbolOrigin &operator|=(SymbolOrigin &A, SymbolOrigin B) {40  return A = A | B;41}42inline SymbolOrigin operator&(SymbolOrigin A, SymbolOrigin B) {43  return static_cast<SymbolOrigin>(static_cast<uint16_t>(A) &44                                   static_cast<uint16_t>(B));45}46 47llvm::raw_ostream &operator<<(llvm::raw_ostream &, SymbolOrigin);48 49} // namespace clangd50} // namespace clang51 52#endif // LLVM_CLANG_TOOLS_EXTRA_CLANGD_INDEX_SYMBOLORIGIN_H53