116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata//===-- SBTypeNameSpecifier.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_SBTypeNameSpecifier_h_
1116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata#define LLDB_SBTypeNameSpecifier_h_
1216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
1316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata#include "lldb/API/SBDefines.h"
1416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
1516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granatanamespace lldb {
1616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
1716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    class SBTypeNameSpecifier
1816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    {
1916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    public:
2016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
2116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeNameSpecifier();
2216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
2316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeNameSpecifier (const char* name,
2416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata                             bool is_regex = false);
25d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata
26d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata        SBTypeNameSpecifier (SBType type);
2716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
2816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeNameSpecifier (const lldb::SBTypeNameSpecifier &rhs);
2916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
3016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        ~SBTypeNameSpecifier ();
3116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
3216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
3316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        IsValid() const;
3416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
3516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        const char*
3616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetName();
3716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
38d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata        SBType
39d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata        GetType ();
40d760907c1d42726fa0c8c48efa28385ed339bb94Enrico Granata
4116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
4216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        IsRegex();
4316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
4416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
4516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetDescription (lldb::SBStream &description,
4616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata                        lldb::DescriptionLevel description_level);
4716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
4816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        lldb::SBTypeNameSpecifier &
4916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        operator = (const lldb::SBTypeNameSpecifier &rhs);
5016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
5116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
5216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        IsEqualTo (lldb::SBTypeNameSpecifier &rhs);
5316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
5416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
5516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        operator == (lldb::SBTypeNameSpecifier &rhs);
5616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
5716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        bool
5816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        operator != (lldb::SBTypeNameSpecifier &rhs);
5916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
6016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    protected:
6107baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata        friend class SBDebugger;
6216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        friend class SBTypeCategory;
6316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
6416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        lldb::TypeNameSpecifierImplSP
6516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        GetSP ();
6616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
6716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        void
6816376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SetSP (const lldb::TypeNameSpecifierImplSP &type_namespec_sp);
6916376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
7016376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        lldb::TypeNameSpecifierImplSP m_opaque_sp;
7116376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
7216376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata        SBTypeNameSpecifier (const lldb::TypeNameSpecifierImplSP &);
7316376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata    };
7416376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
7516376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata} // namespace lldb
7616376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata
7716376ed044df3ee70fcf69e19f06af01e71a8e9aEnrico Granata#endif // LLDB_SBTypeNameSpecifier_h_
78