116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata//===-- SBTypeFilter.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_SBTypeFilter_h_
1116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata#define LLDB_SBTypeFilter_h_
1216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
1316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata#include "lldb/API/SBDefines.h"
1416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
1516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granatanamespace lldb {
1616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
1716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    class SBTypeFilter
1816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    {
1916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    public:
2016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
2116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeFilter();
2216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
2316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeFilter (uint32_t options); // see lldb::eTypeOption values
2416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
2516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeFilter (const lldb::SBTypeFilter &rhs);
2616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
2716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        ~SBTypeFilter ();
2816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
2916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
3016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        IsValid() const;
3116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
3216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        uint32_t
3316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetNumberOfExpressionPaths ();
3416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
3516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        const char*
3616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetExpressionPathAtIndex (uint32_t i);
3716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
3816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
3916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        ReplaceExpressionPathAtIndex (uint32_t i, const char* item);
4016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
4116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        void
4216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        AppendExpressionPath (const char* item);
4316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
4416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        void
4516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        Clear();
4616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
4716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        uint32_t
4816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetOptions();
4916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
5016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        void
5116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SetOptions (uint32_t);
5216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
5316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
5416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetDescription (lldb::SBStream &description,
5516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata                        lldb::DescriptionLevel description_level);
5616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
5716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        lldb::SBTypeFilter &
5816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        operator = (const lldb::SBTypeFilter &rhs);
5916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
6016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
6116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        IsEqualTo (lldb::SBTypeFilter &rhs);
6216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
6316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
6416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        operator == (lldb::SBTypeFilter &rhs);
6516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
6616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
6716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        operator != (lldb::SBTypeFilter &rhs);
6816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
6916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    protected:
7016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        friend class SBDebugger;
7116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        friend class SBTypeCategory;
72d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata        friend class SBValue;
7316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
7416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        lldb::TypeFilterImplSP
7516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetSP ();
7616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
7716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        void
7816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SetSP (const lldb::TypeFilterImplSP &typefilter_impl_sp);
7916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
8016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        lldb::TypeFilterImplSP m_opaque_sp;
8116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
8216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeFilter (const lldb::TypeFilterImplSP &);
8316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
8416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
8516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        CopyOnWrite_Impl();
8616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
8716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    };
8816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
8916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
9016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata} // namespace lldb
9116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
9216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata#endif // LLDB_SBTypeFilter_h_
93