]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/tools/lldb-mi/MICmdCommands.cpp
Merge clang release_80 branch r351543, and resolve conflicts.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / tools / lldb-mi / MICmdCommands.cpp
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 //--
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);
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 //--
73 bool 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 }