130fdc8d8SChris Lattner //===-- SBStringList.cpp ----------------------------------------*- C++ -*-===// 230fdc8d8SChris Lattner // 3*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 5*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 630fdc8d8SChris Lattner // 730fdc8d8SChris Lattner //===----------------------------------------------------------------------===// 830fdc8d8SChris Lattner 930fdc8d8SChris Lattner #include "lldb/API/SBStringList.h" 1030fdc8d8SChris Lattner 11573ab909SZachary Turner #include "lldb/Utility/StringList.h" 1230fdc8d8SChris Lattner 1330fdc8d8SChris Lattner using namespace lldb; 1430fdc8d8SChris Lattner using namespace lldb_private; 1530fdc8d8SChris Lattner 16b9c1b51eSKate Stone SBStringList::SBStringList() : m_opaque_ap() {} 1730fdc8d8SChris Lattner 18b9c1b51eSKate Stone SBStringList::SBStringList(const lldb_private::StringList *lldb_strings_ptr) 19b9c1b51eSKate Stone : m_opaque_ap() { 2030fdc8d8SChris Lattner if (lldb_strings_ptr) 216611103cSGreg Clayton m_opaque_ap.reset(new lldb_private::StringList(*lldb_strings_ptr)); 2230fdc8d8SChris Lattner } 2330fdc8d8SChris Lattner 24b9c1b51eSKate Stone SBStringList::SBStringList(const SBStringList &rhs) : m_opaque_ap() { 2530fdc8d8SChris Lattner if (rhs.IsValid()) 266611103cSGreg Clayton m_opaque_ap.reset(new lldb_private::StringList(*rhs)); 2730fdc8d8SChris Lattner } 2830fdc8d8SChris Lattner 29b9c1b51eSKate Stone const SBStringList &SBStringList::operator=(const SBStringList &rhs) { 30b9c1b51eSKate Stone if (this != &rhs) { 3130fdc8d8SChris Lattner if (rhs.IsValid()) 326611103cSGreg Clayton m_opaque_ap.reset(new lldb_private::StringList(*rhs)); 33efabb123SGreg Clayton else 34efabb123SGreg Clayton m_opaque_ap.reset(); 35efabb123SGreg Clayton } 3630fdc8d8SChris Lattner return *this; 3730fdc8d8SChris Lattner } 3830fdc8d8SChris Lattner 39b9c1b51eSKate Stone SBStringList::~SBStringList() {} 40efabb123SGreg Clayton 41b9c1b51eSKate Stone const lldb_private::StringList *SBStringList::operator->() const { 426611103cSGreg Clayton return m_opaque_ap.get(); 4330fdc8d8SChris Lattner } 4430fdc8d8SChris Lattner 45b9c1b51eSKate Stone const lldb_private::StringList &SBStringList::operator*() const { 466611103cSGreg Clayton return *m_opaque_ap; 4730fdc8d8SChris Lattner } 4830fdc8d8SChris Lattner 493447077aSJonas Devlieghere bool SBStringList::IsValid() const { return (m_opaque_ap != NULL); } 5030fdc8d8SChris Lattner 51b9c1b51eSKate Stone void SBStringList::AppendString(const char *str) { 52b9c1b51eSKate Stone if (str != NULL) { 5330fdc8d8SChris Lattner if (IsValid()) 546611103cSGreg Clayton m_opaque_ap->AppendString(str); 5530fdc8d8SChris Lattner else 566611103cSGreg Clayton m_opaque_ap.reset(new lldb_private::StringList(str)); 5730fdc8d8SChris Lattner } 5830fdc8d8SChris Lattner } 5930fdc8d8SChris Lattner 60b9c1b51eSKate Stone void SBStringList::AppendList(const char **strv, int strc) { 61b9c1b51eSKate Stone if ((strv != NULL) && (strc > 0)) { 6230fdc8d8SChris Lattner if (IsValid()) 636611103cSGreg Clayton m_opaque_ap->AppendList(strv, strc); 6430fdc8d8SChris Lattner else 656611103cSGreg Clayton m_opaque_ap.reset(new lldb_private::StringList(strv, strc)); 6630fdc8d8SChris Lattner } 6730fdc8d8SChris Lattner } 6830fdc8d8SChris Lattner 69b9c1b51eSKate Stone void SBStringList::AppendList(const SBStringList &strings) { 70b9c1b51eSKate Stone if (strings.IsValid()) { 7130fdc8d8SChris Lattner if (!IsValid()) 726611103cSGreg Clayton m_opaque_ap.reset(new lldb_private::StringList()); 736611103cSGreg Clayton m_opaque_ap->AppendList(*(strings.m_opaque_ap)); 7430fdc8d8SChris Lattner } 7530fdc8d8SChris Lattner } 7630fdc8d8SChris Lattner 7792d1960eSJim Ingham void SBStringList::AppendList(const StringList &strings) { 7892d1960eSJim Ingham if (!IsValid()) 7992d1960eSJim Ingham m_opaque_ap.reset(new lldb_private::StringList()); 8092d1960eSJim Ingham m_opaque_ap->AppendList(strings); 8192d1960eSJim Ingham } 8292d1960eSJim Ingham 83b9c1b51eSKate Stone uint32_t SBStringList::GetSize() const { 84b9c1b51eSKate Stone if (IsValid()) { 856611103cSGreg Clayton return m_opaque_ap->GetSize(); 8630fdc8d8SChris Lattner } 8730fdc8d8SChris Lattner return 0; 8830fdc8d8SChris Lattner } 8930fdc8d8SChris Lattner 90b9c1b51eSKate Stone const char *SBStringList::GetStringAtIndex(size_t idx) { 91b9c1b51eSKate Stone if (IsValid()) { 926611103cSGreg Clayton return m_opaque_ap->GetStringAtIndex(idx); 9330fdc8d8SChris Lattner } 9430fdc8d8SChris Lattner return NULL; 9530fdc8d8SChris Lattner } 9630fdc8d8SChris Lattner 97b9c1b51eSKate Stone const char *SBStringList::GetStringAtIndex(size_t idx) const { 98b9c1b51eSKate Stone if (IsValid()) { 9976bb8d67SJim Ingham return m_opaque_ap->GetStringAtIndex(idx); 10076bb8d67SJim Ingham } 10176bb8d67SJim Ingham return NULL; 10276bb8d67SJim Ingham } 10376bb8d67SJim Ingham 104b9c1b51eSKate Stone void SBStringList::Clear() { 105b9c1b51eSKate Stone if (IsValid()) { 1066611103cSGreg Clayton m_opaque_ap->Clear(); 10730fdc8d8SChris Lattner } 10830fdc8d8SChris Lattner } 109