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

110 lines
2.7 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));
}
}
void SBStringList::AppendList(const StringList &strings) {
if (!IsValid())
m_opaque_ap.reset(new lldb_private::StringList());
m_opaque_ap->AppendList(strings);
}
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;
}
const char *SBStringList::GetStringAtIndex(size_t idx) const {
if (IsValid()) {
return m_opaque_ap->GetStringAtIndex(idx);
}
return NULL;
}
void SBStringList::Clear() {
if (IsValid()) {
m_opaque_ap->Clear();
}
}