LLDB  mainline
SBStringList.cpp
Go to the documentation of this file.
1 //===-- SBStringList.cpp ----------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
10 #include "SBReproducerPrivate.h"
11 #include "Utils.h"
13 
14 using namespace lldb;
15 using namespace lldb_private;
16 
17 SBStringList::SBStringList() : m_opaque_up() {
19 }
20 
22  : m_opaque_up() {
23  if (lldb_strings_ptr)
24  m_opaque_up = llvm::make_unique<StringList>(*lldb_strings_ptr);
25 }
26 
27 SBStringList::SBStringList(const SBStringList &rhs) : m_opaque_up() {
29 
30  m_opaque_up = clone(rhs.m_opaque_up);
31 }
32 
35  SBStringList, operator=,(const lldb::SBStringList &), rhs);
36 
37  if (this != &rhs)
38  m_opaque_up = clone(rhs.m_opaque_up);
39  return LLDB_RECORD_RESULT(*this);
40 }
41 
43 
45  return m_opaque_up.get();
46 }
47 
49  return *m_opaque_up;
50 }
51 
52 bool SBStringList::IsValid() const {
54  return this->operator bool();
55 }
56 SBStringList::operator bool() const {
57  LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBStringList, operator bool);
58 
59  return (m_opaque_up != NULL);
60 }
61 
62 void SBStringList::AppendString(const char *str) {
63  LLDB_RECORD_METHOD(void, SBStringList, AppendString, (const char *), str);
64 
65  if (str != NULL) {
66  if (IsValid())
67  m_opaque_up->AppendString(str);
68  else
69  m_opaque_up.reset(new lldb_private::StringList(str));
70  }
71 }
72 
73 void SBStringList::AppendList(const char **strv, int strc) {
74  LLDB_RECORD_METHOD(void, SBStringList, AppendList, (const char **, int), strv,
75  strc);
76 
77  if ((strv != NULL) && (strc > 0)) {
78  if (IsValid())
79  m_opaque_up->AppendList(strv, strc);
80  else
81  m_opaque_up.reset(new lldb_private::StringList(strv, strc));
82  }
83 }
84 
85 void SBStringList::AppendList(const SBStringList &strings) {
87  (const lldb::SBStringList &), strings);
88 
89  if (strings.IsValid()) {
90  if (!IsValid())
91  m_opaque_up.reset(new lldb_private::StringList());
92  m_opaque_up->AppendList(*(strings.m_opaque_up));
93  }
94 }
95 
96 void SBStringList::AppendList(const StringList &strings) {
97  if (!IsValid())
98  m_opaque_up.reset(new lldb_private::StringList());
99  m_opaque_up->AppendList(strings);
100 }
101 
104 
105  if (IsValid()) {
106  return m_opaque_up->GetSize();
107  }
108  return 0;
109 }
110 
111 const char *SBStringList::GetStringAtIndex(size_t idx) {
112  LLDB_RECORD_METHOD(const char *, SBStringList, GetStringAtIndex, (size_t),
113  idx);
114 
115  if (IsValid()) {
116  return m_opaque_up->GetStringAtIndex(idx);
117  }
118  return NULL;
119 }
120 
121 const char *SBStringList::GetStringAtIndex(size_t idx) const {
123  (size_t), idx);
124 
125  if (IsValid()) {
126  return m_opaque_up->GetStringAtIndex(idx);
127  }
128  return NULL;
129 }
130 
133 
134  if (IsValid()) {
135  m_opaque_up->Clear();
136  }
137 }
138 
139 namespace lldb_private {
140 namespace repro {
141 
142 template <>
147  SBStringList, operator=,(const lldb::SBStringList &));
149  LLDB_REGISTER_METHOD_CONST(bool, SBStringList, operator bool, ());
150  LLDB_REGISTER_METHOD(void, SBStringList, AppendString, (const char *));
151  LLDB_REGISTER_METHOD(void, SBStringList, AppendList, (const char **, int));
153  (const lldb::SBStringList &));
156  (size_t));
158  (size_t));
160 }
161 
162 }
163 }
The registry contains a unique mapping between functions and their ID.
Enumerations for broadcasting.
Definition: SBLaunchInfo.h:14
#define LLDB_RECORD_CONSTRUCTOR_NO_ARGS(Class)
void AppendString(const char *str)
const SBStringList & operator=(const SBStringList &rhs)
#define LLDB_REGISTER_CONSTRUCTOR(Class, Signature)
#define LLDB_RECORD_METHOD_NO_ARGS(Result, Class, Method)
std::unique_ptr< T > clone(const std::unique_ptr< T > &src)
Definition: Utils.h:17
#define LLDB_RECORD_CONSTRUCTOR(Class, Signature,...)
const lldb_private::StringList * operator->() const
uint32_t GetSize() const
#define LLDB_RECORD_METHOD(Result, Class, Method, Signature,...)
#define LLDB_RECORD_METHOD_CONST(Result, Class, Method, Signature,...)
const char * GetStringAtIndex(size_t idx)
void RegisterMethods< SBStringList >(Registry &R)
void AppendList(const char **strv, int strc)
Definition: SBAddress.h:15
bool IsValid() const
#define LLDB_REGISTER_METHOD(Result, Class, Method, Signature)
#define LLDB_RECORD_METHOD_CONST_NO_ARGS(Result, Class, Method)
const lldb_private::StringList & operator*() const
#define LLDB_RECORD_RESULT(Result)
#define LLDB_REGISTER_METHOD_CONST(Result, Class, Method, Signature)