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

#ifndef liblldb_ThreadWinMiniDump_h_
#define liblldb_ThreadWinMiniDump_h_

#include <string>

#include "lldb/Core/DataExtractor.h"
#include "lldb/Target/Thread.h"

class ThreadWinMiniDump : public lldb_private::Thread
{
public:
    ThreadWinMiniDump(lldb_private::Process &process, lldb::tid_t tid);

    virtual
    ~ThreadWinMiniDump();

    void
    RefreshStateAfterStop() override;

    lldb::RegisterContextSP
    GetRegisterContext() override;

    lldb::RegisterContextSP
    CreateRegisterContextForFrame(lldb_private::StackFrame *frame) override;

    void
    ClearStackFrames() override;

    void
    SetContext(const void *context);

protected:
    lldb::RegisterContextSP m_reg_context_sp;
    class Data;
    std::unique_ptr<Data> m_data;  // for WinAPI-specific data

    bool CalculateStopInfo() override;
};

#endif
