1254721Semaste//===-- SBType.h ------------------------------------------------*- C++ -*-===// 2254721Semaste// 3254721Semaste// The LLVM Compiler Infrastructure 4254721Semaste// 5254721Semaste// This file is distributed under the University of Illinois Open Source 6254721Semaste// License. See LICENSE.TXT for details. 7254721Semaste// 8254721Semaste//===----------------------------------------------------------------------===// 9254721Semaste 10254721Semaste#ifndef LLDB_SBType_h_ 11254721Semaste#define LLDB_SBType_h_ 12254721Semaste 13254721Semaste#include "lldb/API/SBDefines.h" 14254721Semaste 15254721Semastenamespace lldb { 16254721Semaste 17254721Semasteclass SBTypeList; 18254721Semaste 19288943Sdimclass LLDB_API SBTypeMember 20254721Semaste{ 21254721Semastepublic: 22254721Semaste SBTypeMember (); 23254721Semaste 24254721Semaste SBTypeMember (const lldb::SBTypeMember& rhs); 25254721Semaste 26254721Semaste ~SBTypeMember(); 27254721Semaste 28254721Semaste lldb::SBTypeMember& 29254721Semaste operator = (const lldb::SBTypeMember& rhs); 30254721Semaste 31254721Semaste bool 32254721Semaste IsValid() const; 33254721Semaste 34254721Semaste const char * 35254721Semaste GetName (); 36254721Semaste 37254721Semaste lldb::SBType 38254721Semaste GetType (); 39254721Semaste 40254721Semaste uint64_t 41254721Semaste GetOffsetInBytes(); 42254721Semaste 43254721Semaste uint64_t 44254721Semaste GetOffsetInBits(); 45254721Semaste 46254721Semaste bool 47254721Semaste IsBitfield(); 48254721Semaste 49254721Semaste uint32_t 50254721Semaste GetBitfieldSizeInBits(); 51254721Semaste 52254721Semaste bool 53254721Semaste GetDescription (lldb::SBStream &description, 54254721Semaste lldb::DescriptionLevel description_level); 55254721Semaste 56254721Semasteprotected: 57254721Semaste friend class SBType; 58254721Semaste 59254721Semaste void 60254721Semaste reset (lldb_private::TypeMemberImpl *); 61254721Semaste 62254721Semaste lldb_private::TypeMemberImpl & 63254721Semaste ref (); 64254721Semaste 65254721Semaste const lldb_private::TypeMemberImpl & 66254721Semaste ref () const; 67254721Semaste 68254721Semaste std::unique_ptr<lldb_private::TypeMemberImpl> m_opaque_ap; 69254721Semaste}; 70280031Sdim 71280031Sdimclass SBTypeMemberFunction 72280031Sdim{ 73280031Sdimpublic: 74280031Sdim SBTypeMemberFunction (); 75280031Sdim 76280031Sdim SBTypeMemberFunction (const lldb::SBTypeMemberFunction& rhs); 77280031Sdim 78280031Sdim ~SBTypeMemberFunction(); 79280031Sdim 80280031Sdim lldb::SBTypeMemberFunction& 81280031Sdim operator = (const lldb::SBTypeMemberFunction& rhs); 82280031Sdim 83280031Sdim bool 84280031Sdim IsValid() const; 85280031Sdim 86280031Sdim const char * 87280031Sdim GetName (); 88296417Sdim 89296417Sdim const char * 90296417Sdim GetDemangledName (); 91296417Sdim 92296417Sdim const char * 93296417Sdim GetMangledName (); 94296417Sdim 95280031Sdim lldb::SBType 96280031Sdim GetType (); 97280031Sdim 98280031Sdim lldb::SBType 99280031Sdim GetReturnType (); 100280031Sdim 101280031Sdim uint32_t 102280031Sdim GetNumberOfArguments (); 103280031Sdim 104280031Sdim lldb::SBType 105280031Sdim GetArgumentTypeAtIndex (uint32_t); 106280031Sdim 107280031Sdim lldb::MemberFunctionKind 108280031Sdim GetKind(); 109280031Sdim 110280031Sdim bool 111280031Sdim GetDescription (lldb::SBStream &description, 112280031Sdim lldb::DescriptionLevel description_level); 113280031Sdim 114280031Sdimprotected: 115280031Sdim friend class SBType; 116280031Sdim 117280031Sdim void 118280031Sdim reset (lldb_private::TypeMemberFunctionImpl *); 119280031Sdim 120280031Sdim lldb_private::TypeMemberFunctionImpl & 121280031Sdim ref (); 122280031Sdim 123280031Sdim const lldb_private::TypeMemberFunctionImpl & 124280031Sdim ref () const; 125280031Sdim 126280031Sdim lldb::TypeMemberFunctionImplSP m_opaque_sp; 127280031Sdim}; 128254721Semaste 129280031Sdim 130254721Semasteclass SBType 131254721Semaste{ 132254721Semastepublic: 133254721Semaste 134254721Semaste SBType(); 135254721Semaste 136254721Semaste SBType (const lldb::SBType &rhs); 137254721Semaste 138254721Semaste ~SBType (); 139254721Semaste 140254721Semaste bool 141254721Semaste IsValid() const; 142254721Semaste 143254721Semaste uint64_t 144254721Semaste GetByteSize(); 145254721Semaste 146254721Semaste bool 147254721Semaste IsPointerType(); 148254721Semaste 149254721Semaste bool 150254721Semaste IsReferenceType(); 151254721Semaste 152254721Semaste bool 153254721Semaste IsFunctionType (); 154254721Semaste 155254721Semaste bool 156254721Semaste IsPolymorphicClass (); 157254721Semaste 158280031Sdim bool 159280031Sdim IsArrayType (); 160280031Sdim 161280031Sdim bool 162288943Sdim IsVectorType (); 163288943Sdim 164288943Sdim bool 165280031Sdim IsTypedefType (); 166280031Sdim 167296417Sdim bool 168296417Sdim IsAnonymousType (); 169296417Sdim 170254721Semaste lldb::SBType 171254721Semaste GetPointerType(); 172254721Semaste 173254721Semaste lldb::SBType 174254721Semaste GetPointeeType(); 175254721Semaste 176254721Semaste lldb::SBType 177254721Semaste GetReferenceType(); 178254721Semaste 179254721Semaste lldb::SBType 180262528Semaste GetTypedefedType(); 181262528Semaste 182262528Semaste lldb::SBType 183254721Semaste GetDereferencedType(); 184254721Semaste 185254721Semaste lldb::SBType 186254721Semaste GetUnqualifiedType(); 187280031Sdim 188280031Sdim lldb::SBType 189280031Sdim GetArrayElementType (); 190288943Sdim 191288943Sdim lldb::SBType 192288943Sdim GetVectorElementType (); 193254721Semaste 194254721Semaste lldb::SBType 195254721Semaste GetCanonicalType(); 196254721Semaste // Get the "lldb::BasicType" enumeration for a type. If a type is not a basic 197254721Semaste // type eBasicTypeInvalid will be returned 198254721Semaste lldb::BasicType 199254721Semaste GetBasicType(); 200254721Semaste 201254721Semaste // The call below confusing and should really be renamed to "CreateBasicType" 202254721Semaste lldb::SBType 203254721Semaste GetBasicType(lldb::BasicType type); 204254721Semaste 205254721Semaste uint32_t 206254721Semaste GetNumberOfFields (); 207254721Semaste 208254721Semaste uint32_t 209254721Semaste GetNumberOfDirectBaseClasses (); 210254721Semaste 211254721Semaste uint32_t 212254721Semaste GetNumberOfVirtualBaseClasses (); 213254721Semaste 214254721Semaste lldb::SBTypeMember 215254721Semaste GetFieldAtIndex (uint32_t idx); 216254721Semaste 217254721Semaste lldb::SBTypeMember 218254721Semaste GetDirectBaseClassAtIndex (uint32_t idx); 219254721Semaste 220254721Semaste lldb::SBTypeMember 221254721Semaste GetVirtualBaseClassAtIndex (uint32_t idx); 222254721Semaste 223276479Sdim lldb::SBTypeEnumMemberList 224276479Sdim GetEnumMembers(); 225276479Sdim 226254721Semaste uint32_t 227254721Semaste GetNumberOfTemplateArguments (); 228254721Semaste 229254721Semaste lldb::SBType 230254721Semaste GetTemplateArgumentType (uint32_t idx); 231254721Semaste 232254721Semaste lldb::TemplateArgumentKind 233254721Semaste GetTemplateArgumentKind (uint32_t idx); 234254721Semaste 235254721Semaste lldb::SBType 236254721Semaste GetFunctionReturnType (); 237254721Semaste 238254721Semaste lldb::SBTypeList 239254721Semaste GetFunctionArgumentTypes (); 240280031Sdim 241280031Sdim uint32_t 242280031Sdim GetNumberOfMemberFunctions (); 243280031Sdim 244280031Sdim lldb::SBTypeMemberFunction 245280031Sdim GetMemberFunctionAtIndex (uint32_t idx); 246254721Semaste 247254721Semaste const char* 248254721Semaste GetName(); 249254721Semaste 250276479Sdim const char * 251276479Sdim GetDisplayTypeName (); 252276479Sdim 253254721Semaste lldb::TypeClass 254254721Semaste GetTypeClass (); 255254721Semaste 256254721Semaste bool 257254721Semaste IsTypeComplete (); 258280031Sdim 259280031Sdim uint32_t 260280031Sdim GetTypeFlags (); 261254721Semaste 262254721Semaste bool 263254721Semaste GetDescription (lldb::SBStream &description, 264254721Semaste lldb::DescriptionLevel description_level); 265254721Semaste 266254721Semaste lldb::SBType & 267254721Semaste operator = (const lldb::SBType &rhs); 268254721Semaste 269254721Semaste bool 270254721Semaste operator == (lldb::SBType &rhs); 271254721Semaste 272254721Semaste bool 273254721Semaste operator != (lldb::SBType &rhs); 274254721Semaste 275254721Semasteprotected: 276254721Semaste 277254721Semaste lldb_private::TypeImpl & 278254721Semaste ref (); 279254721Semaste 280254721Semaste const lldb_private::TypeImpl & 281254721Semaste ref () const; 282254721Semaste 283254721Semaste lldb::TypeImplSP 284254721Semaste GetSP (); 285254721Semaste 286254721Semaste void 287254721Semaste SetSP (const lldb::TypeImplSP &type_impl_sp); 288254721Semaste 289254721Semaste lldb::TypeImplSP m_opaque_sp; 290254721Semaste 291254721Semaste friend class SBFunction; 292254721Semaste friend class SBModule; 293254721Semaste friend class SBTarget; 294276479Sdim friend class SBTypeEnumMember; 295276479Sdim friend class SBTypeEnumMemberList; 296254721Semaste friend class SBTypeNameSpecifier; 297254721Semaste friend class SBTypeMember; 298280031Sdim friend class SBTypeMemberFunction; 299254721Semaste friend class SBTypeList; 300254721Semaste friend class SBValue; 301254721Semaste 302296417Sdim SBType (const lldb_private::CompilerType &); 303254721Semaste SBType (const lldb::TypeSP &); 304254721Semaste SBType (const lldb::TypeImplSP &); 305254721Semaste 306254721Semaste}; 307254721Semaste 308254721Semasteclass SBTypeList 309254721Semaste{ 310254721Semastepublic: 311254721Semaste SBTypeList(); 312254721Semaste 313254721Semaste SBTypeList(const lldb::SBTypeList& rhs); 314254721Semaste 315254721Semaste ~SBTypeList(); 316254721Semaste 317254721Semaste lldb::SBTypeList& 318254721Semaste operator = (const lldb::SBTypeList& rhs); 319254721Semaste 320254721Semaste bool 321254721Semaste IsValid(); 322254721Semaste 323254721Semaste void 324254721Semaste Append (lldb::SBType type); 325254721Semaste 326254721Semaste lldb::SBType 327254721Semaste GetTypeAtIndex (uint32_t index); 328254721Semaste 329254721Semaste uint32_t 330254721Semaste GetSize(); 331254721Semaste 332254721Semaste 333254721Semasteprivate: 334254721Semaste std::unique_ptr<lldb_private::TypeListImpl> m_opaque_ap; 335254721Semaste friend class SBModule; 336254721Semaste friend class SBCompileUnit; 337254721Semaste}; 338254721Semaste 339254721Semaste 340254721Semaste} // namespace lldb 341254721Semaste 342254721Semaste#endif // LLDB_SBType_h_ 343