//===-- SBListener.h --------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLDB_SBListener_h_ #define LLDB_SBListener_h_ #include "lldb/API/SBDefines.h" namespace lldb { class LLDB_API SBListener { public: SBListener(); SBListener(const char *name); SBListener(const SBListener &rhs); ~SBListener(); const lldb::SBListener &operator=(const lldb::SBListener &rhs); void AddEvent(const lldb::SBEvent &event); void Clear(); explicit operator bool() const; bool IsValid() const; uint32_t StartListeningForEventClass(SBDebugger &debugger, const char *broadcaster_class, uint32_t event_mask); bool StopListeningForEventClass(SBDebugger &debugger, const char *broadcaster_class, uint32_t event_mask); uint32_t StartListeningForEvents(const lldb::SBBroadcaster &broadcaster, uint32_t event_mask); bool StopListeningForEvents(const lldb::SBBroadcaster &broadcaster, uint32_t event_mask); // Returns true if an event was received, false if we timed out. bool WaitForEvent(uint32_t num_seconds, lldb::SBEvent &event); bool WaitForEventForBroadcaster(uint32_t num_seconds, const lldb::SBBroadcaster &broadcaster, lldb::SBEvent &sb_event); bool WaitForEventForBroadcasterWithType( uint32_t num_seconds, const lldb::SBBroadcaster &broadcaster, uint32_t event_type_mask, lldb::SBEvent &sb_event); bool PeekAtNextEvent(lldb::SBEvent &sb_event); bool PeekAtNextEventForBroadcaster(const lldb::SBBroadcaster &broadcaster, lldb::SBEvent &sb_event); bool PeekAtNextEventForBroadcasterWithType(const lldb::SBBroadcaster &broadcaster, uint32_t event_type_mask, lldb::SBEvent &sb_event); bool GetNextEvent(lldb::SBEvent &sb_event); bool GetNextEventForBroadcaster(const lldb::SBBroadcaster &broadcaster, lldb::SBEvent &sb_event); bool GetNextEventForBroadcasterWithType(const lldb::SBBroadcaster &broadcaster, uint32_t event_type_mask, lldb::SBEvent &sb_event); bool HandleBroadcastEvent(const lldb::SBEvent &event); protected: friend class SBAttachInfo; friend class SBBroadcaster; friend class SBCommandInterpreter; friend class SBDebugger; friend class SBLaunchInfo; friend class SBTarget; SBListener(const lldb::ListenerSP &listener_sp); lldb::ListenerSP GetSP(); private: lldb_private::Listener *operator->() const; lldb_private::Listener *get() const; void reset(lldb::ListenerSP listener_sp); lldb::ListenerSP m_opaque_sp; lldb_private::Listener *m_unused_ptr; }; } // namespace lldb #endif // LLDB_SBListener_h_