SBFileSpecList.cpp revision 314564
188800Skbyanc//===-- SBFileSpecList.cpp --------------------------------------*- C++ -*-===// 211498Sphk// 388800Skbyanc// The LLVM Compiler Infrastructure 419192Sphk// 519192Sphk// This file is distributed under the University of Illinois Open Source 6139103Sru// License. See LICENSE.TXT for details. 7219511Sbrucec// 811498Sphk//===----------------------------------------------------------------------===// 919192Sphk 1011498Sphk#include <limits.h> 1119192Sphk 1219192Sphk#include "lldb/API/SBFileSpec.h" 1319192Sphk#include "lldb/API/SBFileSpecList.h" 1419192Sphk#include "lldb/API/SBStream.h" 1511498Sphk#include "lldb/Core/FileSpecList.h" 1611498Sphk#include "lldb/Core/Log.h" 17#include "lldb/Core/Stream.h" 18#include "lldb/Host/FileSpec.h" 19 20using namespace lldb; 21using namespace lldb_private; 22 23SBFileSpecList::SBFileSpecList() : m_opaque_ap(new FileSpecList()) {} 24 25SBFileSpecList::SBFileSpecList(const SBFileSpecList &rhs) : m_opaque_ap() { 26 Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); 27 28 if (rhs.m_opaque_ap.get()) 29 m_opaque_ap.reset(new FileSpecList(*(rhs.get()))); 30 31 if (log) { 32 log->Printf("SBFileSpecList::SBFileSpecList (const SBFileSpecList " 33 "rhs.ap=%p) => SBFileSpecList(%p)", 34 static_cast<void *>(rhs.m_opaque_ap.get()), 35 static_cast<void *>(m_opaque_ap.get())); 36 } 37} 38 39SBFileSpecList::~SBFileSpecList() {} 40 41const SBFileSpecList &SBFileSpecList::operator=(const SBFileSpecList &rhs) { 42 if (this != &rhs) { 43 m_opaque_ap.reset(new lldb_private::FileSpecList(*(rhs.get()))); 44 } 45 return *this; 46} 47 48uint32_t SBFileSpecList::GetSize() const { return m_opaque_ap->GetSize(); } 49 50void SBFileSpecList::Append(const SBFileSpec &sb_file) { 51 m_opaque_ap->Append(sb_file.ref()); 52} 53 54bool SBFileSpecList::AppendIfUnique(const SBFileSpec &sb_file) { 55 return m_opaque_ap->AppendIfUnique(sb_file.ref()); 56} 57 58void SBFileSpecList::Clear() { m_opaque_ap->Clear(); } 59 60uint32_t SBFileSpecList::FindFileIndex(uint32_t idx, const SBFileSpec &sb_file, 61 bool full) { 62 return m_opaque_ap->FindFileIndex(idx, sb_file.ref(), full); 63} 64 65const SBFileSpec SBFileSpecList::GetFileSpecAtIndex(uint32_t idx) const { 66 SBFileSpec new_spec; 67 new_spec.SetFileSpec(m_opaque_ap->GetFileSpecAtIndex(idx)); 68 return new_spec; 69} 70 71const lldb_private::FileSpecList *SBFileSpecList::operator->() const { 72 return m_opaque_ap.get(); 73} 74 75const lldb_private::FileSpecList *SBFileSpecList::get() const { 76 return m_opaque_ap.get(); 77} 78 79const lldb_private::FileSpecList &SBFileSpecList::operator*() const { 80 return *m_opaque_ap.get(); 81} 82 83const lldb_private::FileSpecList &SBFileSpecList::ref() const { 84 return *m_opaque_ap.get(); 85} 86 87bool SBFileSpecList::GetDescription(SBStream &description) const { 88 Stream &strm = description.ref(); 89 90 if (m_opaque_ap.get()) { 91 uint32_t num_files = m_opaque_ap->GetSize(); 92 strm.Printf("%d files: ", num_files); 93 for (uint32_t i = 0; i < num_files; i++) { 94 char path[PATH_MAX]; 95 if (m_opaque_ap->GetFileSpecAtIndex(i).GetPath(path, sizeof(path))) 96 strm.Printf("\n %s", path); 97 } 98 } else 99 strm.PutCString("No value"); 100 101 return true; 102} 103