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