SBType.h revision 3eeaf6e715784499520885535236ccff1ba56d1c
19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//===-- SBType.h ------------------------------------------------*- C++ -*-===// 29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// 39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// The LLVM Compiler Infrastructure 49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// 59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// This file is distributed under the University of Illinois Open Source 69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// License. See LICENSE.TXT for details. 79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// 89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//===----------------------------------------------------------------------===// 99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef LLDB_SBType_h_ 119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define LLDB_SBType_h_ 129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#include "lldb/API/SBDefines.h" 149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknamespace lldb { 169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass SBTypeList; 189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass SBTypeMember 209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ 219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block SBTypeMember (); 239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block SBTypeMember (const lldb::SBTypeMember& rhs); 259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ~SBTypeMember(); 279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef SWIG 299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::SBTypeMember& 309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block operator = (const lldb::SBTypeMember& rhs); 319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool 349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block IsValid() const; 35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char * 379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetName (); 389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::SBType 409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetType (); 419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block uint64_t 439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetOffsetInBytes(); 449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block uint64_t 469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetOffsetInBits(); 479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool 499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetDescription (lldb::SBStream &description, 509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::DescriptionLevel description_level); 519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block friend class SBType; 549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef SWIG 569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void 579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block reset (lldb_private::TypeMemberImpl *); 589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb_private::TypeMemberImpl & 609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ref (); 619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const lldb_private::TypeMemberImpl & 639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ref () const; 649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block std::auto_ptr<lldb_private::TypeMemberImpl> m_opaque_ap; 679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass SBType 709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ 719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block SBType(); 749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block SBType (const lldb::SBType &rhs); 769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ~SBType (); 789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool 809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block IsValid() const; 819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 82e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott size_t 839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetByteSize(); 849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 85e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool 869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block IsPointerType(); 879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool 899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block IsReferenceType(); 90e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::SBType 929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetPointerType(); 939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::SBType 959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetPointeeType(); 969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 97e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott lldb::SBType 989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetReferenceType(); 999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::SBType 1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetDereferencedType(); 1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::SBType 104e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott GetUnqualifiedType(); 1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::SBType 1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetBasicType(lldb::BasicType type); 1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block uint32_t 1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetNumberOfFields (); 1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block uint32_t 1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetNumberOfDirectBaseClasses (); 1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block uint32_t 1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetNumberOfVirtualBaseClasses (); 1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 118e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott lldb::SBTypeMember 119e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott GetFieldAtIndex (uint32_t idx); 120e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::SBTypeMember 1229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetDirectBaseClassAtIndex (uint32_t idx); 1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::SBTypeMember 1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetVirtualBaseClassAtIndex (uint32_t idx); 1269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block uint32_t 1289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetNumberOfTemplateArguments (); 1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::SBType 1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetTemplateArgumentType (uint32_t idx); 1329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::TemplateArgumentKind 1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetTemplateArgumentKind (uint32_t idx); 1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const char* 1379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetName(); 1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::TypeClass 1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetTypeClass (); 1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // DEPRECATED: but needed for Xcode right now 1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static bool 1449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block IsPointerType (void * clang_type); 1459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool 1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetDescription (lldb::SBStream &description, 1489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::DescriptionLevel description_level); 1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef SWIG 1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::SBType & 1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block operator = (const lldb::SBType &rhs); 1539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool 1559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block operator == (lldb::SBType &rhs); 1569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool 1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block operator != (lldb::SBType &rhs); 1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef SWIG 1649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb_private::TypeImpl & 1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ref (); 1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const lldb_private::TypeImpl & 1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ref () const; 1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void 1719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block SetSP (const lldb::TypeImplSP &type_impl_sp); 1729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::TypeImplSP m_opaque_sp; 1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 177e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott friend class SBModule; 178e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott friend class SBTarget; 1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block friend class SBValue; 1809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block friend class SBTypeMember; 1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block friend class SBTypeList; 182e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 183e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott SBType (const lldb_private::ClangASTType &); 1849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block SBType (const lldb::TypeSP &); 185e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott SBType (const lldb::TypeImplSP &); 186e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 1879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 1889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass SBTypeList 1909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ 1919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 1929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block SBTypeList(); 1939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block SBTypeList(const lldb::SBTypeList& rhs); 1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ~SBTypeList(); 1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::SBTypeList& 1999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block operator = (const lldb::SBTypeList& rhs); 2009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool 2029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block IsValid(); 2039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void 2059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Append (lldb::SBType type); 2069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lldb::SBType 2089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetTypeAtIndex (uint32_t index); 2099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block uint32_t 2119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block GetSize(); 2129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block std::auto_ptr<lldb_private::TypeListImpl> m_opaque_ap; 2169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} // namespace lldb 2209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif // LLDB_SBType_h_ 2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block