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