diff options
Diffstat (limited to 'tools/lldb-mi/MICmdArgValNumber.cpp')
-rw-r--r-- | tools/lldb-mi/MICmdArgValNumber.cpp | 41 |
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; |