124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBListener.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_SBListener_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_SBListener_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 135f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBDefines.h" 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb { 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBListener 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 20538eb82a89a68dbc57251915080bd5152b333978Greg Clayton SBListener (); 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22538eb82a89a68dbc57251915080bd5152b333978Greg Clayton SBListener (const char *name); 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 24538eb82a89a68dbc57251915080bd5152b333978Greg Clayton SBListener (const SBListener &rhs); 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~SBListener (); 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28538eb82a89a68dbc57251915080bd5152b333978Greg Clayton const lldb::SBListener & 29538eb82a89a68dbc57251915080bd5152b333978Greg Clayton operator = (const lldb::SBListener &rhs); 30538eb82a89a68dbc57251915080bd5152b333978Greg Clayton 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner AddEvent (const lldb::SBEvent &event); 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Clear (); 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner IsValid () const; 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t 415a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham StartListeningForEventClass (SBDebugger &debugger, 425a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham const char *broadcaster_class, 435a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham uint32_t event_mask); 445a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham 455a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham bool 465a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham StopListeningForEventClass (SBDebugger &debugger, 475a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham const char *broadcaster_class, 485a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham uint32_t event_mask); 495a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham 505a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham uint32_t 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner StartListeningForEvents (const lldb::SBBroadcaster& broadcaster, 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t event_mask); 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner StopListeningForEvents (const lldb::SBBroadcaster& broadcaster, 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t event_mask); 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Returns true if an event was recieved, false if we timed out. 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner WaitForEvent (uint32_t num_seconds, 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::SBEvent &event); 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner WaitForEventForBroadcaster (uint32_t num_seconds, 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const lldb::SBBroadcaster &broadcaster, 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::SBEvent &sb_event); 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner WaitForEventForBroadcasterWithType (uint32_t num_seconds, 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const lldb::SBBroadcaster &broadcaster, 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t event_type_mask, 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::SBEvent &sb_event); 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner PeekAtNextEvent (lldb::SBEvent &sb_event); 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner PeekAtNextEventForBroadcaster (const lldb::SBBroadcaster &broadcaster, 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::SBEvent &sb_event); 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner PeekAtNextEventForBroadcasterWithType (const lldb::SBBroadcaster &broadcaster, 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t event_type_mask, 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::SBEvent &sb_event); 8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetNextEvent (lldb::SBEvent &sb_event); 8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetNextEventForBroadcaster (const lldb::SBBroadcaster &broadcaster, 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::SBEvent &sb_event); 9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetNextEventForBroadcasterWithType (const lldb::SBBroadcaster &broadcaster, 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t event_type_mask, 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::SBEvent &sb_event); 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner HandleBroadcastEvent (const lldb::SBEvent &event); 10024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 101538eb82a89a68dbc57251915080bd5152b333978Greg Claytonprotected: 1023f5ee7fd6991891f0892bd71537763d9b59acd12Greg Clayton friend class SBBroadcaster; 1033f5ee7fd6991891f0892bd71537763d9b59acd12Greg Clayton friend class SBCommandInterpreter; 1043f5ee7fd6991891f0892bd71537763d9b59acd12Greg Clayton friend class SBDebugger; 1053f5ee7fd6991891f0892bd71537763d9b59acd12Greg Clayton friend class SBTarget; 10624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 107538eb82a89a68dbc57251915080bd5152b333978Greg Clayton SBListener (lldb_private::Listener &listener); 108538eb82a89a68dbc57251915080bd5152b333978Greg Clayton 109538eb82a89a68dbc57251915080bd5152b333978Greg Claytonprivate: 110538eb82a89a68dbc57251915080bd5152b333978Greg Clayton 11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::Listener * 11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner operator->() const; 11324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::Listener * 11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner get() const; 11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::Listener & 118271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton ref() const; 119271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton 120271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton lldb_private::Listener & 12124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner operator *(); 12224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 12324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const lldb_private::Listener & 12424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner operator *() const; 12524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 12663094e0bb161580564954dee512955c1c79d3476Greg Clayton void 12763094e0bb161580564954dee512955c1c79d3476Greg Clayton reset(lldb_private::Listener *listener, bool transfer_ownership); 12863094e0bb161580564954dee512955c1c79d3476Greg Clayton 129538eb82a89a68dbc57251915080bd5152b333978Greg Clayton lldb::ListenerSP m_opaque_sp; 13063094e0bb161580564954dee512955c1c79d3476Greg Clayton lldb_private::Listener *m_opaque_ptr; 13124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 13224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 13324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb 13424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 13524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // LLDB_SBListener_h_ 136