MachThreadContext.h   [plain text]


//===-- MachThreadContext.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_MachThreadContext_h_
#define liblldb_MachThreadContext_h_

#include <vector>

#include "MachException.h"

class ThreadMacOSX;

class MachThreadContext
{
public:
    MachThreadContext (ThreadMacOSX &thread) :
        m_thread (thread)
    {
    }

    virtual ~MachThreadContext()
    {
    }

    virtual lldb::RegisterContextSP
    CreateRegisterContext (lldb_private::StackFrame *frame) const = 0;

    virtual void            InitializeInstance() = 0;
    virtual void            ThreadWillResume () = 0;
    virtual bool            ShouldStop () = 0;
    virtual void            RefreshStateAfterStop() = 0;
    virtual bool            NotifyException (MachException::Data& exc) { return false; }
    virtual bool            StepNotComplete () { return false; }
    virtual size_t          GetStackFrameData(lldb_private::StackFrame *frame, std::vector<std::pair<lldb::addr_t, lldb::addr_t> >& fp_pc_pairs) { return 0; }
//  virtual const uint8_t * SoftwareBreakpointOpcode (size_t byte_size) = 0;

protected:
    ThreadMacOSX &m_thread;

};

#endif  // #ifndef liblldb_MachThreadContext_h_