1 | //===--- SymbolOrigin.cpp ----------------------------------------*- 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-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #include "SymbolOrigin.h" |
10 | |
11 | namespace clang { |
12 | namespace clangd { |
13 | |
14 | llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, SymbolOrigin O) { |
15 | if (O == SymbolOrigin::Unknown) |
16 | return OS << "unknown" ; |
17 | constexpr static char Sigils[] = "AOSMIRP7BL012345" ; |
18 | for (unsigned I = 0; I < sizeof(Sigils); ++I) |
19 | if (static_cast<uint16_t>(O) & 1u << I) |
20 | OS << Sigils[I]; |
21 | return OS; |
22 | } |
23 | |
24 | } // namespace clangd |
25 | } // namespace clang |
26 | |