103c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham//===-- SBFileSpecList.h --------------------------------------------*- C++ -*-===//
203c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham//
303c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham//                     The LLVM Compiler Infrastructure
403c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham//
503c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham// This file is distributed under the University of Illinois Open Source
603c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham// License. See LICENSE.TXT for details.
703c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham//
803c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham//===----------------------------------------------------------------------===//
903c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
1003c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham#ifndef LLDB_SBFileSpecList_h_
1103c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham#define LLDB_SBFileSpecList_h_
1203c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
1303c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham#include "lldb/API/SBDefines.h"
1403c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
1503c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Inghamnamespace lldb {
1603c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
1703c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Inghamclass SBFileSpecList
1803c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham{
1903c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Inghampublic:
2003c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    SBFileSpecList ();
2103c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
2203c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    SBFileSpecList (const lldb::SBFileSpecList &rhs);
2303c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
2403c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    ~SBFileSpecList ();
2503c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
2603c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    const SBFileSpecList &
2703c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    operator = (const lldb::SBFileSpecList &rhs);
2803c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
2903c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    uint32_t
3003c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    GetSize () const;
3103c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
3203c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    bool
3303c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    GetDescription (SBStream &description) const;
3403c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
3503c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    void
3603c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    Append (const SBFileSpec &sb_file);
3703c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
3803c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    bool
3903c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    AppendIfUnique (const SBFileSpec &sb_file);
4003c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
4103c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    void
4203c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    Clear();
4303c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
4403c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    uint32_t
45d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham    FindFileIndex (uint32_t idx, const SBFileSpec &sb_file, bool full);
4603c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
4703c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    const SBFileSpec
4803c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    GetFileSpecAtIndex (uint32_t idx) const;
4903c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
5003c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Inghamprivate:
5103c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
52d6d47976b71187907c1cdeea86fabf7d5534314fJim Inghamfriend class SBTarget;
53d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham
5403c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    const lldb_private::FileSpecList *
5503c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    operator->() const;
5603c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
5703c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    const lldb_private::FileSpecList *
5803c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    get() const;
5903c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
6003c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    const lldb_private::FileSpecList &
6103c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    operator*() const;
6203c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
6303c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    const lldb_private::FileSpecList &
6403c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    ref() const;
6503c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
66102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton    std::unique_ptr<lldb_private::FileSpecList> m_opaque_ap;
6703c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham};
6803c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
6903c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
7003c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham} // namespace lldb
7103c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
7203c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham#endif // LLDB_SBFileSpecList_h_
73