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" 17da7bc7d0SGreg Clayton #include "lldb/Core/Stream.h" 18969795f1SJim Ingham #include "lldb/Host/FileSpec.h" 19969795f1SJim Ingham 20969795f1SJim Ingham using namespace lldb; 21969795f1SJim Ingham using namespace lldb_private; 22969795f1SJim Ingham 23969795f1SJim Ingham 24969795f1SJim Ingham 25969795f1SJim Ingham SBFileSpecList::SBFileSpecList () : 26969795f1SJim Ingham m_opaque_ap(new FileSpecList()) 27969795f1SJim Ingham { 28969795f1SJim Ingham } 29969795f1SJim Ingham 30969795f1SJim Ingham SBFileSpecList::SBFileSpecList (const SBFileSpecList &rhs) : 31969795f1SJim Ingham m_opaque_ap() 32969795f1SJim Ingham { 335160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 34969795f1SJim Ingham 35969795f1SJim Ingham if (rhs.m_opaque_ap.get()) 36969795f1SJim Ingham m_opaque_ap.reset (new FileSpecList (*(rhs.get()))); 37969795f1SJim Ingham 38969795f1SJim Ingham if (log) 39969795f1SJim Ingham { 40c1ef10f9SGreg Clayton log->Printf ("SBFileSpecList::SBFileSpecList (const SBFileSpecList rhs.ap=%p) => SBFileSpecList(%p)", 41*324a1036SSaleem Abdulrasool static_cast<void*>(rhs.m_opaque_ap.get()), 42*324a1036SSaleem Abdulrasool static_cast<void*>(m_opaque_ap.get())); 43969795f1SJim Ingham } 44969795f1SJim Ingham } 45969795f1SJim Ingham 46969795f1SJim Ingham SBFileSpecList::~SBFileSpecList () 47969795f1SJim Ingham { 48969795f1SJim Ingham } 49969795f1SJim Ingham 50969795f1SJim Ingham const SBFileSpecList & 51969795f1SJim Ingham SBFileSpecList::operator = (const SBFileSpecList &rhs) 52969795f1SJim Ingham { 53969795f1SJim Ingham if (this != &rhs) 54969795f1SJim Ingham { 55969795f1SJim Ingham m_opaque_ap.reset (new lldb_private::FileSpecList(*(rhs.get()))); 56969795f1SJim Ingham } 57969795f1SJim Ingham return *this; 58969795f1SJim Ingham } 59969795f1SJim Ingham 60969795f1SJim Ingham uint32_t 61969795f1SJim Ingham SBFileSpecList::GetSize () const 62969795f1SJim Ingham { 63969795f1SJim Ingham return m_opaque_ap->GetSize(); 64969795f1SJim Ingham } 65969795f1SJim Ingham 66969795f1SJim Ingham void 67969795f1SJim Ingham SBFileSpecList::Append (const SBFileSpec &sb_file) 68969795f1SJim Ingham { 69969795f1SJim Ingham m_opaque_ap->Append (sb_file.ref()); 70969795f1SJim Ingham } 71969795f1SJim Ingham 72969795f1SJim Ingham bool 73969795f1SJim Ingham SBFileSpecList::AppendIfUnique (const SBFileSpec &sb_file) 74969795f1SJim Ingham { 75969795f1SJim Ingham return m_opaque_ap->AppendIfUnique (sb_file.ref()); 76969795f1SJim Ingham } 77969795f1SJim Ingham 78969795f1SJim Ingham void 79969795f1SJim Ingham SBFileSpecList::Clear() 80969795f1SJim Ingham { 81969795f1SJim Ingham m_opaque_ap->Clear(); 82969795f1SJim Ingham } 83969795f1SJim Ingham 84969795f1SJim Ingham uint32_t 8587df91b8SJim Ingham SBFileSpecList::FindFileIndex (uint32_t idx, const SBFileSpec &sb_file, bool full) 86969795f1SJim Ingham { 8787df91b8SJim Ingham return m_opaque_ap->FindFileIndex (idx, sb_file.ref(), full); 88969795f1SJim Ingham } 89969795f1SJim Ingham 90969795f1SJim Ingham const SBFileSpec 91969795f1SJim Ingham SBFileSpecList::GetFileSpecAtIndex (uint32_t idx) const 92969795f1SJim Ingham { 93969795f1SJim Ingham SBFileSpec new_spec; 94969795f1SJim Ingham new_spec.SetFileSpec(m_opaque_ap->GetFileSpecAtIndex(idx)); 95969795f1SJim Ingham return new_spec; 96969795f1SJim Ingham } 97969795f1SJim Ingham 98969795f1SJim Ingham const lldb_private::FileSpecList * 99969795f1SJim Ingham SBFileSpecList::operator->() const 100969795f1SJim Ingham { 101969795f1SJim Ingham return m_opaque_ap.get(); 102969795f1SJim Ingham } 103969795f1SJim Ingham 104969795f1SJim Ingham const lldb_private::FileSpecList * 105969795f1SJim Ingham SBFileSpecList::get() const 106969795f1SJim Ingham { 107969795f1SJim Ingham return m_opaque_ap.get(); 108969795f1SJim Ingham } 109969795f1SJim Ingham 110969795f1SJim Ingham 111969795f1SJim Ingham const lldb_private::FileSpecList & 112969795f1SJim Ingham SBFileSpecList::operator*() const 113969795f1SJim Ingham { 114969795f1SJim Ingham return *m_opaque_ap.get(); 115969795f1SJim Ingham } 116969795f1SJim Ingham 117969795f1SJim Ingham const lldb_private::FileSpecList & 118969795f1SJim Ingham SBFileSpecList::ref() const 119969795f1SJim Ingham { 120969795f1SJim Ingham return *m_opaque_ap.get(); 121969795f1SJim Ingham } 122969795f1SJim Ingham 123969795f1SJim Ingham bool 124969795f1SJim Ingham SBFileSpecList::GetDescription (SBStream &description) const 125969795f1SJim Ingham { 126da7bc7d0SGreg Clayton Stream &strm = description.ref(); 127da7bc7d0SGreg Clayton 128969795f1SJim Ingham if (m_opaque_ap.get()) 129969795f1SJim Ingham { 130969795f1SJim Ingham uint32_t num_files = m_opaque_ap->GetSize(); 131da7bc7d0SGreg Clayton strm.Printf ("%d files: ", num_files); 132969795f1SJim Ingham for (uint32_t i = 0; i < num_files; i++) 133969795f1SJim Ingham { 134969795f1SJim Ingham char path[PATH_MAX]; 135969795f1SJim Ingham if (m_opaque_ap->GetFileSpecAtIndex(i).GetPath(path, sizeof(path))) 136da7bc7d0SGreg Clayton strm.Printf ("\n %s", path); 137969795f1SJim Ingham } 138969795f1SJim Ingham } 139969795f1SJim Ingham else 140da7bc7d0SGreg Clayton strm.PutCString ("No value"); 141969795f1SJim Ingham 142969795f1SJim Ingham return true; 143969795f1SJim Ingham } 144