aboutsummaryrefslogtreecommitdiff
path: root/tools/lldb-mi/MICmdInterpreter.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lldb-mi/MICmdInterpreter.h')
-rw-r--r--tools/lldb-mi/MICmdInterpreter.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/tools/lldb-mi/MICmdInterpreter.h b/tools/lldb-mi/MICmdInterpreter.h
new file mode 100644
index 000000000000..d924a1f77af2
--- /dev/null
+++ b/tools/lldb-mi/MICmdInterpreter.h
@@ -0,0 +1,78 @@
+//===-- MICmdInterpreter.h --------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+//++
+// File: MICmdInterpreter.h
+//
+// Overview: CMICmdInterpreter 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 "MICmdData.h"
+#include "MIUtilSingletonBase.h"
+
+// Declarations:
+class CMICmdFactory;
+
+//++ ============================================================================
+// Details: MI command interpreter. It takes text data from the MI driver
+// (which got it from Stdin singleton) and validate the text to see if
+// matches Machine Interface (MI) format and commands defined in the
+// MI application.
+// A singleton class.
+// Gotchas: None.
+// Authors: Illya Rudkin 18/02/2014.
+// Changes: None.
+//--
+class CMICmdInterpreter
+: public CMICmnBase
+, public MI::ISingleton< CMICmdInterpreter >
+{
+ friend MI::ISingleton< CMICmdInterpreter >;
+
+// Methods:
+public:
+// Methods:
+public:
+ bool Initialize( void );
+ bool Shutdown( void );
+ bool ValidateIsMi( const CMIUtilString & vTextLine, bool & vwbYesValid, bool & vwbCmdNotInCmdFactor, SMICmdData & rwCmdData );
+
+// Methods:
+private:
+ /* ctor */ CMICmdInterpreter( void );
+ /* ctor */ CMICmdInterpreter( const CMICmdInterpreter & );
+ void operator=( const CMICmdInterpreter & );
+
+ bool HasCmdFactoryGotMiCmd( const SMICmdData & vCmdData ) const;
+ bool MiHasCmdTokenEndingHypthen( const CMIUtilString & vTextLine );
+ bool MiHasCmdTokenEndingAlpha( const CMIUtilString & vTextLine );
+ bool MiHasCmd( const CMIUtilString & vTextLine );
+ bool MiHasCmdTokenPresent( const CMIUtilString & vTextLine );
+ const SMICmdData & MiGetCmdData() const;
+
+// Overridden:
+private:
+ // From CMICmnBase
+ /* dtor */ virtual ~CMICmdInterpreter( void );
+
+// Attributes:
+private:
+ SMICmdData m_miCmdData; // Filled in on each new line being interpreted
+ CMICmdFactory & m_rCmdFactory;
+};