Added more functionality to the public API to allow for better
symbolication. Also improved the SBInstruction API to allow
access to the instruction opcode name, mnemonics, comment and
instruction data.

Added the ability to edit SBLineEntry objects (change the file,
line and column), and also allow SBSymbolContext objects to be
modified (set module, comp unit, function, block, line entry
or symbol). 

The SymbolContext and SBSymbolContext can now generate inlined
call stack infomration for symbolication much easier using the
SymbolContext::GetParentInlinedFrameInfo(...) and 
SBSymbolContext::GetParentInlinedFrameInfo(...) methods.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@140518 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/API/SBLineEntry.cpp b/source/API/SBLineEntry.cpp
index 3567a38..6915f58 100644
--- a/source/API/SBLineEntry.cpp
+++ b/source/API/SBLineEntry.cpp
@@ -28,33 +28,33 @@
     m_opaque_ap ()
 {
     if (rhs.IsValid())
-        m_opaque_ap.reset (new lldb_private::LineEntry (*rhs));
+        ref() = rhs.ref();
 }
 
-
-
 SBLineEntry::SBLineEntry (const lldb_private::LineEntry *lldb_object_ptr) :
     m_opaque_ap ()
 {
     if (lldb_object_ptr)
-        m_opaque_ap.reset (new lldb_private::LineEntry(*lldb_object_ptr));
+        ref() = *lldb_object_ptr;
 }
 
 const SBLineEntry &
 SBLineEntry::operator = (const SBLineEntry &rhs)
 {
-    if (this != &rhs && rhs.IsValid())
-        m_opaque_ap.reset (new lldb_private::LineEntry(*rhs));
+    if (this != &rhs)
+    {
+        if (rhs.IsValid())
+            ref() = rhs.ref();
+        else
+            m_opaque_ap.reset();
+    }
     return *this;
 }
 
 void
 SBLineEntry::SetLineEntry (const lldb_private::LineEntry &lldb_object_ref)
 {
-    if (m_opaque_ap.get())
-        (*m_opaque_ap.get()) = lldb_object_ref;
-    else
-        m_opaque_ap.reset (new lldb_private::LineEntry (lldb_object_ref));
+    ref() = lldb_object_ref;
 }
 
 
@@ -156,6 +156,28 @@
     return 0;
 }
 
+void
+SBLineEntry::SetFileSpec (lldb::SBFileSpec filespec)
+{
+    if (filespec.IsValid())
+        ref().file = filespec.ref();
+    else
+        ref().file.Clear();
+}
+void
+SBLineEntry::SetLine (uint32_t line)
+{
+    ref().line = line;
+}
+
+void
+SBLineEntry::SetColumn (uint32_t column)
+{
+    ref().line = column;
+}
+
+
+
 bool
 SBLineEntry::operator == (const SBLineEntry &rhs) const
 {
@@ -186,8 +208,16 @@
     return m_opaque_ap.get();
 }
 
+lldb_private::LineEntry &
+SBLineEntry::ref()
+{
+    if (m_opaque_ap.get() == NULL)
+        m_opaque_ap.reset (new lldb_private::LineEntry ());
+    return *m_opaque_ap;
+}
+
 const lldb_private::LineEntry &
-SBLineEntry::operator*() const
+SBLineEntry::ref() const
 {
     return *m_opaque_ap;
 }