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 const SBStringList & 3830fdc8d8SChris Lattner SBStringList::operator = (const SBStringList &rhs) 3930fdc8d8SChris Lattner { 40efabb123SGreg Clayton if (this != &rhs) 41efabb123SGreg Clayton { 4230fdc8d8SChris Lattner if (rhs.IsValid()) 436611103cSGreg Clayton m_opaque_ap.reset(new lldb_private::StringList(*rhs)); 44efabb123SGreg Clayton else 45efabb123SGreg Clayton m_opaque_ap.reset(); 46efabb123SGreg Clayton } 4730fdc8d8SChris Lattner return *this; 4830fdc8d8SChris Lattner } 4930fdc8d8SChris Lattner 50efabb123SGreg Clayton SBStringList::~SBStringList () 51efabb123SGreg Clayton { 52efabb123SGreg Clayton } 53efabb123SGreg Clayton 5430fdc8d8SChris Lattner const lldb_private::StringList * 5530fdc8d8SChris Lattner SBStringList::operator->() const 5630fdc8d8SChris Lattner { 576611103cSGreg Clayton return m_opaque_ap.get(); 5830fdc8d8SChris Lattner } 5930fdc8d8SChris Lattner 6030fdc8d8SChris Lattner const lldb_private::StringList & 6130fdc8d8SChris Lattner SBStringList::operator*() const 6230fdc8d8SChris Lattner { 636611103cSGreg Clayton return *m_opaque_ap; 6430fdc8d8SChris Lattner } 6530fdc8d8SChris Lattner 6630fdc8d8SChris Lattner bool 6730fdc8d8SChris Lattner SBStringList::IsValid() const 6830fdc8d8SChris Lattner { 696611103cSGreg Clayton return (m_opaque_ap.get() != NULL); 7030fdc8d8SChris Lattner } 7130fdc8d8SChris Lattner 7230fdc8d8SChris Lattner void 7330fdc8d8SChris Lattner SBStringList::AppendString (const char *str) 7430fdc8d8SChris Lattner { 7530fdc8d8SChris Lattner if (str != NULL) 7630fdc8d8SChris Lattner { 7730fdc8d8SChris Lattner if (IsValid()) 786611103cSGreg Clayton m_opaque_ap->AppendString (str); 7930fdc8d8SChris Lattner else 806611103cSGreg Clayton m_opaque_ap.reset (new lldb_private::StringList (str)); 8130fdc8d8SChris Lattner } 8230fdc8d8SChris Lattner 8330fdc8d8SChris Lattner } 8430fdc8d8SChris Lattner 8530fdc8d8SChris Lattner void 8630fdc8d8SChris Lattner SBStringList::AppendList (const char **strv, int strc) 8730fdc8d8SChris Lattner { 8830fdc8d8SChris Lattner if ((strv != NULL) 8930fdc8d8SChris Lattner && (strc > 0)) 9030fdc8d8SChris Lattner { 9130fdc8d8SChris Lattner if (IsValid()) 926611103cSGreg Clayton m_opaque_ap->AppendList (strv, strc); 9330fdc8d8SChris Lattner else 946611103cSGreg Clayton m_opaque_ap.reset (new lldb_private::StringList (strv, strc)); 9530fdc8d8SChris Lattner } 9630fdc8d8SChris Lattner } 9730fdc8d8SChris Lattner 9830fdc8d8SChris Lattner void 99aec0c322SJohnny Chen SBStringList::AppendList (const SBStringList &strings) 10030fdc8d8SChris Lattner { 10130fdc8d8SChris Lattner if (strings.IsValid()) 10230fdc8d8SChris Lattner { 10330fdc8d8SChris Lattner if (! IsValid()) 1046611103cSGreg Clayton m_opaque_ap.reset (new lldb_private::StringList()); 1056611103cSGreg Clayton m_opaque_ap->AppendList (*(strings.m_opaque_ap)); 10630fdc8d8SChris Lattner } 10730fdc8d8SChris Lattner } 10830fdc8d8SChris Lattner 10930fdc8d8SChris Lattner uint32_t 11030fdc8d8SChris Lattner SBStringList::GetSize () const 11130fdc8d8SChris Lattner { 11230fdc8d8SChris Lattner if (IsValid()) 11330fdc8d8SChris Lattner { 1146611103cSGreg Clayton return m_opaque_ap->GetSize(); 11530fdc8d8SChris Lattner } 11630fdc8d8SChris Lattner return 0; 11730fdc8d8SChris Lattner } 11830fdc8d8SChris Lattner 11930fdc8d8SChris Lattner const char * 12030fdc8d8SChris Lattner SBStringList::GetStringAtIndex (size_t idx) 12130fdc8d8SChris Lattner { 12230fdc8d8SChris Lattner if (IsValid()) 12330fdc8d8SChris Lattner { 1246611103cSGreg Clayton return m_opaque_ap->GetStringAtIndex (idx); 12530fdc8d8SChris Lattner } 12630fdc8d8SChris Lattner return NULL; 12730fdc8d8SChris Lattner } 12830fdc8d8SChris Lattner 129*76bb8d67SJim Ingham const char * 130*76bb8d67SJim Ingham SBStringList::GetStringAtIndex (size_t idx) const 131*76bb8d67SJim Ingham { 132*76bb8d67SJim Ingham if (IsValid()) 133*76bb8d67SJim Ingham { 134*76bb8d67SJim Ingham return m_opaque_ap->GetStringAtIndex (idx); 135*76bb8d67SJim Ingham } 136*76bb8d67SJim Ingham return NULL; 137*76bb8d67SJim Ingham } 138*76bb8d67SJim Ingham 13930fdc8d8SChris Lattner void 14030fdc8d8SChris Lattner SBStringList::Clear () 14130fdc8d8SChris Lattner { 14230fdc8d8SChris Lattner if (IsValid()) 14330fdc8d8SChris Lattner { 1446611103cSGreg Clayton m_opaque_ap->Clear(); 14530fdc8d8SChris Lattner } 14630fdc8d8SChris Lattner } 147