//===-- SBMemoryRegionInfoList.h --------------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef LLDB_SBMemoryRegionInfoList_h_
#define LLDB_SBMemoryRegionInfoList_h_

#include "lldb/API/SBDefines.h"

class MemoryRegionInfoListImpl;

namespace lldb {

class LLDB_API SBMemoryRegionInfoList
{
public:

    SBMemoryRegionInfoList ();

    SBMemoryRegionInfoList (const lldb::SBMemoryRegionInfoList &rhs);

    const SBMemoryRegionInfoList &
    operator = (const SBMemoryRegionInfoList &rhs);

    ~SBMemoryRegionInfoList ();

    uint32_t
    GetSize () const;

    bool
    GetMemoryRegionAtIndex (uint32_t idx, SBMemoryRegionInfo &region_info);

    void
    Append (lldb::SBMemoryRegionInfo &region);

    void
    Append (lldb::SBMemoryRegionInfoList &region_list);

    void
    Clear ();

protected:

    const MemoryRegionInfoListImpl *
    operator->() const;

    const MemoryRegionInfoListImpl &
    operator*() const;

private:

    std::unique_ptr<MemoryRegionInfoListImpl> m_opaque_ap;

};

} // namespace lldb

#endif // LLDB_SBMemoryRegionInfoList_h_
