blob: 42983c428879f63bbae184db9fe4c677f3e13522 [file] [log] [blame]
Deepak Panickal6f9c4682014-05-16 10:51:01 +00001//===-- 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
Zachary Turner1d6af022014-11-17 18:06:21 +000010// Overview: MI command are registered with the MI command factory.
Deepak Panickal6f9c4682014-05-16 10:51:01 +000011//
Kate Stoneb9c1b512016-09-06 20:57:50 +000012// 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
Zachary Turner1d6af022014-11-17 18:06:21 +000016// to the command factory. The files of relevance are:
17// MICmdCommands.cpp
18// MICmdBase.h / .cpp
19// MICmdCmd.h / .cpp
Deepak Panickal6f9c4682014-05-16 10:51:01 +000020
21// In-house headers:
22#include "MICmdCommands.h"
Deepak Panickal6f9c4682014-05-16 10:51:01 +000023#include "MICmdCmd.h"
24#include "MICmdCmdBreak.h"
25#include "MICmdCmdData.h"
26#include "MICmdCmdEnviro.h"
27#include "MICmdCmdExec.h"
28#include "MICmdCmdFile.h"
Deepak Panickal877569c2014-06-24 16:35:50 +000029#include "MICmdCmdGdbInfo.h"
30#include "MICmdCmdGdbSet.h"
Ilia Kd0aa59f2015-03-24 21:15:42 +000031#include "MICmdCmdGdbShow.h"
Deepak Panickal877569c2014-06-24 16:35:50 +000032#include "MICmdCmdGdbThread.h"
Deepak Panickal6f9c4682014-05-16 10:51:01 +000033#include "MICmdCmdMiscellanous.h"
34#include "MICmdCmdStack.h"
35#include "MICmdCmdSupportInfo.h"
36#include "MICmdCmdSupportList.h"
Ilia Kc12d88d2015-02-20 13:07:41 +000037#include "MICmdCmdSymbol.h"
Deepak Panickal6f9c4682014-05-16 10:51:01 +000038#include "MICmdCmdTarget.h"
39#include "MICmdCmdThread.h"
40#include "MICmdCmdTrace.h"
41#include "MICmdCmdVar.h"
Kate Stoneb9c1b512016-09-06 20:57:50 +000042#include "MICmdFactory.h"
Deepak Panickal6f9c4682014-05-16 10:51:01 +000043
Kate Stoneb9c1b512016-09-06 20:57:50 +000044namespace MICmnCommands {
Bruce Mitchenere2453af2015-08-04 10:24:20 +000045template <typename T> static bool Register();
Deepak Panickal6f9c4682014-05-16 10:51:01 +000046}
47
Kate Stoneb9c1b512016-09-06 20:57:50 +000048//++
49//------------------------------------------------------------------------------------
Zachary Turner1d6af022014-11-17 18:06:21 +000050// Details: Command to command factory registration function.
51// Type: Template function.
52// Args: typename T - A command type class.
Kate Stoneb9c1b512016-09-06 20:57:50 +000053// Return: bool - True = yes command is registered, false = command failed to
54// register.
Zachary Turner1d6af022014-11-17 18:06:21 +000055// Throws: None.
Deepak Panickal6f9c4682014-05-16 10:51:01 +000056//--
Kate Stoneb9c1b512016-09-06 20:57:50 +000057template <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);
Zachary Turner1d6af022014-11-17 18:06:21 +000062}
Deepak Panickal6f9c4682014-05-16 10:51:01 +000063
Kate Stoneb9c1b512016-09-06 20:57:50 +000064//++
65//------------------------------------------------------------------------------------
Zachary Turner1d6af022014-11-17 18:06:21 +000066// 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.
Deepak Panickal6f9c4682014-05-16 10:51:01 +000072//--
Kate Stoneb9c1b512016-09-06 20:57:50 +000073bool MICmnCommands::RegisterAll() {
74 bool bOk = MIstatus::success;
Deepak Panickal6f9c4682014-05-16 10:51:01 +000075
Kate Stoneb9c1b512016-09-06 20:57:50 +000076 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>();
Deepak Panickal6f9c4682014-05-16 10:51:01 +0000135
Kate Stoneb9c1b512016-09-06 20:57:50 +0000136 return bOk;
Deepak Panickal877569c2014-06-24 16:35:50 +0000137}