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 79