SBFileSpecList.cpp revision 344779
1//===-- SBFileSpecList.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 <limits.h> 11 12#include "lldb/API/SBFileSpec.h" 13#include "lldb/API/SBFileSpecList.h" 14#include "lldb/API/SBStream.h" 15#include "lldb/Core/FileSpecList.h" 16#include "lldb/Host/PosixApi.h" 17#include "lldb/Utility/FileSpec.h" 18#include "lldb/Utility/Log.h" 19#include "lldb/Utility/Stream.h" 20 21using namespace lldb; 22using namespace lldb_private; 23 24SBFileSpecList::SBFileSpecList() : m_opaque_ap(new FileSpecList()) {} 25 26SBFileSpecList::SBFileSpecList(const SBFileSpecList &rhs) : m_opaque_ap() { 27 Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); 28 29 if (rhs.m_opaque_ap) 30 m_opaque_ap.reset(new FileSpecList(*(rhs.get()))); 31 32 if (log) { 33 log->Printf("SBFileSpecList::SBFileSpecList (const SBFileSpecList " 34 "rhs.ap=%p) => SBFileSpecList(%p)", 35 static_cast<void *>(rhs.m_opaque_ap.get()), 36 static_cast<void *>(m_opaque_ap.get())); 37 } 38} 39 40SBFileSpecList::~SBFileSpecList() {} 41 42const SBFileSpecList &SBFileSpecList::operator=(const SBFileSpecList &rhs) { 43 if (this != &rhs) { 44 m_opaque_ap.reset(new lldb_private::FileSpecList(*(rhs.get()))); 45 } 46 return *this; 47} 48 49uint32_t SBFileSpecList::GetSize() const { return m_opaque_ap->GetSize(); } 50 51void SBFileSpecList::Append(const SBFileSpec &sb_file) { 52 m_opaque_ap->Append(sb_file.ref()); 53} 54 55bool SBFileSpecList::AppendIfUnique(const SBFileSpec &sb_file) { 56 return m_opaque_ap->AppendIfUnique(sb_file.ref()); 57} 58 59void SBFileSpecList::Clear() { m_opaque_ap->Clear(); } 60 61uint32_t SBFileSpecList::FindFileIndex(uint32_t idx, const SBFileSpec &sb_file, 62 bool full) { 63 return m_opaque_ap->FindFileIndex(idx, sb_file.ref(), full); 64} 65 66const SBFileSpec SBFileSpecList::GetFileSpecAtIndex(uint32_t idx) const { 67 SBFileSpec new_spec; 68 new_spec.SetFileSpec(m_opaque_ap->GetFileSpecAtIndex(idx)); 69 return new_spec; 70} 71 72const lldb_private::FileSpecList *SBFileSpecList::operator->() const { 73 return m_opaque_ap.get(); 74} 75 76const lldb_private::FileSpecList *SBFileSpecList::get() const { 77 return m_opaque_ap.get(); 78} 79 80const lldb_private::FileSpecList &SBFileSpecList::operator*() const { 81 return *m_opaque_ap; 82} 83 84const lldb_private::FileSpecList &SBFileSpecList::ref() const { 85 return *m_opaque_ap; 86} 87 88bool SBFileSpecList::GetDescription(SBStream &description) const { 89 Stream &strm = description.ref(); 90 91 if (m_opaque_ap) { 92 uint32_t num_files = m_opaque_ap->GetSize(); 93 strm.Printf("%d files: ", num_files); 94 for (uint32_t i = 0; i < num_files; i++) { 95 char path[PATH_MAX]; 96 if (m_opaque_ap->GetFileSpecAtIndex(i).GetPath(path, sizeof(path))) 97 strm.Printf("\n %s", path); 98 } 99 } else 100 strm.PutCString("No value"); 101 102 return true; 103} 104