1 //===-- SBCommandReturnObject.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/Interpreter/CommandReturnObject.h"
11 
12 #include "SBCommandReturnObject.h"
13 
14 using namespace lldb;
15 
16 SBCommandReturnObject::SBCommandReturnObject () :
17     m_return_object_ap (new lldb_private::CommandReturnObject ())
18 {
19 }
20 
21 SBCommandReturnObject::~SBCommandReturnObject ()
22 {
23     // m_return_object_ap will automatically delete any pointer it owns
24 }
25 
26 bool
27 SBCommandReturnObject::IsValid() const
28 {
29     return m_return_object_ap.get() != NULL;
30 }
31 
32 
33 const char *
34 SBCommandReturnObject::GetOutput ()
35 {
36     if (m_return_object_ap.get())
37         return m_return_object_ap->GetOutputStream().GetData();
38     return NULL;
39 }
40 
41 const char *
42 SBCommandReturnObject::GetError ()
43 {
44     if (m_return_object_ap.get())
45         return m_return_object_ap->GetErrorStream().GetData();
46     return NULL;
47 }
48 
49 size_t
50 SBCommandReturnObject::GetOutputSize ()
51 {
52     if (m_return_object_ap.get())
53         return m_return_object_ap->GetOutputStream().GetSize();
54     return 0;
55 }
56 
57 size_t
58 SBCommandReturnObject::GetErrorSize ()
59 {
60     if (m_return_object_ap.get())
61         return m_return_object_ap->GetErrorStream().GetSize();
62     return 0;
63 }
64 
65 size_t
66 SBCommandReturnObject::PutOutput (FILE *fh)
67 {
68     if (fh)
69     {
70         size_t num_bytes = GetOutputSize ();
71         if (num_bytes)
72             return ::fprintf (fh, "%s", GetOutput());
73     }
74     return 0;
75 }
76 
77 size_t
78 SBCommandReturnObject::PutError (FILE *fh)
79 {
80     if (fh)
81     {
82         size_t num_bytes = GetErrorSize ();
83         if (num_bytes)
84             return ::fprintf (fh, "%s", GetError());
85     }
86     return 0;
87 }
88 
89 void
90 SBCommandReturnObject::Clear()
91 {
92     if (m_return_object_ap.get())
93         m_return_object_ap->Clear();
94 }
95 
96 lldb::ReturnStatus
97 SBCommandReturnObject::GetStatus()
98 {
99     if (m_return_object_ap.get())
100         return m_return_object_ap->GetStatus();
101     return lldb::eReturnStatusInvalid;
102 }
103 
104 bool
105 SBCommandReturnObject::Succeeded ()
106 {
107     if (m_return_object_ap.get())
108         return m_return_object_ap->Succeeded();
109     return false;
110 }
111 
112 bool
113 SBCommandReturnObject::HasResult ()
114 {
115     if (m_return_object_ap.get())
116         return m_return_object_ap->HasResult();
117     return false;
118 }
119 
120 void
121 SBCommandReturnObject::AppendMessage (const char *message)
122 {
123     if (m_return_object_ap.get())
124         m_return_object_ap->AppendMessage (message);
125 }
126 
127 lldb_private::CommandReturnObject *
128 SBCommandReturnObject::GetLLDBObjectPtr()
129 {
130     return m_return_object_ap.get();
131 }
132 
133 
134 lldb_private::CommandReturnObject &
135 SBCommandReturnObject::GetLLDBObjectRef()
136 {
137     assert(m_return_object_ap.get());
138     return *(m_return_object_ap.get());
139 }
140 
141 
142 void
143 SBCommandReturnObject::SetLLDBObjectPtr (lldb_private::CommandReturnObject *ptr)
144 {
145     if (m_return_object_ap.get())
146         m_return_object_ap.reset (ptr);
147 }
148 
149