Home | History | Annotate | Download | only in API
      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