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