SBAddress.h revision 63094e0bb161580564954dee512955c1c79d3476
124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBAddress.h ---------------------------------------------*- C++ -*-===//
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//                     The LLVM Compiler Infrastructure
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details.
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef LLDB_SBAddress_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_SBAddress_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
135f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBDefines.h"
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb {
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBAddress
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic:
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBAddress ();
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBAddress (const lldb::SBAddress &rhs);
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ~SBAddress ();
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef SWIG
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const SBAddress &
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator = (const SBAddress &rhs);
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    IsValid () const;
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    addr_t
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetFileAddress () const;
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    addr_t
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetLoadAddress (const lldb::SBProcess &process) const;
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    OffsetAddress (addr_t offset);
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected:
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBFrame;
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBLineEntry;
4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBSymbolContext;
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBThread;
5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef SWIG
5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const lldb_private::Address *
5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator->() const;
5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const lldb_private::Address &
5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator*() const;
5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif
6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBAddress (const lldb_private::Address *lldb_object_ptr);
6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SetAddress (const lldb_private::Address *lldb_object_ptr);
6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate:
6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6963094e0bb161580564954dee512955c1c79d3476Greg Clayton    std::auto_ptr<lldb_private::Address> m_opaque_ap;
7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb
7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // LLDB_SBAddress_h_
76