130fdc8d8SChris Lattner //===-- SBStringList.cpp ----------------------------------------*- C++ -*-===// 230fdc8d8SChris Lattner // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 630fdc8d8SChris Lattner // 730fdc8d8SChris Lattner //===----------------------------------------------------------------------===// 830fdc8d8SChris Lattner 930fdc8d8SChris Lattner #include "lldb/API/SBStringList.h" 10*bd4bf82aSJonas Devlieghere #include "Utils.h" 11573ab909SZachary Turner #include "lldb/Utility/StringList.h" 1230fdc8d8SChris Lattner 1330fdc8d8SChris Lattner using namespace lldb; 1430fdc8d8SChris Lattner using namespace lldb_private; 1530fdc8d8SChris Lattner 16d5b44036SJonas Devlieghere SBStringList::SBStringList() : m_opaque_up() {} 1730fdc8d8SChris Lattner 18b9c1b51eSKate Stone SBStringList::SBStringList(const lldb_private::StringList *lldb_strings_ptr) 19d5b44036SJonas Devlieghere : m_opaque_up() { 2030fdc8d8SChris Lattner if (lldb_strings_ptr) 21*bd4bf82aSJonas Devlieghere m_opaque_up = llvm::make_unique<StringList>(*lldb_strings_ptr); 2230fdc8d8SChris Lattner } 2330fdc8d8SChris Lattner 24d5b44036SJonas Devlieghere SBStringList::SBStringList(const SBStringList &rhs) : m_opaque_up() { 25*bd4bf82aSJonas Devlieghere m_opaque_up = clone(rhs.m_opaque_up); 2630fdc8d8SChris Lattner } 2730fdc8d8SChris Lattner 28b9c1b51eSKate Stone const SBStringList &SBStringList::operator=(const SBStringList &rhs) { 29*bd4bf82aSJonas Devlieghere if (this != &rhs) 30*bd4bf82aSJonas Devlieghere m_opaque_up = clone(rhs.m_opaque_up); 3130fdc8d8SChris Lattner return *this; 3230fdc8d8SChris Lattner } 3330fdc8d8SChris Lattner 34b9c1b51eSKate Stone SBStringList::~SBStringList() {} 35efabb123SGreg Clayton 36b9c1b51eSKate Stone const lldb_private::StringList *SBStringList::operator->() const { 37d5b44036SJonas Devlieghere return m_opaque_up.get(); 3830fdc8d8SChris Lattner } 3930fdc8d8SChris Lattner 40b9c1b51eSKate Stone const lldb_private::StringList &SBStringList::operator*() const { 41d5b44036SJonas Devlieghere return *m_opaque_up; 4230fdc8d8SChris Lattner } 4330fdc8d8SChris Lattner 44d5b44036SJonas Devlieghere bool SBStringList::IsValid() const { return (m_opaque_up != NULL); } 4530fdc8d8SChris Lattner 46b9c1b51eSKate Stone void SBStringList::AppendString(const char *str) { 47b9c1b51eSKate Stone if (str != NULL) { 4830fdc8d8SChris Lattner if (IsValid()) 49d5b44036SJonas Devlieghere m_opaque_up->AppendString(str); 5030fdc8d8SChris Lattner else 51d5b44036SJonas Devlieghere m_opaque_up.reset(new lldb_private::StringList(str)); 5230fdc8d8SChris Lattner } 5330fdc8d8SChris Lattner } 5430fdc8d8SChris Lattner 55b9c1b51eSKate Stone void SBStringList::AppendList(const char **strv, int strc) { 56b9c1b51eSKate Stone if ((strv != NULL) && (strc > 0)) { 5730fdc8d8SChris Lattner if (IsValid()) 58d5b44036SJonas Devlieghere m_opaque_up->AppendList(strv, strc); 5930fdc8d8SChris Lattner else 60d5b44036SJonas Devlieghere m_opaque_up.reset(new lldb_private::StringList(strv, strc)); 6130fdc8d8SChris Lattner } 6230fdc8d8SChris Lattner } 6330fdc8d8SChris Lattner 64b9c1b51eSKate Stone void SBStringList::AppendList(const SBStringList &strings) { 65b9c1b51eSKate Stone if (strings.IsValid()) { 6630fdc8d8SChris Lattner if (!IsValid()) 67d5b44036SJonas Devlieghere m_opaque_up.reset(new lldb_private::StringList()); 68d5b44036SJonas Devlieghere m_opaque_up->AppendList(*(strings.m_opaque_up)); 6930fdc8d8SChris Lattner } 7030fdc8d8SChris Lattner } 7130fdc8d8SChris Lattner 7292d1960eSJim Ingham void SBStringList::AppendList(const StringList &strings) { 7392d1960eSJim Ingham if (!IsValid()) 74d5b44036SJonas Devlieghere m_opaque_up.reset(new lldb_private::StringList()); 75d5b44036SJonas Devlieghere m_opaque_up->AppendList(strings); 7692d1960eSJim Ingham } 7792d1960eSJim Ingham 78b9c1b51eSKate Stone uint32_t SBStringList::GetSize() const { 79b9c1b51eSKate Stone if (IsValid()) { 80d5b44036SJonas Devlieghere return m_opaque_up->GetSize(); 8130fdc8d8SChris Lattner } 8230fdc8d8SChris Lattner return 0; 8330fdc8d8SChris Lattner } 8430fdc8d8SChris Lattner 85b9c1b51eSKate Stone const char *SBStringList::GetStringAtIndex(size_t idx) { 86b9c1b51eSKate Stone if (IsValid()) { 87d5b44036SJonas Devlieghere return m_opaque_up->GetStringAtIndex(idx); 8830fdc8d8SChris Lattner } 8930fdc8d8SChris Lattner return NULL; 9030fdc8d8SChris Lattner } 9130fdc8d8SChris Lattner 92b9c1b51eSKate Stone const char *SBStringList::GetStringAtIndex(size_t idx) const { 93b9c1b51eSKate Stone if (IsValid()) { 94d5b44036SJonas Devlieghere return m_opaque_up->GetStringAtIndex(idx); 9576bb8d67SJim Ingham } 9676bb8d67SJim Ingham return NULL; 9776bb8d67SJim Ingham } 9876bb8d67SJim Ingham 99b9c1b51eSKate Stone void SBStringList::Clear() { 100b9c1b51eSKate Stone if (IsValid()) { 101d5b44036SJonas Devlieghere m_opaque_up->Clear(); 10230fdc8d8SChris Lattner } 10330fdc8d8SChris Lattner } 104