aboutsummaryrefslogtreecommitdiff
path: root/tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.h')
-rw-r--r--tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.h b/tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.h
new file mode 100644
index 000000000000..fdcb2ea4e147
--- /dev/null
+++ b/tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.h
@@ -0,0 +1,97 @@
+//===-- MICmnLLDBDebuggerHandleEvents.h -------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+//++
+// File: MICmnLLDBDebuggerHandleEvents.h
+//
+// Overview: CMICmnLLDBDebuggerHandleEvents interface.
+//
+// Environment: Compilers: Visual C++ 12.
+// gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
+// Libraries: See MIReadmetxt.
+//
+// Copyright: None.
+//--
+
+#pragma once
+
+// In-house headers:
+#include "MICmnBase.h"
+#include "MICmnMIValueTuple.h"
+#include "MIUtilSingletonBase.h"
+
+// Declarations:
+class CMICmnLLDBDebugSessionInfo;
+class CMICmnMIResultRecord;
+class CMICmnStreamStdout;
+class CMICmnMIOutOfBandRecord;
+
+//++ ============================================================================
+// Details: MI class to take LLDB SBEvent objects, filter them and form
+// MI Out-of-band records from the information inside the event object.
+// These records are then pushed to stdout.
+// A singleton class.
+// Gotchas: None.
+// Authors: Illya Rudkin 02/03/2014.
+// Changes: None.
+//--
+class CMICmnLLDBDebuggerHandleEvents
+: public CMICmnBase
+, public MI::ISingleton< CMICmnLLDBDebuggerHandleEvents >
+{
+ friend class MI::ISingleton< CMICmnLLDBDebuggerHandleEvents >;
+
+// Methods:
+public:
+ bool Initialize( void );
+ bool Shutdown( void );
+ //
+ bool HandleEvent( const lldb::SBEvent & vEvent, bool & vrbHandledEvent, bool & vrbExitAppEvent );
+
+// Methods:
+private:
+ /* ctor */ CMICmnLLDBDebuggerHandleEvents( void );
+ /* ctor */ CMICmnLLDBDebuggerHandleEvents( const CMICmnLLDBDebuggerHandleEvents & );
+ void operator=( const CMICmnLLDBDebuggerHandleEvents & );
+ //
+ bool ChkForStateChanges( void );
+ bool GetProcessStdout( void );
+ bool GetProcessStderr( void );
+ bool HandleEventSBBreakPoint( const lldb::SBEvent & vEvent );
+ bool HandleEventSBBreakpointCmn( const lldb::SBEvent & vEvent );
+ bool HandleEventSBBreakpointAdded( const lldb::SBEvent & vEvent );
+ bool HandleEventSBBreakpointLocationsAdded( const lldb::SBEvent & vEvent );
+ bool HandleEventSBProcess( const lldb::SBEvent & vEvent, bool & vrbExitAppEvent );
+ bool HandleEventSBThread( const lldb::SBEvent & vEvent );
+ bool HandleEventSBThreadBitStackChanged( const lldb::SBEvent & vEvent );
+ bool HandleEventSBThreadSuspended( const lldb::SBEvent & vEvent );
+ bool HandleEventSBCommandInterpreter( const lldb::SBEvent & vEvent );
+ bool HandleProcessEventBroadcastBitStateChanged( const lldb::SBEvent & vEvent, bool & vrbExitAppEvent );
+ bool HandleProcessEventStateRunning( void );
+ bool HandleProcessEventStateExited( void );
+ bool HandleProcessEventStateStopped( bool & vwrbShouldBrk );
+ bool HandleProcessEventStopReasonTrace( void );
+ bool HandleProcessEventStopReasonBreakpoint( void );
+ bool HandleProcessEventStopSignal( bool & vwrbShouldBrk );
+ bool HandleProcessEventStateSuspended( const lldb::SBEvent & vEvent );
+ bool MiHelpGetCurrentThreadFrame( CMICmnMIValueTuple & vwrMiValueTuple );
+ bool MiResultRecordToStdout( const CMICmnMIResultRecord & vrMiResultRecord );
+ bool MiOutOfBandRecordToStdout( const CMICmnMIOutOfBandRecord & vrMiResultRecord );
+ bool MiStoppedAtBreakPoint( const MIuint64 vBrkPtId, const lldb::SBBreakpoint & vBrkPt );
+ bool TextToStdout( const CMIUtilString & vrTxt );
+ bool TextToStderr( const CMIUtilString & vrTxt );
+ bool UpdateSelectedThread( void );
+ bool ConvertPrintfCtrlCodeToString( const MIchar vCtrl, CMIUtilString & vwrStrEquivalent );
+
+// Overridden:
+private:
+ // From CMICmnBase
+ /* dtor */ virtual ~CMICmnLLDBDebuggerHandleEvents( void );
+};
+