ClangASTType.h revision e8e5557af333aba8183ce6e9fed9996221eb1547
11674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton//===-- ClangASTType.h ------------------------------------------*- C++ -*-===//
21674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton//
31674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton//                     The LLVM Compiler Infrastructure
41674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton//
51674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// This file is distributed under the University of Illinois Open Source
61674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// License. See LICENSE.TXT for details.
71674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton//
81674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton//===----------------------------------------------------------------------===//
91674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
101674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton#ifndef liblldb_ClangASTType_h_
111674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton#define liblldb_ClangASTType_h_
121674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
131674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton#include "lldb/lldb-include.h"
141674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton#include "lldb/Core/ClangForward.h"
151674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
161674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Claytonnamespace lldb_private {
171674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
181674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton//----------------------------------------------------------------------
191674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// A class that can carry around a clang ASTContext and a opaque clang
201674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// QualType. A clang::QualType can be easily reconstructed from an
211674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// opaque clang type and often the ASTContext is needed when doing
221674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// various type related tasks, so this class allows both items to travel
231674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// in a single very lightweight class that can be used. There are many
241674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// static equivalents of the member functions that allow the ASTContext
251674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// and the opaque clang QualType to be specified for ease of use and
261674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// to avoid code duplication.
271674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton//----------------------------------------------------------------------
281674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Claytonclass ClangASTType
291674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton{
301674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Claytonprotected:
31b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton    ClangASTType (lldb::clang_type_t type, clang::ASTContext *ast_context) :
321674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton        m_type (type),
331674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton        m_ast  (ast_context)
341674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    {
351674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    }
361674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
371674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    ClangASTType (const ClangASTType &tw) :
381674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton        m_type (tw.m_type),
391674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton        m_ast  (tw.m_ast)
401674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    {
411674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    }
421674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
431674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    ClangASTType () :
441674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton        m_type (0),
451674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton        m_ast  (0)
461674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    {
471674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    }
481674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
491674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    ~ClangASTType();
501674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
511674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    const ClangASTType &
521674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    operator= (const ClangASTType &atb)
531674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    {
541674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton        m_type = atb.m_type;
551674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton        m_ast = atb.m_ast;
561674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton        return *this;
571674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    }
581674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
591674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Claytonpublic:
60b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton    lldb::clang_type_t
611674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    GetOpaqueQualType() const
621674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    {
631674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton        return m_type;
641674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    }
651674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
661674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    clang::ASTContext *
671674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    GetASTContext() const
681674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    {
691674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton        return m_ast;
701674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    }
711674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
721674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    ConstString
731674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    GetClangTypeName ();
741674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
751674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    static ConstString
76b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton    GetClangTypeName (lldb::clang_type_t clang_type);
771674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
78960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton    uint64_t
79960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton    GetClangTypeBitWidth ();
80960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton
81960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton    static uint64_t
82b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton    GetClangTypeBitWidth (clang::ASTContext *ast_context, lldb::clang_type_t opaque_clang_qual_type);
83960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton
84960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton    size_t
85960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton    GetTypeBitAlign ();
86960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton
87960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton    static size_t
88b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton    GetTypeBitAlign (clang::ASTContext *ast_context, lldb::clang_type_t clang_type);
89960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton
901674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    void
911674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    DumpValue (ExecutionContext *exe_ctx,
921674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               Stream *s,
931674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               lldb::Format format,
941674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               const DataExtractor &data,
951674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               uint32_t data_offset,
961674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               size_t data_byte_size,
971674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               uint32_t bitfield_bit_size,
981674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               uint32_t bitfield_bit_offset,
991674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               bool show_types,
1001674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               bool show_summary,
1011674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               bool verbose,
1021674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               uint32_t depth);
1031674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
1041674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    static void
1051674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    DumpValue (clang::ASTContext *ast_context,
106b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton               lldb::clang_type_t opaque_clang_qual_type,
1071674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               ExecutionContext *exe_ctx,
1081674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               Stream *s,
1091674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               lldb::Format format,
1101674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               const DataExtractor &data,
1111674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               uint32_t data_offset,
1121674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               size_t data_byte_size,
1131674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               uint32_t bitfield_bit_size,
1141674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               uint32_t bitfield_bit_offset,
1151674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               bool show_types,
1161674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               bool show_summary,
1171674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               bool verbose,
1181674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton               uint32_t depth);
1191674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
1201674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    bool
1211674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    DumpTypeValue (Stream *s,
1221674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   lldb::Format format,
1231674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   const DataExtractor &data,
1241674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   uint32_t data_offset,
1251674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   size_t data_byte_size,
1261674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   uint32_t bitfield_bit_size,
1271674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   uint32_t bitfield_bit_offset);
1281674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
1291674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
1301674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    static bool
1311674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    DumpTypeValue (clang::ASTContext *ast_context,
132b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton                   lldb::clang_type_t opaque_clang_qual_type,
1331674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   Stream *s,
1341674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   lldb::Format format,
1351674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   const DataExtractor &data,
1361674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   uint32_t data_offset,
1371674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   size_t data_byte_size,
1381674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   uint32_t bitfield_bit_size,
1391674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   uint32_t bitfield_bit_offset);
1401674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
1411674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    void
1421674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    DumpSummary (ExecutionContext *exe_ctx,
1431674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                 Stream *s,
1441674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                 const DataExtractor &data,
1451674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                 uint32_t data_offset,
1461674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                 size_t data_byte_size);
1471674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
1481674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
1491674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    static void
1501674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    DumpSummary (clang::ASTContext *ast_context,
151b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton                 lldb::clang_type_t opaque_clang_qual_type,
1521674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                 ExecutionContext *exe_ctx,
1531674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                 Stream *s,
1541674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                 const DataExtractor &data,
1551674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                 uint32_t data_offset,
1561674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                 size_t data_byte_size);
157960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton
158960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton    void
159960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton    DumpTypeDescription (Stream *s);
160960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton
161960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton    static void
162960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton    DumpTypeDescription (clang::ASTContext *ast_context,
163b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton                         lldb::clang_type_t opaque_clang_qual_type,
164960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton                         Stream *s);
165960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton
1661674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    lldb::Encoding
1671674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    GetEncoding (uint32_t &count);
1681674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
1691674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    static lldb::Encoding
170b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton    GetEncoding (lldb::clang_type_t opaque_clang_qual_type, uint32_t &count);
1711674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
1721674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    lldb::Format
1731674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    GetFormat ();
1741674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
1751674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    static lldb::Format
176b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton    GetFormat (lldb::clang_type_t opaque_clang_qual_type);
1771674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
1781674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    bool
1791674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    GetValueAsScalar (const DataExtractor &data,
1801674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                      uint32_t data_offset,
1811674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                      size_t data_byte_size,
1821674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                      Scalar &value);
1831674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
1841674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    static bool
1851674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    GetValueAsScalar (clang::ASTContext *ast_context,
186b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton                      lldb::clang_type_t opaque_clang_qual_type,
1871674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                      const DataExtractor &data,
1881674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                      uint32_t data_offset,
1891674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                      size_t data_byte_size,
1901674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                      Scalar &value);
1911674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
192462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton
193462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton    bool
194462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton    IsDefined();
195462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton
196462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton    static bool
197b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton    IsDefined (lldb::clang_type_t opaque_clang_qual_type);
198462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton
1991674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    bool
200e8e5557af333aba8183ce6e9fed9996221eb1547Sean Callanan    IsConst();
201e8e5557af333aba8183ce6e9fed9996221eb1547Sean Callanan
202e8e5557af333aba8183ce6e9fed9996221eb1547Sean Callanan    static bool
203e8e5557af333aba8183ce6e9fed9996221eb1547Sean Callanan    IsConst (lldb::clang_type_t opaque_clang_qual_type);
204e8e5557af333aba8183ce6e9fed9996221eb1547Sean Callanan
205e8e5557af333aba8183ce6e9fed9996221eb1547Sean Callanan    bool
2061674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    SetValueFromScalar (const Scalar &value,
2071674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                        Stream &strm);
2081674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
2091674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    static bool
2101674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    SetValueFromScalar (clang::ASTContext *ast_context,
211b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton                        lldb::clang_type_t opaque_clang_qual_type,
2121674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                        const Scalar &value,
2131674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                        Stream &strm);
2141674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
2151674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    bool
2161674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    ReadFromMemory (ExecutionContext *exe_ctx,
2171674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                    lldb::addr_t addr,
2181674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                    lldb::AddressType address_type,
2191674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                    DataExtractor &data);
2201674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
2211674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    static bool
2221674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    ReadFromMemory (clang::ASTContext *ast_context,
223b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton                    lldb::clang_type_t opaque_clang_qual_type,
2241674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                    ExecutionContext *exe_ctx,
2251674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                    lldb::addr_t addr,
2261674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                    lldb::AddressType address_type,
2271674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                    DataExtractor &data);
2281674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
2291674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    bool
2301674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    WriteToMemory (ExecutionContext *exe_ctx,
2311674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   lldb::addr_t addr,
2321674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   lldb::AddressType address_type,
2331674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   StreamString &new_value);
2341674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
2351674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    static bool
2361674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    WriteToMemory (clang::ASTContext *ast_context,
237b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton                   lldb::clang_type_t opaque_clang_qual_type,
2381674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   ExecutionContext *exe_ctx,
2391674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   lldb::addr_t addr,
2401674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   lldb::AddressType address_type,
2411674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton                   StreamString &new_value);
2421674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
243b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton    lldb::clang_type_t
244585660cc442f7faf8d2cbd936e4c92ac689c30e5Greg Clayton    GetPointeeType ();
245585660cc442f7faf8d2cbd936e4c92ac689c30e5Greg Clayton
246b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton    static lldb::clang_type_t
247b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton    GetPointeeType (lldb::clang_type_t opaque_clang_qual_type);
248b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton
249b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton    static lldb::clang_type_t
250b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton    RemoveFastQualifiers (lldb::clang_type_t);
251585660cc442f7faf8d2cbd936e4c92ac689c30e5Greg Clayton
2521674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Claytonprivate:
2531674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    void               *m_type;
2541674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton    clang::ASTContext  *m_ast;
2551674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton};
2561674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
2571674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
2581674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton} // namespace lldb_private
2591674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton
2601674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton#endif // #ifndef liblldb_ClangASTType_h_
261