diff options
Diffstat (limited to 'lldb/tools/lldb-mi/MICmdCmdVar.cpp')
-rw-r--r-- | lldb/tools/lldb-mi/MICmdCmdVar.cpp | 1900 |
1 files changed, 969 insertions, 931 deletions
diff --git a/lldb/tools/lldb-mi/MICmdCmdVar.cpp b/lldb/tools/lldb-mi/MICmdCmdVar.cpp index d8e81a4..1efbd0b 100644 --- a/lldb/tools/lldb-mi/MICmdCmdVar.cpp +++ b/lldb/tools/lldb-mi/MICmdCmdVar.cpp @@ -19,26 +19,27 @@ // Third Party Headers: #include "lldb/API/SBStream.h" -#include "lldb/API/SBType.h" #include "lldb/API/SBThread.h" +#include "lldb/API/SBType.h" // In-house headers: -#include "MICmdCmdVar.h" -#include "MICmnMIResultRecord.h" -#include "MICmnMIValueConst.h" -#include "MICmnLLDBDebugger.h" -#include "MICmnLLDBDebugSessionInfo.h" +#include "MICmdArgValListOfN.h" #include "MICmdArgValNumber.h" -#include "MICmdArgValString.h" -#include "MICmdArgValThreadGrp.h" #include "MICmdArgValOptionLong.h" #include "MICmdArgValOptionShort.h" #include "MICmdArgValPrintValues.h" -#include "MICmdArgValListOfN.h" +#include "MICmdArgValString.h" +#include "MICmdArgValThreadGrp.h" +#include "MICmdCmdVar.h" +#include "MICmnLLDBDebugSessionInfo.h" +#include "MICmnLLDBDebugger.h" #include "MICmnLLDBProxySBValue.h" #include "MICmnLLDBUtilSBValue.h" +#include "MICmnMIResultRecord.h" +#include "MICmnMIValueConst.h" -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarCreate constructor. // Type: Method. // Args: None. @@ -46,35 +47,31 @@ // Throws: None. //-- CMICmdCmdVarCreate::CMICmdCmdVarCreate() - : m_nChildren(0) - , m_nThreadId(0) - , m_strType("??") - , m_bValid(false) - , m_strValue("??") - , m_constStrArgName("name") - , m_constStrArgFrameAddr("frame-addr") - , m_constStrArgExpression("expression") -{ - // Command factory matches this name with that received from the stdin stream - m_strMiCmd = "var-create"; - - // Required by the CMICmdFactory when registering *this command - m_pSelfCreatorFn = &CMICmdCmdVarCreate::CreateSelf; + : m_nChildren(0), m_nThreadId(0), m_strType("??"), m_bValid(false), + m_strValue("??"), m_constStrArgName("name"), + m_constStrArgFrameAddr("frame-addr"), + m_constStrArgExpression("expression") { + // Command factory matches this name with that received from the stdin stream + m_strMiCmd = "var-create"; + + // Required by the CMICmdFactory when registering *this command + m_pSelfCreatorFn = &CMICmdCmdVarCreate::CreateSelf; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarCreate destructor. // Type: Overrideable. // Args: None. // Return: None. // Throws: None. //-- -CMICmdCmdVarCreate::~CMICmdCmdVarCreate() -{ -} +CMICmdCmdVarCreate::~CMICmdCmdVarCreate() {} -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The parses the command line options +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The parses the command line +// options // arguments to extract values for each of those arguments. // Type: Overridden. // Args: None. @@ -82,133 +79,140 @@ CMICmdCmdVarCreate::~CMICmdCmdVarCreate() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarCreate::ParseArgs() -{ - m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, false, true)); - m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgFrameAddr, false, true)); - m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgExpression, true, true, true, true)); - return ParseValidateCmdOptions(); +bool CMICmdCmdVarCreate::ParseArgs() { + m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, false, true)); + m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgFrameAddr, false, true)); + m_setCmdArgs.Add( + new CMICmdArgValString(m_constStrArgExpression, true, true, true, true)); + return ParseValidateCmdOptions(); } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command does work in this function. -// The command is likely to communicate with the LLDB SBDebugger in here. +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command does work in this +// function. +// The command is likely to communicate with the LLDB SBDebugger in +// here. // Type: Overridden. // Args: None. // Return: MIstatus::success - Functional succeeded. // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarCreate::Execute() -{ - CMICMDBASE_GETOPTION(pArgThread, OptionLong, m_constStrArgThread); - CMICMDBASE_GETOPTION(pArgFrame, OptionLong, m_constStrArgFrame); - CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); - CMICMDBASE_GETOPTION(pArgFrameAddr, String, m_constStrArgFrameAddr); - CMICMDBASE_GETOPTION(pArgExpression, String, m_constStrArgExpression); - - // Retrieve the --thread option's thread ID (only 1) - MIuint64 nThreadId = UINT64_MAX; - if (pArgThread->GetFound() && !pArgThread->GetExpectedOption<CMICmdArgValNumber, MIuint64>(nThreadId)) - { - SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_OPTION_NOT_FOUND), m_cmdData.strMiCmd.c_str(), m_constStrArgThread.c_str())); - return MIstatus::failure; - } - - // Retrieve the --frame option's number - MIuint64 nFrame = UINT64_MAX; - if (pArgThread->GetFound() && !pArgFrame->GetExpectedOption<CMICmdArgValNumber, MIuint64>(nFrame)) - { - SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_OPTION_NOT_FOUND), m_cmdData.strMiCmd.c_str(), m_constStrArgFrame.c_str())); - return MIstatus::failure; - } - - const CMICmdArgValOptionLong::VecArgObjPtr_t &rVecFrameId(pArgFrame->GetExpectedOptions()); - CMICmdArgValOptionLong::VecArgObjPtr_t::const_iterator it2 = rVecFrameId.begin(); - if (it2 != rVecFrameId.end()) - { - const CMICmdArgValNumber *pOption = static_cast<CMICmdArgValNumber *>(*it2); - nFrame = pOption->GetValue(); - } - - m_strVarName = "<unnamedvariable>"; - if (pArgName->GetFound()) - { - const CMIUtilString &rArg = pArgName->GetValue(); - const bool bAutoName = (rArg == "-"); - if (bAutoName) - { - m_strVarName = CMIUtilString::Format("var%u", CMICmnLLDBDebugSessionInfoVarObj::VarObjIdGet()); - CMICmnLLDBDebugSessionInfoVarObj::VarObjIdInc(); - } - else - m_strVarName = rArg; - } - - bool bCurrentFrame = false; - if (pArgFrameAddr->GetFound()) - { - const CMIUtilString &rStrFrameAddr(pArgFrameAddr->GetValue()); - bCurrentFrame = CMIUtilString::Compare(rStrFrameAddr, "*"); - if (!bCurrentFrame && (nFrame == UINT64_MAX)) - { - //FIXME: *addr isn't implemented. Exit with error if --thread isn't specified. - SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_OPTION_NOT_FOUND), m_cmdData.strMiCmd.c_str(), m_constStrArgFrame.c_str())); - return MIstatus::failure; - } - } - - const CMIUtilString &rStrExpression(pArgExpression->GetValue()); - m_strExpression = rStrExpression; - - CMICmnLLDBDebugSessionInfo &rSessionInfo(CMICmnLLDBDebugSessionInfo::Instance()); - lldb::SBProcess sbProcess = rSessionInfo.GetProcess(); - lldb::SBThread thread = (nThreadId != UINT64_MAX) ? sbProcess.GetThreadByIndexID(nThreadId) : sbProcess.GetSelectedThread(); - m_nThreadId = thread.GetIndexID(); - lldb::SBFrame frame = bCurrentFrame ? thread.GetSelectedFrame() : thread.GetFrameAtIndex(nFrame); - lldb::SBValue value; - - if (rStrExpression[0] == '$') - { - const CMIUtilString rStrRegister(rStrExpression.substr(1)); - value = frame.FindRegister(rStrRegister.c_str()); - } - else - { - const bool bArgs = true; - const bool bLocals = true; - const bool bStatics = true; - const bool bInScopeOnly = false; - const lldb::SBValueList valueList = frame.GetVariables(bArgs, bLocals, bStatics, bInScopeOnly); - value = valueList.GetFirstValueByName(rStrExpression.c_str()); - } - - if (!value.IsValid()) - value = frame.EvaluateExpression(rStrExpression.c_str()); - - if (value.IsValid() && value.GetError().Success()) - { - CompleteSBValue(value); - m_bValid = true; - m_nChildren = value.GetNumChildren(); - m_strType = CMICmnLLDBUtilSBValue(value).GetTypeNameDisplay(); - - // This gets added to CMICmnLLDBDebugSessionInfoVarObj static container of varObjs - CMICmnLLDBDebugSessionInfoVarObj varObj(rStrExpression, m_strVarName, value); - m_strValue = varObj.GetValueFormatted(); +bool CMICmdCmdVarCreate::Execute() { + CMICMDBASE_GETOPTION(pArgThread, OptionLong, m_constStrArgThread); + CMICMDBASE_GETOPTION(pArgFrame, OptionLong, m_constStrArgFrame); + CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); + CMICMDBASE_GETOPTION(pArgFrameAddr, String, m_constStrArgFrameAddr); + CMICMDBASE_GETOPTION(pArgExpression, String, m_constStrArgExpression); + + // Retrieve the --thread option's thread ID (only 1) + MIuint64 nThreadId = UINT64_MAX; + if (pArgThread->GetFound() && + !pArgThread->GetExpectedOption<CMICmdArgValNumber, MIuint64>(nThreadId)) { + SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_OPTION_NOT_FOUND), + m_cmdData.strMiCmd.c_str(), + m_constStrArgThread.c_str())); + return MIstatus::failure; + } + + // Retrieve the --frame option's number + MIuint64 nFrame = UINT64_MAX; + if (pArgThread->GetFound() && + !pArgFrame->GetExpectedOption<CMICmdArgValNumber, MIuint64>(nFrame)) { + SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_OPTION_NOT_FOUND), + m_cmdData.strMiCmd.c_str(), + m_constStrArgFrame.c_str())); + return MIstatus::failure; + } + + const CMICmdArgValOptionLong::VecArgObjPtr_t &rVecFrameId( + pArgFrame->GetExpectedOptions()); + CMICmdArgValOptionLong::VecArgObjPtr_t::const_iterator it2 = + rVecFrameId.begin(); + if (it2 != rVecFrameId.end()) { + const CMICmdArgValNumber *pOption = static_cast<CMICmdArgValNumber *>(*it2); + nFrame = pOption->GetValue(); + } + + m_strVarName = "<unnamedvariable>"; + if (pArgName->GetFound()) { + const CMIUtilString &rArg = pArgName->GetValue(); + const bool bAutoName = (rArg == "-"); + if (bAutoName) { + m_strVarName = CMIUtilString::Format( + "var%u", CMICmnLLDBDebugSessionInfoVarObj::VarObjIdGet()); + CMICmnLLDBDebugSessionInfoVarObj::VarObjIdInc(); + } else + m_strVarName = rArg; + } + + bool bCurrentFrame = false; + if (pArgFrameAddr->GetFound()) { + const CMIUtilString &rStrFrameAddr(pArgFrameAddr->GetValue()); + bCurrentFrame = CMIUtilString::Compare(rStrFrameAddr, "*"); + if (!bCurrentFrame && (nFrame == UINT64_MAX)) { + // FIXME: *addr isn't implemented. Exit with error if --thread isn't + // specified. + SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_OPTION_NOT_FOUND), + m_cmdData.strMiCmd.c_str(), + m_constStrArgFrame.c_str())); + return MIstatus::failure; } - else - { - m_strValue = value.GetError().GetCString(); - } - - return MIstatus::success; + } + + const CMIUtilString &rStrExpression(pArgExpression->GetValue()); + m_strExpression = rStrExpression; + + CMICmnLLDBDebugSessionInfo &rSessionInfo( + CMICmnLLDBDebugSessionInfo::Instance()); + lldb::SBProcess sbProcess = rSessionInfo.GetProcess(); + lldb::SBThread thread = (nThreadId != UINT64_MAX) + ? sbProcess.GetThreadByIndexID(nThreadId) + : sbProcess.GetSelectedThread(); + m_nThreadId = thread.GetIndexID(); + lldb::SBFrame frame = bCurrentFrame ? thread.GetSelectedFrame() + : thread.GetFrameAtIndex(nFrame); + lldb::SBValue value; + + if (rStrExpression[0] == '$') { + const CMIUtilString rStrRegister(rStrExpression.substr(1)); + value = frame.FindRegister(rStrRegister.c_str()); + } else { + const bool bArgs = true; + const bool bLocals = true; + const bool bStatics = true; + const bool bInScopeOnly = false; + const lldb::SBValueList valueList = + frame.GetVariables(bArgs, bLocals, bStatics, bInScopeOnly); + value = valueList.GetFirstValueByName(rStrExpression.c_str()); + } + + if (!value.IsValid()) + value = frame.EvaluateExpression(rStrExpression.c_str()); + + if (value.IsValid() && value.GetError().Success()) { + CompleteSBValue(value); + m_bValid = true; + m_nChildren = value.GetNumChildren(); + m_strType = CMICmnLLDBUtilSBValue(value).GetTypeNameDisplay(); + + // This gets added to CMICmnLLDBDebugSessionInfoVarObj static container of + // varObjs + CMICmnLLDBDebugSessionInfoVarObj varObj(rStrExpression, m_strVarName, + value); + m_strValue = varObj.GetValueFormatted(); + } else { + m_strValue = value.GetError().GetCString(); + } + + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command prepares a MI Record Result +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command prepares a MI Record +// Result // for the work carried out in the Execute(). // Type: Overridden. // Args: None. @@ -216,60 +220,66 @@ CMICmdCmdVarCreate::Execute() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarCreate::Acknowledge() -{ - if (m_bValid) - { - // MI print "%s^done,name=\"%s\",numchild=\"%d\",value=\"%s\",type=\"%s\",thread-id=\"%llu\",has_more=\"%u\"" - const CMICmnMIValueConst miValueConst(m_strVarName); - CMICmnMIValueResult miValueResultAll("name", miValueConst); - const CMIUtilString strNumChild(CMIUtilString::Format("%d", m_nChildren)); - const CMICmnMIValueConst miValueConst2(strNumChild); - miValueResultAll.Add("numchild", miValueConst2); - const CMICmnMIValueConst miValueConst3(m_strValue); - miValueResultAll.Add("value", miValueConst3); - const CMICmnMIValueConst miValueConst4(m_strType); - miValueResultAll.Add("type", miValueConst4); - const CMIUtilString strThreadId(CMIUtilString::Format("%llu", m_nThreadId)); - const CMICmnMIValueConst miValueConst5(strThreadId); - miValueResultAll.Add("thread-id", miValueConst5); - const CMICmnMIValueConst miValueConst6("0"); - miValueResultAll.Add("has_more", miValueConst6); - - const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, miValueResultAll); - m_miResultRecord = miRecordResult; - - return MIstatus::success; - } - - CMIUtilString strErrMsg(m_strValue); - if (m_strValue.empty()) - strErrMsg = CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_CREATION_FAILED), m_strExpression.c_str()); - const CMICmnMIValueConst miValueConst(strErrMsg.Escape(true /* vbEscapeQuotes */)); - CMICmnMIValueResult miValueResult("msg", miValueConst); - const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Error, miValueResult); +bool CMICmdCmdVarCreate::Acknowledge() { + if (m_bValid) { + // MI print + // "%s^done,name=\"%s\",numchild=\"%d\",value=\"%s\",type=\"%s\",thread-id=\"%llu\",has_more=\"%u\"" + const CMICmnMIValueConst miValueConst(m_strVarName); + CMICmnMIValueResult miValueResultAll("name", miValueConst); + const CMIUtilString strNumChild(CMIUtilString::Format("%d", m_nChildren)); + const CMICmnMIValueConst miValueConst2(strNumChild); + miValueResultAll.Add("numchild", miValueConst2); + const CMICmnMIValueConst miValueConst3(m_strValue); + miValueResultAll.Add("value", miValueConst3); + const CMICmnMIValueConst miValueConst4(m_strType); + miValueResultAll.Add("type", miValueConst4); + const CMIUtilString strThreadId(CMIUtilString::Format("%llu", m_nThreadId)); + const CMICmnMIValueConst miValueConst5(strThreadId); + miValueResultAll.Add("thread-id", miValueConst5); + const CMICmnMIValueConst miValueConst6("0"); + miValueResultAll.Add("has_more", miValueConst6); + + const CMICmnMIResultRecord miRecordResult( + m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, + miValueResultAll); m_miResultRecord = miRecordResult; return MIstatus::success; + } + + CMIUtilString strErrMsg(m_strValue); + if (m_strValue.empty()) + strErrMsg = CMIUtilString::Format( + MIRSRC(IDS_CMD_ERR_VARIABLE_CREATION_FAILED), m_strExpression.c_str()); + const CMICmnMIValueConst miValueConst( + strErrMsg.Escape(true /* vbEscapeQuotes */)); + CMICmnMIValueResult miValueResult("msg", miValueConst); + const CMICmnMIResultRecord miRecordResult( + m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Error, + miValueResult); + m_miResultRecord = miRecordResult; + + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: Required by the CMICmdFactory when registering *this command. The factory +//++ +//------------------------------------------------------------------------------------ +// Details: Required by the CMICmdFactory when registering *this command. The +// factory // calls this function to create an instance of *this command. // Type: Static method. // Args: None. // Return: CMICmdBase * - Pointer to a new command. // Throws: None. //-- -CMICmdBase * -CMICmdCmdVarCreate::CreateSelf() -{ - return new CMICmdCmdVarCreate(); +CMICmdBase *CMICmdCmdVarCreate::CreateSelf() { + return new CMICmdCmdVarCreate(); } -//++ ------------------------------------------------------------------------------------ -// Details: Complete SBValue object and its children to get SBValue::GetValueDidChange +//++ +//------------------------------------------------------------------------------------ +// Details: Complete SBValue object and its children to get +// SBValue::GetValueDidChange // work. // Type: Method. // Args: vrwValue - (R) Value to update. @@ -277,31 +287,28 @@ CMICmdCmdVarCreate::CreateSelf() // MIstatus::failure - Functional failed. // Throws: None. //-- -void -CMICmdCmdVarCreate::CompleteSBValue(lldb::SBValue &vrwValue) -{ - // Force a value to update - vrwValue.GetValueDidChange(); - - // And update its children - lldb::SBType valueType = vrwValue.GetType(); - if (!valueType.IsPointerType() && !valueType.IsReferenceType()) - { - const MIuint nChildren = vrwValue.GetNumChildren(); - for (MIuint i = 0; i < nChildren; ++i) - { - lldb::SBValue member = vrwValue.GetChildAtIndex(i); - if (member.IsValid()) - CompleteSBValue(member); - } +void CMICmdCmdVarCreate::CompleteSBValue(lldb::SBValue &vrwValue) { + // Force a value to update + vrwValue.GetValueDidChange(); + + // And update its children + lldb::SBType valueType = vrwValue.GetType(); + if (!valueType.IsPointerType() && !valueType.IsReferenceType()) { + const MIuint nChildren = vrwValue.GetNumChildren(); + for (MIuint i = 0; i < nChildren; ++i) { + lldb::SBValue member = vrwValue.GetChildAtIndex(i); + if (member.IsValid()) + CompleteSBValue(member); } + } } //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarUpdate constructor. // Type: Method. // Args: None. @@ -309,31 +316,29 @@ CMICmdCmdVarCreate::CompleteSBValue(lldb::SBValue &vrwValue) // Throws: None. //-- CMICmdCmdVarUpdate::CMICmdCmdVarUpdate() - : m_constStrArgPrintValues("print-values") - , m_constStrArgName("name") - , m_bValueChanged(false) - , m_miValueList(true) -{ - // Command factory matches this name with that received from the stdin stream - m_strMiCmd = "var-update"; - - // Required by the CMICmdFactory when registering *this command - m_pSelfCreatorFn = &CMICmdCmdVarUpdate::CreateSelf; + : m_constStrArgPrintValues("print-values"), m_constStrArgName("name"), + m_bValueChanged(false), m_miValueList(true) { + // Command factory matches this name with that received from the stdin stream + m_strMiCmd = "var-update"; + + // Required by the CMICmdFactory when registering *this command + m_pSelfCreatorFn = &CMICmdCmdVarUpdate::CreateSelf; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarUpdate destructor. // Type: Overrideable. // Args: None. // Return: None. // Throws: None. //-- -CMICmdCmdVarUpdate::~CMICmdCmdVarUpdate() -{ -} +CMICmdCmdVarUpdate::~CMICmdCmdVarUpdate() {} -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The parses the command line options +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The parses the command line +// options // arguments to extract values for each of those arguments. // Type: Overridden. // Args: None. @@ -341,60 +346,70 @@ CMICmdCmdVarUpdate::~CMICmdCmdVarUpdate() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarUpdate::ParseArgs() -{ - m_setCmdArgs.Add(new CMICmdArgValPrintValues(m_constStrArgPrintValues, false, true)); - m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, true, true)); - return ParseValidateCmdOptions(); +bool CMICmdCmdVarUpdate::ParseArgs() { + m_setCmdArgs.Add( + new CMICmdArgValPrintValues(m_constStrArgPrintValues, false, true)); + m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, true, true)); + return ParseValidateCmdOptions(); } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command does work in this function. -// The command is likely to communicate with the LLDB SBDebugger in here. +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command does work in this +// function. +// The command is likely to communicate with the LLDB SBDebugger in +// here. // Type: Overridden. // Args: None. // Return: MIstatus::success - Functional succeeded. // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarUpdate::Execute() -{ - CMICMDBASE_GETOPTION(pArgPrintValues, PrintValues, m_constStrArgPrintValues); - CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); - - CMICmnLLDBDebugSessionInfo::VariableInfoFormat_e eVarInfoFormat = CMICmnLLDBDebugSessionInfo::eVariableInfoFormat_NoValues; - if (pArgPrintValues->GetFound()) - eVarInfoFormat = static_cast<CMICmnLLDBDebugSessionInfo::VariableInfoFormat_e>(pArgPrintValues->GetValue()); - - const CMIUtilString &rVarObjName(pArgName->GetValue()); - CMICmnLLDBDebugSessionInfoVarObj varObj; - if (!CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(rVarObjName, varObj)) - { - SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_DOESNOTEXIST), m_cmdData.strMiCmd.c_str(), rVarObjName.c_str())); - return MIstatus::failure; - } - - lldb::SBValue &rValue = varObj.GetValue(); - if (!ExamineSBValueForChange(rValue, m_bValueChanged)) - return MIstatus::failure; - - if (m_bValueChanged) - { - varObj.UpdateValue(); - const bool bPrintValue((eVarInfoFormat == CMICmnLLDBDebugSessionInfo::eVariableInfoFormat_AllValues) || - (eVarInfoFormat == CMICmnLLDBDebugSessionInfo::eVariableInfoFormat_SimpleValues && rValue.GetNumChildren() == 0)); - const CMIUtilString strValue(bPrintValue ? varObj.GetValueFormatted() : ""); - const CMIUtilString strInScope(rValue.IsInScope() ? "true" : "false"); - MIFormResponse(rVarObjName, bPrintValue ? strValue.c_str() : nullptr, strInScope); - } - - return MIstatus::success; +bool CMICmdCmdVarUpdate::Execute() { + CMICMDBASE_GETOPTION(pArgPrintValues, PrintValues, m_constStrArgPrintValues); + CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); + + CMICmnLLDBDebugSessionInfo::VariableInfoFormat_e eVarInfoFormat = + CMICmnLLDBDebugSessionInfo::eVariableInfoFormat_NoValues; + if (pArgPrintValues->GetFound()) + eVarInfoFormat = + static_cast<CMICmnLLDBDebugSessionInfo::VariableInfoFormat_e>( + pArgPrintValues->GetValue()); + + const CMIUtilString &rVarObjName(pArgName->GetValue()); + CMICmnLLDBDebugSessionInfoVarObj varObj; + if (!CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(rVarObjName, varObj)) { + SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_DOESNOTEXIST), + m_cmdData.strMiCmd.c_str(), + rVarObjName.c_str())); + return MIstatus::failure; + } + + lldb::SBValue &rValue = varObj.GetValue(); + if (!ExamineSBValueForChange(rValue, m_bValueChanged)) + return MIstatus::failure; + + if (m_bValueChanged) { + varObj.UpdateValue(); + const bool bPrintValue( + (eVarInfoFormat == + CMICmnLLDBDebugSessionInfo::eVariableInfoFormat_AllValues) || + (eVarInfoFormat == + CMICmnLLDBDebugSessionInfo::eVariableInfoFormat_SimpleValues && + rValue.GetNumChildren() == 0)); + const CMIUtilString strValue(bPrintValue ? varObj.GetValueFormatted() : ""); + const CMIUtilString strInScope(rValue.IsInScope() ? "true" : "false"); + MIFormResponse(rVarObjName, bPrintValue ? strValue.c_str() : nullptr, + strInScope); + } + + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command prepares a MI Record Result +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command prepares a MI Record +// Result // for the work carried out in the Execute(). // Type: Overridden. // Args: None. @@ -402,77 +417,80 @@ CMICmdCmdVarUpdate::Execute() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarUpdate::Acknowledge() -{ - if (m_bValueChanged) - { - // MI print "%s^done,changelist=[{name=\"%s\",value=\"%s\",in_scope=\"%s\",type_changed=\"false\",has_more=\"0\"}]" - CMICmnMIValueResult miValueResult("changelist", m_miValueList); - const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, miValueResult); - m_miResultRecord = miRecordResult; - } - else - { - // MI print "%s^done,changelist=[]" - const CMICmnMIValueList miValueList(true); - CMICmnMIValueResult miValueResult6("changelist", miValueList); - const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, miValueResult6); - m_miResultRecord = miRecordResult; - } +bool CMICmdCmdVarUpdate::Acknowledge() { + if (m_bValueChanged) { + // MI print + // "%s^done,changelist=[{name=\"%s\",value=\"%s\",in_scope=\"%s\",type_changed=\"false\",has_more=\"0\"}]" + CMICmnMIValueResult miValueResult("changelist", m_miValueList); + const CMICmnMIResultRecord miRecordResult( + m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, + miValueResult); + m_miResultRecord = miRecordResult; + } else { + // MI print "%s^done,changelist=[]" + const CMICmnMIValueList miValueList(true); + CMICmnMIValueResult miValueResult6("changelist", miValueList); + const CMICmnMIResultRecord miRecordResult( + m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, + miValueResult6); + m_miResultRecord = miRecordResult; + } - return MIstatus::success; + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: Required by the CMICmdFactory when registering *this command. The factory +//++ +//------------------------------------------------------------------------------------ +// Details: Required by the CMICmdFactory when registering *this command. The +// factory // calls this function to create an instance of *this command. // Type: Static method. // Args: None. // Return: CMICmdBase * - Pointer to a new command. // Throws: None. //-- -CMICmdBase * -CMICmdCmdVarUpdate::CreateSelf() -{ - return new CMICmdCmdVarUpdate(); +CMICmdBase *CMICmdCmdVarUpdate::CreateSelf() { + return new CMICmdCmdVarUpdate(); } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Form the MI response for multiple variables. // Type: Method. // Args: vrStrVarName - (R) Session var object's name. -// vpValue - (R) Text version of the value held in the variable. +// vpValue - (R) Text version of the value held in the +// variable. // vrStrScope - (R) In scope "yes" or "no". // Return: None. // Throws: None. //-- -void -CMICmdCmdVarUpdate::MIFormResponse(const CMIUtilString &vrStrVarName, const char *const vpValue, const CMIUtilString &vrStrScope) -{ - // MI print "[{name=\"%s\",value=\"%s\",in_scope=\"%s\",type_changed=\"false\",has_more=\"0\"}]" - const CMICmnMIValueConst miValueConst(vrStrVarName); - const CMICmnMIValueResult miValueResult("name", miValueConst); - CMICmnMIValueTuple miValueTuple(miValueResult); - if (vpValue != nullptr) - { - const CMICmnMIValueConst miValueConst2(vpValue); - const CMICmnMIValueResult miValueResult2("value", miValueConst2); - miValueTuple.Add(miValueResult2); - } - const CMICmnMIValueConst miValueConst3(vrStrScope); - const CMICmnMIValueResult miValueResult3("in_scope", miValueConst3); - miValueTuple.Add(miValueResult3); - const CMICmnMIValueConst miValueConst4("false"); - const CMICmnMIValueResult miValueResult4("type_changed", miValueConst4); - miValueTuple.Add(miValueResult4); - const CMICmnMIValueConst miValueConst5("0"); - const CMICmnMIValueResult miValueResult5("has_more", miValueConst5); - miValueTuple.Add(miValueResult5); - m_miValueList.Add(miValueTuple); +void CMICmdCmdVarUpdate::MIFormResponse(const CMIUtilString &vrStrVarName, + const char *const vpValue, + const CMIUtilString &vrStrScope) { + // MI print + // "[{name=\"%s\",value=\"%s\",in_scope=\"%s\",type_changed=\"false\",has_more=\"0\"}]" + const CMICmnMIValueConst miValueConst(vrStrVarName); + const CMICmnMIValueResult miValueResult("name", miValueConst); + CMICmnMIValueTuple miValueTuple(miValueResult); + if (vpValue != nullptr) { + const CMICmnMIValueConst miValueConst2(vpValue); + const CMICmnMIValueResult miValueResult2("value", miValueConst2); + miValueTuple.Add(miValueResult2); + } + const CMICmnMIValueConst miValueConst3(vrStrScope); + const CMICmnMIValueResult miValueResult3("in_scope", miValueConst3); + miValueTuple.Add(miValueResult3); + const CMICmnMIValueConst miValueConst4("false"); + const CMICmnMIValueResult miValueResult4("type_changed", miValueConst4); + miValueTuple.Add(miValueResult4); + const CMICmnMIValueConst miValueConst5("0"); + const CMICmnMIValueResult miValueResult5("has_more", miValueConst5); + miValueTuple.Add(miValueResult5); + m_miValueList.Add(miValueTuple); } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Determine if the var object was changed. // Type: Method. // Args: vrVarObj - (R) Session var object to examine. @@ -482,63 +500,58 @@ CMICmdCmdVarUpdate::MIFormResponse(const CMIUtilString &vrStrVarName, const char // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarUpdate::ExamineSBValueForChange(lldb::SBValue &vrwValue, bool &vrwbChanged) -{ - if (vrwValue.GetValueDidChange()) - { +bool CMICmdCmdVarUpdate::ExamineSBValueForChange(lldb::SBValue &vrwValue, + bool &vrwbChanged) { + if (vrwValue.GetValueDidChange()) { + vrwbChanged = true; + return MIstatus::success; + } + + lldb::SBType valueType = vrwValue.GetType(); + if (!valueType.IsPointerType() && !valueType.IsReferenceType()) { + const MIuint nChildren = vrwValue.GetNumChildren(); + for (MIuint i = 0; i < nChildren; ++i) { + lldb::SBValue member = vrwValue.GetChildAtIndex(i); + if (!member.IsValid()) + continue; + + if (member.GetValueDidChange()) { vrwbChanged = true; return MIstatus::success; + } else if (ExamineSBValueForChange(member, vrwbChanged) && vrwbChanged) + // Handle composite types (i.e. struct or arrays) + return MIstatus::success; } + } - lldb::SBType valueType = vrwValue.GetType(); - if (!valueType.IsPointerType() && !valueType.IsReferenceType()) - { - const MIuint nChildren = vrwValue.GetNumChildren(); - for (MIuint i = 0; i < nChildren; ++i) - { - lldb::SBValue member = vrwValue.GetChildAtIndex(i); - if (!member.IsValid()) - continue; - - if (member.GetValueDidChange()) - { - vrwbChanged = true; - return MIstatus::success; - } - else if (ExamineSBValueForChange(member, vrwbChanged) && vrwbChanged) - // Handle composite types (i.e. struct or arrays) - return MIstatus::success; - } - } - - vrwbChanged = false; - return MIstatus::success; + vrwbChanged = false; + return MIstatus::success; } //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarDelete constructor. // Type: Method. // Args: None. // Return: None. // Throws: None. //-- -CMICmdCmdVarDelete::CMICmdCmdVarDelete() - : m_constStrArgName("name") -{ - // Command factory matches this name with that received from the stdin stream - m_strMiCmd = "var-delete"; - - // Required by the CMICmdFactory when registering *this command - m_pSelfCreatorFn = &CMICmdCmdVarDelete::CreateSelf; +CMICmdCmdVarDelete::CMICmdCmdVarDelete() : m_constStrArgName("name") { + // Command factory matches this name with that received from the stdin stream + m_strMiCmd = "var-delete"; + + // Required by the CMICmdFactory when registering *this command + m_pSelfCreatorFn = &CMICmdCmdVarDelete::CreateSelf; } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The parses the command line options +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The parses the command line +// options // arguments to extract values for each of those arguments. // Type: Overridden. // Args: None. @@ -546,46 +559,46 @@ CMICmdCmdVarDelete::CMICmdCmdVarDelete() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarDelete::ParseArgs() -{ - m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, true, true)); - return ParseValidateCmdOptions(); +bool CMICmdCmdVarDelete::ParseArgs() { + m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, true, true)); + return ParseValidateCmdOptions(); } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarDelete destructor. // Type: Overrideable. // Args: None. // Return: None. // Throws: None. //-- -CMICmdCmdVarDelete::~CMICmdCmdVarDelete() -{ -} - -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command does work in this function. -// The command is likely to communicate with the LLDB SBDebugger in here. +CMICmdCmdVarDelete::~CMICmdCmdVarDelete() {} + +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command does work in this +// function. +// The command is likely to communicate with the LLDB SBDebugger in +// here. // Type: Overridden. // Args: None. // Return: MIstatus::success - Functional succeeded. // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarDelete::Execute() -{ - CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); +bool CMICmdCmdVarDelete::Execute() { + CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); - const CMIUtilString &rVarObjName(pArgName->GetValue()); - CMICmnLLDBDebugSessionInfoVarObj::VarObjDelete(rVarObjName); + const CMIUtilString &rVarObjName(pArgName->GetValue()); + CMICmnLLDBDebugSessionInfoVarObj::VarObjDelete(rVarObjName); - return MIstatus::success; + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command prepares a MI Record Result +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command prepares a MI Record +// Result // for the work carried out in the Execute(). // Type: Overridden. // Args: None. @@ -593,34 +606,34 @@ CMICmdCmdVarDelete::Execute() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarDelete::Acknowledge() -{ - const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done); - m_miResultRecord = miRecordResult; +bool CMICmdCmdVarDelete::Acknowledge() { + const CMICmnMIResultRecord miRecordResult( + m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done); + m_miResultRecord = miRecordResult; - return MIstatus::success; + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: Required by the CMICmdFactory when registering *this command. The factory +//++ +//------------------------------------------------------------------------------------ +// Details: Required by the CMICmdFactory when registering *this command. The +// factory // calls this function to create an instance of *this command. // Type: Static method. // Args: None. // Return: CMICmdBase * - Pointer to a new command. // Throws: None. //-- -CMICmdBase * -CMICmdCmdVarDelete::CreateSelf() -{ - return new CMICmdCmdVarDelete(); +CMICmdBase *CMICmdCmdVarDelete::CreateSelf() { + return new CMICmdCmdVarDelete(); } //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarAssign constructor. // Type: Method. // Args: None. @@ -628,30 +641,29 @@ CMICmdCmdVarDelete::CreateSelf() // Throws: None. //-- CMICmdCmdVarAssign::CMICmdCmdVarAssign() - : m_bOk(true) - , m_constStrArgName("name") - , m_constStrArgExpression("expression") -{ - // Command factory matches this name with that received from the stdin stream - m_strMiCmd = "var-assign"; - - // Required by the CMICmdFactory when registering *this command - m_pSelfCreatorFn = &CMICmdCmdVarAssign::CreateSelf; + : m_bOk(true), m_constStrArgName("name"), + m_constStrArgExpression("expression") { + // Command factory matches this name with that received from the stdin stream + m_strMiCmd = "var-assign"; + + // Required by the CMICmdFactory when registering *this command + m_pSelfCreatorFn = &CMICmdCmdVarAssign::CreateSelf; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarAssign destructor. // Type: Overrideable. // Args: None. // Return: None. // Throws: None. //-- -CMICmdCmdVarAssign::~CMICmdCmdVarAssign() -{ -} +CMICmdCmdVarAssign::~CMICmdCmdVarAssign() {} -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The parses the command line options +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The parses the command line +// options // arguments to extract values for each of those arguments. // Type: Overridden. // Args: None. @@ -659,52 +671,54 @@ CMICmdCmdVarAssign::~CMICmdCmdVarAssign() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarAssign::ParseArgs() -{ - m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, true, true)); - m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgExpression, true, true)); - return ParseValidateCmdOptions(); +bool CMICmdCmdVarAssign::ParseArgs() { + m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, true, true)); + m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgExpression, true, true)); + return ParseValidateCmdOptions(); } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command does work in this function. -// The command is likely to communicate with the LLDB SBDebugger in here. +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command does work in this +// function. +// The command is likely to communicate with the LLDB SBDebugger in +// here. // Type: Overridden. // Args: None. // Return: MIstatus::success - Functional succeeded. // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarAssign::Execute() -{ - CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); - CMICMDBASE_GETOPTION(pArgExpression, String, m_constStrArgExpression); - - const CMIUtilString &rVarObjName(pArgName->GetValue()); - const CMIUtilString &rExpression(pArgExpression->GetValue()); - - CMICmnLLDBDebugSessionInfoVarObj varObj; - if (!CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(rVarObjName, varObj)) - { - SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_DOESNOTEXIST), m_cmdData.strMiCmd.c_str(), rVarObjName.c_str())); - return MIstatus::failure; - } - m_varObjName = rVarObjName; - - CMIUtilString strExpression(rExpression.Trim()); - strExpression = strExpression.Trim('"'); - lldb::SBValue &rValue(const_cast<lldb::SBValue &>(varObj.GetValue())); - m_bOk = rValue.SetValueFromCString(strExpression.c_str()); - if (m_bOk) - varObj.UpdateValue(); +bool CMICmdCmdVarAssign::Execute() { + CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); + CMICMDBASE_GETOPTION(pArgExpression, String, m_constStrArgExpression); + + const CMIUtilString &rVarObjName(pArgName->GetValue()); + const CMIUtilString &rExpression(pArgExpression->GetValue()); + + CMICmnLLDBDebugSessionInfoVarObj varObj; + if (!CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(rVarObjName, varObj)) { + SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_DOESNOTEXIST), + m_cmdData.strMiCmd.c_str(), + rVarObjName.c_str())); + return MIstatus::failure; + } + m_varObjName = rVarObjName; + + CMIUtilString strExpression(rExpression.Trim()); + strExpression = strExpression.Trim('"'); + lldb::SBValue &rValue(const_cast<lldb::SBValue &>(varObj.GetValue())); + m_bOk = rValue.SetValueFromCString(strExpression.c_str()); + if (m_bOk) + varObj.UpdateValue(); - return MIstatus::success; + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command prepares a MI Record Result +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command prepares a MI Record +// Result // for the work carried out in the Execute(). // Type: Overridden. // Args: None. @@ -712,49 +726,51 @@ CMICmdCmdVarAssign::Execute() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarAssign::Acknowledge() -{ - if (m_bOk) - { - // MI print "%s^done,value=\"%s\"" - CMICmnLLDBDebugSessionInfoVarObj varObj; - CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(m_varObjName, varObj); - const CMICmnMIValueConst miValueConst(varObj.GetValueFormatted()); - const CMICmnMIValueResult miValueResult("value", miValueConst); - const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, miValueResult); - m_miResultRecord = miRecordResult; - - return MIstatus::success; - } - - const CMICmnMIValueConst miValueConst("expression could not be evaluated"); - const CMICmnMIValueResult miValueResult("msg", miValueConst); - const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Error, miValueResult); +bool CMICmdCmdVarAssign::Acknowledge() { + if (m_bOk) { + // MI print "%s^done,value=\"%s\"" + CMICmnLLDBDebugSessionInfoVarObj varObj; + CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(m_varObjName, varObj); + const CMICmnMIValueConst miValueConst(varObj.GetValueFormatted()); + const CMICmnMIValueResult miValueResult("value", miValueConst); + const CMICmnMIResultRecord miRecordResult( + m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, + miValueResult); m_miResultRecord = miRecordResult; return MIstatus::success; + } + + const CMICmnMIValueConst miValueConst("expression could not be evaluated"); + const CMICmnMIValueResult miValueResult("msg", miValueConst); + const CMICmnMIResultRecord miRecordResult( + m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Error, + miValueResult); + m_miResultRecord = miRecordResult; + + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: Required by the CMICmdFactory when registering *this command. The factory +//++ +//------------------------------------------------------------------------------------ +// Details: Required by the CMICmdFactory when registering *this command. The +// factory // calls this function to create an instance of *this command. // Type: Static method. // Args: None. // Return: CMICmdBase * - Pointer to a new command. // Throws: None. //-- -CMICmdBase * -CMICmdCmdVarAssign::CreateSelf() -{ - return new CMICmdCmdVarAssign(); +CMICmdBase *CMICmdCmdVarAssign::CreateSelf() { + return new CMICmdCmdVarAssign(); } //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarSetFormat constructor. // Type: Method. // Args: None. @@ -762,29 +778,28 @@ CMICmdCmdVarAssign::CreateSelf() // Throws: None. //-- CMICmdCmdVarSetFormat::CMICmdCmdVarSetFormat() - : m_constStrArgName("name") - , m_constStrArgFormatSpec("format-spec") -{ - // Command factory matches this name with that received from the stdin stream - m_strMiCmd = "var-set-format"; - - // Required by the CMICmdFactory when registering *this command - m_pSelfCreatorFn = &CMICmdCmdVarSetFormat::CreateSelf; + : m_constStrArgName("name"), m_constStrArgFormatSpec("format-spec") { + // Command factory matches this name with that received from the stdin stream + m_strMiCmd = "var-set-format"; + + // Required by the CMICmdFactory when registering *this command + m_pSelfCreatorFn = &CMICmdCmdVarSetFormat::CreateSelf; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarSetFormat destructor. // Type: Overrideable. // Args: None. // Return: None. // Throws: None. //-- -CMICmdCmdVarSetFormat::~CMICmdCmdVarSetFormat() -{ -} +CMICmdCmdVarSetFormat::~CMICmdCmdVarSetFormat() {} -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The parses the command line options +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The parses the command line +// options // arguments to extract values for each of those arguments. // Type: Overridden. // Args: None. @@ -792,53 +807,57 @@ CMICmdCmdVarSetFormat::~CMICmdCmdVarSetFormat() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarSetFormat::ParseArgs() -{ - m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, true, true)); - m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgFormatSpec, true, true)); - return ParseValidateCmdOptions(); +bool CMICmdCmdVarSetFormat::ParseArgs() { + m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, true, true)); + m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgFormatSpec, true, true)); + return ParseValidateCmdOptions(); } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command does work in this function. -// The command is likely to communicate with the LLDB SBDebugger in here. +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command does work in this +// function. +// The command is likely to communicate with the LLDB SBDebugger in +// here. // Type: Overridden. // Args: None. // Return: MIstatus::success - Functional succeeded. // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarSetFormat::Execute() -{ - CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); - CMICMDBASE_GETOPTION(pArgFormatSpec, String, m_constStrArgFormatSpec); - - const CMIUtilString &rVarObjName(pArgName->GetValue()); - const CMIUtilString &rExpression(pArgFormatSpec->GetValue()); - - CMICmnLLDBDebugSessionInfoVarObj varObj; - if (!CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(rVarObjName, varObj)) - { - SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_DOESNOTEXIST), m_cmdData.strMiCmd.c_str(), rVarObjName.c_str())); - return MIstatus::failure; - } - if (!varObj.SetVarFormat(CMICmnLLDBDebugSessionInfoVarObj::GetVarFormatForString(rExpression))) - { - SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_ENUM_INVALID), m_cmdData.strMiCmd.c_str(), rVarObjName.c_str(), - rExpression.c_str())); - return MIstatus::failure; - } - varObj.UpdateValue(); - - m_varObjName = rVarObjName; - - return MIstatus::success; +bool CMICmdCmdVarSetFormat::Execute() { + CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); + CMICMDBASE_GETOPTION(pArgFormatSpec, String, m_constStrArgFormatSpec); + + const CMIUtilString &rVarObjName(pArgName->GetValue()); + const CMIUtilString &rExpression(pArgFormatSpec->GetValue()); + + CMICmnLLDBDebugSessionInfoVarObj varObj; + if (!CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(rVarObjName, varObj)) { + SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_DOESNOTEXIST), + m_cmdData.strMiCmd.c_str(), + rVarObjName.c_str())); + return MIstatus::failure; + } + if (!varObj.SetVarFormat( + CMICmnLLDBDebugSessionInfoVarObj::GetVarFormatForString( + rExpression))) { + SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_ENUM_INVALID), + m_cmdData.strMiCmd.c_str(), + rVarObjName.c_str(), rExpression.c_str())); + return MIstatus::failure; + } + varObj.UpdateValue(); + + m_varObjName = rVarObjName; + + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command prepares a MI Record Result +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command prepares a MI Record +// Result // for the work carried out in the Execute(). // Type: Overridden. // Args: None. @@ -846,56 +865,58 @@ CMICmdCmdVarSetFormat::Execute() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarSetFormat::Acknowledge() -{ - // MI print "%s^done,changelist=[{name=\"%s\",value=\"%s\",in_scope=\"%s\",type_changed=\"false\",has_more=\"0\"}]" - CMICmnLLDBDebugSessionInfoVarObj varObj; - CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(m_varObjName, varObj); - const CMICmnMIValueConst miValueConst(m_varObjName); - const CMICmnMIValueResult miValueResult("name", miValueConst); - CMICmnMIValueTuple miValueTuple(miValueResult); - const CMICmnMIValueConst miValueConst2(varObj.GetValueFormatted()); - const CMICmnMIValueResult miValueResult2("value", miValueConst2); - miValueTuple.Add(miValueResult2); - lldb::SBValue &rValue = const_cast<lldb::SBValue &>(varObj.GetValue()); - const CMICmnMIValueConst miValueConst3(rValue.IsInScope() ? "true" : "false"); - const CMICmnMIValueResult miValueResult3("in_scope", miValueConst3); - miValueTuple.Add(miValueResult3); - const CMICmnMIValueConst miValueConst4("false"); - const CMICmnMIValueResult miValueResult4("type_changed", miValueConst4); - miValueTuple.Add(miValueResult4); - const CMICmnMIValueConst miValueConst5("0"); - const CMICmnMIValueResult miValueResult5("type_changed", miValueConst5); - miValueTuple.Add(miValueResult5); - const CMICmnMIValueList miValueList(miValueTuple); - const CMICmnMIValueResult miValueResult6("changelist", miValueList); - - const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, miValueResult6); - m_miResultRecord = miRecordResult; - - return MIstatus::success; +bool CMICmdCmdVarSetFormat::Acknowledge() { + // MI print + // "%s^done,changelist=[{name=\"%s\",value=\"%s\",in_scope=\"%s\",type_changed=\"false\",has_more=\"0\"}]" + CMICmnLLDBDebugSessionInfoVarObj varObj; + CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(m_varObjName, varObj); + const CMICmnMIValueConst miValueConst(m_varObjName); + const CMICmnMIValueResult miValueResult("name", miValueConst); + CMICmnMIValueTuple miValueTuple(miValueResult); + const CMICmnMIValueConst miValueConst2(varObj.GetValueFormatted()); + const CMICmnMIValueResult miValueResult2("value", miValueConst2); + miValueTuple.Add(miValueResult2); + lldb::SBValue &rValue = const_cast<lldb::SBValue &>(varObj.GetValue()); + const CMICmnMIValueConst miValueConst3(rValue.IsInScope() ? "true" : "false"); + const CMICmnMIValueResult miValueResult3("in_scope", miValueConst3); + miValueTuple.Add(miValueResult3); + const CMICmnMIValueConst miValueConst4("false"); + const CMICmnMIValueResult miValueResult4("type_changed", miValueConst4); + miValueTuple.Add(miValueResult4); + const CMICmnMIValueConst miValueConst5("0"); + const CMICmnMIValueResult miValueResult5("type_changed", miValueConst5); + miValueTuple.Add(miValueResult5); + const CMICmnMIValueList miValueList(miValueTuple); + const CMICmnMIValueResult miValueResult6("changelist", miValueList); + + const CMICmnMIResultRecord miRecordResult( + m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, + miValueResult6); + m_miResultRecord = miRecordResult; + + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: Required by the CMICmdFactory when registering *this command. The factory +//++ +//------------------------------------------------------------------------------------ +// Details: Required by the CMICmdFactory when registering *this command. The +// factory // calls this function to create an instance of *this command. // Type: Static method. // Args: None. // Return: CMICmdBase * - Pointer to a new command. // Throws: None. //-- -CMICmdBase * -CMICmdCmdVarSetFormat::CreateSelf() -{ - return new CMICmdCmdVarSetFormat(); +CMICmdBase *CMICmdCmdVarSetFormat::CreateSelf() { + return new CMICmdCmdVarSetFormat(); } //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarListChildren constructor. // Type: Method. // Args: None. @@ -903,35 +924,30 @@ CMICmdCmdVarSetFormat::CreateSelf() // Throws: None. //-- CMICmdCmdVarListChildren::CMICmdCmdVarListChildren() - : m_constStrArgPrintValues("print-values") - , m_constStrArgName("name") - , m_constStrArgFrom("from") - , m_constStrArgTo("to") - , m_bValueValid(false) - , m_nChildren(0) - , m_miValueList(true) - , m_bHasMore(false) - { - // Command factory matches this name with that received from the stdin stream - m_strMiCmd = "var-list-children"; - - // Required by the CMICmdFactory when registering *this command - m_pSelfCreatorFn = &CMICmdCmdVarListChildren::CreateSelf; + : m_constStrArgPrintValues("print-values"), m_constStrArgName("name"), + m_constStrArgFrom("from"), m_constStrArgTo("to"), m_bValueValid(false), + m_nChildren(0), m_miValueList(true), m_bHasMore(false) { + // Command factory matches this name with that received from the stdin stream + m_strMiCmd = "var-list-children"; + + // Required by the CMICmdFactory when registering *this command + m_pSelfCreatorFn = &CMICmdCmdVarListChildren::CreateSelf; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarListChildren destructor. // Type: Overrideable. // Args: None. // Return: None. // Throws: None. //-- -CMICmdCmdVarListChildren::~CMICmdCmdVarListChildren() -{ -} +CMICmdCmdVarListChildren::~CMICmdCmdVarListChildren() {} -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The parses the command line options +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The parses the command line +// options // arguments to extract values for each of those arguments. // Type: Overridden. // Args: None. @@ -939,121 +955,132 @@ CMICmdCmdVarListChildren::~CMICmdCmdVarListChildren() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarListChildren::ParseArgs() -{ - m_setCmdArgs.Add(new CMICmdArgValPrintValues(m_constStrArgPrintValues, false, true)); - m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, true, true, true)); - m_setCmdArgs.Add(new CMICmdArgValNumber(m_constStrArgFrom, false, true)); - m_setCmdArgs.Add(new CMICmdArgValNumber(m_constStrArgTo, false, true)); - return ParseValidateCmdOptions(); +bool CMICmdCmdVarListChildren::ParseArgs() { + m_setCmdArgs.Add( + new CMICmdArgValPrintValues(m_constStrArgPrintValues, false, true)); + m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, true, true, true)); + m_setCmdArgs.Add(new CMICmdArgValNumber(m_constStrArgFrom, false, true)); + m_setCmdArgs.Add(new CMICmdArgValNumber(m_constStrArgTo, false, true)); + return ParseValidateCmdOptions(); } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command does work in this function. -// The command is likely to communicate with the LLDB SBDebugger in here. +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command does work in this +// function. +// The command is likely to communicate with the LLDB SBDebugger in +// here. // Type: Overridden. // Args: None. // Return: MIstatus::success - Functional succeeded. // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarListChildren::Execute() -{ - CMICMDBASE_GETOPTION(pArgPrintValues, PrintValues, m_constStrArgPrintValues); - CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); - CMICMDBASE_GETOPTION(pArgFrom, Number, m_constStrArgFrom); - CMICMDBASE_GETOPTION(pArgTo, Number, m_constStrArgTo); - - CMICmnLLDBDebugSessionInfo::VariableInfoFormat_e eVarInfoFormat = CMICmnLLDBDebugSessionInfo::eVariableInfoFormat_NoValues; - if (pArgPrintValues->GetFound()) - eVarInfoFormat = static_cast<CMICmnLLDBDebugSessionInfo::VariableInfoFormat_e>(pArgPrintValues->GetValue()); - - const CMIUtilString &rVarObjName(pArgName->GetValue()); - CMICmnLLDBDebugSessionInfoVarObj varObj; - if (!CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(rVarObjName, varObj)) - { - SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_DOESNOTEXIST), m_cmdData.strMiCmd.c_str(), rVarObjName.c_str())); - return MIstatus::failure; - } - - MIuint nFrom = 0; - MIuint nTo = UINT32_MAX; - if (pArgFrom->GetFound() && pArgTo->GetFound()) - { - nFrom = pArgFrom->GetValue(); - nTo = pArgTo->GetValue(); - } - else if (pArgFrom->GetFound() || pArgTo->GetFound()) - { - // Only from or to was specified but both are required - SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_CHILD_RANGE_INVALID), m_cmdData.strMiCmd.c_str())); - return MIstatus::failure; - } - - lldb::SBValue &rValue = const_cast<lldb::SBValue &>(varObj.GetValue()); - m_bValueValid = rValue.IsValid(); - if (!m_bValueValid) - return MIstatus::success; +bool CMICmdCmdVarListChildren::Execute() { + CMICMDBASE_GETOPTION(pArgPrintValues, PrintValues, m_constStrArgPrintValues); + CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); + CMICMDBASE_GETOPTION(pArgFrom, Number, m_constStrArgFrom); + CMICMDBASE_GETOPTION(pArgTo, Number, m_constStrArgTo); + + CMICmnLLDBDebugSessionInfo::VariableInfoFormat_e eVarInfoFormat = + CMICmnLLDBDebugSessionInfo::eVariableInfoFormat_NoValues; + if (pArgPrintValues->GetFound()) + eVarInfoFormat = + static_cast<CMICmnLLDBDebugSessionInfo::VariableInfoFormat_e>( + pArgPrintValues->GetValue()); + + const CMIUtilString &rVarObjName(pArgName->GetValue()); + CMICmnLLDBDebugSessionInfoVarObj varObj; + if (!CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(rVarObjName, varObj)) { + SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_DOESNOTEXIST), + m_cmdData.strMiCmd.c_str(), + rVarObjName.c_str())); + return MIstatus::failure; + } + + MIuint nFrom = 0; + MIuint nTo = UINT32_MAX; + if (pArgFrom->GetFound() && pArgTo->GetFound()) { + nFrom = pArgFrom->GetValue(); + nTo = pArgTo->GetValue(); + } else if (pArgFrom->GetFound() || pArgTo->GetFound()) { + // Only from or to was specified but both are required + SetError( + CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_CHILD_RANGE_INVALID), + m_cmdData.strMiCmd.c_str())); + return MIstatus::failure; + } + + lldb::SBValue &rValue = const_cast<lldb::SBValue &>(varObj.GetValue()); + m_bValueValid = rValue.IsValid(); + if (!m_bValueValid) + return MIstatus::success; - const MIuint nChildren = rValue.GetNumChildren(); - m_bHasMore = nTo < nChildren; - nTo = std::min(nTo, nChildren); - m_nChildren = nFrom < nTo ? nTo - nFrom : 0; - for (MIuint i = nFrom; i < nTo; i++) - { - lldb::SBValue member = rValue.GetChildAtIndex(i); - const CMICmnLLDBUtilSBValue utilValue(member); - const CMIUtilString strExp = utilValue.GetName(); - const CMIUtilString name(strExp.empty() ? - CMIUtilString::Format("%s.$%u", rVarObjName.c_str(), i) : - CMIUtilString::Format("%s.%s", rVarObjName.c_str(), strExp.c_str())); - const MIuint nChildren = member.GetNumChildren(); - const CMIUtilString strThreadId(CMIUtilString::Format("%u", member.GetThread().GetIndexID())); - - // Varobj gets added to CMICmnLLDBDebugSessionInfoVarObj static container of varObjs - CMICmnLLDBDebugSessionInfoVarObj var(strExp, name, member, rVarObjName); - - // MI print "child={name=\"%s\",exp=\"%s\",numchild=\"%d\",value=\"%s\",type=\"%s\",thread-id=\"%u\",has_more=\"%u\"}" - const CMICmnMIValueConst miValueConst(name); - const CMICmnMIValueResult miValueResult("name", miValueConst); - CMICmnMIValueTuple miValueTuple(miValueResult); - const CMICmnMIValueConst miValueConst2(strExp); - const CMICmnMIValueResult miValueResult2("exp", miValueConst2); - miValueTuple.Add(miValueResult2); - const CMIUtilString strNumChild(CMIUtilString::Format("%u", nChildren)); - const CMICmnMIValueConst miValueConst3(strNumChild); - const CMICmnMIValueResult miValueResult3("numchild", miValueConst3); - miValueTuple.Add(miValueResult3); - const CMICmnMIValueConst miValueConst5(utilValue.GetTypeNameDisplay()); - const CMICmnMIValueResult miValueResult5("type", miValueConst5); - miValueTuple.Add(miValueResult5); - const CMICmnMIValueConst miValueConst6(strThreadId); - const CMICmnMIValueResult miValueResult6("thread-id", miValueConst6); - miValueTuple.Add(miValueResult6); - // nChildren == 0 is used to check for simple values - if (eVarInfoFormat == CMICmnLLDBDebugSessionInfo::eVariableInfoFormat_AllValues || - (eVarInfoFormat == CMICmnLLDBDebugSessionInfo::eVariableInfoFormat_SimpleValues && nChildren == 0)) - { - const CMIUtilString strValue( - CMICmnLLDBDebugSessionInfoVarObj::GetValueStringFormatted(member, CMICmnLLDBDebugSessionInfoVarObj::eVarFormat_Natural)); - const CMICmnMIValueConst miValueConst7(strValue); - const CMICmnMIValueResult miValueResult7("value", miValueConst7); - miValueTuple.Add(miValueResult7); - } - const CMICmnMIValueConst miValueConst8("0"); - const CMICmnMIValueResult miValueResult8("has_more", miValueConst8); - miValueTuple.Add(miValueResult8); - const CMICmnMIValueResult miValueResult9("child", miValueTuple); - m_miValueList.Add(miValueResult9); + const MIuint nChildren = rValue.GetNumChildren(); + m_bHasMore = nTo < nChildren; + nTo = std::min(nTo, nChildren); + m_nChildren = nFrom < nTo ? nTo - nFrom : 0; + for (MIuint i = nFrom; i < nTo; i++) { + lldb::SBValue member = rValue.GetChildAtIndex(i); + const CMICmnLLDBUtilSBValue utilValue(member); + const CMIUtilString strExp = utilValue.GetName(); + const CMIUtilString name( + strExp.empty() ? CMIUtilString::Format("%s.$%u", rVarObjName.c_str(), i) + : CMIUtilString::Format("%s.%s", rVarObjName.c_str(), + strExp.c_str())); + const MIuint nChildren = member.GetNumChildren(); + const CMIUtilString strThreadId( + CMIUtilString::Format("%u", member.GetThread().GetIndexID())); + + // Varobj gets added to CMICmnLLDBDebugSessionInfoVarObj static container of + // varObjs + CMICmnLLDBDebugSessionInfoVarObj var(strExp, name, member, rVarObjName); + + // MI print + // "child={name=\"%s\",exp=\"%s\",numchild=\"%d\",value=\"%s\",type=\"%s\",thread-id=\"%u\",has_more=\"%u\"}" + const CMICmnMIValueConst miValueConst(name); + const CMICmnMIValueResult miValueResult("name", miValueConst); + CMICmnMIValueTuple miValueTuple(miValueResult); + const CMICmnMIValueConst miValueConst2(strExp); + const CMICmnMIValueResult miValueResult2("exp", miValueConst2); + miValueTuple.Add(miValueResult2); + const CMIUtilString strNumChild(CMIUtilString::Format("%u", nChildren)); + const CMICmnMIValueConst miValueConst3(strNumChild); + const CMICmnMIValueResult miValueResult3("numchild", miValueConst3); + miValueTuple.Add(miValueResult3); + const CMICmnMIValueConst miValueConst5(utilValue.GetTypeNameDisplay()); + const CMICmnMIValueResult miValueResult5("type", miValueConst5); + miValueTuple.Add(miValueResult5); + const CMICmnMIValueConst miValueConst6(strThreadId); + const CMICmnMIValueResult miValueResult6("thread-id", miValueConst6); + miValueTuple.Add(miValueResult6); + // nChildren == 0 is used to check for simple values + if (eVarInfoFormat == + CMICmnLLDBDebugSessionInfo::eVariableInfoFormat_AllValues || + (eVarInfoFormat == + CMICmnLLDBDebugSessionInfo::eVariableInfoFormat_SimpleValues && + nChildren == 0)) { + const CMIUtilString strValue( + CMICmnLLDBDebugSessionInfoVarObj::GetValueStringFormatted( + member, CMICmnLLDBDebugSessionInfoVarObj::eVarFormat_Natural)); + const CMICmnMIValueConst miValueConst7(strValue); + const CMICmnMIValueResult miValueResult7("value", miValueConst7); + miValueTuple.Add(miValueResult7); } - - return MIstatus::success; + const CMICmnMIValueConst miValueConst8("0"); + const CMICmnMIValueResult miValueResult8("has_more", miValueConst8); + miValueTuple.Add(miValueResult8); + const CMICmnMIValueResult miValueResult9("child", miValueTuple); + m_miValueList.Add(miValueResult9); + } + + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command prepares a MI Record Result +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command prepares a MI Record +// Result // for the work carried out in the Execute(). // Type: Overridden. // Args: None. @@ -1061,55 +1088,57 @@ CMICmdCmdVarListChildren::Execute() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarListChildren::Acknowledge() -{ - if (m_bValueValid) - { - // MI print "%s^done,numchild=\"%u\",children=[%s],has_more=\"%d\"" - const CMIUtilString strNumChild(CMIUtilString::Format("%u", m_nChildren)); - const CMICmnMIValueConst miValueConst(strNumChild); - CMICmnMIValueResult miValueResult("numchild", miValueConst); - if (m_nChildren != 0) - miValueResult.Add("children", m_miValueList); - const CMIUtilString strHasMore(m_bHasMore ? "1" : "0"); - const CMICmnMIValueConst miValueConst2(strHasMore); - miValueResult.Add("has_more", miValueConst2); - - const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, miValueResult); - m_miResultRecord = miRecordResult; - - return MIstatus::success; - } - - // MI print "%s^error,msg=\"variable invalid\"" - const CMICmnMIValueConst miValueConst("variable invalid"); - const CMICmnMIValueResult miValueResult("msg", miValueConst); - const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Error, miValueResult); +bool CMICmdCmdVarListChildren::Acknowledge() { + if (m_bValueValid) { + // MI print "%s^done,numchild=\"%u\",children=[%s],has_more=\"%d\"" + const CMIUtilString strNumChild(CMIUtilString::Format("%u", m_nChildren)); + const CMICmnMIValueConst miValueConst(strNumChild); + CMICmnMIValueResult miValueResult("numchild", miValueConst); + if (m_nChildren != 0) + miValueResult.Add("children", m_miValueList); + const CMIUtilString strHasMore(m_bHasMore ? "1" : "0"); + const CMICmnMIValueConst miValueConst2(strHasMore); + miValueResult.Add("has_more", miValueConst2); + + const CMICmnMIResultRecord miRecordResult( + m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, + miValueResult); m_miResultRecord = miRecordResult; return MIstatus::success; + } + + // MI print "%s^error,msg=\"variable invalid\"" + const CMICmnMIValueConst miValueConst("variable invalid"); + const CMICmnMIValueResult miValueResult("msg", miValueConst); + const CMICmnMIResultRecord miRecordResult( + m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Error, + miValueResult); + m_miResultRecord = miRecordResult; + + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: Required by the CMICmdFactory when registering *this command. The factory +//++ +//------------------------------------------------------------------------------------ +// Details: Required by the CMICmdFactory when registering *this command. The +// factory // calls this function to create an instance of *this command. // Type: Static method. // Args: None. // Return: CMICmdBase * - Pointer to a new command. // Throws: None. //-- -CMICmdBase * -CMICmdCmdVarListChildren::CreateSelf() -{ - return new CMICmdCmdVarListChildren(); +CMICmdBase *CMICmdCmdVarListChildren::CreateSelf() { + return new CMICmdCmdVarListChildren(); } //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarEvaluateExpression constructor. // Type: Method. // Args: None. @@ -1117,30 +1146,29 @@ CMICmdCmdVarListChildren::CreateSelf() // Throws: None. //-- CMICmdCmdVarEvaluateExpression::CMICmdCmdVarEvaluateExpression() - : m_bValueValid(true) - , m_constStrArgFormatSpec("-f") - , m_constStrArgName("name") -{ - // Command factory matches this name with that received from the stdin stream - m_strMiCmd = "var-evaluate-expression"; - - // Required by the CMICmdFactory when registering *this command - m_pSelfCreatorFn = &CMICmdCmdVarEvaluateExpression::CreateSelf; + : m_bValueValid(true), m_constStrArgFormatSpec("-f"), + m_constStrArgName("name") { + // Command factory matches this name with that received from the stdin stream + m_strMiCmd = "var-evaluate-expression"; + + // Required by the CMICmdFactory when registering *this command + m_pSelfCreatorFn = &CMICmdCmdVarEvaluateExpression::CreateSelf; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarEvaluateExpression destructor. // Type: Overrideable. // Args: None. // Return: None. // Throws: None. //-- -CMICmdCmdVarEvaluateExpression::~CMICmdCmdVarEvaluateExpression() -{ -} +CMICmdCmdVarEvaluateExpression::~CMICmdCmdVarEvaluateExpression() {} -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The parses the command line options +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The parses the command line +// options // arguments to extract values for each of those arguments. // Type: Overridden. // Args: None. @@ -1148,50 +1176,53 @@ CMICmdCmdVarEvaluateExpression::~CMICmdCmdVarEvaluateExpression() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarEvaluateExpression::ParseArgs() -{ - m_setCmdArgs.Add( - new CMICmdArgValOptionShort(m_constStrArgFormatSpec, false, false, CMICmdArgValListBase::eArgValType_String, 1)); - m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, true, true)); - return ParseValidateCmdOptions(); +bool CMICmdCmdVarEvaluateExpression::ParseArgs() { + m_setCmdArgs.Add( + new CMICmdArgValOptionShort(m_constStrArgFormatSpec, false, false, + CMICmdArgValListBase::eArgValType_String, 1)); + m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, true, true)); + return ParseValidateCmdOptions(); } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command does work in this function. -// The command is likely to communicate with the LLDB SBDebugger in here. +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command does work in this +// function. +// The command is likely to communicate with the LLDB SBDebugger in +// here. // Type: Overridden. // Args: None. // Return: MIstatus::success - Functional succeeded. // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarEvaluateExpression::Execute() -{ - CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); - - const CMIUtilString &rVarObjName(pArgName->GetValue()); - CMICmnLLDBDebugSessionInfoVarObj varObj; - if (!CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(rVarObjName, varObj)) - { - SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_DOESNOTEXIST), m_cmdData.strMiCmd.c_str(), rVarObjName.c_str())); - return MIstatus::failure; - } - - lldb::SBValue &rValue = const_cast<lldb::SBValue &>(varObj.GetValue()); - m_bValueValid = rValue.IsValid(); - if (!m_bValueValid) - return MIstatus::success; +bool CMICmdCmdVarEvaluateExpression::Execute() { + CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); + + const CMIUtilString &rVarObjName(pArgName->GetValue()); + CMICmnLLDBDebugSessionInfoVarObj varObj; + if (!CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(rVarObjName, varObj)) { + SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_DOESNOTEXIST), + m_cmdData.strMiCmd.c_str(), + rVarObjName.c_str())); + return MIstatus::failure; + } + + lldb::SBValue &rValue = const_cast<lldb::SBValue &>(varObj.GetValue()); + m_bValueValid = rValue.IsValid(); + if (!m_bValueValid) + return MIstatus::success; - m_varObjName = rVarObjName; - varObj.UpdateValue(); + m_varObjName = rVarObjName; + varObj.UpdateValue(); - return MIstatus::success; + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command prepares a MI Record Result +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command prepares a MI Record +// Result // for the work carried out in the Execute(). // Type: Overridden. // Args: None. @@ -1199,46 +1230,48 @@ CMICmdCmdVarEvaluateExpression::Execute() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarEvaluateExpression::Acknowledge() -{ - if (m_bValueValid) - { - CMICmnLLDBDebugSessionInfoVarObj varObj; - CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(m_varObjName, varObj); - const CMICmnMIValueConst miValueConst(varObj.GetValueFormatted()); - const CMICmnMIValueResult miValueResult("value", miValueConst); - const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, miValueResult); - m_miResultRecord = miRecordResult; - return MIstatus::success; - } - - const CMICmnMIValueConst miValueConst("variable invalid"); - const CMICmnMIValueResult miValueResult("msg", miValueConst); - const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Error, miValueResult); +bool CMICmdCmdVarEvaluateExpression::Acknowledge() { + if (m_bValueValid) { + CMICmnLLDBDebugSessionInfoVarObj varObj; + CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(m_varObjName, varObj); + const CMICmnMIValueConst miValueConst(varObj.GetValueFormatted()); + const CMICmnMIValueResult miValueResult("value", miValueConst); + const CMICmnMIResultRecord miRecordResult( + m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, + miValueResult); m_miResultRecord = miRecordResult; return MIstatus::success; + } + + const CMICmnMIValueConst miValueConst("variable invalid"); + const CMICmnMIValueResult miValueResult("msg", miValueConst); + const CMICmnMIResultRecord miRecordResult( + m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Error, + miValueResult); + m_miResultRecord = miRecordResult; + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: Required by the CMICmdFactory when registering *this command. The factory +//++ +//------------------------------------------------------------------------------------ +// Details: Required by the CMICmdFactory when registering *this command. The +// factory // calls this function to create an instance of *this command. // Type: Static method. // Args: None. // Return: CMICmdBase * - Pointer to a new command. // Throws: None. //-- -CMICmdBase * -CMICmdCmdVarEvaluateExpression::CreateSelf() -{ - return new CMICmdCmdVarEvaluateExpression(); +CMICmdBase *CMICmdCmdVarEvaluateExpression::CreateSelf() { + return new CMICmdCmdVarEvaluateExpression(); } //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarInfoPathExpression constructor. // Type: Method. // Args: None. @@ -1246,29 +1279,28 @@ CMICmdCmdVarEvaluateExpression::CreateSelf() // Throws: None. //-- CMICmdCmdVarInfoPathExpression::CMICmdCmdVarInfoPathExpression() - : m_bValueValid(true) - , m_constStrArgName("name") -{ - // Command factory matches this name with that received from the stdin stream - m_strMiCmd = "var-info-path-expression"; - - // Required by the CMICmdFactory when registering *this command - m_pSelfCreatorFn = &CMICmdCmdVarInfoPathExpression::CreateSelf; + : m_bValueValid(true), m_constStrArgName("name") { + // Command factory matches this name with that received from the stdin stream + m_strMiCmd = "var-info-path-expression"; + + // Required by the CMICmdFactory when registering *this command + m_pSelfCreatorFn = &CMICmdCmdVarInfoPathExpression::CreateSelf; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarInfoPathExpression destructor. // Type: Overrideable. // Args: None. // Return: None. // Throws: None. //-- -CMICmdCmdVarInfoPathExpression::~CMICmdCmdVarInfoPathExpression() -{ -} +CMICmdCmdVarInfoPathExpression::~CMICmdCmdVarInfoPathExpression() {} -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The parses the command line options +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The parses the command line +// options // arguments to extract values for each of those arguments. // Type: Overridden. // Args: None. @@ -1276,84 +1308,86 @@ CMICmdCmdVarInfoPathExpression::~CMICmdCmdVarInfoPathExpression() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarInfoPathExpression::ParseArgs() -{ - m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, true, true)); - return ParseValidateCmdOptions(); +bool CMICmdCmdVarInfoPathExpression::ParseArgs() { + m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, true, true)); + return ParseValidateCmdOptions(); } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command does work in this function. -// The command is likely to communicate with the LLDB SBDebugger in here. +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command does work in this +// function. +// The command is likely to communicate with the LLDB SBDebugger in +// here. // Type: Overridden. // Args: None. // Return: MIstatus::success - Functional succeeded. // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarInfoPathExpression::Execute() -{ - CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); - - const CMIUtilString &rVarObjName(pArgName->GetValue()); - CMICmnLLDBDebugSessionInfoVarObj varObj; - if (!CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(rVarObjName, varObj)) - { - SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_DOESNOTEXIST), m_cmdData.strMiCmd.c_str(), rVarObjName.c_str())); - return MIstatus::failure; - } - - lldb::SBValue &rValue = const_cast<lldb::SBValue &>(varObj.GetValue()); - m_bValueValid = rValue.IsValid(); - if (!m_bValueValid) - return MIstatus::success; - - lldb::SBStream stream; - if (!rValue.GetExpressionPath(stream, true)) - { - SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_EXPRESSIONPATH), m_cmdData.strMiCmd.c_str(), rVarObjName.c_str())); - return MIstatus::failure; - } - - const char *pPathExpression = stream.GetData(); - if (pPathExpression == nullptr) - { - // Build expression from what we do know - m_strPathExpression = varObj.GetNameReal(); - return MIstatus::success; - } +bool CMICmdCmdVarInfoPathExpression::Execute() { + CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); + + const CMIUtilString &rVarObjName(pArgName->GetValue()); + CMICmnLLDBDebugSessionInfoVarObj varObj; + if (!CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(rVarObjName, varObj)) { + SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_DOESNOTEXIST), + m_cmdData.strMiCmd.c_str(), + rVarObjName.c_str())); + return MIstatus::failure; + } + + lldb::SBValue &rValue = const_cast<lldb::SBValue &>(varObj.GetValue()); + m_bValueValid = rValue.IsValid(); + if (!m_bValueValid) + return MIstatus::success; - // Has LLDB returned a var signature of it's own - if (pPathExpression[0] != '$') - { - m_strPathExpression = pPathExpression; - return MIstatus::success; - } + lldb::SBStream stream; + if (!rValue.GetExpressionPath(stream, true)) { + SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_EXPRESSIONPATH), + m_cmdData.strMiCmd.c_str(), + rVarObjName.c_str())); + return MIstatus::failure; + } + const char *pPathExpression = stream.GetData(); + if (pPathExpression == nullptr) { // Build expression from what we do know - const CMIUtilString &rVarParentName(varObj.GetVarParentName()); - if (rVarParentName.empty()) - { - m_strPathExpression = varObj.GetNameReal(); - } - else - { - CMICmnLLDBDebugSessionInfoVarObj varObjParent; - if (!CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(rVarParentName, varObjParent)) - { - SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_DOESNOTEXIST), m_cmdData.strMiCmd.c_str(), rVarParentName.c_str())); - return MIstatus::failure; - } - m_strPathExpression = CMIUtilString::Format("%s.%s", varObjParent.GetNameReal().c_str(), varObj.GetNameReal().c_str()); - } + m_strPathExpression = varObj.GetNameReal(); + return MIstatus::success; + } + // Has LLDB returned a var signature of it's own + if (pPathExpression[0] != '$') { + m_strPathExpression = pPathExpression; return MIstatus::success; + } + + // Build expression from what we do know + const CMIUtilString &rVarParentName(varObj.GetVarParentName()); + if (rVarParentName.empty()) { + m_strPathExpression = varObj.GetNameReal(); + } else { + CMICmnLLDBDebugSessionInfoVarObj varObjParent; + if (!CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(rVarParentName, + varObjParent)) { + SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_DOESNOTEXIST), + m_cmdData.strMiCmd.c_str(), + rVarParentName.c_str())); + return MIstatus::failure; + } + m_strPathExpression = + CMIUtilString::Format("%s.%s", varObjParent.GetNameReal().c_str(), + varObj.GetNameReal().c_str()); + } + + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command prepares a MI Record Result +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command prepares a MI Record +// Result // for the work carried out in the Execute(). // Type: Overridden. // Args: None. @@ -1361,45 +1395,47 @@ CMICmdCmdVarInfoPathExpression::Execute() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarInfoPathExpression::Acknowledge() -{ - if (m_bValueValid) - { - const CMICmnMIValueConst miValueConst(m_strPathExpression); - const CMICmnMIValueResult miValueResult("path_expr", miValueConst); - const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, miValueResult); - m_miResultRecord = miRecordResult; - return MIstatus::success; - } - - const CMICmnMIValueConst miValueConst("variable invalid"); - const CMICmnMIValueResult miValueResult("msg", miValueConst); - const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Error, miValueResult); +bool CMICmdCmdVarInfoPathExpression::Acknowledge() { + if (m_bValueValid) { + const CMICmnMIValueConst miValueConst(m_strPathExpression); + const CMICmnMIValueResult miValueResult("path_expr", miValueConst); + const CMICmnMIResultRecord miRecordResult( + m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, + miValueResult); m_miResultRecord = miRecordResult; - return MIstatus::success; + } + + const CMICmnMIValueConst miValueConst("variable invalid"); + const CMICmnMIValueResult miValueResult("msg", miValueConst); + const CMICmnMIResultRecord miRecordResult( + m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Error, + miValueResult); + m_miResultRecord = miRecordResult; + + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: Required by the CMICmdFactory when registering *this command. The factory +//++ +//------------------------------------------------------------------------------------ +// Details: Required by the CMICmdFactory when registering *this command. The +// factory // calls this function to create an instance of *this command. // Type: Static method. // Args: None. // Return: CMICmdBase * - Pointer to a new command. // Throws: None. //-- -CMICmdBase * -CMICmdCmdVarInfoPathExpression::CreateSelf() -{ - return new CMICmdCmdVarInfoPathExpression(); +CMICmdBase *CMICmdCmdVarInfoPathExpression::CreateSelf() { + return new CMICmdCmdVarInfoPathExpression(); } //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarShowAttributes constructor. // Type: Method. // Args: None. @@ -1407,28 +1443,28 @@ CMICmdCmdVarInfoPathExpression::CreateSelf() // Throws: None. //-- CMICmdCmdVarShowAttributes::CMICmdCmdVarShowAttributes() - : m_constStrArgName("name") -{ - // Command factory matches this name with that received from the stdin stream - m_strMiCmd = "var-show-attributes"; + : m_constStrArgName("name") { + // Command factory matches this name with that received from the stdin stream + m_strMiCmd = "var-show-attributes"; - // Required by the CMICmdFactory when registering *this command - m_pSelfCreatorFn = &CMICmdCmdVarShowAttributes::CreateSelf; + // Required by the CMICmdFactory when registering *this command + m_pSelfCreatorFn = &CMICmdCmdVarShowAttributes::CreateSelf; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdCmdVarShowAttributes destructor. // Type: Overrideable. // Args: None. // Return: None. // Throws: None. //-- -CMICmdCmdVarShowAttributes::~CMICmdCmdVarShowAttributes() -{ -} +CMICmdCmdVarShowAttributes::~CMICmdCmdVarShowAttributes() {} -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The parses the command line options +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The parses the command line +// options // arguments to extract values for each of those arguments. // Type: Overridden. // Args: None. @@ -1436,40 +1472,42 @@ CMICmdCmdVarShowAttributes::~CMICmdCmdVarShowAttributes() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarShowAttributes::ParseArgs() -{ - m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, true, true)); - return ParseValidateCmdOptions(); +bool CMICmdCmdVarShowAttributes::ParseArgs() { + m_setCmdArgs.Add(new CMICmdArgValString(m_constStrArgName, true, true)); + return ParseValidateCmdOptions(); } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command does work in this function. -// The command is likely to communicate with the LLDB SBDebugger in here. +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command does work in this +// function. +// The command is likely to communicate with the LLDB SBDebugger in +// here. // Type: Overridden. // Args: None. // Return: MIstatus::success - Functional succeeded. // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarShowAttributes::Execute() -{ - CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); - - const CMIUtilString &rVarObjName(pArgName->GetValue()); - CMICmnLLDBDebugSessionInfoVarObj varObj; - if (!CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(rVarObjName, varObj)) - { - SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_DOESNOTEXIST), m_cmdData.strMiCmd.c_str(), rVarObjName.c_str())); - return MIstatus::failure; - } - - return MIstatus::success; +bool CMICmdCmdVarShowAttributes::Execute() { + CMICMDBASE_GETOPTION(pArgName, String, m_constStrArgName); + + const CMIUtilString &rVarObjName(pArgName->GetValue()); + CMICmnLLDBDebugSessionInfoVarObj varObj; + if (!CMICmnLLDBDebugSessionInfoVarObj::VarObjGet(rVarObjName, varObj)) { + SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_VARIABLE_DOESNOTEXIST), + m_cmdData.strMiCmd.c_str(), + rVarObjName.c_str())); + return MIstatus::failure; + } + + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: The invoker requires this function. The command prepares a MI Record Result +//++ +//------------------------------------------------------------------------------------ +// Details: The invoker requires this function. The command prepares a MI Record +// Result // for the work carried out in the Execute(). // Type: Overridden. // Args: None. @@ -1477,28 +1515,28 @@ CMICmdCmdVarShowAttributes::Execute() // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdCmdVarShowAttributes::Acknowledge() -{ - // MI output: "%s^done,status=\"editable\"]" - const CMICmnMIValueConst miValueConst("editable"); - const CMICmnMIValueResult miValueResult("status", miValueConst); - const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, miValueResult); - m_miResultRecord = miRecordResult; - - return MIstatus::success; +bool CMICmdCmdVarShowAttributes::Acknowledge() { + // MI output: "%s^done,status=\"editable\"]" + const CMICmnMIValueConst miValueConst("editable"); + const CMICmnMIValueResult miValueResult("status", miValueConst); + const CMICmnMIResultRecord miRecordResult( + m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Done, + miValueResult); + m_miResultRecord = miRecordResult; + + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ -// Details: Required by the CMICmdFactory when registering *this command. The factory +//++ +//------------------------------------------------------------------------------------ +// Details: Required by the CMICmdFactory when registering *this command. The +// factory // calls this function to create an instance of *this command. // Type: Static method. // Args: None. // Return: CMICmdBase * - Pointer to a new command. // Throws: None. //-- -CMICmdBase * -CMICmdCmdVarShowAttributes::CreateSelf() -{ - return new CMICmdCmdVarShowAttributes(); +CMICmdBase *CMICmdCmdVarShowAttributes::CreateSelf() { + return new CMICmdCmdVarShowAttributes(); } |