1 //===-- MICmdCommands.cpp ---------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // Overview: MI command are registered with the MI command factory.
12 // To implement new MI commands derive a new command class from the
14 // class. To enable the new command for interpretation add the new
16 // to the command factory. The files of relevance are:
22 #include "MICmdCommands.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"
44 namespace MICmnCommands {
45 template <typename T> static bool Register();
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
57 template <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);
65 //------------------------------------------------------------------------------------
66 // Details: Register commands with MI command factory
69 // Return: bool - True = yes all commands are registered,
70 // false = one or more commands failed to register.
73 bool MICmnCommands::RegisterAll() {
74 bool bOk = MIstatus::success;
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>();