Index: debugger/rsp/rsp_blob_utils.h |
=================================================================== |
--- debugger/rsp/rsp_blob_utils.h (revision 956) |
+++ debugger/rsp/rsp_blob_utils.h (working copy) |
@@ -4,6 +4,7 @@ |
#ifndef DEBUGGER_RSP_RSP_BLOB_UTILS_H_ |
#define DEBUGGER_RSP_RSP_BLOB_UTILS_H_ |
+#include <assert.h> |
#include <deque> |
#include "debugger/base/debug_blob.h" |
@@ -42,6 +43,31 @@ |
return (i > 0); |
} |
+ /// Appends hex representation of |value| to the |blob|, |
+ /// with no leading zeroes. Example: |
+ /// 0x123 -> {'1', '2', '3'} |
+ /// @param[in] value integer to be appended |
+ /// @param[out] blob pointer to the destination blob. |
+ /// @return reference to |blob|. |
+ template <class T> |
+ debug::Blob& PushIntToBack(T value, debug::Blob* blob) { |
+ assert(NULL != blob); |
+ debug::Blob tmp; |
+ for (size_t i = 0; i < sizeof(value); i++) { |
+ uint8_t x = (value & 0xFF); |
+ tmp.PushFront(debug::Blob::GetHexDigit(x, 0)); |
+ tmp.PushFront(debug::Blob::GetHexDigit(x, 1)); |
+ if (sizeof(value) > 1) |
+ value = value >> 8; |
+ } |
+ tmp.PopMatchingBytesFromFront(debug::Blob().FromString("0")); |
+ if (0 == tmp.size()) |
+ blob->PushBack('0'); |
+ else |
+ blob->Append(tmp); |
+ return *blob; |
+ } |
+ |
/// removes space characters from front and from back of the blob. |
/// @param blob blob to perform operation on |
void RemoveSpacesFromBothEnds(debug::Blob* blob); |