summaryrefslogtreecommitdiffstats
path: root/lldb/tools/lldb-mi/MICmdArgSet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/tools/lldb-mi/MICmdArgSet.cpp')
-rw-r--r--lldb/tools/lldb-mi/MICmdArgSet.cpp536
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
}
OpenPOWER on IntegriCloud