diff options
Diffstat (limited to 'lldb/tools/lldb-mi/MICmdArgSet.cpp')
-rw-r--r-- | lldb/tools/lldb-mi/MICmdArgSet.cpp | 536 |
1 files changed, 265 insertions, 271 deletions
diff --git a/lldb/tools/lldb-mi/MICmdArgSet.cpp b/lldb/tools/lldb-mi/MICmdArgSet.cpp index 9fe5b2d97dc..ca942148908 100644 --- a/lldb/tools/lldb-mi/MICmdArgSet.cpp +++ b/lldb/tools/lldb-mi/MICmdArgSet.cpp @@ -10,10 +10,11 @@ // In-house headers: #include "MICmdArgSet.h" #include "MICmdArgValBase.h" -#include "MICmnResources.h" #include "MICmnLog.h" +#include "MICmnResources.h" -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdArgSet constructor. // Type: Method. // Args: None. @@ -21,136 +22,140 @@ // Throws: None. //-- CMICmdArgSet::CMICmdArgSet() - : m_bIsArgsPresentButNotHandledByCmd(false) - , m_constStrCommaSpc(", ") -{ -} + : m_bIsArgsPresentButNotHandledByCmd(false), m_constStrCommaSpc(", ") {} -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: CMICmdArgSet destructor. // Type: Method. // Args: None. // Return: None. // Throws: None. //-- -CMICmdArgSet::~CMICmdArgSet() -{ - // Tidy up - Destroy(); +CMICmdArgSet::~CMICmdArgSet() { + // Tidy up + Destroy(); } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Release resources used by *this container object. // Type: Method. // Args: None. // Return: None. // Throws: None. //-- -void -CMICmdArgSet::Destroy() -{ - // Delete command argument objects - if (!m_setCmdArgs.empty()) - { - SetCmdArgs_t::iterator it = m_setCmdArgs.begin(); - while (it != m_setCmdArgs.end()) - { - CMICmdArgValBase *pArg(*it); - delete pArg; - - // Next - ++it; - } - m_setCmdArgs.clear(); +void CMICmdArgSet::Destroy() { + // Delete command argument objects + if (!m_setCmdArgs.empty()) { + SetCmdArgs_t::iterator it = m_setCmdArgs.begin(); + while (it != m_setCmdArgs.end()) { + CMICmdArgValBase *pArg(*it); + delete pArg; + + // Next + ++it; } - - m_setCmdArgsThatNotValid.clear(); - m_setCmdArgsThatAreMissing.clear(); - m_setCmdArgsNotHandledByCmd.clear(); - m_setCmdArgsMissingInfo.clear(); - m_bIsArgsPresentButNotHandledByCmd = false; + m_setCmdArgs.clear(); + } + + m_setCmdArgsThatNotValid.clear(); + m_setCmdArgsThatAreMissing.clear(); + m_setCmdArgsNotHandledByCmd.clear(); + m_setCmdArgsMissingInfo.clear(); + m_bIsArgsPresentButNotHandledByCmd = false; } -//++ ------------------------------------------------------------------------------------ -// Details: Retrieve the state flag indicating that the command set up ready to parse -// command arguments or options found that one or more arguments was indeed -// present but not handled. This is given as a warning in the MI log file. +//++ +//------------------------------------------------------------------------------------ +// Details: Retrieve the state flag indicating that the command set up ready to +// parse +// command arguments or options found that one or more arguments was +// indeed +// present but not handled. This is given as a warning in the MI log +// file. // Type: Method. // Args: None. // Return: bool - True = one or more args not handled, false = all args handled // Throws: None. //-- -bool -CMICmdArgSet::IsArgsPresentButNotHandledByCmd() const -{ - return m_bIsArgsPresentButNotHandledByCmd; +bool CMICmdArgSet::IsArgsPresentButNotHandledByCmd() const { + return m_bIsArgsPresentButNotHandledByCmd; } -//++ ------------------------------------------------------------------------------------ -// Details: Add the list of command's arguments to parse and validate another one. +//++ +//------------------------------------------------------------------------------------ +// Details: Add the list of command's arguments to parse and validate another +// one. // Type: Method. // Args: vArg - (R) A command argument object. // Return: None. // Throws: None. //-- -void -CMICmdArgSet::Add(CMICmdArgValBase *vArg) -{ - m_setCmdArgs.push_back(vArg); -} - -//++ ------------------------------------------------------------------------------------ -// Details: After validating an options line of text (the context) and there is a failure, -// it is likely a mandatory command argument that is required is missing. This +void CMICmdArgSet::Add(CMICmdArgValBase *vArg) { m_setCmdArgs.push_back(vArg); } + +//++ +//------------------------------------------------------------------------------------ +// Details: After validating an options line of text (the context) and there is +// a failure, +// it is likely a mandatory command argument that is required is +// missing. This // function returns the argument that should be present. // Type: Method. // Args: None. // Return: SetCmdArgs_t & - Set of argument objects. // Throws: None. //-- -const CMICmdArgSet::SetCmdArgs_t & -CMICmdArgSet::GetArgsThatAreMissing() const -{ - return m_setCmdArgsThatAreMissing; +const CMICmdArgSet::SetCmdArgs_t &CMICmdArgSet::GetArgsThatAreMissing() const { + return m_setCmdArgsThatAreMissing; } -//++ ------------------------------------------------------------------------------------ -// Details: After validating an options line of text (the context) and there is a failure, -// it may be because one or more arguments were unable to extract a value. This +//++ +//------------------------------------------------------------------------------------ +// Details: After validating an options line of text (the context) and there is +// a failure, +// it may be because one or more arguments were unable to extract a +// value. This // function returns the argument that were found to be invalid. // Type: Method. // Args: None. // Return: SetCmdArgs_t & - Set of argument objects. // Throws: None. //-- -const CMICmdArgSet::SetCmdArgs_t & -CMICmdArgSet::GetArgsThatInvalid() const -{ - return m_setCmdArgsThatNotValid; +const CMICmdArgSet::SetCmdArgs_t &CMICmdArgSet::GetArgsThatInvalid() const { + return m_setCmdArgsThatNotValid; } -//++ ------------------------------------------------------------------------------------ -// Details: The list of argument or option (objects) that were specified by the command -// and so recognised when parsed but were not handled. Ideally the command -// should handle all arguments and options presented to it. The command sends -// warning to the MI log file to say that these options were not handled. -// Used as one way to determine option that maybe should really be implemented +//++ +//------------------------------------------------------------------------------------ +// Details: The list of argument or option (objects) that were specified by the +// command +// and so recognised when parsed but were not handled. Ideally the +// command +// should handle all arguments and options presented to it. The command +// sends +// warning to the MI log file to say that these options were not +// handled. +// Used as one way to determine option that maybe should really be +// implemented // and not just ignored. // Type: Method. // Args: None. // Return: SetCmdArgs_t & - Set of argument objects. // Throws: None. //-- -const CMICmdArgSet::SetCmdArgs_t & -CMICmdArgSet::GetArgsNotHandledByCmd() const -{ - return m_setCmdArgsNotHandledByCmd; +const CMICmdArgSet::SetCmdArgs_t &CMICmdArgSet::GetArgsNotHandledByCmd() const { + return m_setCmdArgsNotHandledByCmd; } -//++ ------------------------------------------------------------------------------------ -// Details: Given a set of command argument objects parse the context option string to -// find those argument and retrieve their value. If the function fails call -// GetArgsThatAreMissing() to see which commands that were mandatory were +//++ +//------------------------------------------------------------------------------------ +// Details: Given a set of command argument objects parse the context option +// string to +// find those argument and retrieve their value. If the function fails +// call +// GetArgsThatAreMissing() to see which commands that were mandatory +// were // missing or failed to parse. // Type: Method. // Args: vStrMiCmd - (R) Command's name. @@ -159,49 +164,45 @@ CMICmdArgSet::GetArgsNotHandledByCmd() const // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdArgSet::Validate(const CMIUtilString &vStrMiCmd, CMICmdArgContext &vwCmdArgsText) -{ - m_cmdArgContext = vwCmdArgsText; - - // Iterate all the arguments or options required by a command - SetCmdArgs_t::const_iterator it = m_setCmdArgs.begin(); - while (it != m_setCmdArgs.end()) - { - CMICmdArgValBase *pArg = *it; - - if (!pArg->Validate(vwCmdArgsText)) - { - if (pArg->GetFound()) - { - if (pArg->GetIsMissingOptions()) - m_setCmdArgsMissingInfo.push_back(pArg); - else if (!pArg->GetValid()) - m_setCmdArgsThatNotValid.push_back(pArg); - } - else if (pArg->GetIsMandatory()) - m_setCmdArgsThatAreMissing.push_back(pArg); - } - - if (pArg->GetFound() && !pArg->GetIsHandledByCmd()) - { - m_bIsArgsPresentButNotHandledByCmd = true; - m_setCmdArgsNotHandledByCmd.push_back(pArg); - } - - // Next - ++it; +bool CMICmdArgSet::Validate(const CMIUtilString &vStrMiCmd, + CMICmdArgContext &vwCmdArgsText) { + m_cmdArgContext = vwCmdArgsText; + + // Iterate all the arguments or options required by a command + SetCmdArgs_t::const_iterator it = m_setCmdArgs.begin(); + while (it != m_setCmdArgs.end()) { + CMICmdArgValBase *pArg = *it; + + if (!pArg->Validate(vwCmdArgsText)) { + if (pArg->GetFound()) { + if (pArg->GetIsMissingOptions()) + m_setCmdArgsMissingInfo.push_back(pArg); + else if (!pArg->GetValid()) + m_setCmdArgsThatNotValid.push_back(pArg); + } else if (pArg->GetIsMandatory()) + m_setCmdArgsThatAreMissing.push_back(pArg); + } + + if (pArg->GetFound() && !pArg->GetIsHandledByCmd()) { + m_bIsArgsPresentButNotHandledByCmd = true; + m_setCmdArgsNotHandledByCmd.push_back(pArg); } - // report any issues with arguments/options - if (IsArgsPresentButNotHandledByCmd()) - WarningArgsNotHandledbyCmdLogFile(vStrMiCmd); + // Next + ++it; + } + + // report any issues with arguments/options + if (IsArgsPresentButNotHandledByCmd()) + WarningArgsNotHandledbyCmdLogFile(vStrMiCmd); - return ValidationFormErrorMessages(vwCmdArgsText); + return ValidationFormErrorMessages(vwCmdArgsText); } -//++ ------------------------------------------------------------------------------------ -// Details: Having validated the command's options text and failed for some reason form +//++ +//------------------------------------------------------------------------------------ +// Details: Having validated the command's options text and failed for some +// reason form // the error message made up with the faults found. // Type: Method. // vCmdArgsText - (RW) A command's options or argument. @@ -209,139 +210,134 @@ CMICmdArgSet::Validate(const CMIUtilString &vStrMiCmd, CMICmdArgContext &vwCmdAr // MIstatus::failure - Functional failed. // Throws: None. //-- -bool -CMICmdArgSet::ValidationFormErrorMessages(const CMICmdArgContext &vwCmdArgsText) -{ - CMIUtilString strListMissing; - CMIUtilString strListInvalid; - CMIUtilString strListMissingInfo; - const bool bArgsMissing = (m_setCmdArgsThatAreMissing.size() > 0); - const bool bArgsInvalid = (m_setCmdArgsThatNotValid.size() > 0); - const bool bArgsMissingInfo = (m_setCmdArgsMissingInfo.size() > 0); - if (!(bArgsMissing || bArgsInvalid || bArgsMissingInfo)) - return MIstatus::success; - if (bArgsMissing) - { - MIuint i = 0; - SetCmdArgs_t::const_iterator it = m_setCmdArgsThatAreMissing.begin(); - while (it != m_setCmdArgsThatAreMissing.end()) - { - if (i++ > 0) - strListMissing += m_constStrCommaSpc; - - const CMICmdArgValBase *pArg(*it); - strListMissing += pArg->GetName(); - - // Next - ++it; - } - } - if (bArgsInvalid) - { - MIuint i = 0; - SetCmdArgs_t::const_iterator it = m_setCmdArgsThatNotValid.begin(); - while (it != m_setCmdArgsThatNotValid.end()) - { - if (i++ > 0) - strListMissing += m_constStrCommaSpc; - - const CMICmdArgValBase *pArg(*it); - strListInvalid += pArg->GetName(); - - // Next - ++it; - } - } - if (bArgsMissingInfo) - { - MIuint i = 0; - SetCmdArgs_t::const_iterator it = m_setCmdArgsMissingInfo.begin(); - while (it != m_setCmdArgsMissingInfo.end()) - { - if (i++ > 0) - strListMissingInfo += m_constStrCommaSpc; - - const CMICmdArgValBase *pArg(*it); - strListMissingInfo += pArg->GetName(); - - // Next - ++it; - } - } - - bool bHaveOneError = false; - CMIUtilString strError = MIRSRC(IDS_CMD_ARGS_ERR_PREFIX_MSG); - if (bArgsMissing && bArgsInvalid) - { - bHaveOneError = true; - strError += CMIUtilString::Format(MIRSRC(IDS_CMD_ARGS_ERR_VALIDATION_MAN_INVALID), strListMissing.c_str(), strListInvalid.c_str()); - } - if (bArgsMissing) - { - if (bHaveOneError) - strError += ". "; - bHaveOneError = true; - strError += CMIUtilString::Format(MIRSRC(IDS_CMD_ARGS_ERR_VALIDATION_MANDATORY), strListMissing.c_str()); - } - if (bArgsMissingInfo) - { - if (bHaveOneError) - strError += ". "; - bHaveOneError = true; - strError += CMIUtilString::Format(MIRSRC(IDS_CMD_ARGS_ERR_VALIDATION_MISSING_INF), strListMissingInfo.c_str()); +bool CMICmdArgSet::ValidationFormErrorMessages( + const CMICmdArgContext &vwCmdArgsText) { + CMIUtilString strListMissing; + CMIUtilString strListInvalid; + CMIUtilString strListMissingInfo; + const bool bArgsMissing = (m_setCmdArgsThatAreMissing.size() > 0); + const bool bArgsInvalid = (m_setCmdArgsThatNotValid.size() > 0); + const bool bArgsMissingInfo = (m_setCmdArgsMissingInfo.size() > 0); + if (!(bArgsMissing || bArgsInvalid || bArgsMissingInfo)) + return MIstatus::success; + if (bArgsMissing) { + MIuint i = 0; + SetCmdArgs_t::const_iterator it = m_setCmdArgsThatAreMissing.begin(); + while (it != m_setCmdArgsThatAreMissing.end()) { + if (i++ > 0) + strListMissing += m_constStrCommaSpc; + + const CMICmdArgValBase *pArg(*it); + strListMissing += pArg->GetName(); + + // Next + ++it; } - if (bArgsInvalid) - { - if (bHaveOneError) - strError += ". "; - bHaveOneError = true; - strError += CMIUtilString::Format(MIRSRC(IDS_CMD_ARGS_ERR_VALIDATION_INVALID), strListInvalid.c_str()); + } + if (bArgsInvalid) { + MIuint i = 0; + SetCmdArgs_t::const_iterator it = m_setCmdArgsThatNotValid.begin(); + while (it != m_setCmdArgsThatNotValid.end()) { + if (i++ > 0) + strListMissing += m_constStrCommaSpc; + + const CMICmdArgValBase *pArg(*it); + strListInvalid += pArg->GetName(); + + // Next + ++it; } - if (!vwCmdArgsText.IsEmpty()) - { - if (bHaveOneError) - strError += ". "; - bHaveOneError = true; - strError += CMIUtilString::Format(MIRSRC(IDS_CMD_ARGS_ERR_CONTEXT_NOT_ALL_EATTEN), vwCmdArgsText.GetArgsLeftToParse().c_str()); + } + if (bArgsMissingInfo) { + MIuint i = 0; + SetCmdArgs_t::const_iterator it = m_setCmdArgsMissingInfo.begin(); + while (it != m_setCmdArgsMissingInfo.end()) { + if (i++ > 0) + strListMissingInfo += m_constStrCommaSpc; + + const CMICmdArgValBase *pArg(*it); + strListMissingInfo += pArg->GetName(); + + // Next + ++it; } - + } + + bool bHaveOneError = false; + CMIUtilString strError = MIRSRC(IDS_CMD_ARGS_ERR_PREFIX_MSG); + if (bArgsMissing && bArgsInvalid) { + bHaveOneError = true; + strError += + CMIUtilString::Format(MIRSRC(IDS_CMD_ARGS_ERR_VALIDATION_MAN_INVALID), + strListMissing.c_str(), strListInvalid.c_str()); + } + if (bArgsMissing) { if (bHaveOneError) - { - SetErrorDescription(strError); - return MIstatus::failure; - } - - return MIstatus::success; + strError += ". "; + bHaveOneError = true; + strError += CMIUtilString::Format( + MIRSRC(IDS_CMD_ARGS_ERR_VALIDATION_MANDATORY), strListMissing.c_str()); + } + if (bArgsMissingInfo) { + if (bHaveOneError) + strError += ". "; + bHaveOneError = true; + strError += + CMIUtilString::Format(MIRSRC(IDS_CMD_ARGS_ERR_VALIDATION_MISSING_INF), + strListMissingInfo.c_str()); + } + if (bArgsInvalid) { + if (bHaveOneError) + strError += ". "; + bHaveOneError = true; + strError += CMIUtilString::Format( + MIRSRC(IDS_CMD_ARGS_ERR_VALIDATION_INVALID), strListInvalid.c_str()); + } + if (!vwCmdArgsText.IsEmpty()) { + if (bHaveOneError) + strError += ". "; + bHaveOneError = true; + strError += + CMIUtilString::Format(MIRSRC(IDS_CMD_ARGS_ERR_CONTEXT_NOT_ALL_EATTEN), + vwCmdArgsText.GetArgsLeftToParse().c_str()); + } + + if (bHaveOneError) { + SetErrorDescription(strError); + return MIstatus::failure; + } + + return MIstatus::success; } -//++ ------------------------------------------------------------------------------------ +//++ +//------------------------------------------------------------------------------------ // Details: Ask if the command's argument options text had any arguments. // Type: Method. // Args: None. -// Return: bool - True = Has one or more arguments present, false = no arguments. +// Return: bool - True = Has one or more arguments present, false = no +// arguments. // Throws: None. //-- -bool -CMICmdArgSet::IsArgContextEmpty() const -{ - return m_cmdArgContext.IsEmpty(); +bool CMICmdArgSet::IsArgContextEmpty() const { + return m_cmdArgContext.IsEmpty(); } -//++ ------------------------------------------------------------------------------------ -// Details: Retrieve the number of arguments that are being used for the command. +//++ +//------------------------------------------------------------------------------------ +// Details: Retrieve the number of arguments that are being used for the +// command. // Type: Method. // Args: None. // Return: size_t - Argument count. // Throws: None. //-- -size_t -CMICmdArgSet::GetCount() const -{ - return m_setCmdArgs.size(); -} +size_t CMICmdArgSet::GetCount() const { return m_setCmdArgs.size(); } -//++ ------------------------------------------------------------------------------------ -// Details: Given a set of command argument objects retrieve the argument with the +//++ +//------------------------------------------------------------------------------------ +// Details: Given a set of command argument objects retrieve the argument with +// the // specified name. // Type: Method. // Args: vpArg - (W) A pointer to a command's argument object. @@ -349,59 +345,57 @@ CMICmdArgSet::GetCount() const // False - Argument not found. // Throws: None. //-- -bool -CMICmdArgSet::GetArg(const CMIUtilString &vArgName, CMICmdArgValBase *&vpArg) const -{ - bool bFound = false; - SetCmdArgs_t::const_iterator it = m_setCmdArgs.begin(); - while (it != m_setCmdArgs.end()) - { - CMICmdArgValBase *pArg(*it); - if (pArg->GetName() == vArgName) - { - bFound = true; - vpArg = pArg; - break; - } - - // Next - ++it; +bool CMICmdArgSet::GetArg(const CMIUtilString &vArgName, + CMICmdArgValBase *&vpArg) const { + bool bFound = false; + SetCmdArgs_t::const_iterator it = m_setCmdArgs.begin(); + while (it != m_setCmdArgs.end()) { + CMICmdArgValBase *pArg(*it); + if (pArg->GetName() == vArgName) { + bFound = true; + vpArg = pArg; + break; } - return bFound; + // Next + ++it; + } + + return bFound; } -//++ ------------------------------------------------------------------------------------ -// Details: Write a warning message to the MI Log file about the command's arguments or +//++ +//------------------------------------------------------------------------------------ +// Details: Write a warning message to the MI Log file about the command's +// arguments or // options that were found present but not handled. // Type: Method. // Args: vrCmdName - (R) The command's name. // Return: None. // Throws: None. //-- -void -CMICmdArgSet::WarningArgsNotHandledbyCmdLogFile(const CMIUtilString &vrCmdName) -{ +void CMICmdArgSet::WarningArgsNotHandledbyCmdLogFile( + const CMIUtilString &vrCmdName) { #if MICONFIG_GIVE_WARNING_CMD_ARGS_NOT_HANDLED - CMIUtilString strArgsNotHandled; - const CMICmdArgSet::SetCmdArgs_t &rSetArgs = GetArgsNotHandledByCmd(); - MIuint nCnt = 0; - CMICmdArgSet::SetCmdArgs_t::const_iterator it = rSetArgs.begin(); - while (it != rSetArgs.end()) - { - if (nCnt++ > 0) - strArgsNotHandled += m_constStrCommaSpc; - const CMICmdArgValBase *pArg = *it; - strArgsNotHandled += pArg->GetName(); - - // Next - ++it; - } - - const CMIUtilString strWarningMsg( - CMIUtilString::Format(MIRSRC(IDS_CMD_WRN_ARGS_NOT_HANDLED), vrCmdName.c_str(), strArgsNotHandled.c_str())); - m_pLog->WriteLog(strWarningMsg); + CMIUtilString strArgsNotHandled; + const CMICmdArgSet::SetCmdArgs_t &rSetArgs = GetArgsNotHandledByCmd(); + MIuint nCnt = 0; + CMICmdArgSet::SetCmdArgs_t::const_iterator it = rSetArgs.begin(); + while (it != rSetArgs.end()) { + if (nCnt++ > 0) + strArgsNotHandled += m_constStrCommaSpc; + const CMICmdArgValBase *pArg = *it; + strArgsNotHandled += pArg->GetName(); + + // Next + ++it; + } + + const CMIUtilString strWarningMsg( + CMIUtilString::Format(MIRSRC(IDS_CMD_WRN_ARGS_NOT_HANDLED), + vrCmdName.c_str(), strArgsNotHandled.c_str())); + m_pLog->WriteLog(strWarningMsg); #endif // MICONFIG_GIVE_WARNING_CMD_ARGS_NOT_HANDLED } |