116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata//===-- SBTypeCategory.h --------------------------------------------*- C++ -*-===//
216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata//
316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata//                     The LLVM Compiler Infrastructure
416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata//
516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata// This file is distributed under the University of Illinois Open Source
616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata// License. See LICENSE.TXT for details.
716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata//
816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata//===----------------------------------------------------------------------===//
916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
1016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata#ifndef LLDB_SBTypeCategory_h_
1116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata#define LLDB_SBTypeCategory_h_
1216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
1316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata#include "lldb/API/SBDefines.h"
1416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
1516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granatanamespace lldb {
1616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
1716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    class SBTypeCategory
1816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    {
1916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    public:
2016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
2116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeCategory();
2216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
2316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeCategory (const lldb::SBTypeCategory &rhs);
2416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
2516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        ~SBTypeCategory ();
2616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
2716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
2816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        IsValid() const;
2916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
3016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
3116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetEnabled ();
3216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
3316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        void
3416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SetEnabled (bool);
3516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
3616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        const char*
3716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetName();
3816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
3916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
4016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetDescription (lldb::SBStream &description,
4116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata                        lldb::DescriptionLevel description_level);
4216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
4316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        uint32_t
4416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetNumFormats ();
4516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
4616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        uint32_t
4716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetNumSummaries ();
4816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
4916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        uint32_t
5016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetNumFilters ();
5116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
52c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#ifndef LLDB_DISABLE_PYTHON
5316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        uint32_t
5416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetNumSynthetics ();
55c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#endif
5616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
5716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeNameSpecifier
5816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetTypeNameSpecifierForFilterAtIndex (uint32_t);
5916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
6016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeNameSpecifier
6116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetTypeNameSpecifierForFormatAtIndex (uint32_t);
6216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
6316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeNameSpecifier
6416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetTypeNameSpecifierForSummaryAtIndex (uint32_t);
6516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
66c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#ifndef LLDB_DISABLE_PYTHON
6716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeNameSpecifier
6816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetTypeNameSpecifierForSyntheticAtIndex (uint32_t);
69c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#endif
7016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
7116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeFilter
7216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetFilterForType (SBTypeNameSpecifier);
7316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
7416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeFormat
7516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetFormatForType (SBTypeNameSpecifier);
7616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
77c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#ifndef LLDB_DISABLE_PYTHON
7816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeSummary
7916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetSummaryForType (SBTypeNameSpecifier);
80c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#endif
8116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
82c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#ifndef LLDB_DISABLE_PYTHON
8316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeSynthetic
8416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetSyntheticForType (SBTypeNameSpecifier);
85c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#endif
8616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
87c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#ifndef LLDB_DISABLE_PYTHON
8816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeFilter
8916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetFilterAtIndex (uint32_t);
90c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#endif
9116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
9216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeFormat
9316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetFormatAtIndex (uint32_t);
9416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
95c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#ifndef LLDB_DISABLE_PYTHON
9616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeSummary
9716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetSummaryAtIndex (uint32_t);
98c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#endif
9916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
100c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#ifndef LLDB_DISABLE_PYTHON
10116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeSynthetic
10216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetSyntheticAtIndex (uint32_t);
103c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#endif
10416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
10516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
10616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        AddTypeFormat (SBTypeNameSpecifier,
10716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata                       SBTypeFormat);
10816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
10916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
11016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        DeleteTypeFormat (SBTypeNameSpecifier);
11116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
112c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#ifndef LLDB_DISABLE_PYTHON
11316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
11416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        AddTypeSummary (SBTypeNameSpecifier,
11516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata                        SBTypeSummary);
116c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#endif
11716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
11816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
11916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        DeleteTypeSummary (SBTypeNameSpecifier);
12016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
12116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
12216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        AddTypeFilter (SBTypeNameSpecifier,
12316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata                       SBTypeFilter);
12416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
12516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
12616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        DeleteTypeFilter (SBTypeNameSpecifier);
12716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
128c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#ifndef LLDB_DISABLE_PYTHON
12916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
13016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        AddTypeSynthetic (SBTypeNameSpecifier,
13116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata                          SBTypeSynthetic);
13216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
13316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
13416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        DeleteTypeSynthetic (SBTypeNameSpecifier);
135c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#endif
13616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
13716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        lldb::SBTypeCategory &
13816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        operator = (const lldb::SBTypeCategory &rhs);
13916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
14016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
14116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        operator == (lldb::SBTypeCategory &rhs);
14216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
14316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
14416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        operator != (lldb::SBTypeCategory &rhs);
14516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
14616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    protected:
14716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        friend class SBDebugger;
14816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
14916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        lldb::TypeCategoryImplSP
15016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetSP ();
15116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
15216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        void
15316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SetSP (const lldb::TypeCategoryImplSP &typecategory_impl_sp);
15416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
15516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        TypeCategoryImplSP m_opaque_sp;
15616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
15716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeCategory (const lldb::TypeCategoryImplSP &);
15816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
15916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeCategory (const char*);
16016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
16116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
16216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        IsDefaultCategory();
16316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
16416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    };
16516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
16616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata} // namespace lldb
16716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
16816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata#endif // LLDB_SBTypeCategory_h_
169