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