Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/lldb/source/API/SBFileSpecList.cpp
39587 views
1
//===-- SBFileSpecList.cpp ------------------------------------------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#include "lldb/API/SBFileSpecList.h"
10
#include "Utils.h"
11
#include "lldb/API/SBFileSpec.h"
12
#include "lldb/API/SBStream.h"
13
#include "lldb/Host/PosixApi.h"
14
#include "lldb/Utility/FileSpec.h"
15
#include "lldb/Utility/FileSpecList.h"
16
#include "lldb/Utility/Instrumentation.h"
17
#include "lldb/Utility/Stream.h"
18
19
#include <climits>
20
21
using namespace lldb;
22
using namespace lldb_private;
23
24
SBFileSpecList::SBFileSpecList() : m_opaque_up(new FileSpecList()) {
25
LLDB_INSTRUMENT_VA(this);
26
}
27
28
SBFileSpecList::SBFileSpecList(const SBFileSpecList &rhs) {
29
LLDB_INSTRUMENT_VA(this, rhs);
30
31
m_opaque_up = clone(rhs.m_opaque_up);
32
}
33
34
SBFileSpecList::~SBFileSpecList() = default;
35
36
const SBFileSpecList &SBFileSpecList::operator=(const SBFileSpecList &rhs) {
37
LLDB_INSTRUMENT_VA(this, rhs);
38
39
if (this != &rhs)
40
m_opaque_up = clone(rhs.m_opaque_up);
41
return *this;
42
}
43
44
uint32_t SBFileSpecList::GetSize() const {
45
LLDB_INSTRUMENT_VA(this);
46
47
return m_opaque_up->GetSize();
48
}
49
50
void SBFileSpecList::Append(const SBFileSpec &sb_file) {
51
LLDB_INSTRUMENT_VA(this, sb_file);
52
53
m_opaque_up->Append(sb_file.ref());
54
}
55
56
bool SBFileSpecList::AppendIfUnique(const SBFileSpec &sb_file) {
57
LLDB_INSTRUMENT_VA(this, sb_file);
58
59
return m_opaque_up->AppendIfUnique(sb_file.ref());
60
}
61
62
void SBFileSpecList::Clear() {
63
LLDB_INSTRUMENT_VA(this);
64
65
m_opaque_up->Clear();
66
}
67
68
uint32_t SBFileSpecList::FindFileIndex(uint32_t idx, const SBFileSpec &sb_file,
69
bool full) {
70
LLDB_INSTRUMENT_VA(this, idx, sb_file, full);
71
72
return m_opaque_up->FindFileIndex(idx, sb_file.ref(), full);
73
}
74
75
const SBFileSpec SBFileSpecList::GetFileSpecAtIndex(uint32_t idx) const {
76
LLDB_INSTRUMENT_VA(this, idx);
77
78
SBFileSpec new_spec;
79
new_spec.SetFileSpec(m_opaque_up->GetFileSpecAtIndex(idx));
80
return new_spec;
81
}
82
83
const lldb_private::FileSpecList *SBFileSpecList::operator->() const {
84
return m_opaque_up.get();
85
}
86
87
const lldb_private::FileSpecList *SBFileSpecList::get() const {
88
return m_opaque_up.get();
89
}
90
91
const lldb_private::FileSpecList &SBFileSpecList::operator*() const {
92
return *m_opaque_up;
93
}
94
95
const lldb_private::FileSpecList &SBFileSpecList::ref() const {
96
return *m_opaque_up;
97
}
98
99
bool SBFileSpecList::GetDescription(SBStream &description) const {
100
LLDB_INSTRUMENT_VA(this, description);
101
102
Stream &strm = description.ref();
103
104
if (m_opaque_up) {
105
uint32_t num_files = m_opaque_up->GetSize();
106
strm.Printf("%d files: ", num_files);
107
for (uint32_t i = 0; i < num_files; i++) {
108
char path[PATH_MAX];
109
if (m_opaque_up->GetFileSpecAtIndex(i).GetPath(path, sizeof(path)))
110
strm.Printf("\n %s", path);
111
}
112
} else
113
strm.PutCString("No value");
114
115
return true;
116
}
117
118