diff options
Diffstat (limited to 'tools/lldb-mi/MICmnLLDBDebugger.h')
-rw-r--r-- | tools/lldb-mi/MICmnLLDBDebugger.h | 172 |
1 files changed, 84 insertions, 88 deletions
diff --git a/tools/lldb-mi/MICmnLLDBDebugger.h b/tools/lldb-mi/MICmnLLDBDebugger.h index 0d608997d959..6075fd85e535 100644 --- a/tools/lldb-mi/MICmnLLDBDebugger.h +++ b/tools/lldb-mi/MICmnLLDBDebugger.h @@ -8,15 +8,15 @@ //===----------------------------------------------------------------------===// //++ -// File: MICmnLLDBDebugger.h +// File: MICmnLLDBDebugger.h // -// Overview: CMICmnLLDBDebugger interface. +// Overview: CMICmnLLDBDebugger interface. // -// Environment: Compilers: Visual C++ 12. -// gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1 -// Libraries: See MIReadmetxt. +// Environment: Compilers: Visual C++ 12. +// gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1 +// Libraries: See MIReadmetxt. // -// Copyright: None. +// Copyright: None. //-- #pragma once @@ -38,88 +38,84 @@ class CMIDriverBase; class CMICmnLLDBDebuggerHandleEvents; //++ ============================================================================ -// Details: MI proxy/adapter for the LLDB public SBDebugger API. The CMIDriver -// requires *this object. Command classes make calls on *this object -// to facilitate their work effort. The instance runs in its own worker -// thread. -// A singleton class. -// Gotchas: None. -// Authors: Illya Rudkin 26/02/2014. -// Changes: None. +// Details: MI proxy/adapter for the LLDB public SBDebugger API. The CMIDriver +// requires *this object. Command classes make calls on *this object +// to facilitate their work effort. The instance runs in its own worker +// thread. +// A singleton class. +// Gotchas: None. +// Authors: Illya Rudkin 26/02/2014. +// Changes: None. //-- -class CMICmnLLDBDebugger -: public CMICmnBase -, public CMIUtilThreadActiveObjBase -, public MI::ISingleton< CMICmnLLDBDebugger > +class CMICmnLLDBDebugger : public CMICmnBase, public CMIUtilThreadActiveObjBase, public MI::ISingleton<CMICmnLLDBDebugger> { - friend class MI::ISingleton< CMICmnLLDBDebugger >; - -// Methods: -public: - bool Initialize( void ); - bool Shutdown( void ); - - bool SetDriver( const CMIDriverBase & vClientDriver ); - CMIDriverBase & GetDriver( void ) const; - lldb::SBDebugger & GetTheDebugger( void ); - lldb::SBListener & GetTheListener( void ); - - // MI Commands can use these functions to listen for events they require - bool RegisterForEvent( const CMIUtilString & vClientName, const CMIUtilString & vBroadcasterClass, const MIuint vEventMask ); - bool UnregisterForEvent( const CMIUtilString & vClientName, const CMIUtilString & vBroadcasterClass ); - bool RegisterForEvent( const CMIUtilString & vClientName, const lldb::SBBroadcaster & vBroadcaster, const MIuint vEventMask ); - bool UnregisterForEvent( const CMIUtilString & vClientName, const lldb::SBBroadcaster & vBroadcaster ); - -// Overridden: -public: - // From CMIUtilThreadActiveObjBase - virtual const CMIUtilString & ThreadGetName( void ) const; - -// Overridden: -protected: - // From CMIUtilThreadActiveObjBase - virtual bool ThreadRun( bool & vrIsAlive ); - virtual bool ThreadFinish( void ); - -// Typedefs: -private: - typedef std::map< CMIUtilString, MIuint > MapBroadcastClassNameToEventMask_t; - typedef std::pair< CMIUtilString, MIuint > MapPairBroadcastClassNameToEventMask_t; - typedef std::map< CMIUtilString, MIuint > MapIdToEventMask_t; - typedef std::pair< CMIUtilString, MIuint > MapPairIdToEventMask_t; - -// Methods: -private: - /* ctor */ CMICmnLLDBDebugger( void ); - /* ctor */ CMICmnLLDBDebugger( const CMICmnLLDBDebugger & ); - void operator=( const CMICmnLLDBDebugger & ); - - bool InitSBDebugger( void ); - bool InitSBListener( void ); - bool InitStdStreams( void ); - bool MonitorSBListenerEvents( bool & vrbYesExit ); - - bool BroadcasterGetMask( const CMIUtilString & vBroadcasterClass, MIuint & vEventMask ) const; - bool BroadcasterRemoveMask( const CMIUtilString & vBroadcasterClass ); - bool BroadcasterSaveMask( const CMIUtilString & vBroadcasterClass, const MIuint vEventMask ); - - MIuint ClientGetMaskForAllClients( const CMIUtilString & vBroadcasterClass ) const; - bool ClientSaveMask( const CMIUtilString & vClientName, const CMIUtilString & vBroadcasterClass, const MIuint vEventMask ); - bool ClientRemoveTheirMask( const CMIUtilString & vClientName, const CMIUtilString & vBroadcasterClass ); - bool ClientGetTheirMask( const CMIUtilString & vClientName, const CMIUtilString & vBroadcasterClass, MIuint & vwEventMask ); - -// Overridden: -private: - // From CMICmnBase - /* dtor */ virtual ~CMICmnLLDBDebugger( void ); - -// Attributes: -private: - CMIDriverBase * m_pClientDriver; // The driver that wants to use *this LLDB debugger - lldb::SBDebugger m_lldbDebugger; // SBDebugger is the primordial object that creates SBTargets and provides access to them - lldb::SBListener m_lldbListener; // API clients can register its own listener to debugger events - const CMIUtilString m_constStrThisThreadId; - MapBroadcastClassNameToEventMask_t m_mapBroadcastClassNameToEventMask; - MapIdToEventMask_t m_mapIdToEventMask; -}; + friend class MI::ISingleton<CMICmnLLDBDebugger>; + + // Methods: + public: + bool Initialize(void); + bool Shutdown(void); + + bool SetDriver(const CMIDriverBase &vClientDriver); + CMIDriverBase &GetDriver(void) const; + lldb::SBDebugger &GetTheDebugger(void); + lldb::SBListener &GetTheListener(void); + + // MI Commands can use these functions to listen for events they require + bool RegisterForEvent(const CMIUtilString &vClientName, const CMIUtilString &vBroadcasterClass, const MIuint vEventMask); + bool UnregisterForEvent(const CMIUtilString &vClientName, const CMIUtilString &vBroadcasterClass); + bool RegisterForEvent(const CMIUtilString &vClientName, const lldb::SBBroadcaster &vBroadcaster, const MIuint vEventMask); + bool UnregisterForEvent(const CMIUtilString &vClientName, const lldb::SBBroadcaster &vBroadcaster); + + // Overridden: + public: + // From CMIUtilThreadActiveObjBase + virtual const CMIUtilString &ThreadGetName(void) const; + + // Overridden: + protected: + // From CMIUtilThreadActiveObjBase + virtual bool ThreadRun(bool &vrIsAlive); + virtual bool ThreadFinish(void); + + // Typedefs: + private: + typedef std::map<CMIUtilString, MIuint> MapBroadcastClassNameToEventMask_t; + typedef std::pair<CMIUtilString, MIuint> MapPairBroadcastClassNameToEventMask_t; + typedef std::map<CMIUtilString, MIuint> MapIdToEventMask_t; + typedef std::pair<CMIUtilString, MIuint> MapPairIdToEventMask_t; + // Methods: + private: + /* ctor */ CMICmnLLDBDebugger(void); + /* ctor */ CMICmnLLDBDebugger(const CMICmnLLDBDebugger &); + void operator=(const CMICmnLLDBDebugger &); + + bool InitSBDebugger(void); + bool InitSBListener(void); + bool InitStdStreams(void); + bool MonitorSBListenerEvents(bool &vrbYesExit); + + bool BroadcasterGetMask(const CMIUtilString &vBroadcasterClass, MIuint &vEventMask) const; + bool BroadcasterRemoveMask(const CMIUtilString &vBroadcasterClass); + bool BroadcasterSaveMask(const CMIUtilString &vBroadcasterClass, const MIuint vEventMask); + + MIuint ClientGetMaskForAllClients(const CMIUtilString &vBroadcasterClass) const; + bool ClientSaveMask(const CMIUtilString &vClientName, const CMIUtilString &vBroadcasterClass, const MIuint vEventMask); + bool ClientRemoveTheirMask(const CMIUtilString &vClientName, const CMIUtilString &vBroadcasterClass); + bool ClientGetTheirMask(const CMIUtilString &vClientName, const CMIUtilString &vBroadcasterClass, MIuint &vwEventMask); + + // Overridden: + private: + // From CMICmnBase + /* dtor */ virtual ~CMICmnLLDBDebugger(void); + + // Attributes: + private: + CMIDriverBase *m_pClientDriver; // The driver that wants to use *this LLDB debugger + lldb::SBDebugger m_lldbDebugger; // SBDebugger is the primordial object that creates SBTargets and provides access to them + lldb::SBListener m_lldbListener; // API clients can register its own listener to debugger events + const CMIUtilString m_constStrThisThreadId; + MapBroadcastClassNameToEventMask_t m_mapBroadcastClassNameToEventMask; + MapIdToEventMask_t m_mapIdToEventMask; +}; |