blob: b9debcfae2294787ddff3800dbdca9cd8b25f6d9 [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"
11#include "lldb/lldb-forward-rtti.h"
12
13#include "SBBroadcaster.h"
14#include "SBListener.h"
15#include "SBEvent.h"
16
17using namespace lldb;
18using namespace lldb_private;
19
20
21SBBroadcaster::SBBroadcaster () :
22 m_lldb_object (NULL),
23 m_lldb_object_owned (false)
24{
25}
26
27
28SBBroadcaster::SBBroadcaster (const char *name) :
29 m_lldb_object (new Broadcaster (name)),
30 m_lldb_object_owned (true)
31{
32}
33
34SBBroadcaster::SBBroadcaster (lldb_private::Broadcaster *broadcaster, bool owns) :
35 m_lldb_object (broadcaster),
36 m_lldb_object_owned (owns)
37{
38}
39
40SBBroadcaster::~SBBroadcaster()
41{
42 SetLLDBObjectPtr (NULL, false);
43}
44
45void
46SBBroadcaster::BroadcastEventByType (uint32_t event_type, bool unique)
47{
48 if (m_lldb_object == NULL)
49 return;
50
51 if (unique)
52 m_lldb_object->BroadcastEventIfUnique (event_type);
53 else
54 m_lldb_object->BroadcastEvent (event_type);
55}
56
57void
58SBBroadcaster::BroadcastEvent (const SBEvent &event, bool unique)
59{
60 if (m_lldb_object == NULL)
61 return;
62
63 EventSP event_sp = event.GetSharedPtr ();
64 if (unique)
65 m_lldb_object->BroadcastEventIfUnique (event_sp);
66 else
67 m_lldb_object->BroadcastEvent (event_sp);
68}
69
70void
71SBBroadcaster::AddInitialEventsToListener (const SBListener &listener, uint32_t requested_events)
72{
73 if (m_lldb_object)
74 m_lldb_object->AddInitialEventsToListener (listener.get(), requested_events);
75}
76
77uint32_t
78SBBroadcaster::AddListener (const SBListener &listener, uint32_t event_mask)
79{
80 if (m_lldb_object)
81 return m_lldb_object->AddListener (listener.get(), event_mask);
82 return 0;
83}
84
85const char *
86SBBroadcaster::GetName ()
87{
88 if (m_lldb_object)
89 return m_lldb_object->GetBroadcasterName().AsCString();
90 return NULL;
91}
92
93bool
94SBBroadcaster::EventTypeHasListeners (uint32_t event_type)
95{
96 if (m_lldb_object)
97 return m_lldb_object->EventTypeHasListeners (event_type);
98 return false;
99}
100
101bool
102SBBroadcaster::RemoveListener (const SBListener &listener, uint32_t event_mask)
103{
104 if (m_lldb_object)
105 return m_lldb_object->RemoveListener (listener.get(), event_mask);
106 return false;
107}
108
109Broadcaster *
110SBBroadcaster::GetLLDBObjectPtr () const
111{
112 return m_lldb_object;
113}
114
115void
116SBBroadcaster::SetLLDBObjectPtr (Broadcaster *broadcaster, bool owns)
117{
118 if (m_lldb_object && m_lldb_object_owned)
119 delete m_lldb_object;
120 m_lldb_object = broadcaster;
121 m_lldb_object_owned = owns;
122}
123
124
125bool
126SBBroadcaster::IsValid () const
127{
128 return m_lldb_object != NULL;
129}
130
131bool
132SBBroadcaster::operator == (const SBBroadcaster &rhs) const
133{
134 return m_lldb_object == rhs.m_lldb_object;
135
136}
137
138bool
139SBBroadcaster::operator != (const SBBroadcaster &rhs) const
140{
141 return m_lldb_object != rhs.m_lldb_object;
142}