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