ExpressionSourceCode.h revision 8459ba986e7ddd1539b046648680f2283fde8304
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