124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBType.h ------------------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef LLDB_SBType_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_SBType_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 135f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBDefines.h" 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb { 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 17979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granataclass SBTypeList; 18ef28e2ab6bc6273c129f0bc8a0c88a24d3b6876eGreg Clayton 19d68e089f8353eaf845c3559dac6d47b32830974fGreg Claytonclass SBTypeMember 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 22d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton SBTypeMember (); 23979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 24d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton SBTypeMember (const lldb::SBTypeMember& rhs); 25d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 26d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton ~SBTypeMember(); 277dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 28d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton lldb::SBTypeMember& 29d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton operator = (const lldb::SBTypeMember& rhs); 30d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 3198f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice bool 32d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton IsValid() const; 33979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 34d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton const char * 35d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetName (); 36979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 37d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton lldb::SBType 38d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetType (); 39ef28e2ab6bc6273c129f0bc8a0c88a24d3b6876eGreg Clayton 40d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton uint64_t 4196154be69fa240a662419183ed08e1cfc5418164Greg Clayton GetOffsetInBytes(); 4296154be69fa240a662419183ed08e1cfc5418164Greg Clayton 4396154be69fa240a662419183ed08e1cfc5418164Greg Clayton uint64_t 4496154be69fa240a662419183ed08e1cfc5418164Greg Clayton GetOffsetInBits(); 45f6132ef983e8a5b98fbe5e184f5128eff8c04730Greg Clayton 46f6132ef983e8a5b98fbe5e184f5128eff8c04730Greg Clayton bool 47f6132ef983e8a5b98fbe5e184f5128eff8c04730Greg Clayton IsBitfield(); 48f6132ef983e8a5b98fbe5e184f5128eff8c04730Greg Clayton 49f6132ef983e8a5b98fbe5e184f5128eff8c04730Greg Clayton uint32_t 50f6132ef983e8a5b98fbe5e184f5128eff8c04730Greg Clayton GetBitfieldSizeInBits(); 5196154be69fa240a662419183ed08e1cfc5418164Greg Clayton 5296154be69fa240a662419183ed08e1cfc5418164Greg Clayton bool 5396154be69fa240a662419183ed08e1cfc5418164Greg Clayton GetDescription (lldb::SBStream &description, 5496154be69fa240a662419183ed08e1cfc5418164Greg Clayton lldb::DescriptionLevel description_level); 55979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 56d68e089f8353eaf845c3559dac6d47b32830974fGreg Claytonprotected: 57d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton friend class SBType; 58d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 59d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton void 60d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton reset (lldb_private::TypeMemberImpl *); 61d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 62d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton lldb_private::TypeMemberImpl & 63d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton ref (); 64d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 65d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton const lldb_private::TypeMemberImpl & 66d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton ref () const; 67d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 68102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton std::unique_ptr<lldb_private::TypeMemberImpl> m_opaque_ap; 69d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton}; 70d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 71d68e089f8353eaf845c3559dac6d47b32830974fGreg Claytonclass SBType 72d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton{ 73d68e089f8353eaf845c3559dac6d47b32830974fGreg Claytonpublic: 74d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 75d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton SBType(); 76d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 77d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton SBType (const lldb::SBType &rhs); 78d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 79d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton ~SBType (); 80d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 81ef28e2ab6bc6273c129f0bc8a0c88a24d3b6876eGreg Clayton bool 82979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata IsValid() const; 83979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 84fe6dc6e241c52822710380cec0931351a1d7b2d3Greg Clayton uint64_t 85d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetByteSize(); 86bf8e42b9da0e1c6349a727d644ad37610b00d556Greg Clayton 87bf8e42b9da0e1c6349a727d644ad37610b00d556Greg Clayton bool 88d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton IsPointerType(); 89979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 90ef28e2ab6bc6273c129f0bc8a0c88a24d3b6876eGreg Clayton bool 91d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton IsReferenceType(); 92ef28e2ab6bc6273c129f0bc8a0c88a24d3b6876eGreg Clayton 9399270577568c7829116a97094eabceaee9a21737Greg Clayton bool 9499270577568c7829116a97094eabceaee9a21737Greg Clayton IsFunctionType (); 9599270577568c7829116a97094eabceaee9a21737Greg Clayton 9677e67a51acb825d79d25be687c085833713d5205Greg Clayton bool 9777e67a51acb825d79d25be687c085833713d5205Greg Clayton IsPolymorphicClass (); 9877e67a51acb825d79d25be687c085833713d5205Greg Clayton 99d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton lldb::SBType 100d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetPointerType(); 101ef28e2ab6bc6273c129f0bc8a0c88a24d3b6876eGreg Clayton 102d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton lldb::SBType 103d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetPointeeType(); 104979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 105d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton lldb::SBType 106d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetReferenceType(); 107979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 108d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton lldb::SBType 109d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetDereferencedType(); 1106e56157a52b093759f13321b7f2d601e3eaea8a0Greg Clayton 1116e56157a52b093759f13321b7f2d601e3eaea8a0Greg Clayton lldb::SBType 1126e56157a52b093759f13321b7f2d601e3eaea8a0Greg Clayton GetUnqualifiedType(); 1136e56157a52b093759f13321b7f2d601e3eaea8a0Greg Clayton 11418e0830db3f7602e3b97f543161b1b1e21824a44Greg Clayton lldb::SBType 11518e0830db3f7602e3b97f543161b1b1e21824a44Greg Clayton GetCanonicalType(); 116949b7178cf48cc4cf8533c729999a6c90785773dGreg Clayton // Get the "lldb::BasicType" enumeration for a type. If a type is not a basic 117949b7178cf48cc4cf8533c729999a6c90785773dGreg Clayton // type eBasicTypeInvalid will be returned 118949b7178cf48cc4cf8533c729999a6c90785773dGreg Clayton lldb::BasicType 119949b7178cf48cc4cf8533c729999a6c90785773dGreg Clayton GetBasicType(); 120949b7178cf48cc4cf8533c729999a6c90785773dGreg Clayton 121949b7178cf48cc4cf8533c729999a6c90785773dGreg Clayton // The call below confusing and should really be renamed to "CreateBasicType" 122d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton lldb::SBType 123d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetBasicType(lldb::BasicType type); 124d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 125d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton uint32_t 126d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetNumberOfFields (); 127d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 128d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton uint32_t 129d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetNumberOfDirectBaseClasses (); 130d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 131d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton uint32_t 132d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetNumberOfVirtualBaseClasses (); 133d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 134d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton lldb::SBTypeMember 135d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetFieldAtIndex (uint32_t idx); 136d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 137d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton lldb::SBTypeMember 138d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetDirectBaseClassAtIndex (uint32_t idx); 139d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 140d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton lldb::SBTypeMember 141d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetVirtualBaseClassAtIndex (uint32_t idx); 142d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 1433eeaf6e715784499520885535236ccff1ba56d1cGreg Clayton uint32_t 1443eeaf6e715784499520885535236ccff1ba56d1cGreg Clayton GetNumberOfTemplateArguments (); 1453eeaf6e715784499520885535236ccff1ba56d1cGreg Clayton 1463eeaf6e715784499520885535236ccff1ba56d1cGreg Clayton lldb::SBType 1473eeaf6e715784499520885535236ccff1ba56d1cGreg Clayton GetTemplateArgumentType (uint32_t idx); 1483eeaf6e715784499520885535236ccff1ba56d1cGreg Clayton 1493eeaf6e715784499520885535236ccff1ba56d1cGreg Clayton lldb::TemplateArgumentKind 1503eeaf6e715784499520885535236ccff1ba56d1cGreg Clayton GetTemplateArgumentKind (uint32_t idx); 1513eeaf6e715784499520885535236ccff1ba56d1cGreg Clayton 15299270577568c7829116a97094eabceaee9a21737Greg Clayton lldb::SBType 15399270577568c7829116a97094eabceaee9a21737Greg Clayton GetFunctionReturnType (); 15499270577568c7829116a97094eabceaee9a21737Greg Clayton 15599270577568c7829116a97094eabceaee9a21737Greg Clayton lldb::SBTypeList 15699270577568c7829116a97094eabceaee9a21737Greg Clayton GetFunctionArgumentTypes (); 15799270577568c7829116a97094eabceaee9a21737Greg Clayton 158979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata const char* 159979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata GetName(); 1608c1d7203f726e3a62b832dbeeaf0ae76f9f65222Greg Clayton 161d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton lldb::TypeClass 162d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetTypeClass (); 163d44c9d31d23d0b44ce40325ad69226889a9638bcEnrico Granata 164d44c9d31d23d0b44ce40325ad69226889a9638bcEnrico Granata bool 165d44c9d31d23d0b44ce40325ad69226889a9638bcEnrico Granata IsTypeComplete (); 166d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 16796154be69fa240a662419183ed08e1cfc5418164Greg Clayton bool 16896154be69fa240a662419183ed08e1cfc5418164Greg Clayton GetDescription (lldb::SBStream &description, 16996154be69fa240a662419183ed08e1cfc5418164Greg Clayton lldb::DescriptionLevel description_level); 17096154be69fa240a662419183ed08e1cfc5418164Greg Clayton 171d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton lldb::SBType & 172d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton operator = (const lldb::SBType &rhs); 173d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 174d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton bool 175d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton operator == (lldb::SBType &rhs); 176d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 177d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton bool 178d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton operator != (lldb::SBType &rhs); 179d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 18086ad476885a1fc5a14692534fb841be4eee7722aGreg Claytonprotected: 1817dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 182d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton lldb_private::TypeImpl & 183d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton ref (); 184d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 185d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton const lldb_private::TypeImpl & 186d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton ref () const; 187d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 1880a19a1b9c25117854f226256805239d95153ed2dGreg Clayton lldb::TypeImplSP 1890a19a1b9c25117854f226256805239d95153ed2dGreg Clayton GetSP (); 1900a19a1b9c25117854f226256805239d95153ed2dGreg Clayton 191d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton void 1927dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton SetSP (const lldb::TypeImplSP &type_impl_sp); 193d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 1940fb0bcc9d4e951145e1b8c783652224c09b23af4Greg Clayton lldb::TypeImplSP m_opaque_sp; 195979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 1967dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton friend class SBFunction; 197979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata friend class SBModule; 198979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata friend class SBTarget; 199d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata friend class SBTypeNameSpecifier; 200d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton friend class SBTypeMember; 201979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata friend class SBTypeList; 2027dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton friend class SBValue; 203ef28e2ab6bc6273c129f0bc8a0c88a24d3b6876eGreg Clayton 2040fb0bcc9d4e951145e1b8c783652224c09b23af4Greg Clayton SBType (const lldb_private::ClangASTType &); 2050fb0bcc9d4e951145e1b8c783652224c09b23af4Greg Clayton SBType (const lldb::TypeSP &); 2060fb0bcc9d4e951145e1b8c783652224c09b23af4Greg Clayton SBType (const lldb::TypeImplSP &); 207979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 208979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata}; 209979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 210979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granataclass SBTypeList 211979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata{ 212979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granatapublic: 213979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata SBTypeList(); 214979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 215d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton SBTypeList(const lldb::SBTypeList& rhs); 216979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 217d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton ~SBTypeList(); 218d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 219d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton lldb::SBTypeList& 220d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton operator = (const lldb::SBTypeList& rhs); 221979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 2220c64baff28c9340f84fa566df1bf9426ddd2dc31Johnny Chen bool 223d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton IsValid(); 2240c64baff28c9340f84fa566df1bf9426ddd2dc31Johnny Chen 225979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata void 226d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton Append (lldb::SBType type); 227979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 228d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton lldb::SBType 229d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetTypeAtIndex (uint32_t index); 230979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 231d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton uint32_t 232d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton GetSize(); 233979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 234979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 235979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granataprivate: 236102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton std::unique_ptr<lldb_private::TypeListImpl> m_opaque_ap; 237a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton friend class SBModule; 238a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton friend class SBCompileUnit; 23924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 240d68e089f8353eaf845c3559dac6d47b32830974fGreg Clayton 24124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 24224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb 24324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 24424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // LLDB_SBType_h_ 245