]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/llvm/tools/lldb/include/lldb/Expression/ExpressionSourceCode.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / llvm / tools / lldb / include / lldb / Expression / ExpressionSourceCode.h
1 //===-- ExpressionSourceCode.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_ExpressionSourceCode_h
11 #define liblldb_ExpressionSourceCode_h
12
13 #include "lldb/lldb-enumerations.h"
14
15 #include <string>
16
17 namespace lldb_private
18 {
19
20 class ExpressionSourceCode
21 {
22 public:
23     static const char * g_expression_prefix;
24
25     static ExpressionSourceCode *CreateWrapped (const char *prefix,
26                                                 const char *body)
27     {
28         return new ExpressionSourceCode ("$__lldb_expr",
29                                          prefix,
30                                          body,
31                                          true);
32     }
33     
34     static ExpressionSourceCode *CreateUnwrapped (const char *name,
35                                                   const char *body)
36     {
37         return new ExpressionSourceCode (name,
38                                          "",
39                                          body,
40                                          false);
41     }
42     
43     bool NeedsWrapping () const
44     {
45         return m_wrap;
46     }
47     
48     const char *GetName () const
49     {
50         return m_name.c_str();
51     }
52     
53     bool GetText (std::string &text, 
54                   lldb::LanguageType wrapping_language, 
55                   bool const_object,
56                   bool static_method) const;
57     
58 private:
59     ExpressionSourceCode (const char *name,
60                           const char *prefix,
61                           const char *body,
62                           bool wrap) :
63         m_name(name),
64         m_prefix(prefix),
65         m_body(body),
66         m_wrap(wrap)
67     {
68     }
69     
70     std::string m_name;
71     std::string m_prefix;
72     std::string m_body;
73     bool m_wrap;
74 };
75
76 } // namespace lldb_private
77
78 #endif