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