149306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata//===-- SBDeclaration.h -------------------------------------------*- C++ -*-===//
249306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata//
349306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata//                     The LLVM Compiler Infrastructure
449306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata//
549306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata// This file is distributed under the University of Illinois Open Source
649306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata// License. See LICENSE.TXT for details.
749306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata//
849306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata//===----------------------------------------------------------------------===//
949306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
1049306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata#ifndef LLDB_SBDeclaration_h_
1149306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata#define LLDB_SBDeclaration_h_
1249306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
1349306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata#include "lldb/API/SBDefines.h"
1449306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata#include "lldb/API/SBFileSpec.h"
1549306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
1649306144bb37f0b3423d992f17cdcc24703374b4Enrico Granatanamespace lldb {
1749306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
1849306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata    class SBDeclaration
1949306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata    {
2049306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata    public:
2149306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
2249306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        SBDeclaration ();
2349306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
2449306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        SBDeclaration (const lldb::SBDeclaration &rhs);
2549306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
2649306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        ~SBDeclaration ();
2749306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
2849306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        const lldb::SBDeclaration &
2949306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        operator = (const lldb::SBDeclaration &rhs);
3049306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
3149306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        bool
3249306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        IsValid () const;
3349306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
3449306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        lldb::SBFileSpec
3549306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        GetFileSpec () const;
3649306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
3749306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        uint32_t
3849306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        GetLine () const;
3949306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
4049306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        uint32_t
4149306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        GetColumn () const;
4249306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
4349306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        void
4449306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        SetFileSpec (lldb::SBFileSpec filespec);
4549306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
4649306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        void
4749306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        SetLine (uint32_t line);
4849306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
4949306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        void
5049306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        SetColumn (uint32_t column);
5149306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
5249306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        bool
5349306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        operator == (const lldb::SBDeclaration &rhs) const;
5449306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
5549306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        bool
5649306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        operator != (const lldb::SBDeclaration &rhs) const;
5749306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
5849306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        bool
5949306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        GetDescription (lldb::SBStream &description);
6049306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
6149306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata    protected:
6249306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
6349306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        lldb_private::Declaration *
6449306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        get ();
6549306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
6649306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata    private:
6749306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        friend class SBValue;
6849306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
6949306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        const lldb_private::Declaration *
7049306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        operator->() const;
7149306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
7249306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        lldb_private::Declaration &
7349306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        ref();
7449306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
7549306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        const lldb_private::Declaration &
7649306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        ref() const;
7749306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
7849306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        SBDeclaration (const lldb_private::Declaration *lldb_object_ptr);
7949306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
8049306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        void
8149306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata        SetDeclaration (const lldb_private::Declaration &lldb_object_ref);
8249306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
83102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton        std::unique_ptr<lldb_private::Declaration> m_opaque_ap;
8449306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata    };
8549306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
8649306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
8749306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata} // namespace lldb
8849306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata
8949306144bb37f0b3423d992f17cdcc24703374b4Enrico Granata#endif // LLDB_SBDeclaration_h_
90