diff options
| author | Ilia K <ki.stfu@gmail.com> | 2015-02-13 18:42:25 +0000 |
|---|---|---|
| committer | Ilia K <ki.stfu@gmail.com> | 2015-02-13 18:42:25 +0000 |
| commit | b4a110f051b623f20808c57aa7b07400768c51b3 (patch) | |
| tree | c97804f9ab4a6178f924882af9cdf6bf3699b06a /lldb/tools/lldb-mi/MICmdArgValNumber.cpp | |
| parent | a4897fe79c9db88d9eaf0bf787a64c36ff2a609e (diff) | |
| download | bcm5719-llvm-b4a110f051b623f20808c57aa7b07400768c51b3.tar.gz bcm5719-llvm-b4a110f051b623f20808c57aa7b07400768c51b3.zip | |
Fix -data-read-memory-bytes command (MI)
Summary:
* Add IsHexadecimalNumber method to CMIUtilString (MI)
* Add number format (dec,hex,auto) to CMICmdArgValNumber (MI)
* Fix -data-read-memory-bytes to pass address in hex format (MI)
* Fix output begin/end/offset fields format in -data-read-memory-bytes
* Fix CMICmdArgValNumber::ExtractNumber to extract 64bit value
* + tests
All tests passed on OS X
Reviewers: abidh, zturner, clayborg
Reviewed By: clayborg
Subscribers: lldb-commits, zturner, clayborg, abidh
Differential Revision: http://reviews.llvm.org/D7610
llvm-svn: 229132
Diffstat (limited to 'lldb/tools/lldb-mi/MICmdArgValNumber.cpp')
| -rw-r--r-- | lldb/tools/lldb-mi/MICmdArgValNumber.cpp | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/lldb/tools/lldb-mi/MICmdArgValNumber.cpp b/lldb/tools/lldb-mi/MICmdArgValNumber.cpp index 8b1878df028..bfe4d6d564a 100644 --- a/lldb/tools/lldb-mi/MICmdArgValNumber.cpp +++ b/lldb/tools/lldb-mi/MICmdArgValNumber.cpp @@ -31,21 +31,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) { } @@ -128,11 +132,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 +163,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; |

