]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/tools/lldb-mi/MICmnResources.h
Add ELF Tool Chain's brandelf(1) to contrib
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / tools / lldb-mi / MICmnResources.h
1 //===-- MICmnResources.h ----------------------------------------*- 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 //++
11 // File:        MICmnResources.h
12 //
13 // Overview:    CMICmnResources interface.
14 //
15 // Environment: Compilers:  Visual C++ 12.
16 //                          gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
17 //              Libraries:  See MIReadmetxt.
18 //
19 // Copyright:   None.
20 //--
21
22 #pragma once
23
24 // Third party headers
25 #include <map>
26
27 // In-house headers:
28 #include "MIUtilSingletonBase.h"
29 #include "MIUtilString.h"
30 #include "MICmnBase.h"
31
32 //++ ============================================================================
33 // Details: MI string test data resource definitions. These IDs match up with
34 //          actual string data in a map internal to CMICmnResources.
35 //          *** Be sure to update ms_pResourceId2TextData[] array ****
36 enum
37 {
38     IDS_PROJNAME = 1,
39     IDS_MI_VERSION_DESCRIPTION_DEBUG,
40     IDS_MI_VERSION_DESCRIPTION,
41     IDS_MI_APPNAME_SHORT,
42     IDS_MI_APPNAME_LONG,
43     IDS_MI_APP_FILEPATHNAME,
44     IDS_MI_APP_ARGS,
45     IDE_MI_VERSION_GDB,
46
47     IDS_UTIL_FILE_ERR_INVALID_PATHNAME,
48     IDS_UTIL_FILE_ERR_OPENING_FILE,
49     IDS_UTIL_FILE_ERR_OPENING_FILE_UNKNOWN,
50     IDE_UTIL_FILE_ERR_WRITING_FILE,
51     IDE_UTIL_FILE_ERR_WRITING_NOTOPEN,
52
53     IDS_RESOURCES_ERR_STRING_NOT_FOUND,
54     IDS_RESOURCES_ERR_STRING_TABLE_INVALID,
55
56     IDS_MI_CLIENT_MSG,
57
58     IDS_LOG_MSG_CREATION_DATE,
59     IDS_LOG_MSG_FILE_LOGGER_PATH,
60     IDS_LOG_MSG_VERSION,
61     IDS_LOG_ERR_FILE_LOGGER_DISABLED,
62     IDS_LOG_MEDIUM_ERR_INIT,
63     IDS_LOG_MEDIUM_ERR_WRITE_ANY,
64     IDS_LOG_MEDIUM_ERR_WRITE_MEDIUMFAIL,
65     IDE_MEDIUMFILE_ERR_GET_FILE_PATHNAME_SYS,
66
67     IDS_MEDIUMFILE_NAME,
68     IDS_MEDIUMFILE_ERR_INVALID_PATH,
69     IDS_MEDIUMFILE_ERR_FILE_HEADER,
70     IDS_MEDIUMFILE_NAME_LOG,
71
72     IDE_OS_ERR_UNKNOWN,
73     IDE_OS_ERR_RETRIEVING,
74
75     IDS_DRIVERMGR_DRIVER_ERR_INIT,
76
77     IDE_MEDIUMSTDERR_NAME,
78     IDE_MEDIUMSTDOUT_NAME,
79
80     IDE_MI_APP_EXIT_OK,
81     IDE_MI_APP_EXIT_WITH_PROBLEM,
82     IDE_MI_APP_EXIT_WITH_PROBLEM_NO_LOG,
83
84     IDE_MI_APP_DESCRIPTION,
85     IDE_MI_APP_INFORMATION,
86     IDE_MI_APP_ARG_USAGE,
87     IDE_MI_APP_ARG_HELP,
88     IDE_MI_APP_ARG_VERSION,
89     IDE_MI_APP_ARG_VERSION_LONG,
90     IDE_MI_APP_ARG_INTERPRETER,
91     IDE_MI_APP_ARG_EXECUTEABLE,
92     IDE_MI_APP_ARG_NO_APP_LOG,
93     IDE_MI_APP_ARG_EXAMPLE,
94     IDE_MI_APP_ARG_EXECUTABLE,
95
96     IDS_STDIN_ERR_INVALID_PROMPT,
97     IDS_STDIN_ERR_THREAD_CREATION_FAILED,
98     IDS_STDIN_ERR_THREAD_DELETE,
99     IDS_STDIN_ERR_CHKING_BYTE_AVAILABLE,
100     IDS_STDIN_INPUT_CTRL_CHARS,
101
102     IDS_CMD_QUIT_HELP,
103
104     IDS_THREADMGR_ERR_THREAD_ID_INVALID,
105     IDS_THREADMGR_ERR_THREAD_FAIL_CREATE,
106     IDS_THREADMGR_ERR_THREAD_ID_NOT_FOUND,
107     IDS_THREADMGR_ERR_THREAD_STILL_ALIVE,
108
109     IDS_FALLTHRU_DRIVER_CMD_RECEIVED,
110
111     IDS_CMDFACTORY_ERR_INVALID_CMD_NAME,
112     IDS_CMDFACTORY_ERR_INVALID_CMD_CR8FN,
113     IDS_CMDFACTORY_ERR_CMD_NOT_REGISTERED,
114     IDS_CMDFACTORY_ERR_CMD_ALREADY_REGED,
115
116     IDS_CMDMGR_ERR_CMD_FAILED_CREATE,
117     IDS_CMDMGR_ERR_CMD_INVOKER,
118
119     IDS_PROCESS_SIGNAL_RECEIVED,
120
121     IDS_MI_INIT_ERR_LOG,
122     IDS_MI_INIT_ERR_RESOURCES,
123     IDS_MI_INIT_ERR_INIT,
124     IDS_MI_INIT_ERR_STREAMSTDIN,
125     IDS_MI_INIT_ERR_STREAMSTDIN_OSHANDLER,
126     IDS_MI_INIT_ERR_OS_STDIN_HANDLER,
127     IDS_MI_INIT_ERR_STREAMSTDOUT,
128     IDS_MI_INIT_ERR_STREAMSTDERR,
129     IDS_MI_INIT_ERR_FALLTHRUDRIVER,
130     IDS_MI_INIT_ERR_THREADMGR,
131     IDS_MI_INIT_ERR_CMDINTERPRETER,
132     IDS_MI_INIT_ERR_CMDMGR,
133     IDS_MI_INIT_ERR_CMDFACTORY,
134     IDS_MI_INIT_ERR_CMDINVOKER,
135     IDS_MI_INIT_ERR_CMDMONITOR,
136     IDS_MI_INIT_ERR_LLDBDEBUGGER,
137     IDS_MI_INIT_ERR_DRIVERMGR,
138     IDS_MI_INIT_ERR_DRIVER,
139     IDS_MI_INIT_ERR_OUTOFBANDHANDLER,
140     IDS_MI_INIT_ERR_DEBUGSESSIONINFO,
141     IDS_MI_INIT_ERR_THREADMANAGER,
142     IDS_MI_INIT_ERR_CLIENT_USING_DRIVER,
143     IDS_MI_INIT_ERR_LOCAL_DEBUG_SESSION,
144
145     IDS_CODE_ERR_INVALID_PARAMETER_VALUE,
146     IDS_CODE_ERR_INVALID_PARAM_NULL_POINTER,
147     IDS_CODE_ERR_INVALID_ENUMERATION_VALUE,
148
149     IDS_LLDBDEBUGGER_ERR_INVALIDLISTENER,
150     IDS_LLDBDEBUGGER_ERR_INVALIDDEBUGGER,
151     IDS_LLDBDEBUGGER_ERR_CLIENTDRIVER,
152     IDS_LLDBDEBUGGER_ERR_STARTLISTENER,
153     IDS_LLDBDEBUGGER_ERR_THREADCREATIONFAIL,
154     IDS_LLDBDEBUGGER_ERR_THREAD_DELETE,
155     IDS_LLDBDEBUGGER_ERR_INVALIDBROADCASTER,
156     IDS_LLDBDEBUGGER_ERR_INVALIDCLIENTNAME,
157     IDS_LLDBDEBUGGER_ERR_CLIENTNOTREGISTERD,
158     IDS_LLDBDEBUGGER_ERR_STOPLISTENER,
159     IDS_LLDBDEBUGGER_ERR_BROARDCASTER_NAME,
160     IDS_LLDBDEBUGGER_WRN_UNKNOWN_EVENT,
161
162     IDS_LLDBOUTOFBAND_ERR_UNKNOWN_EVENT,
163     IDS_LLDBOUTOFBAND_ERR_PROCESS_INVALID,
164     IDS_LLDBOUTOFBAND_ERR_BRKPT_NOTFOUND,
165     IDS_LLDBOUTOFBAND_ERR_BRKPT_INFO_GET,
166     IDS_LLDBOUTOFBAND_ERR_BRKPT_INFO_SET,
167     IDS_LLDBOUTOFBAND_ERR_FORM_MI_RESPONSE,
168     IDS_LLDBOUTOFBAND_ERR_FRAME_INFO_GET,
169     IDS_LLDBOUTOFBAND_ERR_SETNEWDRIVERSTATE,
170     IDS_LLDBOUTOFBAND_ERR_BRKPT_CNT_EXCEEDED,
171
172     IDS_DBGSESSION_ERR_SHARED_DATA_RELEASE,
173     IDS_DBGSESSION_ERR_SHARED_DATA_ADD,
174
175     IDS_MI_SHTDWN_ERR_LOG,
176     IDS_MI_SHUTDOWN_ERR,
177     IDE_MI_SHTDWN_ERR_RESOURCES,
178     IDE_MI_SHTDWN_ERR_STREAMSTDIN,
179     IDS_MI_SHTDWN_ERR_OS_STDIN_HANDLER,
180     IDS_MI_SHTDWN_ERR_STREAMSTDOUT,
181     IDS_MI_SHTDWN_ERR_STREAMSTDERR,
182     IDS_MI_SHTDWN_ERR_THREADMGR,
183     IDS_MI_SHTDWN_ERR_CMDINTERPRETER,
184     IDS_MI_SHTDWN_ERR_CMDMGR,
185     IDS_MI_SHTDWN_ERR_CMDFACTORY,
186     IDS_MI_SHTDWN_ERR_CMDINVOKER,
187     IDS_MI_SHTDWN_ERR_CMDMONITOR,
188     IDS_MI_SHTDWN_ERR_LLDBDEBUGGER,
189     IDS_MI_SHTDWN_ERR_DRIVERMGR,
190     IDS_MI_SHTDWN_ERR_DRIVER,
191     IDS_MI_SHTDWN_ERR_OUTOFBANDHANDLER,
192     IDS_MI_SHTDWN_ERR_DEBUGSESSIONINFO,
193     IDE_MI_SHTDWN_ERR_THREADMANAGER,
194
195     IDS_DRIVER_ERR_PARSE_ARGS,
196     IDS_DRIVER_ERR_PARSE_ARGS_UNKNOWN,
197     IDS_DRIVER_ERR_CURRENT_NOT_SET,
198     IDS_DRIVER_ERR_NON_REGISTERED,
199     IDS_DRIVER_SAY_DRIVER_USING,
200     IDS_DRIVER_ERR_ID_INVALID,
201     IDS_DRIVER_ERR_FALLTHRU_DRIVER_ERR,
202     IDS_DRIVER_CMD_RECEIVED,
203     IDS_DRIVER_CMD_NOT_IN_FACTORY,
204     IDS_DRIVER_ERR_DRIVER_STATE_ERROR,
205     IDS_DRIVER_ERR_MAINLOOP,
206     IDS_DRIVER_ERR_LOCAL_DEBUG_NOT_IMPL,
207     IDS_DRIVER_ERR_LOCAL_DEBUG_INIT,
208
209     IDS_DRIVER_WAITING_STDIN_DATA,
210
211     IDS_STDOUT_ERR_NOT_ALL_DATA_WRITTEN,
212     IDS_STDERR_ERR_NOT_ALL_DATA_WRITTEN,
213
214     IDS_CMD_ARGS_ERR_N_OPTIONS_REQUIRED,
215     IDS_CMD_ARGS_ERR_OPTION_NOT_FOUND,
216     IDS_CMD_ARGS_ERR_VALIDATION_MANDATORY,
217     IDS_CMD_ARGS_ERR_VALIDATION_INVALID,
218     IDS_CMD_ARGS_ERR_VALIDATION_MAN_INVALID,
219     IDS_CMD_ARGS_ERR_VALIDATION_MISSING_INF,
220     IDS_CMD_ARGS_ERR_CONTEXT_NOT_ALL_EATTEN,
221     IDS_CMD_ARGS_ERR_PREFIX_MSG,
222
223     IDS_VARIANT_ERR_USED_BASECLASS,
224     IDS_VARIANT_ERR_MAP_KEY_INVALID,
225
226     IDS_WORD_INVALIDBRKTS,
227     IDS_WORD_NONE,
228     IDS_WORD_NOT,
229     IDS_WORD_INVALIDEMPTY,
230     IDS_WORD_INVALIDNULLPTR,
231     IDS_WORD_UNKNOWNBRKTS,
232     IDS_WORD_NOT_IMPLEMENTED,
233     IDS_WORD_NOT_IMPLEMENTED_BRKTS,
234     IDS_WORD_UNKNOWNTYPE_BRKTS,
235     IDS_WORD_ERR_MSG_NOT_IMPLEMENTED_BRKTS,
236
237     IDS_CMD_ERR_N_OPTIONS_REQUIRED,
238     IDS_CMD_ERR_OPTION_NOT_FOUND,
239     IDS_CMD_ERR_ARGS,
240     IDS_CMD_WRN_ARGS_NOT_HANDLED,
241     IDS_CMD_ERR_FNFAILED,
242     IDS_CMD_ERR_SHARED_DATA_NOT_FOUND,
243     IDS_CMD_ERR_LLDBPROCESS_DETACH,
244     IDS_CMD_ERR_SETWKDIR,
245     IDS_CMD_ERR_INVALID_TARGET,
246     IDS_CMD_ERR_INVALID_TARGET_CURRENT,
247     IDS_CMD_ERR_INVALID_TARGET_TYPE,
248     IDS_CMD_ERR_INVALID_TARGET_PLUGIN,
249     IDS_CMD_ERR_CONNECT_TO_TARGET,
250     IDS_CMD_ERR_INVALID_TARGETPLUGINCURRENT,
251     IDS_CMD_ERR_NOT_IMPLEMENTED,
252     IDS_CMD_ERR_NOT_IMPLEMENTED_DEPRECATED,
253     IDS_CMD_ERR_CREATE_TARGET,
254     IDS_CMD_ERR_BRKPT_LOCATION_FORMAT,
255     IDS_CMD_ERR_BRKPT_INVALID,
256     IDS_CMD_ERR_BRKPT_CNT_EXCEEDED,
257     IDS_CMD_ERR_SOME_ERROR,
258     IDS_CMD_ERR_THREAD_INVALID,
259     IDS_CMD_ERR_THREAD_FRAME_RANGE_INVALID,
260     IDS_CMD_ERR_FRAME_INVALID,
261     IDS_CMD_ERR_VARIABLE_DOESNOTEXIST,
262     IDS_CMD_ERR_VARIABLE_ENUM_INVALID,
263     IDS_CMD_ERR_VARIABLE_EXPRESSIONPATH,
264     IDS_CMD_ERR_VARIABLE_CREATION_FAILED,
265     IDS_CMD_ERR_CMD_RUN_BUT_NO_ACTION,
266     IDS_CMD_ERR_EVENT_HANDLED_BUT_NO_ACTION,
267     IDS_CMD_ERR_DISASM_ADDR_START_INVALID,
268     IDS_CMD_ERR_DISASM_ADDR_END_INVALID,
269     IDS_CMD_ERR_MEMORY_ALLOC_FAILURE,
270     IDS_CMD_ERR_LLDB_ERR_NOT_READ_WHOLE_BLK,
271     IDS_CMD_ERR_LLDB_ERR_READ_MEM_BYTES,
272     IDS_CMD_ERR_INVALID_PROCESS,
273     IDS_CMD_ERR_INVALID_FORMAT_TYPE,
274     IDS_CMD_ERR_BRKPT_INFO_OBJ_NOT_FOUND,
275     IDS_CMD_ERR_LLDB_ERR_WRITE_MEM_BYTES,
276     IDS_CMD_ERR_LLDB_ERR_NOT_WRITE_WHOLEBLK,
277     IDS_CMD_ERR_SET_NEW_DRIVER_STATE,
278     IDS_CMD_ERR_INFO_PRINTFN_NOT_FOUND,
279     IDS_CMD_ERR_INFO_PRINTFN_FAILED,
280     IDS_CMD_ERR_GDBSET_OPT_SOLIBSEARCHPATH
281 };
282
283 //++ ============================================================================
284 // Details: MI common code implementation class. Handle application resources
285 //          and locality.
286 //          Singleton class.
287 // Gotchas: None.
288 // Authors: Illya Rudkin 29/01/2014.
289 // Changes: None.
290 //--
291 class CMICmnResources : public CMICmnBase, public MI::ISingleton<CMICmnResources>
292 {
293     friend class MI::ISingleton<CMICmnResources>;
294
295     // Methods:
296   public:
297     bool Initialize(void);
298     bool Shutdown(void);
299
300     CMIUtilString GetString(const MIuint vResourceId) const;
301     bool HasString(const MIuint vResourceId) const;
302
303     // Typedef:
304   private:
305     typedef std::map<MIuint, const MIchar *> MapRscrIdToTextData_t;
306     typedef std::pair<MIuint, const MIchar *> MapPairRscrIdToTextData_t;
307
308     // Enumerations:
309   private:
310     enum Buffer_e
311     {
312         eBufferSize = 2048
313     };
314
315     // Structs:
316   private:
317     struct SRsrcTextData
318     {
319         MIuint id;
320         const MIchar *pTextData;
321     };
322
323     // Methods:
324   private:
325     /* ctor */ CMICmnResources(void);
326     /* ctor */ CMICmnResources(const CMICmnResources &);
327     void operator=(const CMICmnResources &);
328
329     bool GetStringFromResource(const MIuint vResourceId, CMIUtilString &vrwResourceString) const;
330     bool ReadResourceStringData(void);
331
332     // Overridden:
333   private:
334     // From CMICmnBase
335     /* dtor */ virtual ~CMICmnResources(void);
336
337     // Attributes:
338   private:
339     static const SRsrcTextData ms_pResourceId2TextData[];
340     //
341     MIuint m_nResourceId2TextDataSize;
342     MapRscrIdToTextData_t m_mapRscrIdToTextData;
343 };
344
345 //++ =========================================================================
346 // Details: Macro short cut for retrieving a text data resource
347 //--
348 #define MIRSRC(x) CMICmnResources::Instance().GetString(x).c_str()