xref: /openbsd-src/gnu/llvm/lldb/source/API/SBStringList.cpp (revision f6aab3d83b51b91c24247ad2c2573574de475a82)
1dda28197Spatrick //===-- SBStringList.cpp --------------------------------------------------===//
2061da546Spatrick //
3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information.
5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6061da546Spatrick //
7061da546Spatrick //===----------------------------------------------------------------------===//
8061da546Spatrick 
9061da546Spatrick #include "lldb/API/SBStringList.h"
10061da546Spatrick #include "Utils.h"
11*f6aab3d8Srobert #include "lldb/Utility/Instrumentation.h"
12061da546Spatrick #include "lldb/Utility/StringList.h"
13061da546Spatrick 
14061da546Spatrick using namespace lldb;
15061da546Spatrick using namespace lldb_private;
16061da546Spatrick 
SBStringList()17*f6aab3d8Srobert SBStringList::SBStringList() { LLDB_INSTRUMENT_VA(this); }
18061da546Spatrick 
SBStringList(const lldb_private::StringList * lldb_strings_ptr)19*f6aab3d8Srobert SBStringList::SBStringList(const lldb_private::StringList *lldb_strings_ptr) {
20061da546Spatrick   if (lldb_strings_ptr)
21061da546Spatrick     m_opaque_up = std::make_unique<StringList>(*lldb_strings_ptr);
22061da546Spatrick }
23061da546Spatrick 
SBStringList(const SBStringList & rhs)24*f6aab3d8Srobert SBStringList::SBStringList(const SBStringList &rhs) {
25*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, rhs);
26061da546Spatrick 
27061da546Spatrick   m_opaque_up = clone(rhs.m_opaque_up);
28061da546Spatrick }
29061da546Spatrick 
operator =(const SBStringList & rhs)30061da546Spatrick const SBStringList &SBStringList::operator=(const SBStringList &rhs) {
31*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, rhs);
32061da546Spatrick 
33061da546Spatrick   if (this != &rhs)
34061da546Spatrick     m_opaque_up = clone(rhs.m_opaque_up);
35*f6aab3d8Srobert   return *this;
36061da546Spatrick }
37061da546Spatrick 
38dda28197Spatrick SBStringList::~SBStringList() = default;
39061da546Spatrick 
operator ->() const40061da546Spatrick const lldb_private::StringList *SBStringList::operator->() const {
41061da546Spatrick   return m_opaque_up.get();
42061da546Spatrick }
43061da546Spatrick 
operator *() const44061da546Spatrick const lldb_private::StringList &SBStringList::operator*() const {
45061da546Spatrick   return *m_opaque_up;
46061da546Spatrick }
47061da546Spatrick 
IsValid() const48061da546Spatrick bool SBStringList::IsValid() const {
49*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
50061da546Spatrick   return this->operator bool();
51061da546Spatrick }
operator bool() const52061da546Spatrick SBStringList::operator bool() const {
53*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
54061da546Spatrick 
55061da546Spatrick   return (m_opaque_up != nullptr);
56061da546Spatrick }
57061da546Spatrick 
AppendString(const char * str)58061da546Spatrick void SBStringList::AppendString(const char *str) {
59*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, str);
60061da546Spatrick 
61061da546Spatrick   if (str != nullptr) {
62061da546Spatrick     if (IsValid())
63061da546Spatrick       m_opaque_up->AppendString(str);
64061da546Spatrick     else
65dda28197Spatrick       m_opaque_up = std::make_unique<lldb_private::StringList>(str);
66061da546Spatrick   }
67061da546Spatrick }
68061da546Spatrick 
AppendList(const char ** strv,int strc)69061da546Spatrick void SBStringList::AppendList(const char **strv, int strc) {
70*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, strv, strc);
71061da546Spatrick 
72061da546Spatrick   if ((strv != nullptr) && (strc > 0)) {
73061da546Spatrick     if (IsValid())
74061da546Spatrick       m_opaque_up->AppendList(strv, strc);
75061da546Spatrick     else
76dda28197Spatrick       m_opaque_up = std::make_unique<lldb_private::StringList>(strv, strc);
77061da546Spatrick   }
78061da546Spatrick }
79061da546Spatrick 
AppendList(const SBStringList & strings)80061da546Spatrick void SBStringList::AppendList(const SBStringList &strings) {
81*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, strings);
82061da546Spatrick 
83061da546Spatrick   if (strings.IsValid()) {
84061da546Spatrick     if (!IsValid())
85dda28197Spatrick       m_opaque_up = std::make_unique<lldb_private::StringList>();
86061da546Spatrick     m_opaque_up->AppendList(*(strings.m_opaque_up));
87061da546Spatrick   }
88061da546Spatrick }
89061da546Spatrick 
AppendList(const StringList & strings)90061da546Spatrick void SBStringList::AppendList(const StringList &strings) {
91061da546Spatrick   if (!IsValid())
92dda28197Spatrick     m_opaque_up = std::make_unique<lldb_private::StringList>();
93061da546Spatrick   m_opaque_up->AppendList(strings);
94061da546Spatrick }
95061da546Spatrick 
GetSize() const96061da546Spatrick uint32_t SBStringList::GetSize() const {
97*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
98061da546Spatrick 
99061da546Spatrick   if (IsValid()) {
100061da546Spatrick     return m_opaque_up->GetSize();
101061da546Spatrick   }
102061da546Spatrick   return 0;
103061da546Spatrick }
104061da546Spatrick 
GetStringAtIndex(size_t idx)105061da546Spatrick const char *SBStringList::GetStringAtIndex(size_t idx) {
106*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, idx);
107061da546Spatrick 
108061da546Spatrick   if (IsValid()) {
109061da546Spatrick     return m_opaque_up->GetStringAtIndex(idx);
110061da546Spatrick   }
111061da546Spatrick   return nullptr;
112061da546Spatrick }
113061da546Spatrick 
GetStringAtIndex(size_t idx) const114061da546Spatrick const char *SBStringList::GetStringAtIndex(size_t idx) const {
115*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this, idx);
116061da546Spatrick 
117061da546Spatrick   if (IsValid()) {
118061da546Spatrick     return m_opaque_up->GetStringAtIndex(idx);
119061da546Spatrick   }
120061da546Spatrick   return nullptr;
121061da546Spatrick }
122061da546Spatrick 
Clear()123061da546Spatrick void SBStringList::Clear() {
124*f6aab3d8Srobert   LLDB_INSTRUMENT_VA(this);
125061da546Spatrick 
126061da546Spatrick   if (IsValid()) {
127061da546Spatrick     m_opaque_up->Clear();
128061da546Spatrick   }
129061da546Spatrick }
130