102 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
	
| //===-- MICmdCmdGdbSet.h ----------------------------------------*- C++ -*-===//
 | |
| //
 | |
| //                     The LLVM Compiler Infrastructure
 | |
| //
 | |
| // This file is distributed under the University of Illinois Open Source
 | |
| // License. See LICENSE.TXT for details.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| 
 | |
| // Overview:    CMICmdCmdGdbSet interface.
 | |
| //
 | |
| //              To implement new MI commands, derive a new command class from
 | |
| //              the command base
 | |
| //              class. To enable the new command for interpretation add the new
 | |
| //              command class
 | |
| //              to the command factory. The files of relevance are:
 | |
| //                  MICmdCommands.cpp
 | |
| //                  MICmdBase.h / .cpp
 | |
| //                  MICmdCmd.h / .cpp
 | |
| //              For an introduction to adding a new command see
 | |
| //              CMICmdCmdSupportInfoMiCmdQuery
 | |
| //              command class as an example.
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| // In-house headers:
 | |
| #include "MICmdBase.h"
 | |
| 
 | |
| //++
 | |
| //============================================================================
 | |
| // Details: MI command class. MI commands derived from the command base class.
 | |
| //          *this class implements MI command "gdb-set".
 | |
| //          This command does not follow the MI documentation exactly. While
 | |
| //          *this
 | |
| //          command is implemented it does not do anything with the gdb-set
 | |
| //          variable past in.
 | |
| //          The design of matching the info request to a request action (or
 | |
| //          command) is very simple. The request function which carries out
 | |
| //          the task of information gathering and printing to stdout is part of
 | |
| //          *this class. Should the request function become more complicated
 | |
| //          then
 | |
| //          that request should really reside in a command type class. Then this
 | |
| //          class instantiates a request info command for a matching request.
 | |
| //          The
 | |
| //          design/code of *this class then does not then become bloated. Use a
 | |
| //          lightweight version of the current MI command system.
 | |
| //--
 | |
| class CMICmdCmdGdbSet : public CMICmdBase {
 | |
|   // Statics:
 | |
| public:
 | |
|   // Required by the CMICmdFactory when registering *this command
 | |
|   static CMICmdBase *CreateSelf();
 | |
| 
 | |
|   // Methods:
 | |
| public:
 | |
|   /* ctor */ CMICmdCmdGdbSet();
 | |
| 
 | |
|   // Overridden:
 | |
| public:
 | |
|   // From CMICmdInvoker::ICmd
 | |
|   bool Execute() override;
 | |
|   bool Acknowledge() override;
 | |
|   bool ParseArgs() override;
 | |
|   // From CMICmnBase
 | |
|   /* dtor */ ~CMICmdCmdGdbSet() override;
 | |
| 
 | |
|   // Typedefs:
 | |
| private:
 | |
|   typedef bool (CMICmdCmdGdbSet::*FnGdbOptionPtr)(
 | |
|       const CMIUtilString::VecString_t &vrWords);
 | |
|   typedef std::map<CMIUtilString, FnGdbOptionPtr>
 | |
|       MapGdbOptionNameToFnGdbOptionPtr_t;
 | |
| 
 | |
|   // Methods:
 | |
| private:
 | |
|   bool GetOptionFn(const CMIUtilString &vrGdbOptionName,
 | |
|                    FnGdbOptionPtr &vrwpFn) const;
 | |
|   bool OptionFnTargetAsync(const CMIUtilString::VecString_t &vrWords);
 | |
|   bool OptionFnPrint(const CMIUtilString::VecString_t &vrWords);
 | |
|   bool OptionFnSolibSearchPath(const CMIUtilString::VecString_t &vrWords);
 | |
|   bool OptionFnOutputRadix(const CMIUtilString::VecString_t &vrWords);
 | |
|   bool OptionFnDisassemblyFlavor(const CMIUtilString::VecString_t &vrWords);
 | |
|   bool OptionFnFallback(const CMIUtilString::VecString_t &vrWords);
 | |
| 
 | |
|   // Attributes:
 | |
| private:
 | |
|   const static MapGdbOptionNameToFnGdbOptionPtr_t
 | |
|       ms_mapGdbOptionNameToFnGdbOptionPtr;
 | |
|   //
 | |
|   const CMIUtilString m_constStrArgNamedGdbOption;
 | |
|   bool m_bGdbOptionRecognised; // True = This command has a function with a name
 | |
|                                // that matches the Print argument, false = not
 | |
|                                // found
 | |
|   bool m_bGdbOptionFnSuccessful; // True = The print function completed its task
 | |
|                                  // ok, false = function failed for some reason
 | |
|   bool m_bGbbOptionFnHasError;   // True = The option function has an error
 | |
|                                  // condition (not the command!), false = option
 | |
|                                  // function ok.
 | |
|   CMIUtilString m_strGdbOptionName;
 | |
|   CMIUtilString m_strGdbOptionFnError;
 | |
| };
 |