1 //===-- CommandReturnObject.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 // C Includes
13 // C++ Includes
14 // Other libraries and framework includes
15 // Project includes
16 #include "lldb/Core/StreamString.h"
17 
18 using namespace lldb;
19 using namespace lldb_private;
20 
21 CommandReturnObject::CommandReturnObject () :
22     m_output_stream (),
23     m_error_stream (),
24     m_status (eReturnStatusStarted),
25     m_did_change_process_state (false)
26 {
27 }
28 
29 CommandReturnObject::~CommandReturnObject ()
30 {
31 }
32 
33 StreamString &
34 CommandReturnObject::GetOutputStream ()
35 {
36     return m_output_stream;
37 }
38 
39 StreamString &
40 CommandReturnObject::GetErrorStream ()
41 {
42     return m_error_stream;
43 }
44 
45 void
46 CommandReturnObject::AppendErrorWithFormat (const char *format, ...)
47 {
48     va_list args;
49     va_start (args, format);
50     StreamString sstrm;
51     sstrm.PrintfVarArg(format, args);
52     va_end (args);
53 
54     m_error_stream.Printf("error: %s", sstrm.GetData());
55 }
56 
57 
58 void
59 CommandReturnObject::AppendMessageWithFormat (const char *format, ...)
60 {
61     va_list args;
62     va_start (args, format);
63     StreamString sstrm;
64     sstrm.PrintfVarArg(format, args);
65     va_end (args);
66 
67     m_output_stream.Printf("%s", sstrm.GetData());
68 }
69 
70 void
71 CommandReturnObject::AppendWarningWithFormat (const char *format, ...)
72 {
73     va_list args;
74     va_start (args, format);
75     StreamString sstrm;
76     sstrm.PrintfVarArg(format, args);
77     va_end (args);
78 
79     m_error_stream.Printf("warning: %s", sstrm.GetData());
80 }
81 
82 void
83 CommandReturnObject::AppendMessage (const char *in_string, int len)
84 {
85     if (len < 0)
86         len = ::strlen (in_string);
87     m_output_stream.Printf("%*.*s\n", len, len, in_string);
88 }
89 
90 void
91 CommandReturnObject::AppendWarning (const char *in_string, int len)
92 {
93     if (len < 0)
94         len = ::strlen (in_string);
95     m_error_stream.Printf("warning: %*.*s\n", len, len, in_string);
96 }
97 
98 // Similar to AppendWarning, but do not prepend 'warning: ' to message, and
99 // don't append "\n" to the end of it.
100 
101 void
102 CommandReturnObject::AppendRawWarning (const char *in_string, int len)
103 {
104     if (len < 0)
105         len = ::strlen (in_string);
106     m_error_stream.Printf("%*.*s", len, len, in_string);
107 }
108 
109 void
110 CommandReturnObject::AppendError (const char *in_string, int len)
111 {
112     if (!in_string)
113         return;
114 
115     if (len < 0)
116         len = ::strlen (in_string);
117     m_error_stream.Printf ("error: %*.*s\n", len, len, in_string);
118 }
119 
120 // Similar to AppendError, but do not prepend 'Error: ' to message, and
121 // don't append "\n" to the end of it.
122 
123 void
124 CommandReturnObject::AppendRawError (const char *in_string, int len)
125 {
126     if (len < 0)
127         len = ::strlen (in_string);
128     m_error_stream.Printf ("%*.*s", len, len, in_string);
129 }
130 
131 void
132 CommandReturnObject::SetStatus (ReturnStatus status)
133 {
134     m_status = status;
135 }
136 
137 ReturnStatus
138 CommandReturnObject::GetStatus ()
139 {
140     return m_status;
141 }
142 
143 bool
144 CommandReturnObject::Succeeded ()
145 {
146     return m_status <= eReturnStatusSuccessContinuingResult;
147 }
148 
149 bool
150 CommandReturnObject::HasResult ()
151 {
152     return (m_status == eReturnStatusSuccessFinishResult ||
153             m_status == eReturnStatusSuccessContinuingResult);
154 }
155 
156 void
157 CommandReturnObject::Clear()
158 {
159     m_output_stream.Clear();
160     m_error_stream.Clear();
161     m_status = eReturnStatusStarted;
162 }
163 
164 bool
165 CommandReturnObject::GetDidChangeProcessState ()
166 {
167     return m_did_change_process_state;
168 }
169 
170 void
171 CommandReturnObject::SetDidChangeProcessState (bool b)
172 {
173     m_did_change_process_state = b;
174 }
175 
176