summaryrefslogtreecommitdiff
path: root/source/API/SBStringList.cpp
blob: 8a4cc0419c767c884f2b961deb1d15ac2023d56f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
//===-- SBStringList.cpp ----------------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#include "lldb/API/SBStringList.h"

#include "lldb/Utility/StringList.h"

using namespace lldb;
using namespace lldb_private;

SBStringList::SBStringList() : m_opaque_ap() {}

SBStringList::SBStringList(const lldb_private::StringList *lldb_strings_ptr)
    : m_opaque_ap() {
  if (lldb_strings_ptr)
    m_opaque_ap.reset(new lldb_private::StringList(*lldb_strings_ptr));
}

SBStringList::SBStringList(const SBStringList &rhs) : m_opaque_ap() {
  if (rhs.IsValid())
    m_opaque_ap.reset(new lldb_private::StringList(*rhs));
}

const SBStringList &SBStringList::operator=(const SBStringList &rhs) {
  if (this != &rhs) {
    if (rhs.IsValid())
      m_opaque_ap.reset(new lldb_private::StringList(*rhs));
    else
      m_opaque_ap.reset();
  }
  return *this;
}

SBStringList::~SBStringList() {}

const lldb_private::StringList *SBStringList::operator->() const {
  return m_opaque_ap.get();
}

const lldb_private::StringList &SBStringList::operator*() const {
  return *m_opaque_ap;
}

bool SBStringList::IsValid() const { return (m_opaque_ap != NULL); }

void SBStringList::AppendString(const char *str) {
  if (str != NULL) {
    if (IsValid())
      m_opaque_ap->AppendString(str);
    else
      m_opaque_ap.reset(new lldb_private::StringList(str));
  }
}

void SBStringList::AppendList(const char **strv, int strc) {
  if ((strv != NULL) && (strc > 0)) {
    if (IsValid())
      m_opaque_ap->AppendList(strv, strc);
    else
      m_opaque_ap.reset(new lldb_private::StringList(strv, strc));
  }
}

void SBStringList::AppendList(const SBStringList &strings) {
  if (strings.IsValid()) {
    if (!IsValid())
      m_opaque_ap.reset(new lldb_private::StringList());
    m_opaque_ap->AppendList(*(strings.m_opaque_ap));
  }
}

void SBStringList::AppendList(const StringList &strings) {
  if (!IsValid())
    m_opaque_ap.reset(new lldb_private::StringList());
  m_opaque_ap->AppendList(strings);
}

uint32_t SBStringList::GetSize() const {
  if (IsValid()) {
    return m_opaque_ap->GetSize();
  }
  return 0;
}

const char *SBStringList::GetStringAtIndex(size_t idx) {
  if (IsValid()) {
    return m_opaque_ap->GetStringAtIndex(idx);
  }
  return NULL;
}

const char *SBStringList::GetStringAtIndex(size_t idx) const {
  if (IsValid()) {
    return m_opaque_ap->GetStringAtIndex(idx);
  }
  return NULL;
}

void SBStringList::Clear() {
  if (IsValid()) {
    m_opaque_ap->Clear();
  }
}