blob: 9d32279edab8ae3195a30f3634bf735a965a4645 [file] [log] [blame]
//===-- CommandReturnObject.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/Interpreter/CommandReturnObject.h"
// C Includes
// C++ Includes
// Other libraries and framework includes
// Project includes
#include "lldb/Core/StreamString.h"
using namespace lldb;
using namespace lldb_private;
CommandReturnObject::CommandReturnObject () :
m_out_stream (),
m_err_stream (),
m_status (eReturnStatusStarted),
m_did_change_process_state (false)
{
}
CommandReturnObject::~CommandReturnObject ()
{
}
void
CommandReturnObject::AppendErrorWithFormat (const char *format, ...)
{
va_list args;
va_start (args, format);
StreamString sstrm;
sstrm.PrintfVarArg(format, args);
va_end (args);
GetErrorStream().Printf("error: %s", sstrm.GetData());
}
void
CommandReturnObject::AppendMessageWithFormat (const char *format, ...)
{
va_list args;
va_start (args, format);
StreamString sstrm;
sstrm.PrintfVarArg(format, args);
va_end (args);
GetOutputStream().Printf("%s", sstrm.GetData());
}
void
CommandReturnObject::AppendWarningWithFormat (const char *format, ...)
{
va_list args;
va_start (args, format);
StreamString sstrm;
sstrm.PrintfVarArg(format, args);
va_end (args);
GetErrorStream().Printf("warning: %s", sstrm.GetData());
}
void
CommandReturnObject::AppendMessage (const char *in_string, int len)
{
if (len < 0)
len = ::strlen (in_string);
GetOutputStream().Printf("%*.*s\n", len, len, in_string);
}
void
CommandReturnObject::AppendWarning (const char *in_string, int len)
{
if (len < 0)
len = ::strlen (in_string);
GetErrorStream().Printf("warning: %*.*s\n", len, len, in_string);
}
// Similar to AppendWarning, but do not prepend 'warning: ' to message, and
// don't append "\n" to the end of it.
void
CommandReturnObject::AppendRawWarning (const char *in_string, int len)
{
if (len < 0)
len = ::strlen (in_string);
GetErrorStream().Printf("%*.*s", len, len, in_string);
}
void
CommandReturnObject::AppendError (const char *in_string, int len)
{
if (!in_string)
return;
if (len < 0)
len = ::strlen (in_string);
GetErrorStream().Printf ("error: %*.*s\n", len, len, in_string);
}
// Similar to AppendError, but do not prepend 'Error: ' to message, and
// don't append "\n" to the end of it.
void
CommandReturnObject::AppendRawError (const char *in_string, int len)
{
if (len < 0)
len = ::strlen (in_string);
GetErrorStream().Printf ("%*.*s", len, len, in_string);
}
void
CommandReturnObject::SetStatus (ReturnStatus status)
{
m_status = status;
}
ReturnStatus
CommandReturnObject::GetStatus ()
{
return m_status;
}
bool
CommandReturnObject::Succeeded ()
{
return m_status <= eReturnStatusSuccessContinuingResult;
}
bool
CommandReturnObject::HasResult ()
{
return (m_status == eReturnStatusSuccessFinishResult ||
m_status == eReturnStatusSuccessContinuingResult);
}
void
CommandReturnObject::Clear()
{
lldb::StreamSP stream_sp;
stream_sp = m_out_stream.GetStreamAtIndex (eStreamStringIndex);
if (stream_sp)
static_cast<StreamString *>(stream_sp.get())->Clear();
stream_sp = m_err_stream.GetStreamAtIndex (eStreamStringIndex);
if (stream_sp)
static_cast<StreamString *>(stream_sp.get())->Clear();
m_status = eReturnStatusStarted;
m_did_change_process_state = false;
}
bool
CommandReturnObject::GetDidChangeProcessState ()
{
return m_did_change_process_state;
}
void
CommandReturnObject::SetDidChangeProcessState (bool b)
{
m_did_change_process_state = b;
}