| //===-- MICmnResources.h ----------------------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #pragma once |
| |
| // Third party headers |
| #include <map> |
| |
| // In-house headers: |
| #include "MICmnBase.h" |
| #include "MIUtilSingletonBase.h" |
| #include "MIUtilString.h" |
| |
| //++ |
| //============================================================================ |
| // Details: MI string test data resource definitions. These IDs match up with |
| // actual string data in a map internal to CMICmnResources. |
| // *** Be sure to update ms_pResourceId2TextData[] array **** |
| enum { |
| IDS_PROJNAME = 1, |
| IDS_MI_VERSION_DESCRIPTION_DEBUG, |
| IDS_MI_VERSION_DESCRIPTION, |
| IDS_MI_APPNAME_SHORT, |
| IDS_MI_APPNAME_LONG, |
| IDS_MI_APP_FILEPATHNAME, |
| IDS_MI_APP_ARGS, |
| IDE_MI_VERSION_GDB, |
| |
| IDS_UTIL_FILE_ERR_INVALID_PATHNAME, |
| IDS_UTIL_FILE_ERR_OPENING_FILE, |
| IDS_UTIL_FILE_ERR_OPENING_FILE_UNKNOWN, |
| IDE_UTIL_FILE_ERR_WRITING_FILE, |
| IDE_UTIL_FILE_ERR_WRITING_NOTOPEN, |
| |
| IDS_RESOURCES_ERR_STRING_NOT_FOUND, |
| IDS_RESOURCES_ERR_STRING_TABLE_INVALID, |
| |
| IDS_MI_CLIENT_MSG, |
| |
| IDS_LOG_MSG_CREATION_DATE, |
| IDS_LOG_MSG_FILE_LOGGER_PATH, |
| IDS_LOG_MSG_VERSION, |
| IDS_LOG_ERR_FILE_LOGGER_DISABLED, |
| IDS_LOG_MEDIUM_ERR_INIT, |
| IDS_LOG_MEDIUM_ERR_WRITE_ANY, |
| IDS_LOG_MEDIUM_ERR_WRITE_MEDIUMFAIL, |
| |
| IDS_MEDIUMFILE_NAME, |
| IDS_MEDIUMFILE_ERR_INVALID_PATH, |
| IDS_MEDIUMFILE_ERR_FILE_HEADER, |
| IDS_MEDIUMFILE_NAME_LOG, |
| |
| IDE_OS_ERR_UNKNOWN, |
| IDE_OS_ERR_RETRIEVING, |
| |
| IDS_DRIVERMGR_DRIVER_ERR_INIT, |
| |
| IDE_MEDIUMSTDERR_NAME, |
| IDE_MEDIUMSTDOUT_NAME, |
| |
| IDE_MI_APP_DESCRIPTION, |
| IDE_MI_APP_INFORMATION, |
| IDE_MI_APP_ARG_USAGE, |
| IDE_MI_APP_ARG_HELP, |
| IDE_MI_APP_ARG_VERSION, |
| IDE_MI_APP_ARG_VERSION_LONG, |
| IDE_MI_APP_ARG_INTERPRETER, |
| IDE_MI_APP_ARG_EXECUTEABLE, |
| IDE_MI_APP_ARG_SOURCE, |
| IDE_MI_APP_ARG_APP_LOG, |
| IDE_MI_APP_ARG_APP_LOG_DIR, |
| IDE_MI_APP_ARG_EXAMPLE, |
| IDE_MI_APP_ARG_EXECUTABLE, |
| IDE_MI_APP_ARG_SYNCHRONOUS, |
| |
| IDS_STDIN_ERR_INVALID_PROMPT, |
| IDS_STDIN_ERR_THREAD_CREATION_FAILED, |
| IDS_STDIN_ERR_THREAD_DELETE, |
| IDS_STDIN_ERR_CHKING_BYTE_AVAILABLE, |
| IDS_STDIN_INPUT_CTRL_CHARS, |
| |
| IDS_CMD_QUIT_HELP, |
| |
| IDS_THREADMGR_ERR_THREAD_ID_INVALID, |
| IDS_THREADMGR_ERR_THREAD_FAIL_CREATE, |
| IDS_THREADMGR_ERR_THREAD_ID_NOT_FOUND, |
| IDS_THREADMGR_ERR_THREAD_STILL_ALIVE, |
| |
| IDS_FALLTHRU_DRIVER_CMD_RECEIVED, |
| |
| IDS_CMDFACTORY_ERR_INVALID_CMD_NAME, |
| IDS_CMDFACTORY_ERR_INVALID_CMD_CR8FN, |
| IDS_CMDFACTORY_ERR_CMD_NOT_REGISTERED, |
| IDS_CMDFACTORY_ERR_CMD_ALREADY_REGED, |
| |
| IDS_CMDMGR_ERR_CMD_FAILED_CREATE, |
| IDS_CMDMGR_ERR_CMD_INVOKER, |
| |
| IDS_MI_INIT_ERR_LOG, |
| IDS_MI_INIT_ERR_RESOURCES, |
| IDS_MI_INIT_ERR_INIT, |
| IDS_MI_INIT_ERR_STREAMSTDIN, |
| IDS_MI_INIT_ERR_STREAMSTDIN_OSHANDLER, |
| IDS_MI_INIT_ERR_OS_STDIN_HANDLER, |
| IDS_MI_INIT_ERR_STREAMSTDOUT, |
| IDS_MI_INIT_ERR_STREAMSTDERR, |
| IDS_MI_INIT_ERR_FALLTHRUDRIVER, |
| IDS_MI_INIT_ERR_THREADMGR, |
| IDS_MI_INIT_ERR_CMDINTERPRETER, |
| IDS_MI_INIT_ERR_CMDMGR, |
| IDS_MI_INIT_ERR_CMDFACTORY, |
| IDS_MI_INIT_ERR_CMDINVOKER, |
| IDS_MI_INIT_ERR_CMDMONITOR, |
| IDS_MI_INIT_ERR_LLDBDEBUGGER, |
| IDS_MI_INIT_ERR_DRIVERMGR, |
| IDS_MI_INIT_ERR_DRIVER, |
| IDS_MI_INIT_ERR_OUTOFBANDHANDLER, |
| IDS_MI_INIT_ERR_DEBUGSESSIONINFO, |
| IDS_MI_INIT_ERR_THREADMANAGER, |
| IDS_MI_INIT_ERR_CLIENT_USING_DRIVER, |
| IDS_MI_INIT_ERR_LOCAL_DEBUG_SESSION, |
| |
| IDS_CODE_ERR_INVALID_PARAMETER_VALUE, |
| IDS_CODE_ERR_INVALID_PARAM_NULL_POINTER, |
| IDS_CODE_ERR_INVALID_ENUMERATION_VALUE, |
| |
| IDS_LLDBDEBUGGER_ERR_INVALIDLISTENER, |
| IDS_LLDBDEBUGGER_ERR_INVALIDDEBUGGER, |
| IDS_LLDBDEBUGGER_ERR_CLIENTDRIVER, |
| IDS_LLDBDEBUGGER_ERR_STARTLISTENER, |
| IDS_LLDBDEBUGGER_ERR_THREADCREATIONFAIL, |
| IDS_LLDBDEBUGGER_ERR_THREAD_DELETE, |
| IDS_LLDBDEBUGGER_ERR_INVALIDBROADCASTER, |
| IDS_LLDBDEBUGGER_ERR_INVALIDCLIENTNAME, |
| IDS_LLDBDEBUGGER_ERR_CLIENTNOTREGISTERED, |
| IDS_LLDBDEBUGGER_ERR_STOPLISTENER, |
| IDS_LLDBDEBUGGER_ERR_BROADCASTER_NAME, |
| IDS_LLDBDEBUGGER_WRN_UNKNOWN_EVENT, |
| |
| IDS_LLDBOUTOFBAND_ERR_UNKNOWN_EVENT, |
| IDS_LLDBOUTOFBAND_ERR_PROCESS_INVALID, |
| IDS_LLDBOUTOFBAND_ERR_BRKPT_NOTFOUND, |
| IDS_LLDBOUTOFBAND_ERR_BRKPT_INFO_GET, |
| IDS_LLDBOUTOFBAND_ERR_BRKPT_INFO_SET, |
| IDS_LLDBOUTOFBAND_ERR_FORM_MI_RESPONSE, |
| IDS_LLDBOUTOFBAND_ERR_FRAME_INFO_GET, |
| IDS_LLDBOUTOFBAND_ERR_SETNEWDRIVERSTATE, |
| IDS_LLDBOUTOFBAND_ERR_BRKPT_CNT_EXCEEDED, |
| |
| IDS_DBGSESSION_ERR_SHARED_DATA_ADD, |
| |
| IDS_MI_SHTDWN_ERR_LOG, |
| IDS_MI_SHUTDOWN_ERR, |
| IDE_MI_SHTDWN_ERR_RESOURCES, |
| IDE_MI_SHTDWN_ERR_STREAMSTDIN, |
| IDS_MI_SHTDWN_ERR_OS_STDIN_HANDLER, |
| IDS_MI_SHTDWN_ERR_STREAMSTDOUT, |
| IDS_MI_SHTDWN_ERR_STREAMSTDERR, |
| IDS_MI_SHTDWN_ERR_THREADMGR, |
| IDS_MI_SHTDWN_ERR_CMDINTERPRETER, |
| IDS_MI_SHTDWN_ERR_CMDMGR, |
| IDS_MI_SHTDWN_ERR_CMDFACTORY, |
| IDS_MI_SHTDWN_ERR_CMDINVOKER, |
| IDS_MI_SHTDWN_ERR_CMDMONITOR, |
| IDS_MI_SHTDWN_ERR_LLDBDEBUGGER, |
| IDS_MI_SHTDWN_ERR_DRIVERMGR, |
| IDS_MI_SHTDWN_ERR_DRIVER, |
| IDS_MI_SHTDWN_ERR_OUTOFBANDHANDLER, |
| IDS_MI_SHTDWN_ERR_DEBUGSESSIONINFO, |
| IDE_MI_SHTDWN_ERR_THREADMANAGER, |
| |
| IDS_DRIVER_ERR_PARSE_ARGS, |
| IDS_DRIVER_ERR_PARSE_ARGS_UNKNOWN, |
| IDS_DRIVER_ERR_CURRENT_NOT_SET, |
| IDS_DRIVER_ERR_NON_REGISTERED, |
| IDS_DRIVER_SAY_DRIVER_USING, |
| IDS_DRIVER_ERR_ID_INVALID, |
| IDS_DRIVER_ERR_FALLTHRU_DRIVER_ERR, |
| IDS_DRIVER_CMD_RECEIVED, |
| IDS_DRIVER_CMD_NOT_IN_FACTORY, |
| IDS_DRIVER_ERR_DRIVER_STATE_ERROR, |
| IDS_DRIVER_ERR_MAINLOOP, |
| IDS_DRIVER_ERR_LOCAL_DEBUG_NOT_IMPL, |
| IDS_DRIVER_ERR_LOCAL_DEBUG_INIT, |
| |
| IDS_DRIVER_WAITING_STDIN_DATA, |
| |
| IDS_STDERR_ERR_NOT_ALL_DATA_WRITTEN, |
| |
| IDS_CMD_ARGS_ERR_OPTION_NOT_FOUND, |
| IDS_CMD_ARGS_ERR_VALIDATION_MANDATORY, |
| IDS_CMD_ARGS_ERR_VALIDATION_INVALID, |
| IDS_CMD_ARGS_ERR_VALIDATION_MAN_INVALID, |
| IDS_CMD_ARGS_ERR_VALIDATION_MISSING_INF, |
| IDS_CMD_ARGS_ERR_CONTEXT_NOT_ALL_EATTEN, |
| IDS_CMD_ARGS_ERR_PREFIX_MSG, |
| |
| IDS_VARIANT_ERR_USED_BASECLASS, |
| IDS_VARIANT_ERR_MAP_KEY_INVALID, |
| |
| IDS_WORD_INVALIDBRKTS, |
| IDS_WORD_NONE, |
| IDS_WORD_NOT, |
| IDS_WORD_INVALIDEMPTY, |
| IDS_WORD_INVALIDNULLPTR, |
| IDS_WORD_UNKNOWNBRKTS, |
| IDS_WORD_NOT_IMPLEMENTED, |
| IDS_WORD_NOT_IMPLEMENTED_BRKTS, |
| IDS_WORD_UNKNOWNTYPE_BRKTS, |
| IDS_WORD_ERR_MSG_NOT_IMPLEMENTED_BRKTS, |
| |
| IDS_CMD_ERR_N_OPTIONS_REQUIRED, |
| IDS_CMD_ERR_OPTION_NOT_FOUND, |
| IDS_CMD_ERR_ARGS, |
| IDS_CMD_WRN_ARGS_NOT_HANDLED, |
| IDS_CMD_ERR_FNFAILED, |
| IDS_CMD_ERR_SHARED_DATA_NOT_FOUND, |
| IDS_CMD_ERR_LLDBPROCESS_DETACH, |
| IDS_CMD_ERR_LLDBPROCESS_DESTROY, |
| IDS_CMD_ERR_SETWKDIR, |
| IDS_CMD_ERR_INVALID_TARGET, |
| IDS_CMD_ERR_INVALID_TARGET_CURRENT, |
| IDS_CMD_ERR_INVALID_TARGET_TYPE, |
| IDS_CMD_ERR_INVALID_TARGET_PLUGIN, |
| IDS_CMD_ERR_CONNECT_TO_TARGET, |
| IDS_CMD_ERR_INVALID_TARGETPLUGINCURRENT, |
| IDS_CMD_ERR_NOT_IMPLEMENTED, |
| IDS_CMD_ERR_NOT_IMPLEMENTED_DEPRECATED, |
| IDS_CMD_ERR_CREATE_TARGET, |
| IDS_CMD_ERR_BRKPT_LOCATION_FORMAT, |
| IDS_CMD_ERR_BRKPT_LOCATION_NOT_FOUND, |
| IDS_CMD_ERR_BRKPT_INVALID, |
| IDS_CMD_ERR_BRKPT_CNT_EXCEEDED, |
| IDS_CMD_ERR_SOME_ERROR, |
| IDS_CMD_ERR_THREAD_INVALID, |
| IDS_CMD_ERR_THREAD_FRAME_RANGE_INVALID, |
| IDS_CMD_ERR_FRAME_INVALID, |
| IDS_CMD_ERR_VARIABLE_DOESNOTEXIST, |
| IDS_CMD_ERR_VARIABLE_ENUM_INVALID, |
| IDS_CMD_ERR_VARIABLE_EXPRESSIONPATH, |
| IDS_CMD_ERR_VARIABLE_CREATION_FAILED, |
| IDS_CMD_ERR_VARIABLE_CHILD_RANGE_INVALID, |
| IDS_CMD_ERR_CMD_RUN_BUT_NO_ACTION, |
| IDS_CMD_ERR_EVENT_HANDLED_BUT_NO_ACTION, |
| IDS_CMD_ERR_DISASM_ADDR_START_INVALID, |
| IDS_CMD_ERR_DISASM_ADDR_END_INVALID, |
| IDS_CMD_ERR_MEMORY_ALLOC_FAILURE, |
| IDS_CMD_ERR_LLDB_ERR_NOT_READ_WHOLE_BLK, |
| IDS_CMD_ERR_LLDB_ERR_READ_MEM_BYTES, |
| IDS_CMD_ERR_INVALID_PROCESS, |
| IDS_CMD_ERR_INVALID_PRINT_VALUES, |
| IDS_CMD_ERR_INVALID_LOCATION_FORMAT, |
| IDS_CMD_ERR_INVALID_FORMAT_TYPE, |
| IDS_CMD_ERR_BRKPT_INFO_OBJ_NOT_FOUND, |
| IDS_CMD_ERR_LLDB_ERR_WRITE_MEM_BYTES, |
| IDS_CMD_ERR_LLDB_ERR_NOT_WRITE_WHOLEBLK, |
| IDS_CMD_ERR_SET_NEW_DRIVER_STATE, |
| IDS_CMD_ERR_INFO_PRINTFN_NOT_FOUND, |
| IDS_CMD_ERR_INFO_PRINTFN_FAILED, |
| IDS_CMD_ERR_GDBSET_OPT_TARGETASYNC, |
| IDS_CMD_ERR_GDBSET_OPT_SOLIBSEARCHPATH, |
| IDS_CMD_ERR_GDBSET_OPT_PRINT_BAD_ARGS, |
| IDS_CMD_ERR_GDBSET_OPT_PRINT_UNKNOWN_OPTION, |
| IDS_CMD_ERR_GDBSHOW_OPT_PRINT_BAD_ARGS, |
| IDS_CMD_ERR_GDBSHOW_OPT_PRINT_UNKNOWN_OPTION, |
| IDS_CMD_ERR_EXPR_INVALID, |
| IDS_CMD_ERR_ATTACH_FAILED, |
| IDS_CMD_ERR_ATTACH_BAD_ARGS |
| }; |
| |
| //++ |
| //============================================================================ |
| // Details: MI common code implementation class. Handle application resources |
| // and locality. |
| // Singleton class. |
| //-- |
| class CMICmnResources : public CMICmnBase, |
| public MI::ISingleton<CMICmnResources> { |
| friend class MI::ISingleton<CMICmnResources>; |
| |
| // Methods: |
| public: |
| bool Initialize() override; |
| bool Shutdown() override; |
| |
| CMIUtilString GetString(const MIuint vResourceId) const; |
| bool HasString(const MIuint vResourceId) const; |
| |
| // Typedef: |
| private: |
| typedef std::map<MIuint, const char *> MapRscrIdToTextData_t; |
| typedef std::pair<MIuint, const char *> MapPairRscrIdToTextData_t; |
| |
| // Enumerations: |
| private: |
| enum Buffer_e { eBufferSize = 2048 }; |
| |
| // Structs: |
| private: |
| struct SRsrcTextData { |
| MIuint id; |
| const char *pTextData; |
| }; |
| |
| // Methods: |
| private: |
| /* ctor */ CMICmnResources(); |
| /* ctor */ CMICmnResources(const CMICmnResources &); |
| void operator=(const CMICmnResources &); |
| |
| bool GetStringFromResource(const MIuint vResourceId, |
| CMIUtilString &vrwResourceString) const; |
| bool ReadResourceStringData(); |
| |
| // Overridden: |
| private: |
| // From CMICmnBase |
| /* dtor */ ~CMICmnResources() override; |
| |
| // Attributes: |
| private: |
| static const SRsrcTextData ms_pResourceId2TextData[]; |
| // |
| MIuint m_nResourceId2TextDataSize; |
| MapRscrIdToTextData_t m_mapRscrIdToTextData; |
| }; |
| |
| //++ ========================================================================= |
| // Details: Macro short cut for retrieving a text data resource |
| //-- |
| #define MIRSRC(x) CMICmnResources::Instance().GetString(x).c_str() |