Path: blob/main/contrib/llvm-project/lldb/source/Core/Declaration.cpp
39587 views
//===-- Declaration.cpp ---------------------------------------------------===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#include "lldb/Core/Declaration.h"9#include "lldb/Utility/Stream.h"1011using namespace lldb_private;1213void Declaration::Dump(Stream *s, bool show_fullpaths) const {14if (m_file) {15*s << ", decl = ";16if (show_fullpaths)17*s << m_file;18else19*s << m_file.GetFilename();20if (m_line > 0)21s->Printf(":%u", m_line);22if (m_column != LLDB_INVALID_COLUMN_NUMBER)23s->Printf(":%u", m_column);24} else {25if (m_line > 0) {26s->Printf(", line = %u", m_line);27if (m_column != LLDB_INVALID_COLUMN_NUMBER)28s->Printf(":%u", m_column);29} else if (m_column != LLDB_INVALID_COLUMN_NUMBER)30s->Printf(", column = %u", m_column);31}32}3334bool Declaration::DumpStopContext(Stream *s, bool show_fullpaths) const {35if (m_file) {36if (show_fullpaths)37*s << m_file;38else39m_file.GetFilename().Dump(s);4041if (m_line > 0)42s->Printf(":%u", m_line);43if (m_column != LLDB_INVALID_COLUMN_NUMBER)44s->Printf(":%u", m_column);45return true;46} else if (m_line > 0) {47s->Printf(" line %u", m_line);48if (m_column != LLDB_INVALID_COLUMN_NUMBER)49s->Printf(":%u", m_column);50return true;51}52return false;53}5455size_t Declaration::MemorySize() const { return sizeof(Declaration); }5657int Declaration::Compare(const Declaration &a, const Declaration &b) {58int result = FileSpec::Compare(a.m_file, b.m_file, true);59if (result)60return result;61if (a.m_line < b.m_line)62return -1;63else if (a.m_line > b.m_line)64return 1;65if (a.m_column < b.m_column)66return -1;67else if (a.m_column > b.m_column)68return 1;69return 0;70}7172bool Declaration::FileAndLineEqual(const Declaration &declaration) const {73int file_compare = FileSpec::Compare(this->m_file, declaration.m_file, true);74return file_compare == 0 && this->m_line == declaration.m_line;75}7677bool lldb_private::operator==(const Declaration &lhs, const Declaration &rhs) {78if (lhs.GetColumn() != rhs.GetColumn())79return false;8081return lhs.GetLine() == rhs.GetLine() && lhs.GetFile() == rhs.GetFile();82}838485