blob: 3910cc4b03d2fac1379e2b7a383355fbb9a527b8 [file] [log] [blame]
//===-- SBCommandReturnObject.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"
#include "SBCommandReturnObject.h"
using namespace lldb;
SBCommandReturnObject::SBCommandReturnObject () :
m_return_object_ap (new lldb_private::CommandReturnObject ())
{
}
SBCommandReturnObject::~SBCommandReturnObject ()
{
// m_return_object_ap will automatically delete any pointer it owns
}
bool
SBCommandReturnObject::IsValid() const
{
return m_return_object_ap.get() != NULL;
}
const char *
SBCommandReturnObject::GetOutput ()
{
if (m_return_object_ap.get())
return m_return_object_ap->GetOutputStream().GetData();
return NULL;
}
const char *
SBCommandReturnObject::GetError ()
{
if (m_return_object_ap.get())
return m_return_object_ap->GetErrorStream().GetData();
return NULL;
}
size_t
SBCommandReturnObject::GetOutputSize ()
{
if (m_return_object_ap.get())
return m_return_object_ap->GetOutputStream().GetSize();
return 0;
}
size_t
SBCommandReturnObject::GetErrorSize ()
{
if (m_return_object_ap.get())
return m_return_object_ap->GetErrorStream().GetSize();
return 0;
}
size_t
SBCommandReturnObject::PutOutput (FILE *fh)
{
if (fh)
{
size_t num_bytes = GetOutputSize ();
if (num_bytes)
return ::fprintf (fh, "%s", GetOutput());
}
return 0;
}
size_t
SBCommandReturnObject::PutError (FILE *fh)
{
if (fh)
{
size_t num_bytes = GetErrorSize ();
if (num_bytes)
return ::fprintf (fh, "%s", GetError());
}
return 0;
}
void
SBCommandReturnObject::Clear()
{
if (m_return_object_ap.get())
m_return_object_ap->Clear();
}
lldb::ReturnStatus
SBCommandReturnObject::GetStatus()
{
if (m_return_object_ap.get())
return m_return_object_ap->GetStatus();
return lldb::eReturnStatusInvalid;
}
bool
SBCommandReturnObject::Succeeded ()
{
if (m_return_object_ap.get())
return m_return_object_ap->Succeeded();
return false;
}
bool
SBCommandReturnObject::HasResult ()
{
if (m_return_object_ap.get())
return m_return_object_ap->HasResult();
return false;
}
void
SBCommandReturnObject::AppendMessage (const char *message)
{
if (m_return_object_ap.get())
m_return_object_ap->AppendMessage (message);
}
lldb_private::CommandReturnObject *
SBCommandReturnObject::GetLLDBObjectPtr()
{
return m_return_object_ap.get();
}
lldb_private::CommandReturnObject &
SBCommandReturnObject::GetLLDBObjectRef()
{
assert(m_return_object_ap.get());
return *(m_return_object_ap.get());
}
void
SBCommandReturnObject::SetLLDBObjectPtr (lldb_private::CommandReturnObject *ptr)
{
if (m_return_object_ap.get())
m_return_object_ap.reset (ptr);
}