ExpressionSourceCode.h revision e97e4e3a1b7ead4a8ca3847fec07be1710776dac
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: 23de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan static ExpressionSourceCode *CreateWrapped (const char *prefix, 24de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan const char *body) 25de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan { 26de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan return new ExpressionSourceCode ("$__lldb_expr", 27de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan prefix, 28de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan body, 29de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan true); 30de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan } 31de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan 32de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan static ExpressionSourceCode *CreateUnwrapped (const char *name, 33de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan const char *body) 34de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan { 35de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan return new ExpressionSourceCode (name, 36de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan "", 37de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan body, 38de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan false); 39de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan } 40de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan 41de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan bool NeedsWrapping () const 42de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan { 43de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan return m_wrap; 44de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan } 45de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan 46de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan const char *GetName () const 47de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan { 48de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan return m_name.c_str(); 49de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan } 50de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan 51de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan bool GetText (std::string &text, 52de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan lldb::LanguageType wrapping_language, 53de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan bool const_object) const; 54de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan 55de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callananprivate: 56de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan ExpressionSourceCode (const char *name, 57de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan const char *prefix, 58de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan const char *body, 59de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan bool wrap) : 60de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan m_name(name), 61de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan m_prefix(prefix), 62de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan m_body(body), 63de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan m_wrap(wrap) 64de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan { 65de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan } 66de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan 67de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan std::string m_name; 68de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan std::string m_prefix; 69de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan std::string m_body; 70de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan bool m_wrap; 71de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan}; 72de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan 73de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan} // namespace lldb_private 74de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan 75de3d27ef1d426713d7af044cfd5c34a9aeae926aSean Callanan#endif 76