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/SBBlock.h" 14 #include "lldb/API/SBCompileUnit.h" 15 #include "lldb/API/SBDefines.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 21 namespace lldb { 22 23 class LLDB_API SBSymbolContext { 24 public: 25 SBSymbolContext(); 26 27 SBSymbolContext(const lldb::SBSymbolContext &rhs); 28 29 SBSymbolContext(const lldb_private::SymbolContext *sc_ptr); 30 31 ~SBSymbolContext(); 32 33 bool IsValid() const; 34 35 const lldb::SBSymbolContext &operator=(const lldb::SBSymbolContext &rhs); 36 37 lldb::SBModule GetModule(); 38 lldb::SBCompileUnit GetCompileUnit(); 39 lldb::SBFunction GetFunction(); 40 lldb::SBBlock GetBlock(); 41 lldb::SBLineEntry GetLineEntry(); 42 lldb::SBSymbol GetSymbol(); 43 44 void SetModule(lldb::SBModule module); 45 void SetCompileUnit(lldb::SBCompileUnit compile_unit); 46 void SetFunction(lldb::SBFunction function); 47 void SetBlock(lldb::SBBlock block); 48 void SetLineEntry(lldb::SBLineEntry line_entry); 49 void SetSymbol(lldb::SBSymbol symbol); 50 51 SBSymbolContext GetParentOfInlinedScope(const SBAddress &curr_frame_pc, 52 SBAddress &parent_frame_addr) const; 53 54 bool GetDescription(lldb::SBStream &description); 55 56 protected: 57 friend class SBAddress; 58 friend class SBFrame; 59 friend class SBModule; 60 friend class SBThread; 61 friend class SBTarget; 62 friend class SBSymbolContextList; 63 64 lldb_private::SymbolContext *operator->() const; 65 66 lldb_private::SymbolContext &operator*(); 67 68 lldb_private::SymbolContext &ref(); 69 70 const lldb_private::SymbolContext &operator*() const; 71 72 lldb_private::SymbolContext *get() const; 73 74 void SetSymbolContext(const lldb_private::SymbolContext *sc_ptr); 75 76 private: 77 std::unique_ptr<lldb_private::SymbolContext> m_opaque_ap; 78 }; 79 80 } // namespace lldb 81 82 #endif // LLDB_SBSymbolContext_h_ 83