diff options
author | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-28 04:21:01 +0000 |
---|---|---|
committer | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-28 04:21:01 +0000 |
commit | b7a5d9953f0b44ecbfb25687ed35e52e7f65bff7 (patch) | |
tree | c5bdb4ac4708da73e4827789b5a622a03ddc5bd9 /base/pickle.cc | |
parent | 1dc1dffcf9ba7823511684da330a6ce0a8eb40ed (diff) | |
download | chromium_src-b7a5d9953f0b44ecbfb25687ed35e52e7f65bff7.zip chromium_src-b7a5d9953f0b44ecbfb25687ed35e52e7f65bff7.tar.gz chromium_src-b7a5d9953f0b44ecbfb25687ed35e52e7f65bff7.tar.bz2 |
Add Pickle::Read/WriteUint64.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/297011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30320 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/pickle.cc')
-rw-r--r-- | base/pickle.cc | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/base/pickle.cc b/base/pickle.cc index 0be89c2..be76cf5 100644 --- a/base/pickle.cc +++ b/base/pickle.cc @@ -6,8 +6,8 @@ #include <stdlib.h> +#include <algorithm> // for max() #include <limits> -#include <string> //------------------------------------------------------------------------------ @@ -181,6 +181,20 @@ bool Pickle::ReadInt64(void** iter, int64* result) const { return true; } +bool Pickle::ReadUInt64(void** iter, uint64* result) const { + DCHECK(iter); + if (!*iter) + *iter = const_cast<char*>(payload()); + + if (!IteratorHasRoomFor(*iter, sizeof(*result))) + return false; + + memcpy(result, *iter, sizeof(*result)); + + UpdateIter(iter, sizeof(*result)); + return true; +} + bool Pickle::ReadIntPtr(void** iter, intptr_t* result) const { DCHECK(iter); if (!*iter) @@ -355,7 +369,7 @@ char* Pickle::BeginWriteData(int length) { } void Pickle::TrimWriteData(int new_length) { - DCHECK(variable_buffer_offset_ != 0); + DCHECK_NE(variable_buffer_offset_, 0); // Fetch the the variable buffer size int* cur_length = reinterpret_cast<int*>( |