SBDeclaration.h revision 49306144bb37f0b3423d992f17cdcc24703374b4
1//===-- SBDeclaration.h -------------------------------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLDB_SBDeclaration_h_
11#define LLDB_SBDeclaration_h_
12
13#include "lldb/API/SBDefines.h"
14#include "lldb/API/SBFileSpec.h"
15
16namespace lldb {
17
18    class SBDeclaration
19    {
20    public:
21
22        SBDeclaration ();
23
24        SBDeclaration (const lldb::SBDeclaration &rhs);
25
26        ~SBDeclaration ();
27
28        const lldb::SBDeclaration &
29        operator = (const lldb::SBDeclaration &rhs);
30
31        bool
32        IsValid () const;
33
34        lldb::SBFileSpec
35        GetFileSpec () const;
36
37        uint32_t
38        GetLine () const;
39
40        uint32_t
41        GetColumn () const;
42
43        void
44        SetFileSpec (lldb::SBFileSpec filespec);
45
46        void
47        SetLine (uint32_t line);
48
49        void
50        SetColumn (uint32_t column);
51
52        bool
53        operator == (const lldb::SBDeclaration &rhs) const;
54
55        bool
56        operator != (const lldb::SBDeclaration &rhs) const;
57
58        bool
59        GetDescription (lldb::SBStream &description);
60
61    protected:
62
63        lldb_private::Declaration *
64        get ();
65
66    private:
67        friend class SBValue;
68
69        const lldb_private::Declaration *
70        operator->() const;
71
72        lldb_private::Declaration &
73        ref();
74
75        const lldb_private::Declaration &
76        ref() const;
77
78        SBDeclaration (const lldb_private::Declaration *lldb_object_ptr);
79
80        void
81        SetDeclaration (const lldb_private::Declaration &lldb_object_ref);
82
83        std::auto_ptr<lldb_private::Declaration> m_opaque_ap;
84    };
85
86
87} // namespace lldb
88
89#endif // LLDB_SBDeclaration_h_
90