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