1 //===-- SBFileSpecList.h --------------------------------------------*- C++
2 //-*-===//
3 //
4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // See https://llvm.org/LICENSE.txt for license information.
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef LLDB_SBFileSpecList_h_
11 #define LLDB_SBFileSpecList_h_
12 
13 #include "lldb/API/SBDefines.h"
14 
15 namespace lldb {
16 
17 class LLDB_API SBFileSpecList {
18 public:
19   SBFileSpecList();
20 
21   SBFileSpecList(const lldb::SBFileSpecList &rhs);
22 
23   ~SBFileSpecList();
24 
25   const SBFileSpecList &operator=(const lldb::SBFileSpecList &rhs);
26 
27   uint32_t GetSize() const;
28 
29   bool GetDescription(SBStream &description) const;
30 
31   void Append(const SBFileSpec &sb_file);
32 
33   bool AppendIfUnique(const SBFileSpec &sb_file);
34 
35   void Clear();
36 
37   uint32_t FindFileIndex(uint32_t idx, const SBFileSpec &sb_file, bool full);
38 
39   const SBFileSpec GetFileSpecAtIndex(uint32_t idx) const;
40 
41 private:
42   friend class SBTarget;
43 
44   const lldb_private::FileSpecList *operator->() const;
45 
46   const lldb_private::FileSpecList *get() const;
47 
48   const lldb_private::FileSpecList &operator*() const;
49 
50   const lldb_private::FileSpecList &ref() const;
51 
52   std::unique_ptr<lldb_private::FileSpecList> m_opaque_up;
53 };
54 
55 } // namespace lldb
56 
57 #endif // LLDB_SBFileSpecList_h_
58