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 
16 namespace 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::unique_ptr<lldb_private::Declaration> m_opaque_ap;
84     };
85 
86 
87 } // namespace lldb
88 
89 #endif // LLDB_SBDeclaration_h_
90