ThreadPlanCallUserExpression.h revision 263367
1//===-- ThreadPlanCallUserExpression.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_ThreadPlanCallUserExpression_h_
11#define liblldb_ThreadPlanCallUserExpression_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/Expression/ClangUserExpression.h"
19#include "lldb/Target/Thread.h"
20#include "lldb/Target/ThreadPlan.h"
21#include "lldb/Target/ThreadPlanCallFunction.h"
22
23#include "llvm/ADT/ArrayRef.h"
24
25namespace lldb_private {
26
27class ThreadPlanCallUserExpression : public ThreadPlanCallFunction
28{
29public:
30    ThreadPlanCallUserExpression (Thread &thread,
31                                  Address &function,
32                                  llvm::ArrayRef<lldb::addr_t> args,
33                                  const EvaluateExpressionOptions &options,
34                                  ClangUserExpression::ClangUserExpressionSP &user_expression_sp);
35
36    virtual
37    ~ThreadPlanCallUserExpression ();
38
39    virtual void
40    GetDescription (Stream *s, lldb::DescriptionLevel level);
41
42    virtual void
43    WillPop ()
44    {
45        ThreadPlanCallFunction::WillPop();
46        if (m_user_expression_sp)
47            m_user_expression_sp.reset();
48    }
49
50    virtual lldb::StopInfoSP
51    GetRealStopInfo();
52
53protected:
54private:
55    ClangUserExpression::ClangUserExpressionSP m_user_expression_sp;    // This is currently just used to ensure the
56                                                                        // User expression the initiated this ThreadPlan
57                                                                        // lives as long as the thread plan does.
58    DISALLOW_COPY_AND_ASSIGN (ThreadPlanCallUserExpression);
59};
60
61} // namespace lldb_private
62
63#endif  // liblldb_ThreadPlanCallUserExpression_h_
64