SBAddress.h revision 5c4c746a3a83c1aad411c6cdc5f9525a4fc2d17e
1//===-- SBAddress.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_SBAddress_h_
11#define LLDB_SBAddress_h_
12
13#include "lldb/API/SBDefines.h"
14
15namespace lldb {
16
17class SBAddress
18{
19public:
20
21    SBAddress ();
22
23    SBAddress (const lldb::SBAddress &rhs);
24
25    ~SBAddress ();
26
27#ifndef SWIG
28    const SBAddress &
29    operator = (const SBAddress &rhs);
30#endif
31
32    bool
33    IsValid () const;
34
35    void
36    Clear ();
37
38    addr_t
39    GetFileAddress () const;
40
41    addr_t
42    GetLoadAddress (const lldb::SBTarget &target) const;
43
44    bool
45    OffsetAddress (addr_t offset);
46
47    bool
48    GetDescription (lldb::SBStream &description);
49
50protected:
51
52    friend class SBFrame;
53    friend class SBLineEntry;
54    friend class SBInstruction;
55    friend class SBModule;
56    friend class SBSymbolContext;
57    friend class SBThread;
58
59#ifndef SWIG
60
61    lldb_private::Address *
62    operator->();
63
64    const lldb_private::Address *
65    operator->() const;
66
67    const lldb_private::Address &
68    operator*() const;
69
70    lldb_private::Address &
71    operator*();
72
73#endif
74
75
76    SBAddress (const lldb_private::Address *lldb_object_ptr);
77
78    void
79    SetAddress (const lldb_private::Address *lldb_object_ptr);
80
81private:
82
83    std::auto_ptr<lldb_private::Address> m_opaque_ap;
84};
85
86
87} // namespace lldb
88
89#endif // LLDB_SBAddress_h_
90