ExpressionSourceCode.h revision de3d27ef1d426713d7af044cfd5c34a9aeae926a
11468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant//===-- ExpressionSourceCode.h ----------------------------------*- C++ -*-===//
21468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant//
31468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant//                     The LLVM Compiler Infrastructure
41468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant//
51468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant// This file is distributed under the University of Illinois Open Source
61468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant// License. See LICENSE.TXT for details.
71468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant//
81468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant//===----------------------------------------------------------------------===//
91468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant
101468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant#ifndef liblldb_ExpressionSourceCode_h
111468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant#define liblldb_ExpressionSourceCode_h
121468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant
131468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant#include "lldb-enumerations.h"
141468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant
151468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant#include <string>
16933afa9761c1c1f916161278a99284d50a594939Marshall Clow
171468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantnamespace lldb_private
181468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{
19933afa9761c1c1f916161278a99284d50a594939Marshall Clow
20933afa9761c1c1f916161278a99284d50a594939Marshall Clowclass ExpressionSourceCode
21933afa9761c1c1f916161278a99284d50a594939Marshall Clow{
22933afa9761c1c1f916161278a99284d50a594939Marshall Clowpublic:
23933afa9761c1c1f916161278a99284d50a594939Marshall Clow    static ExpressionSourceCode *CreateWrapped (const char *prefix,
24933afa9761c1c1f916161278a99284d50a594939Marshall Clow                                                const char *body)
25933afa9761c1c1f916161278a99284d50a594939Marshall Clow    {
26933afa9761c1c1f916161278a99284d50a594939Marshall Clow        return new ExpressionSourceCode ("$__lldb_expr",
27933afa9761c1c1f916161278a99284d50a594939Marshall Clow                                         prefix,
28933afa9761c1c1f916161278a99284d50a594939Marshall Clow                                         body,
29933afa9761c1c1f916161278a99284d50a594939Marshall Clow                                         true);
30933afa9761c1c1f916161278a99284d50a594939Marshall Clow    }
31933afa9761c1c1f916161278a99284d50a594939Marshall Clow
321468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant    static ExpressionSourceCode *CreateUnwrapped (const char *name,
331468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant                                                  const char *body)
341468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant    {
351468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant        return new ExpressionSourceCode (name,
361468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant                                         "",
371468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant                                         body,
381468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant                                         false);
391468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant    }
401468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant
411468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant    bool NeedsWrapping () const
421468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant    {
431468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant        return m_wrap;
441468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant    }
451468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant
461468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant    const char *GetName () const
471468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant    {
481468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant        return m_name.c_str();
491468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant    }
501468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant
511468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant    bool GetText (std::string &text,
521468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant                  lldb::LanguageType wrapping_language,
531468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant                  bool const_object) const;
541468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant
551468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantprivate:
561468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant    ExpressionSourceCode (const char *name,
571468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant                          const char *prefix,
581468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant                          const char *body,
591468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant                          bool wrap) :
60d1794072881115c9c4e0356c34a1f1af176cd4edHoward Hinnant        m_name(name),
61d1794072881115c9c4e0356c34a1f1af176cd4edHoward Hinnant        m_prefix(prefix),
621468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant        m_body(body),
631468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant        m_wrap(wrap)
64933afa9761c1c1f916161278a99284d50a594939Marshall Clow    {
65933afa9761c1c1f916161278a99284d50a594939Marshall Clow    }
66933afa9761c1c1f916161278a99284d50a594939Marshall Clow
67933afa9761c1c1f916161278a99284d50a594939Marshall Clow    std::string m_name;
68933afa9761c1c1f916161278a99284d50a594939Marshall Clow    std::string m_prefix;
69933afa9761c1c1f916161278a99284d50a594939Marshall Clow    std::string m_body;
70933afa9761c1c1f916161278a99284d50a594939Marshall Clow    bool m_wrap;
71933afa9761c1c1f916161278a99284d50a594939Marshall Clow};
72933afa9761c1c1f916161278a99284d50a594939Marshall Clow
73933afa9761c1c1f916161278a99284d50a594939Marshall Clow} // namespace lldb_private
7480e19ac90f90c5f2aef3d8a6a74b3ffd342ecd0eHoward Hinnant
75933afa9761c1c1f916161278a99284d50a594939Marshall Clow#endif
7680e19ac90f90c5f2aef3d8a6a74b3ffd342ecd0eHoward Hinnant