diff options
Diffstat (limited to 'source/Utility/StringExtractor.cpp')
-rw-r--r-- | source/Utility/StringExtractor.cpp | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/source/Utility/StringExtractor.cpp b/source/Utility/StringExtractor.cpp index 9d2315708821..8747853213cb 100644 --- a/source/Utility/StringExtractor.cpp +++ b/source/Utility/StringExtractor.cpp @@ -63,16 +63,6 @@ xdigit_to_sint (char ch) return ch - '0'; } -static inline unsigned int -xdigit_to_uint (uint8_t ch) -{ - if (ch >= 'a' && ch <= 'f') - return 10u + ch - 'a'; - if (ch >= 'A' && ch <= 'F') - return 10u + ch - 'A'; - return ch - '0'; -} - //---------------------------------------------------------------------- // StringExtractor constructor //---------------------------------------------------------------------- @@ -165,7 +155,7 @@ StringExtractor::GetU32 (uint32_t fail_value, int base) { if (m_index < m_packet.size()) { - char *end = NULL; + char *end = nullptr; const char *start = m_packet.c_str(); const char *cstr = start + m_index; uint32_t result = ::strtoul (cstr, &end, base); @@ -184,7 +174,7 @@ StringExtractor::GetS32 (int32_t fail_value, int base) { if (m_index < m_packet.size()) { - char *end = NULL; + char *end = nullptr; const char *start = m_packet.c_str(); const char *cstr = start + m_index; int32_t result = ::strtol (cstr, &end, base); @@ -204,7 +194,7 @@ StringExtractor::GetU64 (uint64_t fail_value, int base) { if (m_index < m_packet.size()) { - char *end = NULL; + char *end = nullptr; const char *start = m_packet.c_str(); const char *cstr = start + m_index; uint64_t result = ::strtoull (cstr, &end, base); @@ -223,7 +213,7 @@ StringExtractor::GetS64 (int64_t fail_value, int base) { if (m_index < m_packet.size()) { - char *end = NULL; + char *end = nullptr; const char *start = m_packet.c_str(); const char *cstr = start + m_index; int64_t result = ::strtoll (cstr, &end, base); @@ -429,6 +419,18 @@ StringExtractor::GetHexByteString (std::string &str) } size_t +StringExtractor::GetHexByteStringFixedLength (std::string &str, uint32_t nibble_length) +{ + str.clear(); + + uint32_t nibble_count = 0; + for (const char *pch = Peek(); (nibble_count < nibble_length) && (pch != nullptr); str.append(1, GetHexU8(0, false)), pch = Peek (), nibble_count += 2) + {} + + return str.size(); +} + +size_t StringExtractor::GetHexByteStringTerminatedBy (std::string &str, char terminator) { @@ -438,6 +440,7 @@ StringExtractor::GetHexByteStringTerminatedBy (std::string &str, str.append(1, ch); if (Peek() && *Peek() == terminator) return str.size(); + str.clear(); return str.size(); } |