//===--- SymbolLocation.cpp --------------------------------------*- 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 // //===----------------------------------------------------------------------===// #include "SymbolLocation.h" namespace clang { namespace clangd { constexpr uint32_t SymbolLocation::Position::MaxLine; constexpr uint32_t SymbolLocation::Position::MaxColumn; void SymbolLocation::Position::setLine(uint32_t L) { if (L > MaxLine) L = MaxLine; LineColumnPacked = (L << ColumnBits) | column(); } void SymbolLocation::Position::setColumn(uint32_t Col) { if (Col > MaxColumn) Col = MaxColumn; LineColumnPacked = (LineColumnPacked & ~MaxColumn) | Col; } llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const SymbolLocation &L) { if (!L) return OS << "(none)"; return OS << L.FileURI << "[" << L.Start.line() << ":" << L.Start.column() << "-" << L.End.line() << ":" << L.End.column() << ")"; } } // namespace clangd } // namespace clang