summaryrefslogtreecommitdiffstats
path: root/lldb/source/Symbol/Declaration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Symbol/Declaration.cpp')
-rw-r--r--lldb/source/Symbol/Declaration.cpp172
1 files changed, 172 insertions, 0 deletions
diff --git a/lldb/source/Symbol/Declaration.cpp b/lldb/source/Symbol/Declaration.cpp
new file mode 100644
index 00000000000..a31a304b06f
--- /dev/null
+++ b/lldb/source/Symbol/Declaration.cpp
@@ -0,0 +1,172 @@
+//===-- Declaration.cpp -----------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/Symbol/Declaration.h"
+#include "lldb/Core/Stream.h"
+
+using namespace lldb_private;
+
+Declaration::Declaration() :
+ m_file(),
+ m_line(0),
+ m_column(0)
+{
+}
+
+Declaration::Declaration(const FileSpec& f, uint32_t l, uint32_t c) :
+ m_file(f),
+ m_line(l),
+ m_column(c)
+{
+}
+
+Declaration::Declaration(const Declaration& rhs) :
+ m_file(rhs.m_file),
+ m_line(rhs.m_line),
+ m_column(rhs.m_column)
+{
+}
+
+Declaration::Declaration(const Declaration* decl_ptr) :
+ m_file(),
+ m_line(0),
+ m_column(0)
+{
+ if (decl_ptr != NULL)
+ *this = *decl_ptr;
+}
+
+bool
+Declaration::IsValid() const
+{
+ return m_file && m_line != 0;
+}
+
+void
+Declaration::Clear()
+{
+ m_file.Clear();
+ m_line= 0;
+ m_column = 0;
+}
+
+void
+Declaration::Dump(Stream *s) const
+{
+ if (m_file)
+ {
+ *s << ", decl = '" << m_file;
+ if (m_line > 0)
+ s->Printf(":%u", m_line);
+ if (m_column > 0)
+ s->Printf(":%u", m_column);
+ s->PutChar('\'');
+ }
+ else
+ {
+ if (m_line > 0)
+ {
+ s->Printf(", line = %u", m_line);
+ if (m_column > 0)
+ s->Printf(":%u", m_column);
+ }
+ else if (m_column > 0)
+ s->Printf(", column = %u", m_column);
+ }
+}
+
+void
+Declaration::DumpStopContext (Stream *s) const
+{
+ if (m_file)
+ {
+ if (s->GetVerbose())
+ *s << m_file;
+ else
+ m_file.GetFilename().Dump(s);
+
+ if (m_line > 0)
+ s->Printf(":%u", m_line);
+ if (m_column > 0)
+ s->Printf(":%u", m_column);
+ }
+ else
+ {
+ s->Printf(" line %u", m_line);
+ if (m_column > 0)
+ s->Printf(":%u", m_column);
+ }
+}
+
+uint32_t
+Declaration::GetColumn() const
+{
+ return m_column;
+}
+
+FileSpec&
+Declaration::GetFile()
+{
+ return m_file;
+}
+
+const FileSpec&
+Declaration::GetFile() const
+{
+ return m_file;
+}
+
+uint32_t
+Declaration::GetLine() const
+{
+ return m_line;
+}
+
+size_t
+Declaration::MemorySize() const
+{
+ return sizeof(Declaration);
+}
+
+void
+Declaration::SetColumn(uint32_t col)
+{
+ m_column = col;
+}
+
+void
+Declaration::SetFile(const FileSpec& file)
+{
+ m_file = file;
+}
+
+void
+Declaration::SetLine(uint32_t line)
+{
+ m_line = line;
+}
+
+
+
+int
+Declaration::Compare(const Declaration& a, const Declaration& b)
+{
+ int result = FileSpec::Compare(a.m_file, b.m_file, true);
+ if (result)
+ return result;
+ if (a.m_line < b.m_line)
+ return -1;
+ else if (a.m_line > b.m_line)
+ return 1;
+ if (a.m_column < b.m_column)
+ return -1;
+ else if (a.m_column > b.m_column)
+ return 1;
+ return 0;
+}
OpenPOWER on IntegriCloud