130fdc8d8SChris Lattner //===-- SBStringList.cpp ----------------------------------------*- C++ -*-===// 230fdc8d8SChris Lattner // 330fdc8d8SChris Lattner // The LLVM Compiler Infrastructure 430fdc8d8SChris Lattner // 530fdc8d8SChris Lattner // This file is distributed under the University of Illinois Open Source 630fdc8d8SChris Lattner // License. See LICENSE.TXT for details. 730fdc8d8SChris Lattner // 830fdc8d8SChris Lattner //===----------------------------------------------------------------------===// 930fdc8d8SChris Lattner 1030fdc8d8SChris Lattner #include "lldb/API/SBStringList.h" 1130fdc8d8SChris Lattner 1230fdc8d8SChris Lattner #include "lldb/Core/StringList.h" 1330fdc8d8SChris Lattner 1430fdc8d8SChris Lattner using namespace lldb; 1530fdc8d8SChris Lattner using namespace lldb_private; 1630fdc8d8SChris Lattner 17*b9c1b51eSKate Stone SBStringList::SBStringList() : m_opaque_ap() {} 1830fdc8d8SChris Lattner 19*b9c1b51eSKate Stone SBStringList::SBStringList(const lldb_private::StringList *lldb_strings_ptr) 20*b9c1b51eSKate Stone : m_opaque_ap() { 2130fdc8d8SChris Lattner if (lldb_strings_ptr) 226611103cSGreg Clayton m_opaque_ap.reset(new lldb_private::StringList(*lldb_strings_ptr)); 2330fdc8d8SChris Lattner } 2430fdc8d8SChris Lattner 25*b9c1b51eSKate Stone SBStringList::SBStringList(const SBStringList &rhs) : m_opaque_ap() { 2630fdc8d8SChris Lattner if (rhs.IsValid()) 276611103cSGreg Clayton m_opaque_ap.reset(new lldb_private::StringList(*rhs)); 2830fdc8d8SChris Lattner } 2930fdc8d8SChris Lattner 30*b9c1b51eSKate Stone const SBStringList &SBStringList::operator=(const SBStringList &rhs) { 31*b9c1b51eSKate Stone if (this != &rhs) { 3230fdc8d8SChris Lattner if (rhs.IsValid()) 336611103cSGreg Clayton m_opaque_ap.reset(new lldb_private::StringList(*rhs)); 34efabb123SGreg Clayton else 35efabb123SGreg Clayton m_opaque_ap.reset(); 36efabb123SGreg Clayton } 3730fdc8d8SChris Lattner return *this; 3830fdc8d8SChris Lattner } 3930fdc8d8SChris Lattner 40*b9c1b51eSKate Stone SBStringList::~SBStringList() {} 41efabb123SGreg Clayton 42*b9c1b51eSKate Stone const lldb_private::StringList *SBStringList::operator->() const { 436611103cSGreg Clayton return m_opaque_ap.get(); 4430fdc8d8SChris Lattner } 4530fdc8d8SChris Lattner 46*b9c1b51eSKate Stone const lldb_private::StringList &SBStringList::operator*() const { 476611103cSGreg Clayton return *m_opaque_ap; 4830fdc8d8SChris Lattner } 4930fdc8d8SChris Lattner 50*b9c1b51eSKate Stone bool SBStringList::IsValid() const { return (m_opaque_ap.get() != NULL); } 5130fdc8d8SChris Lattner 52*b9c1b51eSKate Stone void SBStringList::AppendString(const char *str) { 53*b9c1b51eSKate Stone if (str != NULL) { 5430fdc8d8SChris Lattner if (IsValid()) 556611103cSGreg Clayton m_opaque_ap->AppendString(str); 5630fdc8d8SChris Lattner else 576611103cSGreg Clayton m_opaque_ap.reset(new lldb_private::StringList(str)); 5830fdc8d8SChris Lattner } 5930fdc8d8SChris Lattner } 6030fdc8d8SChris Lattner 61*b9c1b51eSKate Stone void SBStringList::AppendList(const char **strv, int strc) { 62*b9c1b51eSKate Stone if ((strv != NULL) && (strc > 0)) { 6330fdc8d8SChris Lattner if (IsValid()) 646611103cSGreg Clayton m_opaque_ap->AppendList(strv, strc); 6530fdc8d8SChris Lattner else 666611103cSGreg Clayton m_opaque_ap.reset(new lldb_private::StringList(strv, strc)); 6730fdc8d8SChris Lattner } 6830fdc8d8SChris Lattner } 6930fdc8d8SChris Lattner 70*b9c1b51eSKate Stone void SBStringList::AppendList(const SBStringList &strings) { 71*b9c1b51eSKate Stone if (strings.IsValid()) { 7230fdc8d8SChris Lattner if (!IsValid()) 736611103cSGreg Clayton m_opaque_ap.reset(new lldb_private::StringList()); 746611103cSGreg Clayton m_opaque_ap->AppendList(*(strings.m_opaque_ap)); 7530fdc8d8SChris Lattner } 7630fdc8d8SChris Lattner } 7730fdc8d8SChris Lattner 78*b9c1b51eSKate Stone uint32_t SBStringList::GetSize() const { 79*b9c1b51eSKate Stone if (IsValid()) { 806611103cSGreg Clayton return m_opaque_ap->GetSize(); 8130fdc8d8SChris Lattner } 8230fdc8d8SChris Lattner return 0; 8330fdc8d8SChris Lattner } 8430fdc8d8SChris Lattner 85*b9c1b51eSKate Stone const char *SBStringList::GetStringAtIndex(size_t idx) { 86*b9c1b51eSKate Stone if (IsValid()) { 876611103cSGreg Clayton return m_opaque_ap->GetStringAtIndex(idx); 8830fdc8d8SChris Lattner } 8930fdc8d8SChris Lattner return NULL; 9030fdc8d8SChris Lattner } 9130fdc8d8SChris Lattner 92*b9c1b51eSKate Stone const char *SBStringList::GetStringAtIndex(size_t idx) const { 93*b9c1b51eSKate Stone if (IsValid()) { 9476bb8d67SJim Ingham return m_opaque_ap->GetStringAtIndex(idx); 9576bb8d67SJim Ingham } 9676bb8d67SJim Ingham return NULL; 9776bb8d67SJim Ingham } 9876bb8d67SJim Ingham 99*b9c1b51eSKate Stone void SBStringList::Clear() { 100*b9c1b51eSKate Stone if (IsValid()) { 1016611103cSGreg Clayton m_opaque_ap->Clear(); 10230fdc8d8SChris Lattner } 10330fdc8d8SChris Lattner } 104