diff options
Diffstat (limited to 'tools/lldb-mi/MICmnResources.h')
-rw-r--r-- | tools/lldb-mi/MICmnResources.h | 351 |
1 files changed, 351 insertions, 0 deletions
diff --git a/tools/lldb-mi/MICmnResources.h b/tools/lldb-mi/MICmnResources.h new file mode 100644 index 000000000000..f836f8d1b8aa --- /dev/null +++ b/tools/lldb-mi/MICmnResources.h @@ -0,0 +1,351 @@ +//===-- MICmnResources.h ----------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +//++ +// File: MICmnResources.h +// +// Overview: CMICmnResources interface. +// +// Environment: Compilers: Visual C++ 12. +// gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1 +// Libraries: See MIReadmetxt. +// +// Copyright: None. +//-- + +#pragma once + +// Third party headers +#include <map> + +// 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 , + IDE_MEDIUMFILE_ERR_GET_FILE_PATHNAME_SYS, + + 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_EXIT_OK , + IDE_MI_APP_EXIT_WITH_PROBLEM , + IDE_MI_APP_EXIT_WITH_PROBLEM_NO_LOG , + + 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_NO_APP_LOG , + 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_PROCESS_SIGNAL_RECEIVED , + + 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_CLIENTNOTREGISTERD , + IDS_LLDBDEBUGGER_ERR_STOPLISTENER , + IDS_LLDBDEBUGGER_ERR_BROARDCASTER_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_RELEASE , + 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_STDOUT_ERR_NOT_ALL_DATA_WRITTEN , + IDS_STDERR_ERR_NOT_ALL_DATA_WRITTEN , + + IDS_CMD_ARGS_ERR_N_OPTIONS_REQUIRED , + 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_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_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_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_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_SOLIBSEARCHPATH +}; + +//++ ============================================================================ +// Details: MI common code implementation class. Handle application resources +// and locality. +// Singleton class. +// Gotchas: None. +// Authors: Illya Rudkin 29/01/2014. +// Changes: None. +//-- +class CMICmnResources +: public CMICmnBase +, public MI::ISingleton< CMICmnResources > +{ + friend class MI::ISingleton< CMICmnResources >; + +// Methods: +public: + bool Initialize( void ); + bool Shutdown( void ); + + CMIUtilString GetString( const MIuint vResourceId ) const; + bool HasString( const MIuint vResourceId ) const; + +// Typedef: +private: + typedef std::map< MIuint, const MIchar * > MapRscrIdToTextData_t; + typedef std::pair< MIuint, const MIchar * > MapPairRscrIdToTextData_t; + +// Enumerations: +private: + enum Buffer_e + { + eBufferSize = 2048 + }; + +// Structs: +private: + struct SRsrcTextData + { + MIuint id; + const MIchar * pTextData; + }; + +// Methods: +private: + /* ctor */ CMICmnResources( void ); + /* ctor */ CMICmnResources( const CMICmnResources & ); + void operator=( const CMICmnResources & ); + + bool GetStringFromResource( const MIuint vResourceId, CMIUtilString & vrwResourceString ) const; + bool ReadResourceStringData( void ); + +// Overridden: +private: + // From CMICmnBase + /* dtor */ virtual ~CMICmnResources( void ); + +// 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() |