//===-- MICmdCommands.cpp ---------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // Overview: MI command are registered with the MI command factory. // // 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 // In-house headers: #include "MICmdCommands.h" #include "MICmdCmd.h" #include "MICmdCmdBreak.h" #include "MICmdCmdData.h" #include "MICmdCmdEnviro.h" #include "MICmdCmdExec.h" #include "MICmdCmdFile.h" #include "MICmdCmdGdbInfo.h" #include "MICmdCmdGdbSet.h" #include "MICmdCmdGdbShow.h" #include "MICmdCmdGdbThread.h" #include "MICmdCmdMiscellanous.h" #include "MICmdCmdStack.h" #include "MICmdCmdSupportInfo.h" #include "MICmdCmdSupportList.h" #include "MICmdCmdSymbol.h" #include "MICmdCmdTarget.h" #include "MICmdCmdThread.h" #include "MICmdCmdTrace.h" #include "MICmdCmdVar.h" #include "MICmdFactory.h" namespace MICmnCommands { template static bool Register(); } //++ // Details: Command to command factory registration function. // Type: Template function. // Args: typename T - A command type class. // Return: bool - True = yes command is registered, false = command failed to // register. // Throws: None. //-- template static bool MICmnCommands::Register() { static CMICmdFactory &rCmdFactory = CMICmdFactory::Instance(); const CMIUtilString strMiCmd = T().GetMiCmd(); CMICmdFactory::CmdCreatorFnPtr fn = T().GetCmdCreatorFn(); return rCmdFactory.CmdRegister(strMiCmd, fn); } //++ // Details: Register commands with MI command factory // Type: Function. // Args: None. // Return: bool - True = yes all commands are registered, // false = one or more commands failed to register. // Throws: None. //-- bool MICmnCommands::RegisterAll() { bool bOk = MIstatus::success; bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); bOk &= Register(); return bOk; }