116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata//===-- SBTypeSynthetic.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_SBTypeSynthetic_h_
1116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata#define LLDB_SBTypeSynthetic_h_
1216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
1316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata#include "lldb/API/SBDefines.h"
1416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
15c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#ifndef LLDB_DISABLE_PYTHON
16c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda
1716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granatanamespace lldb {
1816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
1916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    class SBTypeSynthetic
2016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    {
2116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    public:
2216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
2316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeSynthetic();
2416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
2516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        static SBTypeSynthetic
2616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        CreateWithClassName (const char* data,
2716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata                             uint32_t options = 0); // see lldb::eTypeOption values
2816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
2916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        static SBTypeSynthetic
3016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        CreateWithScriptCode (const char* data,
3116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata                              uint32_t options = 0); // see lldb::eTypeOption values
3216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
3316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeSynthetic (const lldb::SBTypeSynthetic &rhs);
3416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
3516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        ~SBTypeSynthetic ();
3616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
3716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
3816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        IsValid() const;
3916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
4016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
4116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        IsClassCode();
4216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
4316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
4416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        IsClassName();
4516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
4616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        const char*
4716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetData ();
4816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
4916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        void
5016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SetClassName (const char* data);
5116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
5216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        void
5316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SetClassCode (const char* data);
5416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
5516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        uint32_t
5616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetOptions ();
5716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
5816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        void
5916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SetOptions (uint32_t);
6016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
6116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
6216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetDescription (lldb::SBStream &description,
6316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata                        lldb::DescriptionLevel description_level);
6416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
6516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        lldb::SBTypeSynthetic &
6616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        operator = (const lldb::SBTypeSynthetic &rhs);
6716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
6816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
6916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        IsEqualTo (lldb::SBTypeSynthetic &rhs);
7016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
7116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
7216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        operator == (lldb::SBTypeSynthetic &rhs);
7316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
7416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
7516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        operator != (lldb::SBTypeSynthetic &rhs);
7616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
7716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    protected:
7816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        friend class SBDebugger;
7916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        friend class SBTypeCategory;
80d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata        friend class SBValue;
8116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
82f509c5ec066599a3399fced39ea36996184939e8Enrico Granata        lldb::ScriptedSyntheticChildrenSP
8316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetSP ();
8416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
8516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        void
86f509c5ec066599a3399fced39ea36996184939e8Enrico Granata        SetSP (const lldb::ScriptedSyntheticChildrenSP &typefilter_impl_sp);
8716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
88f509c5ec066599a3399fced39ea36996184939e8Enrico Granata        lldb::ScriptedSyntheticChildrenSP m_opaque_sp;
8916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
90f509c5ec066599a3399fced39ea36996184939e8Enrico Granata        SBTypeSynthetic (const lldb::ScriptedSyntheticChildrenSP &);
9116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
9216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
9316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        CopyOnWrite_Impl();
9416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
9516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    };
9616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
9716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
9816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata} // namespace lldb
9916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
100c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda#endif // LLDB_DISABLE_PYTHON
101c48ca82920bd333c7ccb6ec0e579207add130296Jason Molenda
10216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata#endif // LLDB_SBTypeSynthetic_h_
103