SBSymbolContext.h revision 102b2c2681c9a830afe25bfea35557421905e42c
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    const lldb::SBSymbolContext &
36    operator = (const lldb::SBSymbolContext &rhs);
37
38    lldb::SBModule        GetModule ();
39    lldb::SBCompileUnit   GetCompileUnit ();
40    lldb::SBFunction      GetFunction ();
41    lldb::SBBlock         GetBlock ();
42    lldb::SBLineEntry     GetLineEntry ();
43    lldb::SBSymbol        GetSymbol ();
44
45    void SetModule (lldb::SBModule module);
46    void SetCompileUnit (lldb::SBCompileUnit compile_unit);
47    void SetFunction (lldb::SBFunction function);
48    void SetBlock (lldb::SBBlock block);
49    void SetLineEntry (lldb::SBLineEntry line_entry);
50    void SetSymbol (lldb::SBSymbol symbol);
51
52    SBSymbolContext
53    GetParentOfInlinedScope (const SBAddress &curr_frame_pc,
54                             SBAddress &parent_frame_addr) const;
55
56    bool
57    GetDescription (lldb::SBStream &description);
58
59protected:
60    friend class SBAddress;
61    friend class SBFrame;
62    friend class SBModule;
63    friend class SBThread;
64    friend class SBTarget;
65    friend class SBSymbolContextList;
66
67    lldb_private::SymbolContext*
68    operator->() const;
69
70    lldb_private::SymbolContext&
71    operator*();
72
73    lldb_private::SymbolContext&
74    ref();
75
76    const lldb_private::SymbolContext&
77    operator*() const;
78
79    lldb_private::SymbolContext *
80    get() const;
81
82    SBSymbolContext (const lldb_private::SymbolContext *sc_ptr);
83
84    void
85    SetSymbolContext (const lldb_private::SymbolContext *sc_ptr);
86
87private:
88    std::unique_ptr<lldb_private::SymbolContext> m_opaque_ap;
89};
90
91
92} // namespace lldb
93
94#endif // LLDB_SBSymbolContext_h_
95