ThreadPlanTracer.h revision 745ac7a5826fe7c392007941a4046bfb1a8dff81
1//===-- ThreadPlanTracer.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 liblldb_ThreadPlanTracer_h_
11#define liblldb_ThreadPlanTracer_h_
12
13// C Includes
14// C++ Includes
15// Other libraries and framework includes
16// Project includes
17#include "lldb/lldb-private.h"
18#include "lldb/Target/Thread.h"
19
20namespace lldb_private {
21
22class ThreadPlanTracer
23{
24friend class ThreadPlan;
25
26public:
27    ThreadPlanTracer (Thread &thread, lldb::StreamSP &stream_sp);
28    ThreadPlanTracer (Thread &thread);
29
30    virtual ~ThreadPlanTracer()
31    {
32    }
33
34    bool
35    EnableTracing(bool value)
36    {
37        bool old_value = m_enabled;
38        m_enabled = value;
39        return old_value;
40    }
41
42    bool
43    TracingEnabled()
44    {
45        return m_enabled;
46    }
47
48    bool
49    EnableSingleStep (bool value)
50    {
51        bool old_value = m_single_step;
52        m_single_step = value;
53        return old_value;
54    }
55
56    bool
57    SingleStepEnabled ()
58    {
59        return m_single_step;
60    }
61
62protected:
63    Thread &m_thread;
64
65    Stream *
66    GetLogStream ();
67
68    virtual void Log();
69
70private:
71    bool
72    TracerExplainsStop ();
73
74    bool m_single_step;
75    bool m_enabled;
76    lldb::StreamSP m_stream_sp;
77};
78
79} // namespace lldb_private
80
81#endif  // liblldb_ThreadPlanTracer_h_
82