11435f6b0SMed Ismail Bennani //===-- Declaration.cpp ---------------------------------------------------===// 21435f6b0SMed Ismail Bennani // 31435f6b0SMed Ismail Bennani // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 41435f6b0SMed Ismail Bennani // See https://llvm.org/LICENSE.txt for license information. 51435f6b0SMed Ismail Bennani // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 61435f6b0SMed Ismail Bennani // 71435f6b0SMed Ismail Bennani //===----------------------------------------------------------------------===// 81435f6b0SMed Ismail Bennani 91435f6b0SMed Ismail Bennani #include "lldb/Core/Declaration.h" 101435f6b0SMed Ismail Bennani #include "lldb/Utility/Stream.h" 111435f6b0SMed Ismail Bennani 121435f6b0SMed Ismail Bennani using namespace lldb_private; 131435f6b0SMed Ismail Bennani 141435f6b0SMed Ismail Bennani void Declaration::Dump(Stream *s, bool show_fullpaths) const { 151435f6b0SMed Ismail Bennani if (m_file) { 161435f6b0SMed Ismail Bennani *s << ", decl = "; 171435f6b0SMed Ismail Bennani if (show_fullpaths) 181435f6b0SMed Ismail Bennani *s << m_file; 191435f6b0SMed Ismail Bennani else 201435f6b0SMed Ismail Bennani *s << m_file.GetFilename(); 211435f6b0SMed Ismail Bennani if (m_line > 0) 221435f6b0SMed Ismail Bennani s->Printf(":%u", m_line); 231435f6b0SMed Ismail Bennani if (m_column != LLDB_INVALID_COLUMN_NUMBER) 241435f6b0SMed Ismail Bennani s->Printf(":%u", m_column); 251435f6b0SMed Ismail Bennani } else { 261435f6b0SMed Ismail Bennani if (m_line > 0) { 271435f6b0SMed Ismail Bennani s->Printf(", line = %u", m_line); 281435f6b0SMed Ismail Bennani if (m_column != LLDB_INVALID_COLUMN_NUMBER) 291435f6b0SMed Ismail Bennani s->Printf(":%u", m_column); 301435f6b0SMed Ismail Bennani } else if (m_column != LLDB_INVALID_COLUMN_NUMBER) 311435f6b0SMed Ismail Bennani s->Printf(", column = %u", m_column); 321435f6b0SMed Ismail Bennani } 331435f6b0SMed Ismail Bennani } 341435f6b0SMed Ismail Bennani 351435f6b0SMed Ismail Bennani bool Declaration::DumpStopContext(Stream *s, bool show_fullpaths) const { 361435f6b0SMed Ismail Bennani if (m_file) { 371435f6b0SMed Ismail Bennani if (show_fullpaths) 381435f6b0SMed Ismail Bennani *s << m_file; 391435f6b0SMed Ismail Bennani else 401435f6b0SMed Ismail Bennani m_file.GetFilename().Dump(s); 411435f6b0SMed Ismail Bennani 421435f6b0SMed Ismail Bennani if (m_line > 0) 431435f6b0SMed Ismail Bennani s->Printf(":%u", m_line); 441435f6b0SMed Ismail Bennani if (m_column != LLDB_INVALID_COLUMN_NUMBER) 451435f6b0SMed Ismail Bennani s->Printf(":%u", m_column); 461435f6b0SMed Ismail Bennani return true; 471435f6b0SMed Ismail Bennani } else if (m_line > 0) { 481435f6b0SMed Ismail Bennani s->Printf(" line %u", m_line); 491435f6b0SMed Ismail Bennani if (m_column != LLDB_INVALID_COLUMN_NUMBER) 501435f6b0SMed Ismail Bennani s->Printf(":%u", m_column); 511435f6b0SMed Ismail Bennani return true; 521435f6b0SMed Ismail Bennani } 531435f6b0SMed Ismail Bennani return false; 541435f6b0SMed Ismail Bennani } 551435f6b0SMed Ismail Bennani 561435f6b0SMed Ismail Bennani size_t Declaration::MemorySize() const { return sizeof(Declaration); } 571435f6b0SMed Ismail Bennani 581435f6b0SMed Ismail Bennani int Declaration::Compare(const Declaration &a, const Declaration &b) { 591435f6b0SMed Ismail Bennani int result = FileSpec::Compare(a.m_file, b.m_file, true); 601435f6b0SMed Ismail Bennani if (result) 611435f6b0SMed Ismail Bennani return result; 621435f6b0SMed Ismail Bennani if (a.m_line < b.m_line) 631435f6b0SMed Ismail Bennani return -1; 641435f6b0SMed Ismail Bennani else if (a.m_line > b.m_line) 651435f6b0SMed Ismail Bennani return 1; 661435f6b0SMed Ismail Bennani if (a.m_column < b.m_column) 671435f6b0SMed Ismail Bennani return -1; 681435f6b0SMed Ismail Bennani else if (a.m_column > b.m_column) 691435f6b0SMed Ismail Bennani return 1; 701435f6b0SMed Ismail Bennani return 0; 711435f6b0SMed Ismail Bennani } 721435f6b0SMed Ismail Bennani 73*7dbbd2b2Sjimingham bool Declaration::FileAndLineEqual(const Declaration &declaration, 74*7dbbd2b2Sjimingham bool full) const { 75*7dbbd2b2Sjimingham int file_compare = FileSpec::Compare(this->m_file, declaration.m_file, full); 761435f6b0SMed Ismail Bennani return file_compare == 0 && this->m_line == declaration.m_line; 771435f6b0SMed Ismail Bennani } 781435f6b0SMed Ismail Bennani 791435f6b0SMed Ismail Bennani bool lldb_private::operator==(const Declaration &lhs, const Declaration &rhs) { 801435f6b0SMed Ismail Bennani if (lhs.GetColumn() != rhs.GetColumn()) 811435f6b0SMed Ismail Bennani return false; 821435f6b0SMed Ismail Bennani 831435f6b0SMed Ismail Bennani return lhs.GetLine() == rhs.GetLine() && lhs.GetFile() == rhs.GetFile(); 841435f6b0SMed Ismail Bennani } 85