1de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan//===-- ExpressionSourceCode.h ----------------------------------*- C++ -*-===//
2de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan//
3de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan//                     The LLVM Compiler Infrastructure
4de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan//
5de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan// This file is distributed under the University of Illinois Open Source
6de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan// License. See LICENSE.TXT for details.
7de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan//
8de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan//===----------------------------------------------------------------------===//
9de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan
10de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan#ifndef liblldb_ExpressionSourceCode_h
11de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan#define liblldb_ExpressionSourceCode_h
12de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan
13e97e4e3a1b7ead4a8ca3847fec07be1710776dacSean Callanan#include "lldb/lldb-enumerations.h"
14de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan
15de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan#include <string>
16de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan
17de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanannamespace lldb_private
18de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan{
19de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan
20de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callananclass ExpressionSourceCode
21de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan{
22de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callananpublic:
238459ba986e7ddd1539b046648680f2283fde8304Greg Clayton    static const char * g_expression_prefix;
248459ba986e7ddd1539b046648680f2283fde8304Greg Clayton
25de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    static ExpressionSourceCode *CreateWrapped (const char *prefix,
26de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan                                                const char *body)
27de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    {
28de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan        return new ExpressionSourceCode ("$__lldb_expr",
29de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan                                         prefix,
30de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan                                         body,
31de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan                                         true);
32de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    }
33de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan
34de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    static ExpressionSourceCode *CreateUnwrapped (const char *name,
35de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan                                                  const char *body)
36de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    {
37de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan        return new ExpressionSourceCode (name,
38de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan                                         "",
39de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan                                         body,
40de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan                                         false);
41de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    }
42de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan
43de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    bool NeedsWrapping () const
44de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    {
45de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan        return m_wrap;
46de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    }
47de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan
48de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    const char *GetName () const
49de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    {
50de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan        return m_name.c_str();
51de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    }
52de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan
53de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    bool GetText (std::string &text,
54de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan                  lldb::LanguageType wrapping_language,
55e6ea5fe8e76b028a0565bc01543bc15f8c120e8aSean Callanan                  bool const_object,
56e6ea5fe8e76b028a0565bc01543bc15f8c120e8aSean Callanan                  bool static_method) const;
57de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan
58de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callananprivate:
59de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    ExpressionSourceCode (const char *name,
60de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan                          const char *prefix,
61de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan                          const char *body,
62de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan                          bool wrap) :
63de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan        m_name(name),
64de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan        m_prefix(prefix),
65de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan        m_body(body),
66de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan        m_wrap(wrap)
67de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    {
68de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    }
69de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan
70de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    std::string m_name;
71de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    std::string m_prefix;
72de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    std::string m_body;
73de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan    bool m_wrap;
74de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan};
75de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan
76de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan} // namespace lldb_private
77de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan
78de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan#endif
79