Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:42:42

0001 //===-- SBListener.h --------------------------------------------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 
0009 #ifndef LLDB_API_SBLISTENER_H
0010 #define LLDB_API_SBLISTENER_H
0011 
0012 #include "lldb/API/SBDefines.h"
0013 
0014 namespace lldb {
0015 
0016 class LLDB_API SBListener {
0017 public:
0018   SBListener();
0019 
0020   SBListener(const char *name);
0021 
0022   SBListener(const SBListener &rhs);
0023 
0024   ~SBListener();
0025 
0026   const lldb::SBListener &operator=(const lldb::SBListener &rhs);
0027 
0028   void AddEvent(const lldb::SBEvent &event);
0029 
0030   void Clear();
0031 
0032   explicit operator bool() const;
0033 
0034   bool IsValid() const;
0035 
0036   uint32_t StartListeningForEventClass(SBDebugger &debugger,
0037                                        const char *broadcaster_class,
0038                                        uint32_t event_mask);
0039 
0040   bool StopListeningForEventClass(SBDebugger &debugger,
0041                                   const char *broadcaster_class,
0042                                   uint32_t event_mask);
0043 
0044   uint32_t StartListeningForEvents(const lldb::SBBroadcaster &broadcaster,
0045                                    uint32_t event_mask);
0046 
0047   bool StopListeningForEvents(const lldb::SBBroadcaster &broadcaster,
0048                               uint32_t event_mask);
0049 
0050   // Returns true if an event was received, false if we timed out.
0051   bool WaitForEvent(uint32_t num_seconds, lldb::SBEvent &event);
0052 
0053   bool WaitForEventForBroadcaster(uint32_t num_seconds,
0054                                   const lldb::SBBroadcaster &broadcaster,
0055                                   lldb::SBEvent &sb_event);
0056 
0057   bool WaitForEventForBroadcasterWithType(
0058       uint32_t num_seconds, const lldb::SBBroadcaster &broadcaster,
0059       uint32_t event_type_mask, lldb::SBEvent &sb_event);
0060 
0061   bool PeekAtNextEvent(lldb::SBEvent &sb_event);
0062 
0063   bool PeekAtNextEventForBroadcaster(const lldb::SBBroadcaster &broadcaster,
0064                                      lldb::SBEvent &sb_event);
0065 
0066   bool
0067   PeekAtNextEventForBroadcasterWithType(const lldb::SBBroadcaster &broadcaster,
0068                                         uint32_t event_type_mask,
0069                                         lldb::SBEvent &sb_event);
0070 
0071   bool GetNextEvent(lldb::SBEvent &sb_event);
0072 
0073   bool GetNextEventForBroadcaster(const lldb::SBBroadcaster &broadcaster,
0074                                   lldb::SBEvent &sb_event);
0075 
0076   bool
0077   GetNextEventForBroadcasterWithType(const lldb::SBBroadcaster &broadcaster,
0078                                      uint32_t event_type_mask,
0079                                      lldb::SBEvent &sb_event);
0080 
0081   bool HandleBroadcastEvent(const lldb::SBEvent &event);
0082 
0083 protected:
0084   friend class SBAttachInfo;
0085   friend class SBBroadcaster;
0086   friend class SBCommandInterpreter;
0087   friend class SBDebugger;
0088   friend class SBLaunchInfo;
0089   friend class SBTarget;
0090 
0091   SBListener(const lldb::ListenerSP &listener_sp);
0092 
0093   lldb::ListenerSP GetSP();
0094 
0095 private:
0096   lldb_private::Listener *operator->() const;
0097 
0098   lldb_private::Listener *get() const;
0099 
0100   void reset(lldb::ListenerSP listener_sp);
0101 
0102   lldb::ListenerSP m_opaque_sp;
0103   lldb_private::Listener *m_unused_ptr = nullptr;
0104 };
0105 
0106 } // namespace lldb
0107 
0108 #endif // LLDB_API_SBLISTENER_H