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 17b9c1b51eSKate Stone SBStringList::SBStringList() : m_opaque_ap() {} 1830fdc8d8SChris Lattner 19b9c1b51eSKate Stone SBStringList::SBStringList(const lldb_private::StringList *lldb_strings_ptr) 20b9c1b51eSKate 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 25b9c1b51eSKate 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 30b9c1b51eSKate Stone const SBStringList &SBStringList::operator=(const SBStringList &rhs) { 31b9c1b51eSKate 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 40b9c1b51eSKate Stone SBStringList::~SBStringList() {} 41efabb123SGreg Clayton 42b9c1b51eSKate Stone const lldb_private::StringList *SBStringList::operator->() const { 436611103cSGreg Clayton return m_opaque_ap.get(); 4430fdc8d8SChris Lattner } 4530fdc8d8SChris Lattner 46b9c1b51eSKate Stone const lldb_private::StringList &SBStringList::operator*() const { 476611103cSGreg Clayton return *m_opaque_ap; 4830fdc8d8SChris Lattner } 4930fdc8d8SChris Lattner 50b9c1b51eSKate Stone bool SBStringList::IsValid() const { return (m_opaque_ap.get() != NULL); } 5130fdc8d8SChris Lattner 52b9c1b51eSKate Stone void SBStringList::AppendString(const char *str) { 53b9c1b51eSKate 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 61b9c1b51eSKate Stone void SBStringList::AppendList(const char **strv, int strc) { 62b9c1b51eSKate 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 70b9c1b51eSKate Stone void SBStringList::AppendList(const SBStringList &strings) { 71b9c1b51eSKate 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*92d1960eSJim Ingham void SBStringList::AppendList(const StringList &strings) { 79*92d1960eSJim Ingham if (!IsValid()) 80*92d1960eSJim Ingham m_opaque_ap.reset(new lldb_private::StringList()); 81*92d1960eSJim Ingham m_opaque_ap->AppendList(strings); 82*92d1960eSJim Ingham } 83*92d1960eSJim Ingham 84b9c1b51eSKate Stone uint32_t SBStringList::GetSize() const { 85b9c1b51eSKate Stone if (IsValid()) { 866611103cSGreg Clayton return m_opaque_ap->GetSize(); 8730fdc8d8SChris Lattner } 8830fdc8d8SChris Lattner return 0; 8930fdc8d8SChris Lattner } 9030fdc8d8SChris Lattner 91b9c1b51eSKate Stone const char *SBStringList::GetStringAtIndex(size_t idx) { 92b9c1b51eSKate Stone if (IsValid()) { 936611103cSGreg Clayton return m_opaque_ap->GetStringAtIndex(idx); 9430fdc8d8SChris Lattner } 9530fdc8d8SChris Lattner return NULL; 9630fdc8d8SChris Lattner } 9730fdc8d8SChris Lattner 98b9c1b51eSKate Stone const char *SBStringList::GetStringAtIndex(size_t idx) const { 99b9c1b51eSKate Stone if (IsValid()) { 10076bb8d67SJim Ingham return m_opaque_ap->GetStringAtIndex(idx); 10176bb8d67SJim Ingham } 10276bb8d67SJim Ingham return NULL; 10376bb8d67SJim Ingham } 10476bb8d67SJim Ingham 105b9c1b51eSKate Stone void SBStringList::Clear() { 106b9c1b51eSKate Stone if (IsValid()) { 1076611103cSGreg Clayton m_opaque_ap->Clear(); 10830fdc8d8SChris Lattner } 10930fdc8d8SChris Lattner } 110