SBSymbolContext.h revision 23b8abbe214c252028f6e09f79169529c846409d
1//===-- SBSymbolContext.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_SBSymbolContext_h_
11#define LLDB_SBSymbolContext_h_
12
13#include "lldb/API/SBDefines.h"
14#include "lldb/API/SBBlock.h"
15#include "lldb/API/SBCompileUnit.h"
16#include "lldb/API/SBFunction.h"
17#include "lldb/API/SBLineEntry.h"
18#include "lldb/API/SBModule.h"
19#include "lldb/API/SBSymbol.h"
20
21namespace lldb {
22
23class SBSymbolContext
24{
25public:
26    SBSymbolContext ();
27
28    SBSymbolContext (const lldb::SBSymbolContext& rhs);
29
30    ~SBSymbolContext ();
31
32    bool
33    IsValid () const;
34
35#ifndef SWIG
36    const lldb::SBSymbolContext &
37    operator = (const lldb::SBSymbolContext &rhs);
38#endif
39
40    lldb::SBModule        GetModule ();
41    lldb::SBCompileUnit   GetCompileUnit ();
42    lldb::SBFunction      GetFunction ();
43    lldb::SBBlock         GetBlock ();
44    lldb::SBLineEntry     GetLineEntry ();
45    lldb::SBSymbol        GetSymbol ();
46
47    void SetModule (lldb::SBModule module);
48    void SetCompileUnit (lldb::SBCompileUnit compile_unit);
49    void SetFunction (lldb::SBFunction function);
50    void SetBlock (lldb::SBBlock block);
51    void SetLineEntry (lldb::SBLineEntry line_entry);
52    void SetSymbol (lldb::SBSymbol symbol);
53
54    SBSymbolContext
55    GetParentInlinedFrameInfo (const SBAddress &curr_frame_pc,
56                               bool is_concrete_frame,
57                               SBAddress &parent_frame_addr) const;
58
59    bool
60    GetDescription (lldb::SBStream &description);
61
62protected:
63    friend class SBAddress;
64    friend class SBFrame;
65    friend class SBModule;
66    friend class SBThread;
67    friend class SBTarget;
68    friend class SBSymbolContextList;
69
70#ifndef SWIG
71
72    lldb_private::SymbolContext*
73    operator->() const;
74
75    lldb_private::SymbolContext&
76    operator*();
77
78    lldb_private::SymbolContext&
79    ref();
80
81    const lldb_private::SymbolContext&
82    operator*() const;
83
84#endif
85
86    lldb_private::SymbolContext *
87    get() const;
88
89    SBSymbolContext (const lldb_private::SymbolContext *sc_ptr);
90
91    void
92    SetSymbolContext (const lldb_private::SymbolContext *sc_ptr);
93
94private:
95    std::auto_ptr<lldb_private::SymbolContext> m_opaque_ap;
96};
97
98
99} // namespace lldb
100
101#endif // LLDB_SBSymbolContext_h_
102