124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBFunction.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_SBFunction_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_SBFunction_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
135f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBDefines.h"
1489f1aa732c8b1df90cbbfe116b6f06cf80a25ae3Greg Clayton#include "lldb/API/SBAddress.h"
155c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton#include "lldb/API/SBInstructionList.h"
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb {
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBFunction
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic:
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBFunction ();
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
25538eb82a89a68dbc57251915080bd5152b333978Greg Clayton    SBFunction (const lldb::SBFunction &rhs);
26538eb82a89a68dbc57251915080bd5152b333978Greg Clayton
27538eb82a89a68dbc57251915080bd5152b333978Greg Clayton    const lldb::SBFunction &
28538eb82a89a68dbc57251915080bd5152b333978Greg Clayton    operator = (const lldb::SBFunction &rhs);
29538eb82a89a68dbc57251915080bd5152b333978Greg Clayton
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ~SBFunction ();
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    IsValid () const;
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const char *
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetName() const;
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const char *
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetMangledName () const;
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
415c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton    lldb::SBInstructionList
425c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton    GetInstructions (lldb::SBTarget target);
435c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton
447d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham    lldb::SBInstructionList
457d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham    GetInstructions (lldb::SBTarget target, const char *flavor);
467d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham
477dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton    lldb::SBAddress
4889f1aa732c8b1df90cbbfe116b6f06cf80a25ae3Greg Clayton    GetStartAddress ();
4989f1aa732c8b1df90cbbfe116b6f06cf80a25ae3Greg Clayton
507dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton    lldb::SBAddress
5189f1aa732c8b1df90cbbfe116b6f06cf80a25ae3Greg Clayton    GetEndAddress ();
5289f1aa732c8b1df90cbbfe116b6f06cf80a25ae3Greg Clayton
5389f1aa732c8b1df90cbbfe116b6f06cf80a25ae3Greg Clayton    uint32_t
5489f1aa732c8b1df90cbbfe116b6f06cf80a25ae3Greg Clayton    GetPrologueByteSize ();
5589f1aa732c8b1df90cbbfe116b6f06cf80a25ae3Greg Clayton
567dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton    lldb::SBType
577dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton    GetType ();
587dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton
597dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton    lldb::SBBlock
607dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton    GetBlock ();
617dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton
6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator == (const lldb::SBFunction &rhs) const;
6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator != (const lldb::SBFunction &rhs) const;
6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6898f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice    bool
6998f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice    GetDescription (lldb::SBStream &description);
7098f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice
7161ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Ticeprotected:
7261ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice
7361ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice    lldb_private::Function *
7461ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice    get ();
7561ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice
76dd62d729cf960051615a74c1e67e2e41ec789fd7Greg Clayton    void
77dd62d729cf960051615a74c1e67e2e41ec789fd7Greg Clayton    reset (lldb_private::Function *lldb_object_ptr);
78dd62d729cf960051615a74c1e67e2e41ec789fd7Greg Clayton
7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate:
80c51ffbf896e398ada5f7e89b2fa5aec6f2224f09Greg Clayton    friend class SBAddress;
8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBFrame;
8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBSymbolContext;
8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBFunction (lldb_private::Function *lldb_object_ptr);
8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8763094e0bb161580564954dee512955c1c79d3476Greg Clayton    lldb_private::Function *m_opaque_ptr;
8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb
9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // LLDB_SBFunction_h_
94