summaryrefslogtreecommitdiffstats
path: root/tools/lldb-mi/MICmdArgValNumber.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lldb-mi/MICmdArgValNumber.cpp')
-rw-r--r--tools/lldb-mi/MICmdArgValNumber.cpp41
1 files changed, 21 insertions, 20 deletions
diff --git a/tools/lldb-mi/MICmdArgValNumber.cpp b/tools/lldb-mi/MICmdArgValNumber.cpp
index 8b1878d..75e9700 100644
--- a/tools/lldb-mi/MICmdArgValNumber.cpp
+++ b/tools/lldb-mi/MICmdArgValNumber.cpp
@@ -7,18 +7,6 @@
//
//===----------------------------------------------------------------------===//
-//++
-// File: MICmdArgValNumber.cpp
-//
-// Overview: CMICmdArgValNumber implementation.
-//
-// Environment: Compilers: Visual C++ 12.
-// gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
-// Libraries: See MIReadmetxt.
-//
-// Copyright: None.
-//--
-
// In-house headers:
#include "MICmdArgValNumber.h"
#include "MICmdArgContext.h"
@@ -31,21 +19,25 @@
// Throws: None.
//--
CMICmdArgValNumber::CMICmdArgValNumber(void)
- : m_nNumber(0)
+ : m_nNumberFormatMask(CMICmdArgValNumber::eArgValNumberFormat_Decimal)
+ , m_nNumber(0)
{
}
//++ ------------------------------------------------------------------------------------
// Details: CMICmdArgValNumber constructor.
// Type: Method.
-// Args: vrArgName - (R) Argument's name to search by.
-// vbMandatory - (R) True = Yes must be present, false = optional argument.
-// vbHandleByCmd - (R) True = Command processes *this option, false = not handled.
+// Args: vrArgName - (R) Argument's name to search by.
+// vbMandatory - (R) True = Yes must be present, false = optional argument.
+// vbHandleByCmd - (R) True = Command processes *this option, false = not handled.
+// vnNumberFormatMask - (R) Mask of the number formats. (Dflt = CMICmdArgValNumber::eArgValNumberFormat_Decimal)
// Return: None.
// Throws: None.
//--
-CMICmdArgValNumber::CMICmdArgValNumber(const CMIUtilString &vrArgName, const bool vbMandatory, const bool vbHandleByCmd)
+CMICmdArgValNumber::CMICmdArgValNumber(const CMIUtilString &vrArgName, const bool vbMandatory, const bool vbHandleByCmd,
+ const MIuint vnNumberFormatMask /* = CMICmdArgValNumber::eArgValNumberFormat_Decimal*/)
: CMICmdArgValBaseTemplate(vrArgName, vbMandatory, vbHandleByCmd)
+ , m_nNumberFormatMask(vnNumberFormatMask)
, m_nNumber(0)
{
}
@@ -74,7 +66,7 @@ bool
CMICmdArgValNumber::Validate(CMICmdArgContext &vwArgContext)
{
if (vwArgContext.IsEmpty())
- return MIstatus::success;
+ return m_bMandatory ? MIstatus::failure : MIstatus::success;
if (vwArgContext.GetNumberArgsPresent() == 1)
{
@@ -128,11 +120,20 @@ CMICmdArgValNumber::Validate(CMICmdArgContext &vwArgContext)
bool
CMICmdArgValNumber::IsArgNumber(const CMIUtilString &vrTxt) const
{
+ const bool bFormatDecimal(m_nNumberFormatMask & CMICmdArgValNumber::eArgValNumberFormat_Decimal);
+ const bool bFormatHexadecimal(m_nNumberFormatMask & CMICmdArgValNumber::eArgValNumberFormat_Hexadecimal);
+
// Look for --someLongOption
if (std::string::npos != vrTxt.find("--"))
return false;
- return vrTxt.IsNumber();
+ if (bFormatDecimal && vrTxt.IsNumber())
+ return true;
+
+ if (bFormatHexadecimal && vrTxt.IsHexadecimalNumber())
+ return true;
+
+ return false;
}
//++ ------------------------------------------------------------------------------------
@@ -150,7 +151,7 @@ CMICmdArgValNumber::ExtractNumber(const CMIUtilString &vrTxt)
bool bOk = vrTxt.ExtractNumber(nNumber);
if (bOk)
{
- m_nNumber = static_cast<MIint>(nNumber);
+ m_nNumber = static_cast<MIint64>(nNumber);
}
return bOk;
OpenPOWER on IntegriCloud