1 //===-- MICmdCommands.cpp ---------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // Overview: MI command are registered with the MI command factory. 11 // 12 // To implement new MI commands derive a new command class from the 13 // command base 14 // class. To enable the new command for interpretation add the new 15 // command class 16 // to the command factory. The files of relevance are: 17 // MICmdCommands.cpp 18 // MICmdBase.h / .cpp 19 // MICmdCmd.h / .cpp 20 21 // In-house headers: 22 #include "MICmdCommands.h" 23 #include "MICmdCmd.h" 24 #include "MICmdCmdBreak.h" 25 #include "MICmdCmdData.h" 26 #include "MICmdCmdEnviro.h" 27 #include "MICmdCmdExec.h" 28 #include "MICmdCmdFile.h" 29 #include "MICmdCmdGdbInfo.h" 30 #include "MICmdCmdGdbSet.h" 31 #include "MICmdCmdGdbShow.h" 32 #include "MICmdCmdGdbThread.h" 33 #include "MICmdCmdMiscellanous.h" 34 #include "MICmdCmdStack.h" 35 #include "MICmdCmdSupportInfo.h" 36 #include "MICmdCmdSupportList.h" 37 #include "MICmdCmdSymbol.h" 38 #include "MICmdCmdTarget.h" 39 #include "MICmdCmdThread.h" 40 #include "MICmdCmdTrace.h" 41 #include "MICmdCmdVar.h" 42 #include "MICmdFactory.h" 43 44 namespace MICmnCommands { 45 template <typename T> static bool Register(); 46 } 47 48 //++ 49 //------------------------------------------------------------------------------------ 50 // Details: Command to command factory registration function. 51 // Type: Template function. 52 // Args: typename T - A command type class. 53 // Return: bool - True = yes command is registered, false = command failed to 54 // register. 55 // Throws: None. 56 //-- Register()57template <typename T> static bool MICmnCommands::Register() { 58 static CMICmdFactory &rCmdFactory = CMICmdFactory::Instance(); 59 const CMIUtilString strMiCmd = T().GetMiCmd(); 60 CMICmdFactory::CmdCreatorFnPtr fn = T().GetCmdCreatorFn(); 61 return rCmdFactory.CmdRegister(strMiCmd, fn); 62 } 63 64 //++ 65 //------------------------------------------------------------------------------------ 66 // Details: Register commands with MI command factory 67 // Type: Function. 68 // Args: None. 69 // Return: bool - True = yes all commands are registered, 70 // false = one or more commands failed to register. 71 // Throws: None. 72 //-- RegisterAll()73bool MICmnCommands::RegisterAll() { 74 bool bOk = MIstatus::success; 75 76 bOk &= Register<CMICmdCmdSupportInfoMiCmdQuery>(); 77 bOk &= Register<CMICmdCmdBreakAfter>(); 78 bOk &= Register<CMICmdCmdBreakCondition>(); 79 bOk &= Register<CMICmdCmdBreakDelete>(); 80 bOk &= Register<CMICmdCmdBreakDisable>(); 81 bOk &= Register<CMICmdCmdBreakEnable>(); 82 bOk &= Register<CMICmdCmdBreakInsert>(); 83 bOk &= Register<CMICmdCmdDataDisassemble>(); 84 bOk &= Register<CMICmdCmdDataEvaluateExpression>(); 85 bOk &= Register<CMICmdCmdDataInfoLine>(); 86 bOk &= Register<CMICmdCmdDataReadMemoryBytes>(); 87 bOk &= Register<CMICmdCmdDataReadMemory>(); 88 bOk &= Register<CMICmdCmdDataListRegisterNames>(); 89 bOk &= Register<CMICmdCmdDataListRegisterValues>(); 90 bOk &= Register<CMICmdCmdDataWriteMemory>(); 91 bOk &= Register<CMICmdCmdEnablePrettyPrinting>(); 92 bOk &= Register<CMICmdCmdEnvironmentCd>(); 93 bOk &= Register<CMICmdCmdExecAbort>(); 94 bOk &= Register<CMICmdCmdExecArguments>(); 95 bOk &= Register<CMICmdCmdExecContinue>(); 96 bOk &= Register<CMICmdCmdExecInterrupt>(); 97 bOk &= Register<CMICmdCmdExecFinish>(); 98 bOk &= Register<CMICmdCmdExecNext>(); 99 bOk &= Register<CMICmdCmdExecNextInstruction>(); 100 bOk &= Register<CMICmdCmdExecRun>(); 101 bOk &= Register<CMICmdCmdExecStep>(); 102 bOk &= Register<CMICmdCmdExecStepInstruction>(); 103 bOk &= Register<CMICmdCmdFileExecAndSymbols>(); 104 bOk &= Register<CMICmdCmdGdbExit>(); 105 bOk &= Register<CMICmdCmdGdbInfo>(); 106 bOk &= Register<CMICmdCmdGdbSet>(); 107 bOk &= Register<CMICmdCmdGdbShow>(); 108 bOk &= Register<CMICmdCmdGdbThread>(); 109 bOk &= Register<CMICmdCmdInferiorTtySet>(); 110 bOk &= Register<CMICmdCmdInterpreterExec>(); 111 bOk &= Register<CMICmdCmdListThreadGroups>(); 112 bOk &= Register<CMICmdCmdSource>(); 113 bOk &= Register<CMICmdCmdStackInfoDepth>(); 114 bOk &= Register<CMICmdCmdStackInfoFrame>(); 115 bOk &= Register<CMICmdCmdStackListFrames>(); 116 bOk &= Register<CMICmdCmdStackListArguments>(); 117 bOk &= Register<CMICmdCmdStackListLocals>(); 118 bOk &= Register<CMICmdCmdStackListVariables>(); 119 bOk &= Register<CMICmdCmdStackSelectFrame>(); 120 bOk &= Register<CMICmdCmdSupportListFeatures>(); 121 bOk &= Register<CMICmdCmdSymbolListLines>(); 122 bOk &= Register<CMICmdCmdTargetSelect>(); 123 bOk &= Register<CMICmdCmdTargetAttach>(); 124 bOk &= Register<CMICmdCmdTargetDetach>(); 125 bOk &= Register<CMICmdCmdThreadInfo>(); 126 bOk &= Register<CMICmdCmdVarAssign>(); 127 bOk &= Register<CMICmdCmdVarCreate>(); 128 bOk &= Register<CMICmdCmdVarDelete>(); 129 bOk &= Register<CMICmdCmdVarEvaluateExpression>(); 130 bOk &= Register<CMICmdCmdVarInfoPathExpression>(); 131 bOk &= Register<CMICmdCmdVarListChildren>(); 132 bOk &= Register<CMICmdCmdVarSetFormat>(); 133 bOk &= Register<CMICmdCmdVarShowAttributes>(); 134 bOk &= Register<CMICmdCmdVarUpdate>(); 135 136 return bOk; 137 } 138