1*30fdc8d8SChris Lattner //===-- SBFileSpec.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/SBFileSpec.h" 11*30fdc8d8SChris Lattner #include "lldb/Core/FileSpec.h" 12*30fdc8d8SChris Lattner 13*30fdc8d8SChris Lattner using namespace lldb; 14*30fdc8d8SChris Lattner using namespace lldb_private; 15*30fdc8d8SChris Lattner 16*30fdc8d8SChris Lattner 17*30fdc8d8SChris Lattner 18*30fdc8d8SChris Lattner SBFileSpec::SBFileSpec () : 19*30fdc8d8SChris Lattner m_lldb_object_ap() 20*30fdc8d8SChris Lattner { 21*30fdc8d8SChris Lattner } 22*30fdc8d8SChris Lattner 23*30fdc8d8SChris Lattner SBFileSpec::SBFileSpec (const SBFileSpec &rhs) : 24*30fdc8d8SChris Lattner m_lldb_object_ap() 25*30fdc8d8SChris Lattner { 26*30fdc8d8SChris Lattner if (rhs.m_lldb_object_ap.get()) 27*30fdc8d8SChris Lattner m_lldb_object_ap.reset (new FileSpec (*m_lldb_object_ap)); 28*30fdc8d8SChris Lattner } 29*30fdc8d8SChris Lattner 30*30fdc8d8SChris Lattner SBFileSpec::SBFileSpec (const char *path) : 31*30fdc8d8SChris Lattner m_lldb_object_ap(new FileSpec (path)) 32*30fdc8d8SChris Lattner { 33*30fdc8d8SChris Lattner } 34*30fdc8d8SChris Lattner 35*30fdc8d8SChris Lattner SBFileSpec::~SBFileSpec () 36*30fdc8d8SChris Lattner { 37*30fdc8d8SChris Lattner } 38*30fdc8d8SChris Lattner 39*30fdc8d8SChris Lattner const SBFileSpec & 40*30fdc8d8SChris Lattner SBFileSpec::operator = (const SBFileSpec &rhs) 41*30fdc8d8SChris Lattner { 42*30fdc8d8SChris Lattner if (this != &rhs) 43*30fdc8d8SChris Lattner { 44*30fdc8d8SChris Lattner if (rhs.IsValid()) 45*30fdc8d8SChris Lattner m_lldb_object_ap.reset (new lldb_private::FileSpec(*rhs.m_lldb_object_ap.get())); 46*30fdc8d8SChris Lattner } 47*30fdc8d8SChris Lattner return *this; 48*30fdc8d8SChris Lattner } 49*30fdc8d8SChris Lattner 50*30fdc8d8SChris Lattner bool 51*30fdc8d8SChris Lattner SBFileSpec::IsValid() const 52*30fdc8d8SChris Lattner { 53*30fdc8d8SChris Lattner return m_lldb_object_ap.get() != NULL; 54*30fdc8d8SChris Lattner } 55*30fdc8d8SChris Lattner 56*30fdc8d8SChris Lattner bool 57*30fdc8d8SChris Lattner SBFileSpec::Exists () const 58*30fdc8d8SChris Lattner { 59*30fdc8d8SChris Lattner if (m_lldb_object_ap.get()) 60*30fdc8d8SChris Lattner return m_lldb_object_ap->Exists(); 61*30fdc8d8SChris Lattner return false; 62*30fdc8d8SChris Lattner } 63*30fdc8d8SChris Lattner 64*30fdc8d8SChris Lattner 65*30fdc8d8SChris Lattner int 66*30fdc8d8SChris Lattner SBFileSpec::ResolvePath (const char *src_path, char *dst_path, size_t dst_len) 67*30fdc8d8SChris Lattner { 68*30fdc8d8SChris Lattner return lldb_private::FileSpec::Resolve (src_path, dst_path, dst_len); 69*30fdc8d8SChris Lattner } 70*30fdc8d8SChris Lattner 71*30fdc8d8SChris Lattner const char * 72*30fdc8d8SChris Lattner SBFileSpec::GetFileName() const 73*30fdc8d8SChris Lattner { 74*30fdc8d8SChris Lattner if (m_lldb_object_ap.get()) 75*30fdc8d8SChris Lattner return m_lldb_object_ap->GetFilename().AsCString(); 76*30fdc8d8SChris Lattner return NULL; 77*30fdc8d8SChris Lattner } 78*30fdc8d8SChris Lattner 79*30fdc8d8SChris Lattner const char * 80*30fdc8d8SChris Lattner SBFileSpec::GetDirectory() const 81*30fdc8d8SChris Lattner { 82*30fdc8d8SChris Lattner if (m_lldb_object_ap.get()) 83*30fdc8d8SChris Lattner return m_lldb_object_ap->GetDirectory().AsCString(); 84*30fdc8d8SChris Lattner return NULL; 85*30fdc8d8SChris Lattner } 86*30fdc8d8SChris Lattner 87*30fdc8d8SChris Lattner uint32_t 88*30fdc8d8SChris Lattner SBFileSpec::GetPath (char *dst_path, size_t dst_len) const 89*30fdc8d8SChris Lattner { 90*30fdc8d8SChris Lattner if (m_lldb_object_ap.get()) 91*30fdc8d8SChris Lattner return m_lldb_object_ap->GetPath (dst_path, dst_len); 92*30fdc8d8SChris Lattner 93*30fdc8d8SChris Lattner if (dst_path && dst_len) 94*30fdc8d8SChris Lattner *dst_path = '\0'; 95*30fdc8d8SChris Lattner return 0; 96*30fdc8d8SChris Lattner } 97*30fdc8d8SChris Lattner 98*30fdc8d8SChris Lattner 99*30fdc8d8SChris Lattner const lldb_private::FileSpec * 100*30fdc8d8SChris Lattner SBFileSpec::operator->() const 101*30fdc8d8SChris Lattner { 102*30fdc8d8SChris Lattner return m_lldb_object_ap.get(); 103*30fdc8d8SChris Lattner } 104*30fdc8d8SChris Lattner 105*30fdc8d8SChris Lattner const lldb_private::FileSpec * 106*30fdc8d8SChris Lattner SBFileSpec::get() const 107*30fdc8d8SChris Lattner { 108*30fdc8d8SChris Lattner return m_lldb_object_ap.get(); 109*30fdc8d8SChris Lattner } 110*30fdc8d8SChris Lattner 111*30fdc8d8SChris Lattner 112*30fdc8d8SChris Lattner const lldb_private::FileSpec & 113*30fdc8d8SChris Lattner SBFileSpec::operator*() const 114*30fdc8d8SChris Lattner { 115*30fdc8d8SChris Lattner return *m_lldb_object_ap.get(); 116*30fdc8d8SChris Lattner } 117*30fdc8d8SChris Lattner 118*30fdc8d8SChris Lattner const lldb_private::FileSpec & 119*30fdc8d8SChris Lattner SBFileSpec::ref() const 120*30fdc8d8SChris Lattner { 121*30fdc8d8SChris Lattner return *m_lldb_object_ap.get(); 122*30fdc8d8SChris Lattner } 123*30fdc8d8SChris Lattner 124*30fdc8d8SChris Lattner 125*30fdc8d8SChris Lattner void 126*30fdc8d8SChris Lattner SBFileSpec::SetFileSpec (const lldb_private::FileSpec& fs) 127*30fdc8d8SChris Lattner { 128*30fdc8d8SChris Lattner if (m_lldb_object_ap.get()) 129*30fdc8d8SChris Lattner *m_lldb_object_ap = fs; 130*30fdc8d8SChris Lattner else 131*30fdc8d8SChris Lattner m_lldb_object_ap.reset (new FileSpec (fs)); 132*30fdc8d8SChris Lattner } 133*30fdc8d8SChris Lattner 134