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" 17*da7bc7d0SGreg 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 { 33969795f1SJim Ingham LogSP 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)", 41969795f1SJim Ingham rhs.m_opaque_ap.get(), m_opaque_ap.get()); 42969795f1SJim Ingham } 43969795f1SJim Ingham } 44969795f1SJim Ingham 45969795f1SJim Ingham SBFileSpecList::~SBFileSpecList () 46969795f1SJim Ingham { 47969795f1SJim Ingham } 48969795f1SJim Ingham 49969795f1SJim Ingham const SBFileSpecList & 50969795f1SJim Ingham SBFileSpecList::operator = (const SBFileSpecList &rhs) 51969795f1SJim Ingham { 52969795f1SJim Ingham if (this != &rhs) 53969795f1SJim Ingham { 54969795f1SJim Ingham m_opaque_ap.reset (new lldb_private::FileSpecList(*(rhs.get()))); 55969795f1SJim Ingham } 56969795f1SJim Ingham return *this; 57969795f1SJim Ingham } 58969795f1SJim Ingham 59969795f1SJim Ingham uint32_t 60969795f1SJim Ingham SBFileSpecList::GetSize () const 61969795f1SJim Ingham { 62969795f1SJim Ingham return m_opaque_ap->GetSize(); 63969795f1SJim Ingham } 64969795f1SJim Ingham 65969795f1SJim Ingham void 66969795f1SJim Ingham SBFileSpecList::Append (const SBFileSpec &sb_file) 67969795f1SJim Ingham { 68969795f1SJim Ingham m_opaque_ap->Append (sb_file.ref()); 69969795f1SJim Ingham } 70969795f1SJim Ingham 71969795f1SJim Ingham bool 72969795f1SJim Ingham SBFileSpecList::AppendIfUnique (const SBFileSpec &sb_file) 73969795f1SJim Ingham { 74969795f1SJim Ingham return m_opaque_ap->AppendIfUnique (sb_file.ref()); 75969795f1SJim Ingham } 76969795f1SJim Ingham 77969795f1SJim Ingham void 78969795f1SJim Ingham SBFileSpecList::Clear() 79969795f1SJim Ingham { 80969795f1SJim Ingham m_opaque_ap->Clear(); 81969795f1SJim Ingham } 82969795f1SJim Ingham 83969795f1SJim Ingham uint32_t 8487df91b8SJim Ingham SBFileSpecList::FindFileIndex (uint32_t idx, const SBFileSpec &sb_file, bool full) 85969795f1SJim Ingham { 8687df91b8SJim Ingham return m_opaque_ap->FindFileIndex (idx, sb_file.ref(), full); 87969795f1SJim Ingham } 88969795f1SJim Ingham 89969795f1SJim Ingham const SBFileSpec 90969795f1SJim Ingham SBFileSpecList::GetFileSpecAtIndex (uint32_t idx) const 91969795f1SJim Ingham { 92969795f1SJim Ingham SBFileSpec new_spec; 93969795f1SJim Ingham new_spec.SetFileSpec(m_opaque_ap->GetFileSpecAtIndex(idx)); 94969795f1SJim Ingham return new_spec; 95969795f1SJim Ingham } 96969795f1SJim Ingham 97969795f1SJim Ingham const lldb_private::FileSpecList * 98969795f1SJim Ingham SBFileSpecList::operator->() const 99969795f1SJim Ingham { 100969795f1SJim Ingham return m_opaque_ap.get(); 101969795f1SJim Ingham } 102969795f1SJim Ingham 103969795f1SJim Ingham const lldb_private::FileSpecList * 104969795f1SJim Ingham SBFileSpecList::get() const 105969795f1SJim Ingham { 106969795f1SJim Ingham return m_opaque_ap.get(); 107969795f1SJim Ingham } 108969795f1SJim Ingham 109969795f1SJim Ingham 110969795f1SJim Ingham const lldb_private::FileSpecList & 111969795f1SJim Ingham SBFileSpecList::operator*() const 112969795f1SJim Ingham { 113969795f1SJim Ingham return *m_opaque_ap.get(); 114969795f1SJim Ingham } 115969795f1SJim Ingham 116969795f1SJim Ingham const lldb_private::FileSpecList & 117969795f1SJim Ingham SBFileSpecList::ref() const 118969795f1SJim Ingham { 119969795f1SJim Ingham return *m_opaque_ap.get(); 120969795f1SJim Ingham } 121969795f1SJim Ingham 122969795f1SJim Ingham bool 123969795f1SJim Ingham SBFileSpecList::GetDescription (SBStream &description) const 124969795f1SJim Ingham { 125*da7bc7d0SGreg Clayton Stream &strm = description.ref(); 126*da7bc7d0SGreg Clayton 127969795f1SJim Ingham if (m_opaque_ap.get()) 128969795f1SJim Ingham { 129969795f1SJim Ingham uint32_t num_files = m_opaque_ap->GetSize(); 130*da7bc7d0SGreg Clayton strm.Printf ("%d files: ", num_files); 131969795f1SJim Ingham for (uint32_t i = 0; i < num_files; i++) 132969795f1SJim Ingham { 133969795f1SJim Ingham char path[PATH_MAX]; 134969795f1SJim Ingham if (m_opaque_ap->GetFileSpecAtIndex(i).GetPath(path, sizeof(path))) 135*da7bc7d0SGreg Clayton strm.Printf ("\n %s", path); 136969795f1SJim Ingham } 137969795f1SJim Ingham } 138969795f1SJim Ingham else 139*da7bc7d0SGreg Clayton strm.PutCString ("No value"); 140969795f1SJim Ingham 141969795f1SJim Ingham return true; 142969795f1SJim Ingham } 143