diff options
author | Zachary Turner <zturner@google.com> | 2016-08-30 18:12:11 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2016-08-30 18:12:11 +0000 |
commit | d08f09c1130acc528cf5f417bcf9f9de4dd4b27d (patch) | |
tree | cbf9510969c7484ad4296d217397b361ca1d63f4 /lldb/source/Utility/StringExtractor.cpp | |
parent | b7668d516443231cba62e29786463587b61f90bb (diff) | |
download | llvm-d08f09c1130acc528cf5f417bcf9f9de4dd4b27d.zip llvm-d08f09c1130acc528cf5f417bcf9f9de4dd4b27d.tar.gz llvm-d08f09c1130acc528cf5f417bcf9f9de4dd4b27d.tar.bz2 |
Convert some StringExtractor functions to accept MutableArrayRefs.
MutableArrayRef<T> is essentially a safer version of passing around
(T*, length) pairs and provides some convenient functions for working
with the data without having to manually manipulate indices.
This is a minor NFC.
llvm-svn: 280123
Diffstat (limited to 'lldb/source/Utility/StringExtractor.cpp')
-rw-r--r-- | lldb/source/Utility/StringExtractor.cpp | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/lldb/source/Utility/StringExtractor.cpp b/lldb/source/Utility/StringExtractor.cpp index 744e7d4..f62c836 100644 --- a/lldb/source/Utility/StringExtractor.cpp +++ b/lldb/source/Utility/StringExtractor.cpp @@ -357,21 +357,20 @@ StringExtractor::GetHexMaxU64 (bool little_endian, uint64_t fail_value) } size_t -StringExtractor::GetHexBytes (void *dst_void, size_t dst_len, uint8_t fail_fill_value) +StringExtractor::GetHexBytes (llvm::MutableArrayRef<uint8_t> dest, uint8_t fail_fill_value) { - uint8_t *dst = (uint8_t*)dst_void; size_t bytes_extracted = 0; - while (bytes_extracted < dst_len && GetBytesLeft ()) + while (!dest.empty() && GetBytesLeft() > 0) { - dst[bytes_extracted] = GetHexU8 (fail_fill_value); - if (IsGood()) - ++bytes_extracted; - else + dest[0] = GetHexU8 (fail_fill_value); + if (!IsGood()) break; + ++bytes_extracted; + dest = dest.drop_front(); } - for (size_t i = bytes_extracted; i < dst_len; ++i) - dst[i] = fail_fill_value; + if (!dest.empty()) + ::memset(dest.data(), fail_fill_value, dest.size()); return bytes_extracted; } @@ -383,18 +382,17 @@ StringExtractor::GetHexBytes (void *dst_void, size_t dst_len, uint8_t fail_fill_ // Returns the number of bytes successfully decoded //---------------------------------------------------------------------- size_t -StringExtractor::GetHexBytesAvail (void *dst_void, size_t dst_len) +StringExtractor::GetHexBytesAvail (llvm::MutableArrayRef<uint8_t> dest) { - uint8_t *dst = (uint8_t*)dst_void; size_t bytes_extracted = 0; - while (bytes_extracted < dst_len) + while (!dest.empty()) { int decode = DecodeHexU8(); if (decode == -1) - { break; - } - dst[bytes_extracted++] = (uint8_t)decode; + dest[0] = (uint8_t)decode; + dest = dest.drop_front(); + ++bytes_extracted; } return bytes_extracted; } |