| //===-- 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() |