1*30fdc8d8SChris Lattner //===-- SBStringList.cpp ----------------------------------------*- C++ -*-===//
2*30fdc8d8SChris Lattner //
3*30fdc8d8SChris Lattner //                     The LLVM Compiler Infrastructure
4*30fdc8d8SChris Lattner //
5*30fdc8d8SChris Lattner // This file is distributed under the University of Illinois Open Source
6*30fdc8d8SChris Lattner // License. See LICENSE.TXT for details.
7*30fdc8d8SChris Lattner //
8*30fdc8d8SChris Lattner //===----------------------------------------------------------------------===//
9*30fdc8d8SChris Lattner 
10*30fdc8d8SChris Lattner #include "lldb/API/SBStringList.h"
11*30fdc8d8SChris Lattner 
12*30fdc8d8SChris Lattner #include "lldb/Core/StringList.h"
13*30fdc8d8SChris Lattner 
14*30fdc8d8SChris Lattner using namespace lldb;
15*30fdc8d8SChris Lattner using namespace lldb_private;
16*30fdc8d8SChris Lattner 
17*30fdc8d8SChris Lattner SBStringList::SBStringList () :
18*30fdc8d8SChris Lattner     m_lldb_object_ap ()
19*30fdc8d8SChris Lattner {
20*30fdc8d8SChris Lattner }
21*30fdc8d8SChris Lattner 
22*30fdc8d8SChris Lattner SBStringList::SBStringList (const lldb_private::StringList *lldb_strings_ptr) :
23*30fdc8d8SChris Lattner     m_lldb_object_ap ()
24*30fdc8d8SChris Lattner {
25*30fdc8d8SChris Lattner     if (lldb_strings_ptr)
26*30fdc8d8SChris Lattner         m_lldb_object_ap.reset (new lldb_private::StringList (*lldb_strings_ptr));
27*30fdc8d8SChris Lattner }
28*30fdc8d8SChris Lattner 
29*30fdc8d8SChris Lattner SBStringList::SBStringList (const SBStringList  &rhs) :
30*30fdc8d8SChris Lattner     m_lldb_object_ap ()
31*30fdc8d8SChris Lattner {
32*30fdc8d8SChris Lattner     if (rhs.IsValid())
33*30fdc8d8SChris Lattner         m_lldb_object_ap.reset (new lldb_private::StringList(*rhs));
34*30fdc8d8SChris Lattner }
35*30fdc8d8SChris Lattner 
36*30fdc8d8SChris Lattner 
37*30fdc8d8SChris Lattner 
38*30fdc8d8SChris Lattner SBStringList::~SBStringList ()
39*30fdc8d8SChris Lattner {
40*30fdc8d8SChris Lattner }
41*30fdc8d8SChris Lattner 
42*30fdc8d8SChris Lattner 
43*30fdc8d8SChris Lattner const SBStringList &
44*30fdc8d8SChris Lattner SBStringList::operator = (const SBStringList &rhs)
45*30fdc8d8SChris Lattner {
46*30fdc8d8SChris Lattner     if (rhs.IsValid())
47*30fdc8d8SChris Lattner         m_lldb_object_ap.reset (new lldb_private::StringList(*rhs));
48*30fdc8d8SChris Lattner 
49*30fdc8d8SChris Lattner     return *this;
50*30fdc8d8SChris Lattner }
51*30fdc8d8SChris Lattner 
52*30fdc8d8SChris Lattner const lldb_private::StringList *
53*30fdc8d8SChris Lattner SBStringList::operator->() const
54*30fdc8d8SChris Lattner {
55*30fdc8d8SChris Lattner     return m_lldb_object_ap.get();
56*30fdc8d8SChris Lattner }
57*30fdc8d8SChris Lattner 
58*30fdc8d8SChris Lattner const lldb_private::StringList &
59*30fdc8d8SChris Lattner SBStringList::operator*() const
60*30fdc8d8SChris Lattner {
61*30fdc8d8SChris Lattner     return *m_lldb_object_ap;
62*30fdc8d8SChris Lattner }
63*30fdc8d8SChris Lattner 
64*30fdc8d8SChris Lattner bool
65*30fdc8d8SChris Lattner SBStringList::IsValid() const
66*30fdc8d8SChris Lattner {
67*30fdc8d8SChris Lattner     return (m_lldb_object_ap.get() != NULL);
68*30fdc8d8SChris Lattner }
69*30fdc8d8SChris Lattner 
70*30fdc8d8SChris Lattner void
71*30fdc8d8SChris Lattner SBStringList::AppendString (const char *str)
72*30fdc8d8SChris Lattner {
73*30fdc8d8SChris Lattner     if (str != NULL)
74*30fdc8d8SChris Lattner     {
75*30fdc8d8SChris Lattner         if (IsValid())
76*30fdc8d8SChris Lattner             m_lldb_object_ap->AppendString (str);
77*30fdc8d8SChris Lattner         else
78*30fdc8d8SChris Lattner             m_lldb_object_ap.reset (new lldb_private::StringList (str));
79*30fdc8d8SChris Lattner     }
80*30fdc8d8SChris Lattner 
81*30fdc8d8SChris Lattner }
82*30fdc8d8SChris Lattner 
83*30fdc8d8SChris Lattner void
84*30fdc8d8SChris Lattner SBStringList::AppendList (const char **strv, int strc)
85*30fdc8d8SChris Lattner {
86*30fdc8d8SChris Lattner     if ((strv != NULL)
87*30fdc8d8SChris Lattner         && (strc > 0))
88*30fdc8d8SChris Lattner     {
89*30fdc8d8SChris Lattner         if (IsValid())
90*30fdc8d8SChris Lattner             m_lldb_object_ap->AppendList (strv, strc);
91*30fdc8d8SChris Lattner         else
92*30fdc8d8SChris Lattner             m_lldb_object_ap.reset (new lldb_private::StringList (strv, strc));
93*30fdc8d8SChris Lattner     }
94*30fdc8d8SChris Lattner }
95*30fdc8d8SChris Lattner 
96*30fdc8d8SChris Lattner void
97*30fdc8d8SChris Lattner SBStringList::AppendList (SBStringList strings)
98*30fdc8d8SChris Lattner {
99*30fdc8d8SChris Lattner     if (strings.IsValid())
100*30fdc8d8SChris Lattner     {
101*30fdc8d8SChris Lattner         if (! IsValid())
102*30fdc8d8SChris Lattner             m_lldb_object_ap.reset (new lldb_private::StringList());
103*30fdc8d8SChris Lattner         m_lldb_object_ap->AppendList (*(strings.m_lldb_object_ap));
104*30fdc8d8SChris Lattner     }
105*30fdc8d8SChris Lattner }
106*30fdc8d8SChris Lattner 
107*30fdc8d8SChris Lattner uint32_t
108*30fdc8d8SChris Lattner SBStringList::GetSize () const
109*30fdc8d8SChris Lattner {
110*30fdc8d8SChris Lattner     if (IsValid())
111*30fdc8d8SChris Lattner     {
112*30fdc8d8SChris Lattner         return m_lldb_object_ap->GetSize();
113*30fdc8d8SChris Lattner     }
114*30fdc8d8SChris Lattner     return 0;
115*30fdc8d8SChris Lattner }
116*30fdc8d8SChris Lattner 
117*30fdc8d8SChris Lattner const char *
118*30fdc8d8SChris Lattner SBStringList::GetStringAtIndex (size_t idx)
119*30fdc8d8SChris Lattner {
120*30fdc8d8SChris Lattner     if (IsValid())
121*30fdc8d8SChris Lattner     {
122*30fdc8d8SChris Lattner         return m_lldb_object_ap->GetStringAtIndex (idx);
123*30fdc8d8SChris Lattner     }
124*30fdc8d8SChris Lattner     return NULL;
125*30fdc8d8SChris Lattner }
126*30fdc8d8SChris Lattner 
127*30fdc8d8SChris Lattner void
128*30fdc8d8SChris Lattner SBStringList::Clear ()
129*30fdc8d8SChris Lattner {
130*30fdc8d8SChris Lattner     if (IsValid())
131*30fdc8d8SChris Lattner     {
132*30fdc8d8SChris Lattner         m_lldb_object_ap->Clear();
133*30fdc8d8SChris Lattner     }
134*30fdc8d8SChris Lattner }
135