1254721Semaste//===-- ExpressionSourceCode.h ----------------------------------*- C++ -*-===//
2254721Semaste//
3254721Semaste//                     The LLVM Compiler Infrastructure
4254721Semaste//
5254721Semaste// This file is distributed under the University of Illinois Open Source
6254721Semaste// License. See LICENSE.TXT for details.
7254721Semaste//
8254721Semaste//===----------------------------------------------------------------------===//
9254721Semaste
10254721Semaste#ifndef liblldb_ExpressionSourceCode_h
11254721Semaste#define liblldb_ExpressionSourceCode_h
12254721Semaste
13254721Semaste#include "lldb/lldb-enumerations.h"
14254721Semaste
15254721Semaste#include <string>
16254721Semaste
17254721Semastenamespace lldb_private
18254721Semaste{
19254721Semaste
20254721Semasteclass ExpressionSourceCode
21254721Semaste{
22254721Semastepublic:
23254721Semaste    static const char * g_expression_prefix;
24254721Semaste
25254721Semaste    static ExpressionSourceCode *CreateWrapped (const char *prefix,
26254721Semaste                                                const char *body)
27254721Semaste    {
28254721Semaste        return new ExpressionSourceCode ("$__lldb_expr",
29254721Semaste                                         prefix,
30254721Semaste                                         body,
31254721Semaste                                         true);
32254721Semaste    }
33254721Semaste
34254721Semaste    static ExpressionSourceCode *CreateUnwrapped (const char *name,
35254721Semaste                                                  const char *body)
36254721Semaste    {
37254721Semaste        return new ExpressionSourceCode (name,
38254721Semaste                                         "",
39254721Semaste                                         body,
40254721Semaste                                         false);
41254721Semaste    }
42254721Semaste
43254721Semaste    bool NeedsWrapping () const
44254721Semaste    {
45254721Semaste        return m_wrap;
46254721Semaste    }
47254721Semaste
48254721Semaste    const char *GetName () const
49254721Semaste    {
50254721Semaste        return m_name.c_str();
51254721Semaste    }
52254721Semaste
53254721Semaste    bool GetText (std::string &text,
54254721Semaste                  lldb::LanguageType wrapping_language,
55254721Semaste                  bool const_object,
56254721Semaste                  bool static_method) const;
57254721Semaste
58254721Semasteprivate:
59254721Semaste    ExpressionSourceCode (const char *name,
60254721Semaste                          const char *prefix,
61254721Semaste                          const char *body,
62254721Semaste                          bool wrap) :
63254721Semaste        m_name(name),
64254721Semaste        m_prefix(prefix),
65254721Semaste        m_body(body),
66254721Semaste        m_wrap(wrap)
67254721Semaste    {
68254721Semaste    }
69254721Semaste
70254721Semaste    std::string m_name;
71254721Semaste    std::string m_prefix;
72254721Semaste    std::string m_body;
73254721Semaste    bool m_wrap;
74254721Semaste};
75254721Semaste
76254721Semaste} // namespace lldb_private
77254721Semaste
78254721Semaste#endif
79