130fdc8d8SChris Lattner //===-- SBStringList.cpp ----------------------------------------*- C++ -*-===//
230fdc8d8SChris Lattner //
330fdc8d8SChris Lattner //                     The LLVM Compiler Infrastructure
430fdc8d8SChris Lattner //
530fdc8d8SChris Lattner // This file is distributed under the University of Illinois Open Source
630fdc8d8SChris Lattner // License. See LICENSE.TXT for details.
730fdc8d8SChris Lattner //
830fdc8d8SChris Lattner //===----------------------------------------------------------------------===//
930fdc8d8SChris Lattner 
1030fdc8d8SChris Lattner #include "lldb/API/SBStringList.h"
1130fdc8d8SChris Lattner 
1230fdc8d8SChris Lattner #include "lldb/Core/StringList.h"
1330fdc8d8SChris Lattner 
1430fdc8d8SChris Lattner using namespace lldb;
1530fdc8d8SChris Lattner using namespace lldb_private;
1630fdc8d8SChris Lattner 
1730fdc8d8SChris Lattner SBStringList::SBStringList () :
186611103cSGreg Clayton     m_opaque_ap ()
1930fdc8d8SChris Lattner {
2030fdc8d8SChris Lattner }
2130fdc8d8SChris Lattner 
2230fdc8d8SChris Lattner SBStringList::SBStringList (const lldb_private::StringList *lldb_strings_ptr) :
236611103cSGreg Clayton     m_opaque_ap ()
2430fdc8d8SChris Lattner {
2530fdc8d8SChris Lattner     if (lldb_strings_ptr)
266611103cSGreg Clayton         m_opaque_ap.reset (new lldb_private::StringList (*lldb_strings_ptr));
2730fdc8d8SChris Lattner }
2830fdc8d8SChris Lattner 
2930fdc8d8SChris Lattner SBStringList::SBStringList (const SBStringList  &rhs) :
306611103cSGreg Clayton     m_opaque_ap ()
3130fdc8d8SChris Lattner {
3230fdc8d8SChris Lattner     if (rhs.IsValid())
336611103cSGreg Clayton         m_opaque_ap.reset (new lldb_private::StringList(*rhs));
3430fdc8d8SChris Lattner }
3530fdc8d8SChris Lattner 
3630fdc8d8SChris Lattner 
3730fdc8d8SChris Lattner 
3830fdc8d8SChris Lattner SBStringList::~SBStringList ()
3930fdc8d8SChris Lattner {
4030fdc8d8SChris Lattner }
4130fdc8d8SChris Lattner 
4230fdc8d8SChris Lattner 
4330fdc8d8SChris Lattner const SBStringList &
4430fdc8d8SChris Lattner SBStringList::operator = (const SBStringList &rhs)
4530fdc8d8SChris Lattner {
4630fdc8d8SChris Lattner     if (rhs.IsValid())
476611103cSGreg Clayton         m_opaque_ap.reset (new lldb_private::StringList(*rhs));
4830fdc8d8SChris Lattner 
4930fdc8d8SChris Lattner     return *this;
5030fdc8d8SChris Lattner }
5130fdc8d8SChris Lattner 
5230fdc8d8SChris Lattner const lldb_private::StringList *
5330fdc8d8SChris Lattner SBStringList::operator->() const
5430fdc8d8SChris Lattner {
556611103cSGreg Clayton     return m_opaque_ap.get();
5630fdc8d8SChris Lattner }
5730fdc8d8SChris Lattner 
5830fdc8d8SChris Lattner const lldb_private::StringList &
5930fdc8d8SChris Lattner SBStringList::operator*() const
6030fdc8d8SChris Lattner {
616611103cSGreg Clayton     return *m_opaque_ap;
6230fdc8d8SChris Lattner }
6330fdc8d8SChris Lattner 
6430fdc8d8SChris Lattner bool
6530fdc8d8SChris Lattner SBStringList::IsValid() const
6630fdc8d8SChris Lattner {
676611103cSGreg Clayton     return (m_opaque_ap.get() != NULL);
6830fdc8d8SChris Lattner }
6930fdc8d8SChris Lattner 
7030fdc8d8SChris Lattner void
7130fdc8d8SChris Lattner SBStringList::AppendString (const char *str)
7230fdc8d8SChris Lattner {
7330fdc8d8SChris Lattner     if (str != NULL)
7430fdc8d8SChris Lattner     {
7530fdc8d8SChris Lattner         if (IsValid())
766611103cSGreg Clayton             m_opaque_ap->AppendString (str);
7730fdc8d8SChris Lattner         else
786611103cSGreg Clayton             m_opaque_ap.reset (new lldb_private::StringList (str));
7930fdc8d8SChris Lattner     }
8030fdc8d8SChris Lattner 
8130fdc8d8SChris Lattner }
8230fdc8d8SChris Lattner 
8330fdc8d8SChris Lattner void
8430fdc8d8SChris Lattner SBStringList::AppendList (const char **strv, int strc)
8530fdc8d8SChris Lattner {
8630fdc8d8SChris Lattner     if ((strv != NULL)
8730fdc8d8SChris Lattner         && (strc > 0))
8830fdc8d8SChris Lattner     {
8930fdc8d8SChris Lattner         if (IsValid())
906611103cSGreg Clayton             m_opaque_ap->AppendList (strv, strc);
9130fdc8d8SChris Lattner         else
926611103cSGreg Clayton             m_opaque_ap.reset (new lldb_private::StringList (strv, strc));
9330fdc8d8SChris Lattner     }
9430fdc8d8SChris Lattner }
9530fdc8d8SChris Lattner 
9630fdc8d8SChris Lattner void
97*aec0c322SJohnny Chen SBStringList::AppendList (const SBStringList &strings)
9830fdc8d8SChris Lattner {
9930fdc8d8SChris Lattner     if (strings.IsValid())
10030fdc8d8SChris Lattner     {
10130fdc8d8SChris Lattner         if (! IsValid())
1026611103cSGreg Clayton             m_opaque_ap.reset (new lldb_private::StringList());
1036611103cSGreg Clayton         m_opaque_ap->AppendList (*(strings.m_opaque_ap));
10430fdc8d8SChris Lattner     }
10530fdc8d8SChris Lattner }
10630fdc8d8SChris Lattner 
10730fdc8d8SChris Lattner uint32_t
10830fdc8d8SChris Lattner SBStringList::GetSize () const
10930fdc8d8SChris Lattner {
11030fdc8d8SChris Lattner     if (IsValid())
11130fdc8d8SChris Lattner     {
1126611103cSGreg Clayton         return m_opaque_ap->GetSize();
11330fdc8d8SChris Lattner     }
11430fdc8d8SChris Lattner     return 0;
11530fdc8d8SChris Lattner }
11630fdc8d8SChris Lattner 
11730fdc8d8SChris Lattner const char *
11830fdc8d8SChris Lattner SBStringList::GetStringAtIndex (size_t idx)
11930fdc8d8SChris Lattner {
12030fdc8d8SChris Lattner     if (IsValid())
12130fdc8d8SChris Lattner     {
1226611103cSGreg Clayton         return m_opaque_ap->GetStringAtIndex (idx);
12330fdc8d8SChris Lattner     }
12430fdc8d8SChris Lattner     return NULL;
12530fdc8d8SChris Lattner }
12630fdc8d8SChris Lattner 
12730fdc8d8SChris Lattner void
12830fdc8d8SChris Lattner SBStringList::Clear ()
12930fdc8d8SChris Lattner {
13030fdc8d8SChris Lattner     if (IsValid())
13130fdc8d8SChris Lattner     {
1326611103cSGreg Clayton         m_opaque_ap->Clear();
13330fdc8d8SChris Lattner     }
13430fdc8d8SChris Lattner }
135