blob: 8368135a2e0f4d20601b5a39e15a5a61ad381845 [file] [log] [blame]
Chris Lattner24943d22010-06-08 16:52:24 +00001//===-- SBBroadcaster.cpp ---------------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "lldb/Core/Broadcaster.h"
Caroline Tice7826c882010-10-26 03:11:13 +000011#include "lldb/Core/Log.h"
Chris Lattner24943d22010-06-08 16:52:24 +000012#include "lldb/lldb-forward-rtti.h"
13
Eli Friedmand6ec8aa2010-06-09 07:37:52 +000014#include "lldb/API/SBBroadcaster.h"
15#include "lldb/API/SBListener.h"
16#include "lldb/API/SBEvent.h"
Chris Lattner24943d22010-06-08 16:52:24 +000017
18using namespace lldb;
19using namespace lldb_private;
20
21
22SBBroadcaster::SBBroadcaster () :
Greg Clayton63094e02010-06-23 01:19:29 +000023 m_opaque (NULL),
24 m_opaque_owned (false)
Chris Lattner24943d22010-06-08 16:52:24 +000025{
Caroline Tice7826c882010-10-26 03:11:13 +000026 Log *log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API | LIBLLDB_LOG_VERBOSE);
27
28 if (log)
29 log->Printf ("SBBroadcastetr::SBBroadcaster () ==> this = %p", this);
Chris Lattner24943d22010-06-08 16:52:24 +000030}
31
32
33SBBroadcaster::SBBroadcaster (const char *name) :
Greg Clayton63094e02010-06-23 01:19:29 +000034 m_opaque (new Broadcaster (name)),
35 m_opaque_owned (true)
Chris Lattner24943d22010-06-08 16:52:24 +000036{
Caroline Tice7826c882010-10-26 03:11:13 +000037 Log *log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API | LIBLLDB_LOG_VERBOSE);
38
39 if (log)
40 log->Printf ("SBBroadcaster::SBBroadcaster (const char *name) name = '%s' ==> this = %p (m_opaque = %p)",
41 name, this, m_opaque);
Chris Lattner24943d22010-06-08 16:52:24 +000042}
43
44SBBroadcaster::SBBroadcaster (lldb_private::Broadcaster *broadcaster, bool owns) :
Greg Clayton63094e02010-06-23 01:19:29 +000045 m_opaque (broadcaster),
46 m_opaque_owned (owns)
Chris Lattner24943d22010-06-08 16:52:24 +000047{
Caroline Tice7826c882010-10-26 03:11:13 +000048 Log *log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API | LIBLLDB_LOG_VERBOSE);
49
50 if (log)
51 log->Printf ("SBBroadcaster::SBBroadcaster (lldb_private::Broadcaster *broadcaster, bool owns) "
52 " broadcaster = %p, owns = %s ==> this = %p", broadcaster, (owns ? "true" : "false"), this);
Chris Lattner24943d22010-06-08 16:52:24 +000053}
54
55SBBroadcaster::~SBBroadcaster()
56{
Greg Clayton63094e02010-06-23 01:19:29 +000057 reset (NULL, false);
Chris Lattner24943d22010-06-08 16:52:24 +000058}
59
60void
61SBBroadcaster::BroadcastEventByType (uint32_t event_type, bool unique)
62{
Caroline Tice7826c882010-10-26 03:11:13 +000063 Log *log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API);
64
65 if (log)
66 log->Printf ("SBBroadcaster::BroadcastEventByType (%d, %s)", event_type, (unique ? "true" : "false"));
67
Greg Clayton63094e02010-06-23 01:19:29 +000068 if (m_opaque == NULL)
Chris Lattner24943d22010-06-08 16:52:24 +000069 return;
70
71 if (unique)
Greg Clayton63094e02010-06-23 01:19:29 +000072 m_opaque->BroadcastEventIfUnique (event_type);
Chris Lattner24943d22010-06-08 16:52:24 +000073 else
Greg Clayton63094e02010-06-23 01:19:29 +000074 m_opaque->BroadcastEvent (event_type);
Chris Lattner24943d22010-06-08 16:52:24 +000075}
76
77void
78SBBroadcaster::BroadcastEvent (const SBEvent &event, bool unique)
79{
Greg Clayton63094e02010-06-23 01:19:29 +000080 if (m_opaque == NULL)
Chris Lattner24943d22010-06-08 16:52:24 +000081 return;
82
Greg Clayton63094e02010-06-23 01:19:29 +000083 EventSP event_sp = event.GetSP ();
Chris Lattner24943d22010-06-08 16:52:24 +000084 if (unique)
Greg Clayton63094e02010-06-23 01:19:29 +000085 m_opaque->BroadcastEventIfUnique (event_sp);
Chris Lattner24943d22010-06-08 16:52:24 +000086 else
Greg Clayton63094e02010-06-23 01:19:29 +000087 m_opaque->BroadcastEvent (event_sp);
Chris Lattner24943d22010-06-08 16:52:24 +000088}
89
90void
91SBBroadcaster::AddInitialEventsToListener (const SBListener &listener, uint32_t requested_events)
92{
Greg Clayton63094e02010-06-23 01:19:29 +000093 if (m_opaque)
94 m_opaque->AddInitialEventsToListener (listener.get(), requested_events);
Chris Lattner24943d22010-06-08 16:52:24 +000095}
96
97uint32_t
98SBBroadcaster::AddListener (const SBListener &listener, uint32_t event_mask)
99{
Greg Clayton63094e02010-06-23 01:19:29 +0000100 if (m_opaque)
101 return m_opaque->AddListener (listener.get(), event_mask);
Chris Lattner24943d22010-06-08 16:52:24 +0000102 return 0;
103}
104
105const char *
106SBBroadcaster::GetName ()
107{
Greg Clayton63094e02010-06-23 01:19:29 +0000108 if (m_opaque)
109 return m_opaque->GetBroadcasterName().AsCString();
Chris Lattner24943d22010-06-08 16:52:24 +0000110 return NULL;
111}
112
113bool
114SBBroadcaster::EventTypeHasListeners (uint32_t event_type)
115{
Greg Clayton63094e02010-06-23 01:19:29 +0000116 if (m_opaque)
117 return m_opaque->EventTypeHasListeners (event_type);
Chris Lattner24943d22010-06-08 16:52:24 +0000118 return false;
119}
120
121bool
122SBBroadcaster::RemoveListener (const SBListener &listener, uint32_t event_mask)
123{
Greg Clayton63094e02010-06-23 01:19:29 +0000124 if (m_opaque)
125 return m_opaque->RemoveListener (listener.get(), event_mask);
Chris Lattner24943d22010-06-08 16:52:24 +0000126 return false;
127}
128
129Broadcaster *
Greg Clayton63094e02010-06-23 01:19:29 +0000130SBBroadcaster::get () const
Chris Lattner24943d22010-06-08 16:52:24 +0000131{
Greg Clayton63094e02010-06-23 01:19:29 +0000132 return m_opaque;
Chris Lattner24943d22010-06-08 16:52:24 +0000133}
134
135void
Greg Clayton63094e02010-06-23 01:19:29 +0000136SBBroadcaster::reset (Broadcaster *broadcaster, bool owns)
Chris Lattner24943d22010-06-08 16:52:24 +0000137{
Greg Clayton63094e02010-06-23 01:19:29 +0000138 if (m_opaque && m_opaque_owned)
139 delete m_opaque;
140 m_opaque = broadcaster;
141 m_opaque_owned = owns;
Chris Lattner24943d22010-06-08 16:52:24 +0000142}
143
144
145bool
146SBBroadcaster::IsValid () const
147{
Greg Clayton63094e02010-06-23 01:19:29 +0000148 return m_opaque != NULL;
Chris Lattner24943d22010-06-08 16:52:24 +0000149}
150
151bool
152SBBroadcaster::operator == (const SBBroadcaster &rhs) const
153{
Greg Clayton63094e02010-06-23 01:19:29 +0000154 return m_opaque == rhs.m_opaque;
Chris Lattner24943d22010-06-08 16:52:24 +0000155
156}
157
158bool
159SBBroadcaster::operator != (const SBBroadcaster &rhs) const
160{
Greg Clayton63094e02010-06-23 01:19:29 +0000161 return m_opaque != rhs.m_opaque;
Chris Lattner24943d22010-06-08 16:52:24 +0000162}