llvm-project/lldb/source/API/SBStringList.cpp

137 lines
2.6 KiB
C++

//===-- SBStringList.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/API/SBStringList.h"
#include "lldb/Core/StringList.h"
using namespace lldb;
using namespace lldb_private;
SBStringList::SBStringList () :
m_opaque_ap ()
{
}
SBStringList::SBStringList (const lldb_private::StringList *lldb_strings_ptr) :
m_opaque_ap ()
{
if (lldb_strings_ptr)
m_opaque_ap.reset (new lldb_private::StringList (*lldb_strings_ptr));
}
SBStringList::SBStringList (const SBStringList &rhs) :
m_opaque_ap ()
{
if (rhs.IsValid())
m_opaque_ap.reset (new lldb_private::StringList(*rhs));
}
const SBStringList &
SBStringList::operator = (const SBStringList &rhs)
{
if (this != &rhs)
{
if (rhs.IsValid())
m_opaque_ap.reset(new lldb_private::StringList(*rhs));
else
m_opaque_ap.reset();
}
return *this;
}
SBStringList::~SBStringList ()
{
}
const lldb_private::StringList *
SBStringList::operator->() const
{
return m_opaque_ap.get();
}
const lldb_private::StringList &
SBStringList::operator*() const
{
return *m_opaque_ap;
}
bool
SBStringList::IsValid() const
{
return (m_opaque_ap.get() != NULL);
}
void
SBStringList::AppendString (const char *str)
{
if (str != NULL)
{
if (IsValid())
m_opaque_ap->AppendString (str);
else
m_opaque_ap.reset (new lldb_private::StringList (str));
}
}
void
SBStringList::AppendList (const char **strv, int strc)
{
if ((strv != NULL)
&& (strc > 0))
{
if (IsValid())
m_opaque_ap->AppendList (strv, strc);
else
m_opaque_ap.reset (new lldb_private::StringList (strv, strc));
}
}
void
SBStringList::AppendList (const SBStringList &strings)
{
if (strings.IsValid())
{
if (! IsValid())
m_opaque_ap.reset (new lldb_private::StringList());
m_opaque_ap->AppendList (*(strings.m_opaque_ap));
}
}
uint32_t
SBStringList::GetSize () const
{
if (IsValid())
{
return m_opaque_ap->GetSize();
}
return 0;
}
const char *
SBStringList::GetStringAtIndex (size_t idx)
{
if (IsValid())
{
return m_opaque_ap->GetStringAtIndex (idx);
}
return NULL;
}
void
SBStringList::Clear ()
{
if (IsValid())
{
m_opaque_ap->Clear();
}
}