124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBBroadcaster.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_SBBroadcaster_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_SBBroadcaster_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 135f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBDefines.h" 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb { 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBBroadcaster 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBBroadcaster (); 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBBroadcaster (const char *name); 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 24538eb82a89a68dbc57251915080bd5152b333978Greg Clayton SBBroadcaster (const SBBroadcaster &rhs); 25538eb82a89a68dbc57251915080bd5152b333978Greg Clayton 26538eb82a89a68dbc57251915080bd5152b333978Greg Clayton const SBBroadcaster & 27538eb82a89a68dbc57251915080bd5152b333978Greg Clayton operator = (const SBBroadcaster &rhs); 28538eb82a89a68dbc57251915080bd5152b333978Greg Clayton 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~SBBroadcaster(); 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner IsValid () const; 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 353ca95dac942597ca76101f6792f16e34e81dea1dGreg Clayton Clear (); 363ca95dac942597ca76101f6792f16e34e81dea1dGreg Clayton 373ca95dac942597ca76101f6792f16e34e81dea1dGreg Clayton void 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner BroadcastEventByType (uint32_t event_type, bool unique = false); 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner BroadcastEvent (const lldb::SBEvent &event, bool unique = false); 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner AddInitialEventsToListener (const lldb::SBListener &listener, uint32_t requested_events); 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner AddListener (const lldb::SBListener &listener, uint32_t event_mask); 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char * 5049ce682dfa7993d31206cea19ce7006cd3f3077eGreg Clayton GetName () const; 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner EventTypeHasListeners (uint32_t event_type); 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner RemoveListener (const lldb::SBListener &listener, uint32_t event_mask = UINT32_MAX); 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 58422b1ae11aaec0bea88d3d2d1f4cdb0147cef0aeGreg Clayton // This comparison is checking if the internal opaque pointer value 59422b1ae11aaec0bea88d3d2d1f4cdb0147cef0aeGreg Clayton // is equal to that in "rhs". 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner operator == (const lldb::SBBroadcaster &rhs) const; 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 63422b1ae11aaec0bea88d3d2d1f4cdb0147cef0aeGreg Clayton // This comparison is checking if the internal opaque pointer value 64422b1ae11aaec0bea88d3d2d1f4cdb0147cef0aeGreg Clayton // is not equal to that in "rhs". 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner operator != (const lldb::SBBroadcaster &rhs) const; 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 68422b1ae11aaec0bea88d3d2d1f4cdb0147cef0aeGreg Clayton // This comparison is checking if the internal opaque pointer value 69422b1ae11aaec0bea88d3d2d1f4cdb0147cef0aeGreg Clayton // is less than that in "rhs" so SBBroadcaster objects can be contained 70422b1ae11aaec0bea88d3d2d1f4cdb0147cef0aeGreg Clayton // in ordered containers. 71422b1ae11aaec0bea88d3d2d1f4cdb0147cef0aeGreg Clayton bool 72422b1ae11aaec0bea88d3d2d1f4cdb0147cef0aeGreg Clayton operator < (const lldb::SBBroadcaster &rhs) const; 73422b1ae11aaec0bea88d3d2d1f4cdb0147cef0aeGreg Clayton 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner friend class SBCommandInterpreter; 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner friend class SBCommunication; 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner friend class SBEvent; 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner friend class SBListener; 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner friend class SBProcess; 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner friend class SBTarget; 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBBroadcaster (lldb_private::Broadcaster *broadcaster, bool owns); 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::Broadcaster * 8563094e0bb161580564954dee512955c1c79d3476Greg Clayton get () const; 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 8863094e0bb161580564954dee512955c1c79d3476Greg Clayton reset (lldb_private::Broadcaster *broadcaster, bool owns); 8963094e0bb161580564954dee512955c1c79d3476Greg Clayton 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate: 91538eb82a89a68dbc57251915080bd5152b333978Greg Clayton lldb::BroadcasterSP m_opaque_sp; 92538eb82a89a68dbc57251915080bd5152b333978Greg Clayton lldb_private::Broadcaster *m_opaque_ptr; 9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // LLDB_SBBroadcaster_h_ 98