diff options
Diffstat (limited to 'lldb/source/API')
-rw-r--r-- | lldb/source/API/SBBroadcaster.cpp | 2 | ||||
-rw-r--r-- | lldb/source/API/SBCommandInterpreter.cpp | 6 | ||||
-rw-r--r-- | lldb/source/API/SBCommunication.cpp | 5 | ||||
-rw-r--r-- | lldb/source/API/SBEvent.cpp | 10 | ||||
-rw-r--r-- | lldb/source/API/SBListener.cpp | 36 | ||||
-rw-r--r-- | lldb/source/API/SBProcess.cpp | 14 | ||||
-rw-r--r-- | lldb/source/API/SBTarget.cpp | 7 |
7 files changed, 77 insertions, 3 deletions
diff --git a/lldb/source/API/SBBroadcaster.cpp b/lldb/source/API/SBBroadcaster.cpp index a33f784e30a..9ede891868b 100644 --- a/lldb/source/API/SBBroadcaster.cpp +++ b/lldb/source/API/SBBroadcaster.cpp @@ -25,7 +25,7 @@ SBBroadcaster::SBBroadcaster () : } SBBroadcaster::SBBroadcaster (const char *name) : - m_opaque_sp (new Broadcaster (name)), + m_opaque_sp (new Broadcaster (NULL, name)), m_opaque_ptr (NULL) { m_opaque_ptr = m_opaque_sp.get(); diff --git a/lldb/source/API/SBCommandInterpreter.cpp b/lldb/source/API/SBCommandInterpreter.cpp index e6054789090..cbf2f914089 100644 --- a/lldb/source/API/SBCommandInterpreter.cpp +++ b/lldb/source/API/SBCommandInterpreter.cpp @@ -292,6 +292,12 @@ SBCommandInterpreter::GetBroadcaster () return broadcaster; } +const char * +SBCommandInterpreter::GetBroadcasterClass () +{ + return Communication::GetStaticBroadcasterClass().AsCString(); +} + const char * SBCommandInterpreter::GetArgumentTypeAsCString (const lldb::CommandArgumentType arg_type) { diff --git a/lldb/source/API/SBCommunication.cpp b/lldb/source/API/SBCommunication.cpp index 6b5ddb37cd6..bf3a49e719e 100644 --- a/lldb/source/API/SBCommunication.cpp +++ b/lldb/source/API/SBCommunication.cpp @@ -255,6 +255,11 @@ SBCommunication::GetBroadcaster () return broadcaster; } +const char * +SBCommunication::GetBroadcasterClass () +{ + return Communication::GetStaticBroadcasterClass().AsCString(); +} // //void diff --git a/lldb/source/API/SBEvent.cpp b/lldb/source/API/SBEvent.cpp index f9d0e0cc3a8..5ba71b0aa30 100644 --- a/lldb/source/API/SBEvent.cpp +++ b/lldb/source/API/SBEvent.cpp @@ -109,6 +109,16 @@ SBEvent::GetBroadcaster () const return broadcaster; } +const char * +SBEvent::GetBroadcasterClass () const +{ + const Event *lldb_event = get(); + if (lldb_event) + return lldb_event->GetBroadcaster()->GetBroadcasterClass().AsCString(); + else + return "unknown class"; +} + bool SBEvent::BroadcasterMatchesPtr (const SBBroadcaster *broadcaster) { diff --git a/lldb/source/API/SBListener.cpp b/lldb/source/API/SBListener.cpp index f9816347d11..b1942be36fe 100644 --- a/lldb/source/API/SBListener.cpp +++ b/lldb/source/API/SBListener.cpp @@ -9,9 +9,11 @@ #include "lldb/API/SBListener.h" #include "lldb/API/SBBroadcaster.h" +#include "lldb/API/SBDebugger.h" #include "lldb/API/SBEvent.h" #include "lldb/API/SBStream.h" #include "lldb/Core/Broadcaster.h" +#include "lldb/Core/Debugger.h" #include "lldb/Core/Listener.h" #include "lldb/Core/Log.h" #include "lldb/Core/StreamString.h" @@ -90,6 +92,40 @@ SBListener::Clear () m_opaque_ptr->Clear (); } + uint32_t + SBListener::StartListeningForEventClass (SBDebugger &debugger, + const char *broadcaster_class, + uint32_t event_mask) + { + if (m_opaque_ptr) + { + Debugger *lldb_debugger = debugger.get(); + if (!lldb_debugger) + return 0; + BroadcastEventSpec event_spec (ConstString (broadcaster_class), event_mask); + return m_opaque_ptr->StartListeningForEventSpec (*lldb_debugger, event_spec); + } + else + return 0; + } + + bool + SBListener::StopListeningForEventClass (SBDebugger &debugger, + const char *broadcaster_class, + uint32_t event_mask) + { + if (m_opaque_ptr) + { + Debugger *lldb_debugger = debugger.get(); + if (!lldb_debugger) + return false; + BroadcastEventSpec event_spec (ConstString (broadcaster_class), event_mask); + return m_opaque_ptr->StopListeningForEventSpec (*lldb_debugger, event_spec); + } + else + return false; + } + uint32_t SBListener::StartListeningForEvents (const SBBroadcaster& broadcaster, uint32_t event_mask) { diff --git a/lldb/source/API/SBProcess.cpp b/lldb/source/API/SBProcess.cpp index 5fc71966078..9e32f91c107 100644 --- a/lldb/source/API/SBProcess.cpp +++ b/lldb/source/API/SBProcess.cpp @@ -74,6 +74,12 @@ SBProcess::~SBProcess() { } +const char * +SBProcess::GetBroadcasterClassName () +{ + return Process::GetStaticBroadcasterClass().AsCString(); +} + lldb::ProcessSP SBProcess::GetSP() const { @@ -743,7 +749,7 @@ SBProcess::GetProcessFromEvent (const SBEvent &event) bool SBProcess::EventIsProcessEvent (const SBEvent &event) { - return Process::ProcessEventData::GetEventDataFromEvent(event.get()) != NULL; + return strcmp (event.GetBroadcasterClass(), SBProcess::GetBroadcasterClass()) == 0; } SBBroadcaster @@ -762,6 +768,12 @@ SBProcess::GetBroadcaster () const return broadcaster; } +const char * +SBProcess::GetBroadcasterClass () +{ + return Process::GetStaticBroadcasterClass().AsCString(); +} + size_t SBProcess::ReadMemory (addr_t addr, void *dst, size_t dst_len, SBError &sb_error) { diff --git a/lldb/source/API/SBTarget.cpp b/lldb/source/API/SBTarget.cpp index 687c44e01f2..7fdfb347429 100644 --- a/lldb/source/API/SBTarget.cpp +++ b/lldb/source/API/SBTarget.cpp @@ -87,6 +87,12 @@ SBTarget::~SBTarget() { } +const char * +SBTarget::GetBroadcasterClassName () +{ + return Target::GetStaticBroadcasterClass().AsCString(); +} + bool SBTarget::IsValid () const { @@ -1235,7 +1241,6 @@ SBTarget::GetBroadcaster () const return broadcaster; } - bool SBTarget::GetDescription (SBStream &description, lldb::DescriptionLevel description_level) { |