//===-- 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 // In-house headers: #include "MIUtilSingletonBase.h" #include "MIUtilString.h" #include "MICmnBase.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, 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 { friend class MI::ISingleton; // 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 MapRscrIdToTextData_t; typedef std::pair 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()