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