1//===-- SBFileSpecList.h --------------------------------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLDB_SBFileSpecList_h_
11#define LLDB_SBFileSpecList_h_
12
13#include "lldb/API/SBDefines.h"
14
15namespace lldb {
16
17class SBFileSpecList
18{
19public:
20    SBFileSpecList ();
21
22    SBFileSpecList (const lldb::SBFileSpecList &rhs);
23
24    ~SBFileSpecList ();
25
26    const SBFileSpecList &
27    operator = (const lldb::SBFileSpecList &rhs);
28
29    uint32_t
30    GetSize () const;
31
32    bool
33    GetDescription (SBStream &description) const;
34
35    void
36    Append (const SBFileSpec &sb_file);
37
38    bool
39    AppendIfUnique (const SBFileSpec &sb_file);
40
41    void
42    Clear();
43
44    uint32_t
45    FindFileIndex (uint32_t idx, const SBFileSpec &sb_file, bool full);
46
47    const SBFileSpec
48    GetFileSpecAtIndex (uint32_t idx) const;
49
50private:
51
52friend class SBTarget;
53
54    const lldb_private::FileSpecList *
55    operator->() const;
56
57    const lldb_private::FileSpecList *
58    get() const;
59
60    const lldb_private::FileSpecList &
61    operator*() const;
62
63    const lldb_private::FileSpecList &
64    ref() const;
65
66    std::unique_ptr<lldb_private::FileSpecList> m_opaque_ap;
67};
68
69
70} // namespace lldb
71
72#endif // LLDB_SBFileSpecList_h_
73