1 //===-- SBSymbol.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_SBSymbol_h_ 11 #define LLDB_SBSymbol_h_ 12 13 #include "lldb/API/SBDefines.h" 14 #include "lldb/API/SBAddress.h" 15 #include "lldb/API/SBInstructionList.h" 16 #include "lldb/API/SBTarget.h" 17 18 namespace lldb { 19 20 class SBSymbol 21 { 22 public: 23 24 SBSymbol (); 25 26 ~SBSymbol (); 27 28 SBSymbol (const lldb::SBSymbol &rhs); 29 30 const lldb::SBSymbol & 31 operator = (const lldb::SBSymbol &rhs); 32 33 bool 34 IsValid () const; 35 36 37 const char * 38 GetName() const; 39 40 const char * 41 GetMangledName () const; 42 43 lldb::SBInstructionList 44 GetInstructions (lldb::SBTarget target); 45 46 lldb::SBInstructionList 47 GetInstructions (lldb::SBTarget target, const char *flavor_string); 48 49 SBAddress 50 GetStartAddress (); 51 52 SBAddress 53 GetEndAddress (); 54 55 uint32_t 56 GetPrologueByteSize (); 57 58 SymbolType 59 GetType (); 60 61 bool 62 operator == (const lldb::SBSymbol &rhs) const; 63 64 bool 65 operator != (const lldb::SBSymbol &rhs) const; 66 67 bool 68 GetDescription (lldb::SBStream &description); 69 70 //---------------------------------------------------------------------- 71 // Returns true if the symbol is externally visible in the module that 72 // it is defined in 73 //---------------------------------------------------------------------- 74 bool 75 IsExternal(); 76 77 //---------------------------------------------------------------------- 78 // Returns true if the symbol was synthetically generated from something 79 // other than the actual symbol table itself in the object file. 80 //---------------------------------------------------------------------- 81 bool 82 IsSynthetic(); 83 84 protected: 85 86 lldb_private::Symbol * 87 get (); 88 89 void 90 reset (lldb_private::Symbol *); 91 92 private: 93 friend class SBAddress; 94 friend class SBFrame; 95 friend class SBModule; 96 friend class SBSymbolContext; 97 98 SBSymbol (lldb_private::Symbol *lldb_object_ptr); 99 100 void 101 SetSymbol (lldb_private::Symbol *lldb_object_ptr); 102 103 lldb_private::Symbol *m_opaque_ptr; 104 }; 105 106 107 } // namespace lldb 108 109 #endif // LLDB_SBSymbol_h_ 110