11fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton//===-- SBWatchpoint.h ----------------------------------*- C++ -*-===//
2096c293f8d4171448908801d5a1a74b152af1430Johnny Chen//
3096c293f8d4171448908801d5a1a74b152af1430Johnny Chen//                     The LLVM Compiler Infrastructure
4096c293f8d4171448908801d5a1a74b152af1430Johnny Chen//
5096c293f8d4171448908801d5a1a74b152af1430Johnny Chen// This file is distributed under the University of Illinois Open Source
6096c293f8d4171448908801d5a1a74b152af1430Johnny Chen// License. See LICENSE.TXT for details.
7096c293f8d4171448908801d5a1a74b152af1430Johnny Chen//
8096c293f8d4171448908801d5a1a74b152af1430Johnny Chen//===----------------------------------------------------------------------===//
9096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
101fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton#ifndef LLDB_SBWatchpoint_h_
111fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton#define LLDB_SBWatchpoint_h_
12096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
13096c293f8d4171448908801d5a1a74b152af1430Johnny Chen#include "lldb/API/SBDefines.h"
14096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
15096c293f8d4171448908801d5a1a74b152af1430Johnny Chennamespace lldb {
16096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
171fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Claytonclass SBWatchpoint
18096c293f8d4171448908801d5a1a74b152af1430Johnny Chen{
19096c293f8d4171448908801d5a1a74b152af1430Johnny Chenpublic:
20096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
211fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    SBWatchpoint ();
22096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
231fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    SBWatchpoint (const lldb::SBWatchpoint &rhs);
24096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
250a19a1b9c25117854f226256805239d95153ed2dGreg Clayton    SBWatchpoint (const lldb::WatchpointSP &wp_sp);
260a19a1b9c25117854f226256805239d95153ed2dGreg Clayton
271fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    ~SBWatchpoint ();
28096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
291fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    const lldb::SBWatchpoint &
301fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    operator = (const lldb::SBWatchpoint &rhs);
31096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
3241a55efdfd779b910fb3515c47357c97e695ec22Johnny Chen    bool
3341a55efdfd779b910fb3515c47357c97e695ec22Johnny Chen    IsValid() const;
3441a55efdfd779b910fb3515c47357c97e695ec22Johnny Chen
35a442da2c8213b09b6b3869c8e30b5d98023ed7baJim Ingham    SBError
36a442da2c8213b09b6b3869c8e30b5d98023ed7baJim Ingham    GetError();
37a442da2c8213b09b6b3869c8e30b5d98023ed7baJim Ingham
38092bd1575675778c6ebe901a7760af7427db617eJohnny Chen    watch_id_t
391fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    GetID ();
40092bd1575675778c6ebe901a7760af7427db617eJohnny Chen
41092bd1575675778c6ebe901a7760af7427db617eJohnny Chen    /// With -1 representing an invalid hardware index.
42092bd1575675778c6ebe901a7760af7427db617eJohnny Chen    int32_t
431fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    GetHardwareIndex ();
44092bd1575675778c6ebe901a7760af7427db617eJohnny Chen
45096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    lldb::addr_t
461fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    GetWatchAddress ();
47096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
48096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    size_t
491fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    GetWatchSize();
50096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
51096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    void
52096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    SetEnabled(bool enabled);
53096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
54096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    bool
55096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    IsEnabled ();
56096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
57096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    uint32_t
581fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    GetHitCount ();
59092bd1575675778c6ebe901a7760af7427db617eJohnny Chen
60092bd1575675778c6ebe901a7760af7427db617eJohnny Chen    uint32_t
61096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    GetIgnoreCount ();
62096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
63096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    void
64096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    SetIgnoreCount (uint32_t n);
65096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
66712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen    const char *
67712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen    GetCondition ();
68712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen
69712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen    void
70712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen    SetCondition (const char *condition);
71712a628dde2f4f786389feecf7e06e59f0853c75Johnny Chen
72096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    bool
73096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    GetDescription (lldb::SBStream &description, DescriptionLevel level);
74096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
750a19a1b9c25117854f226256805239d95153ed2dGreg Clayton    void
760a19a1b9c25117854f226256805239d95153ed2dGreg Clayton    Clear ();
770a19a1b9c25117854f226256805239d95153ed2dGreg Clayton
780a19a1b9c25117854f226256805239d95153ed2dGreg Clayton    lldb::WatchpointSP
790a19a1b9c25117854f226256805239d95153ed2dGreg Clayton    GetSP () const;
800a19a1b9c25117854f226256805239d95153ed2dGreg Clayton
810a19a1b9c25117854f226256805239d95153ed2dGreg Clayton    void
820a19a1b9c25117854f226256805239d95153ed2dGreg Clayton    SetSP (const lldb::WatchpointSP &sp);
83096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
849c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham    static bool
859c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham    EventIsWatchpointEvent (const lldb::SBEvent &event);
869c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham
879c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham    static lldb::WatchpointEventType
889c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham    GetWatchpointEventTypeFromEvent (const lldb::SBEvent& event);
899c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham
909c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham    static lldb::SBWatchpoint
919c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham    GetWatchpointFromEvent (const lldb::SBEvent& event);
929c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham
93096c293f8d4171448908801d5a1a74b152af1430Johnny Chenprivate:
94096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    friend class SBTarget;
95ecd4feb5111432d2878e95461220c720cb2d24c8Johnny Chen    friend class SBValue;
96096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
970a19a1b9c25117854f226256805239d95153ed2dGreg Clayton
98ecd4feb5111432d2878e95461220c720cb2d24c8Johnny Chen    lldb::WatchpointSP m_opaque_sp;
99096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
100096c293f8d4171448908801d5a1a74b152af1430Johnny Chen};
101096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
102096c293f8d4171448908801d5a1a74b152af1430Johnny Chen} // namespace lldb
103096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
1041fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton#endif  // LLDB_SBWatchpoint_h_
105