ClangASTType.h revision afb7c85df796f74262917e44dd68f668dade3911
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 133e1c95a5eccc5fca012fcd91226ea67710b7ff26Peter Collingbourne#include <string> 14b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton#include "lldb/lldb-private.h" 151674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton#include "lldb/Core/ClangForward.h" 161674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 171674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Claytonnamespace lldb_private { 181674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 191674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton//---------------------------------------------------------------------- 201674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// A class that can carry around a clang ASTContext and a opaque clang 211674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// QualType. A clang::QualType can be easily reconstructed from an 221674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// opaque clang type and often the ASTContext is needed when doing 231674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// various type related tasks, so this class allows both items to travel 241674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// in a single very lightweight class that can be used. There are many 251674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// static equivalents of the member functions that allow the ASTContext 261674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// and the opaque clang QualType to be specified for ease of use and 271674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton// to avoid code duplication. 281674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton//---------------------------------------------------------------------- 291674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Claytonclass ClangASTType 301674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton{ 3157b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Claytonpublic: 32979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 33979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata ClangASTType (clang::ASTContext *ast_context, lldb::clang_type_t type) : 34979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata m_type (type), 35979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata m_ast (ast_context) 361674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton { 371674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton } 381674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 391674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton ClangASTType (const ClangASTType &tw) : 401674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton m_type (tw.m_type), 411674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton m_ast (tw.m_ast) 421674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton { 431674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton } 441674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 451674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton ClangASTType () : 461674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton m_type (0), 471674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton m_ast (0) 481674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton { 491674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton } 501674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 51bdcb6abaa287df2c5f312c51d993c1d0b0cb120cGreg Clayton virtual ~ClangASTType(); 521674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 531674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton const ClangASTType & 541674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton operator= (const ClangASTType &atb) 551674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton { 561674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton m_type = atb.m_type; 571674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton m_ast = atb.m_ast; 581674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton return *this; 591674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton } 601674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 61b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton lldb::clang_type_t 621674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton GetOpaqueQualType() const 631674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton { 641674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton return m_type; 651674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton } 661674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 671674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton clang::ASTContext * 681674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton GetASTContext() const 691674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton { 701674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton return m_ast; 711674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton } 721674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 731674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton ConstString 74b302b2f50e079b11a12ebafc29104c198f4f15e4Greg Clayton GetConstTypeName (); 751674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 761674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton static ConstString 77b302b2f50e079b11a12ebafc29104c198f4f15e4Greg Clayton GetConstTypeName (lldb::clang_type_t clang_type); 785c28dd1daf8de701ce1eeb8f9b8d3e3b5e39ad50Greg Clayton 79b302b2f50e079b11a12ebafc29104c198f4f15e4Greg Clayton static std::string 80b302b2f50e079b11a12ebafc29104c198f4f15e4Greg Clayton GetTypeNameForQualType (clang::QualType qual_type); 81b302b2f50e079b11a12ebafc29104c198f4f15e4Greg Clayton 82b302b2f50e079b11a12ebafc29104c198f4f15e4Greg Clayton static std::string 83b302b2f50e079b11a12ebafc29104c198f4f15e4Greg Clayton GetTypeNameForOpaqueQualType (lldb::clang_type_t opaque_qual_type); 84b302b2f50e079b11a12ebafc29104c198f4f15e4Greg Clayton 85bdcb6abaa287df2c5f312c51d993c1d0b0cb120cGreg Clayton uint32_t 86960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton GetClangTypeBitWidth (); 87960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton 88bdcb6abaa287df2c5f312c51d993c1d0b0cb120cGreg Clayton static uint32_t 89b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton GetClangTypeBitWidth (clang::ASTContext *ast_context, lldb::clang_type_t opaque_clang_qual_type); 90960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton 91960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton size_t 92960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton GetTypeBitAlign (); 93960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton 94960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton static size_t 95b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton GetTypeBitAlign (clang::ASTContext *ast_context, lldb::clang_type_t clang_type); 96960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton 9762fcf03cee420445b28fa79623075bb5ba379a9aGreg Clayton lldb::LanguageType 9862fcf03cee420445b28fa79623075bb5ba379a9aGreg Clayton GetMinimumLanguage (); 9962fcf03cee420445b28fa79623075bb5ba379a9aGreg Clayton 10062fcf03cee420445b28fa79623075bb5ba379a9aGreg Clayton static lldb::LanguageType 101afb7c85df796f74262917e44dd68f668dade3911Enrico Granata GetMinimumLanguage (clang::ASTContext *ctx, 102afb7c85df796f74262917e44dd68f668dade3911Enrico Granata lldb::clang_type_t clang_type); 10362fcf03cee420445b28fa79623075bb5ba379a9aGreg Clayton 1041674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton void 1051674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton DumpValue (ExecutionContext *exe_ctx, 1061674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton Stream *s, 1071674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton lldb::Format format, 1081674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton const DataExtractor &data, 1091674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t data_offset, 1101674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton size_t data_byte_size, 1111674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t bitfield_bit_size, 1121674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t bitfield_bit_offset, 1131674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton bool show_types, 1141674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton bool show_summary, 1151674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton bool verbose, 1161674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t depth); 1171674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 1181674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton static void 1191674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton DumpValue (clang::ASTContext *ast_context, 120b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton lldb::clang_type_t opaque_clang_qual_type, 1211674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton ExecutionContext *exe_ctx, 1221674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton Stream *s, 1231674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton lldb::Format format, 1241674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton const DataExtractor &data, 1251674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t data_offset, 1261674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton size_t data_byte_size, 1271674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t bitfield_bit_size, 1281674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t bitfield_bit_offset, 1291674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton bool show_types, 1301674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton bool show_summary, 1311674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton bool verbose, 1321674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t depth); 1331674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 1341674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton bool 1351674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton DumpTypeValue (Stream *s, 1361674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton lldb::Format format, 1371674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton const DataExtractor &data, 1381674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t data_offset, 1391674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton size_t data_byte_size, 1401674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t bitfield_bit_size, 1411674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t bitfield_bit_offset); 1421674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 1431674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 1441674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton static bool 1451674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton DumpTypeValue (clang::ASTContext *ast_context, 146b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton lldb::clang_type_t opaque_clang_qual_type, 1471674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton Stream *s, 1481674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton lldb::Format format, 1491674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton const DataExtractor &data, 1501674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t data_offset, 1511674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton size_t data_byte_size, 1521674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t bitfield_bit_size, 1531674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t bitfield_bit_offset); 1541674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 1551674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton void 1561674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton DumpSummary (ExecutionContext *exe_ctx, 1571674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton Stream *s, 1581674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton const DataExtractor &data, 1591674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t data_offset, 1601674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton size_t data_byte_size); 1611674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 1621674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 1631674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton static void 1641674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton DumpSummary (clang::ASTContext *ast_context, 165b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton lldb::clang_type_t opaque_clang_qual_type, 1661674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton ExecutionContext *exe_ctx, 1671674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton Stream *s, 1681674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton const DataExtractor &data, 1691674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t data_offset, 1701674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton size_t data_byte_size); 171960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton 172960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton void 173960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton DumpTypeDescription (Stream *s); 174960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton 175960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton static void 176960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton DumpTypeDescription (clang::ASTContext *ast_context, 177b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton lldb::clang_type_t opaque_clang_qual_type, 178960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton Stream *s); 1793aa7da5cb3327792415de44405e0896c6bdc305bSean Callanan 1803aa7da5cb3327792415de44405e0896c6bdc305bSean Callanan void DumpTypeCode (Stream *s); 1813aa7da5cb3327792415de44405e0896c6bdc305bSean Callanan 1823aa7da5cb3327792415de44405e0896c6bdc305bSean Callanan static void 1833aa7da5cb3327792415de44405e0896c6bdc305bSean Callanan DumpTypeCode (void *type, 1843aa7da5cb3327792415de44405e0896c6bdc305bSean Callanan Stream *s); 185960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton 1861674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton lldb::Encoding 1871674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton GetEncoding (uint32_t &count); 1881674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 1891674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton static lldb::Encoding 190b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton GetEncoding (lldb::clang_type_t opaque_clang_qual_type, uint32_t &count); 1911674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 1921674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton lldb::Format 1931674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton GetFormat (); 1941674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 1951674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton static lldb::Format 196b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton GetFormat (lldb::clang_type_t opaque_clang_qual_type); 1971391a391072a4b25c21b7198733ef7aa47a616c7Enrico Granata 1981391a391072a4b25c21b7198733ef7aa47a616c7Enrico Granata uint32_t 199979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata GetTypeByteSize() const; 2001391a391072a4b25c21b7198733ef7aa47a616c7Enrico Granata 2011391a391072a4b25c21b7198733ef7aa47a616c7Enrico Granata static uint32_t 2021391a391072a4b25c21b7198733ef7aa47a616c7Enrico Granata GetTypeByteSize(clang::ASTContext *ast_context, 2031391a391072a4b25c21b7198733ef7aa47a616c7Enrico Granata lldb::clang_type_t opaque_clang_qual_type); 2041674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 2051674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton bool 2061674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton GetValueAsScalar (const DataExtractor &data, 2071674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t data_offset, 2081674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton size_t data_byte_size, 2091674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton Scalar &value); 2101674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 2111674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton static bool 2121674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton GetValueAsScalar (clang::ASTContext *ast_context, 213b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton lldb::clang_type_t opaque_clang_qual_type, 2141674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton const DataExtractor &data, 2151674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton uint32_t data_offset, 2161674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton size_t data_byte_size, 2171674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton Scalar &value); 2181674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 219462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton 220462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton bool 221462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton IsDefined(); 222462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton 223462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton static bool 224b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton IsDefined (lldb::clang_type_t opaque_clang_qual_type); 225462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton 2261674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton bool 227e8e5557af333aba8183ce6e9fed9996221eb1547Sean Callanan IsConst(); 228e8e5557af333aba8183ce6e9fed9996221eb1547Sean Callanan 229e8e5557af333aba8183ce6e9fed9996221eb1547Sean Callanan static bool 230e8e5557af333aba8183ce6e9fed9996221eb1547Sean Callanan IsConst (lldb::clang_type_t opaque_clang_qual_type); 231e8e5557af333aba8183ce6e9fed9996221eb1547Sean Callanan 232e8e5557af333aba8183ce6e9fed9996221eb1547Sean Callanan bool 2331674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton SetValueFromScalar (const Scalar &value, 2341674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton Stream &strm); 2351674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 2361674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton static bool 2371674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton SetValueFromScalar (clang::ASTContext *ast_context, 238b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton lldb::clang_type_t opaque_clang_qual_type, 2391674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton const Scalar &value, 2401674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton Stream &strm); 2411674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 24257b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton void 24357b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton SetClangType (clang::ASTContext *ast, lldb::clang_type_t type) 24457b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton { 24557b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton m_type = type; 24657b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton m_ast = ast; 24757b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton } 24857b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton 2491674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton bool 2501674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton ReadFromMemory (ExecutionContext *exe_ctx, 2511674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton lldb::addr_t addr, 252b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton AddressType address_type, 2531674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton DataExtractor &data); 2541674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 2551674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton static bool 2561674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton ReadFromMemory (clang::ASTContext *ast_context, 257b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton lldb::clang_type_t opaque_clang_qual_type, 2581674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton ExecutionContext *exe_ctx, 2591674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton lldb::addr_t addr, 260b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton AddressType address_type, 2611674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton DataExtractor &data); 2621674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 2631674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton bool 2641674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton WriteToMemory (ExecutionContext *exe_ctx, 2651674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton lldb::addr_t addr, 266b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton AddressType address_type, 2671674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton StreamString &new_value); 2681674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 2691674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton static bool 2701674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton WriteToMemory (clang::ASTContext *ast_context, 271b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton lldb::clang_type_t opaque_clang_qual_type, 2721674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton ExecutionContext *exe_ctx, 2731674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton lldb::addr_t addr, 274b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton AddressType address_type, 2751674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton StreamString &new_value); 2761674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 277b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton lldb::clang_type_t 278585660cc442f7faf8d2cbd936e4c92ac689c30e5Greg Clayton GetPointeeType (); 279585660cc442f7faf8d2cbd936e4c92ac689c30e5Greg Clayton 280b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton static lldb::clang_type_t 281b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton GetPointeeType (lldb::clang_type_t opaque_clang_qual_type); 282b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton 283b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton static lldb::clang_type_t 284b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton RemoveFastQualifiers (lldb::clang_type_t); 285585660cc442f7faf8d2cbd936e4c92ac689c30e5Greg Clayton 2861674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Claytonprivate: 28757b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton lldb::clang_type_t m_type; 28857b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton clang::ASTContext *m_ast; 2891674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton}; 2901674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 2911674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 2921674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton} // namespace lldb_private 2931674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton 2941674b12bbc3dae7b9543b8c5f958e90ddc767fa4Greg Clayton#endif // #ifndef liblldb_ClangASTType_h_ 295