1969795f1SJim Ingham //===-- SBFileSpecListList.cpp ------------------------------------------*- C++ -*-===// 2969795f1SJim Ingham // 3969795f1SJim Ingham // The LLVM Compiler Infrastructure 4969795f1SJim Ingham // 5969795f1SJim Ingham // This file is distributed under the University of Illinois Open Source 6969795f1SJim Ingham // License. See LICENSE.TXT for details. 7969795f1SJim Ingham // 8969795f1SJim Ingham //===----------------------------------------------------------------------===// 9969795f1SJim Ingham 10969795f1SJim Ingham #include <limits.h> 11969795f1SJim Ingham 12969795f1SJim Ingham #include "lldb/API/SBFileSpec.h" 13969795f1SJim Ingham #include "lldb/API/SBFileSpecList.h" 14969795f1SJim Ingham #include "lldb/API/SBStream.h" 15969795f1SJim Ingham #include "lldb/Core/FileSpecList.h" 16969795f1SJim Ingham #include "lldb/Core/Log.h" 17969795f1SJim Ingham #include "lldb/Host/FileSpec.h" 18969795f1SJim Ingham 19969795f1SJim Ingham using namespace lldb; 20969795f1SJim Ingham using namespace lldb_private; 21969795f1SJim Ingham 22969795f1SJim Ingham 23969795f1SJim Ingham 24969795f1SJim Ingham SBFileSpecList::SBFileSpecList () : 25969795f1SJim Ingham m_opaque_ap(new FileSpecList()) 26969795f1SJim Ingham { 27969795f1SJim Ingham } 28969795f1SJim Ingham 29969795f1SJim Ingham SBFileSpecList::SBFileSpecList (const SBFileSpecList &rhs) : 30969795f1SJim Ingham m_opaque_ap() 31969795f1SJim Ingham { 32969795f1SJim Ingham LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 33969795f1SJim Ingham 34969795f1SJim Ingham if (rhs.m_opaque_ap.get()) 35969795f1SJim Ingham m_opaque_ap.reset (new FileSpecList (*(rhs.get()))); 36969795f1SJim Ingham 37969795f1SJim Ingham if (log) 38969795f1SJim Ingham { 39c1ef10f9SGreg Clayton log->Printf ("SBFileSpecList::SBFileSpecList (const SBFileSpecList rhs.ap=%p) => SBFileSpecList(%p)", 40969795f1SJim Ingham rhs.m_opaque_ap.get(), m_opaque_ap.get()); 41969795f1SJim Ingham } 42969795f1SJim Ingham } 43969795f1SJim Ingham 44969795f1SJim Ingham SBFileSpecList::~SBFileSpecList () 45969795f1SJim Ingham { 46969795f1SJim Ingham } 47969795f1SJim Ingham 48969795f1SJim Ingham const SBFileSpecList & 49969795f1SJim Ingham SBFileSpecList::operator = (const SBFileSpecList &rhs) 50969795f1SJim Ingham { 51969795f1SJim Ingham if (this != &rhs) 52969795f1SJim Ingham { 53969795f1SJim Ingham m_opaque_ap.reset (new lldb_private::FileSpecList(*(rhs.get()))); 54969795f1SJim Ingham } 55969795f1SJim Ingham return *this; 56969795f1SJim Ingham } 57969795f1SJim Ingham 58969795f1SJim Ingham uint32_t 59969795f1SJim Ingham SBFileSpecList::GetSize () const 60969795f1SJim Ingham { 61969795f1SJim Ingham return m_opaque_ap->GetSize(); 62969795f1SJim Ingham } 63969795f1SJim Ingham 64969795f1SJim Ingham void 65969795f1SJim Ingham SBFileSpecList::Append (const SBFileSpec &sb_file) 66969795f1SJim Ingham { 67969795f1SJim Ingham m_opaque_ap->Append (sb_file.ref()); 68969795f1SJim Ingham } 69969795f1SJim Ingham 70969795f1SJim Ingham bool 71969795f1SJim Ingham SBFileSpecList::AppendIfUnique (const SBFileSpec &sb_file) 72969795f1SJim Ingham { 73969795f1SJim Ingham return m_opaque_ap->AppendIfUnique (sb_file.ref()); 74969795f1SJim Ingham } 75969795f1SJim Ingham 76969795f1SJim Ingham void 77969795f1SJim Ingham SBFileSpecList::Clear() 78969795f1SJim Ingham { 79969795f1SJim Ingham m_opaque_ap->Clear(); 80969795f1SJim Ingham } 81969795f1SJim Ingham 82969795f1SJim Ingham uint32_t 83*87df91b8SJim Ingham SBFileSpecList::FindFileIndex (uint32_t idx, const SBFileSpec &sb_file, bool full) 84969795f1SJim Ingham { 85*87df91b8SJim Ingham return m_opaque_ap->FindFileIndex (idx, sb_file.ref(), full); 86969795f1SJim Ingham } 87969795f1SJim Ingham 88969795f1SJim Ingham const SBFileSpec 89969795f1SJim Ingham SBFileSpecList::GetFileSpecAtIndex (uint32_t idx) const 90969795f1SJim Ingham { 91969795f1SJim Ingham SBFileSpec new_spec; 92969795f1SJim Ingham new_spec.SetFileSpec(m_opaque_ap->GetFileSpecAtIndex(idx)); 93969795f1SJim Ingham return new_spec; 94969795f1SJim Ingham } 95969795f1SJim Ingham 96969795f1SJim Ingham const lldb_private::FileSpecList * 97969795f1SJim Ingham SBFileSpecList::operator->() const 98969795f1SJim Ingham { 99969795f1SJim Ingham return m_opaque_ap.get(); 100969795f1SJim Ingham } 101969795f1SJim Ingham 102969795f1SJim Ingham const lldb_private::FileSpecList * 103969795f1SJim Ingham SBFileSpecList::get() const 104969795f1SJim Ingham { 105969795f1SJim Ingham return m_opaque_ap.get(); 106969795f1SJim Ingham } 107969795f1SJim Ingham 108969795f1SJim Ingham 109969795f1SJim Ingham const lldb_private::FileSpecList & 110969795f1SJim Ingham SBFileSpecList::operator*() const 111969795f1SJim Ingham { 112969795f1SJim Ingham return *m_opaque_ap.get(); 113969795f1SJim Ingham } 114969795f1SJim Ingham 115969795f1SJim Ingham const lldb_private::FileSpecList & 116969795f1SJim Ingham SBFileSpecList::ref() const 117969795f1SJim Ingham { 118969795f1SJim Ingham return *m_opaque_ap.get(); 119969795f1SJim Ingham } 120969795f1SJim Ingham 121969795f1SJim Ingham bool 122969795f1SJim Ingham SBFileSpecList::GetDescription (SBStream &description) const 123969795f1SJim Ingham { 124969795f1SJim Ingham if (m_opaque_ap.get()) 125969795f1SJim Ingham { 126969795f1SJim Ingham uint32_t num_files = m_opaque_ap->GetSize(); 127969795f1SJim Ingham description.Printf ("%d files: ", num_files); 128969795f1SJim Ingham for (uint32_t i = 0; i < num_files; i++) 129969795f1SJim Ingham { 130969795f1SJim Ingham char path[PATH_MAX]; 131969795f1SJim Ingham if (m_opaque_ap->GetFileSpecAtIndex(i).GetPath(path, sizeof(path))) 132969795f1SJim Ingham description.Printf ("\n %s", path); 133969795f1SJim Ingham } 134969795f1SJim Ingham } 135969795f1SJim Ingham else 136969795f1SJim Ingham description.Printf ("No value"); 137969795f1SJim Ingham 138969795f1SJim Ingham return true; 139969795f1SJim Ingham } 140