blob: 2b20a24e51423540ca31ba46fbb95dce6e335ac0 [file] [log] [blame]
Chris Lattner30fdc8d2010-06-08 16:52:24 +00001//===-- Declaration.cpp -----------------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "lldb/Symbol/Declaration.h"
11#include "lldb/Core/Stream.h"
12
13using namespace lldb_private;
14
Chris Lattner30fdc8d2010-06-08 16:52:24 +000015void
Greg Clayton6dbd3982010-09-15 05:51:24 +000016Declaration::Dump(Stream *s, bool show_fullpaths) const
Chris Lattner30fdc8d2010-06-08 16:52:24 +000017{
18 if (m_file)
19 {
Greg Clayton6dbd3982010-09-15 05:51:24 +000020 *s << ", decl = ";
21 if (show_fullpaths)
22 *s << m_file;
23 else
24 *s << m_file.GetFilename();
Chris Lattner30fdc8d2010-06-08 16:52:24 +000025 if (m_line > 0)
26 s->Printf(":%u", m_line);
Greg Clayton4272cc72011-02-02 02:24:04 +000027#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
Chris Lattner30fdc8d2010-06-08 16:52:24 +000028 if (m_column > 0)
29 s->Printf(":%u", m_column);
Greg Clayton4272cc72011-02-02 02:24:04 +000030#endif
Chris Lattner30fdc8d2010-06-08 16:52:24 +000031 }
32 else
33 {
34 if (m_line > 0)
35 {
36 s->Printf(", line = %u", m_line);
Greg Clayton4272cc72011-02-02 02:24:04 +000037#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
Chris Lattner30fdc8d2010-06-08 16:52:24 +000038 if (m_column > 0)
39 s->Printf(":%u", m_column);
Greg Clayton4272cc72011-02-02 02:24:04 +000040#endif
Chris Lattner30fdc8d2010-06-08 16:52:24 +000041 }
Greg Clayton4272cc72011-02-02 02:24:04 +000042#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
Chris Lattner30fdc8d2010-06-08 16:52:24 +000043 else if (m_column > 0)
44 s->Printf(", column = %u", m_column);
Greg Clayton4272cc72011-02-02 02:24:04 +000045#endif
Chris Lattner30fdc8d2010-06-08 16:52:24 +000046 }
47}
48
49void
Greg Clayton6dadd502010-09-02 21:44:10 +000050Declaration::DumpStopContext (Stream *s, bool show_fullpaths) const
Chris Lattner30fdc8d2010-06-08 16:52:24 +000051{
52 if (m_file)
53 {
Greg Clayton6dadd502010-09-02 21:44:10 +000054 if (show_fullpaths || s->GetVerbose())
Chris Lattner30fdc8d2010-06-08 16:52:24 +000055 *s << m_file;
56 else
57 m_file.GetFilename().Dump(s);
58
59 if (m_line > 0)
60 s->Printf(":%u", m_line);
Greg Clayton4272cc72011-02-02 02:24:04 +000061#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
Chris Lattner30fdc8d2010-06-08 16:52:24 +000062 if (m_column > 0)
63 s->Printf(":%u", m_column);
Greg Clayton4272cc72011-02-02 02:24:04 +000064#endif
Chris Lattner30fdc8d2010-06-08 16:52:24 +000065 }
66 else
67 {
68 s->Printf(" line %u", m_line);
Greg Clayton4272cc72011-02-02 02:24:04 +000069#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
Chris Lattner30fdc8d2010-06-08 16:52:24 +000070 if (m_column > 0)
71 s->Printf(":%u", m_column);
Greg Clayton4272cc72011-02-02 02:24:04 +000072#endif
Chris Lattner30fdc8d2010-06-08 16:52:24 +000073 }
74}
75
Chris Lattner30fdc8d2010-06-08 16:52:24 +000076size_t
77Declaration::MemorySize() const
78{
79 return sizeof(Declaration);
80}
81
Chris Lattner30fdc8d2010-06-08 16:52:24 +000082int
83Declaration::Compare(const Declaration& a, const Declaration& b)
84{
85 int result = FileSpec::Compare(a.m_file, b.m_file, true);
86 if (result)
87 return result;
88 if (a.m_line < b.m_line)
89 return -1;
90 else if (a.m_line > b.m_line)
91 return 1;
Greg Clayton4272cc72011-02-02 02:24:04 +000092#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
Chris Lattner30fdc8d2010-06-08 16:52:24 +000093 if (a.m_column < b.m_column)
94 return -1;
95 else if (a.m_column > b.m_column)
96 return 1;
Greg Clayton4272cc72011-02-02 02:24:04 +000097#endif
Chris Lattner30fdc8d2010-06-08 16:52:24 +000098 return 0;
99}
Greg Clayton4272cc72011-02-02 02:24:04 +0000100
101bool
102lldb_private::operator == (const Declaration &lhs, const Declaration &rhs)
103{
104#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
105 if (lhs.GetColumn () == rhs.GetColumn ())
106 if (lhs.GetLine () == rhs.GetLine ())
107 return lhs.GetFile() == rhs.GetFile();
108#else
109 if (lhs.GetLine () == rhs.GetLine ())
110 return lhs.GetFile() == rhs.GetFile();
111#endif
112 return false;
113}
114