OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef BASE_PICKLE_H__ | 5 #ifndef BASE_PICKLE_H__ |
6 #define BASE_PICKLE_H__ | 6 #define BASE_PICKLE_H__ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "base/string16.h" |
12 #include "testing/gtest/include/gtest/gtest_prod.h" | 13 #include "testing/gtest/include/gtest/gtest_prod.h" |
13 | 14 |
14 // This class provides facilities for basic binary value packing and unpacking. | 15 // This class provides facilities for basic binary value packing and unpacking. |
15 // | 16 // |
16 // The Pickle class supports appending primitive values (ints, strings, etc.) | 17 // The Pickle class supports appending primitive values (ints, strings, etc.) |
17 // to a pickle instance. The Pickle instance grows its internal memory buffer | 18 // to a pickle instance. The Pickle instance grows its internal memory buffer |
18 // dynamically to hold the sequence of primitive values. The internal memory | 19 // dynamically to hold the sequence of primitive values. The internal memory |
19 // buffer is exposed as the "data" of the Pickle. This "data" can be passed | 20 // buffer is exposed as the "data" of the Pickle. This "data" can be passed |
20 // to a Pickle object to initialize it for reading. | 21 // to a Pickle object to initialize it for reading. |
21 // | 22 // |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 // be extracted. | 66 // be extracted. |
66 bool ReadBool(void** iter, bool* result) const; | 67 bool ReadBool(void** iter, bool* result) const; |
67 bool ReadInt(void** iter, int* result) const; | 68 bool ReadInt(void** iter, int* result) const; |
68 bool ReadLong(void** iter, long* result) const; | 69 bool ReadLong(void** iter, long* result) const; |
69 bool ReadSize(void** iter, size_t* result) const; | 70 bool ReadSize(void** iter, size_t* result) const; |
70 bool ReadUInt32(void** iter, uint32* result) const; | 71 bool ReadUInt32(void** iter, uint32* result) const; |
71 bool ReadInt64(void** iter, int64* result) const; | 72 bool ReadInt64(void** iter, int64* result) const; |
72 bool ReadIntPtr(void** iter, intptr_t* result) const; | 73 bool ReadIntPtr(void** iter, intptr_t* result) const; |
73 bool ReadString(void** iter, std::string* result) const; | 74 bool ReadString(void** iter, std::string* result) const; |
74 bool ReadWString(void** iter, std::wstring* result) const; | 75 bool ReadWString(void** iter, std::wstring* result) const; |
| 76 bool ReadString16(void** iter, string16* result) const; |
75 bool ReadData(void** iter, const char** data, int* length) const; | 77 bool ReadData(void** iter, const char** data, int* length) const; |
76 bool ReadBytes(void** iter, const char** data, int length) const; | 78 bool ReadBytes(void** iter, const char** data, int length) const; |
77 | 79 |
78 // Safer version of ReadInt() checks for the result not being negative. | 80 // Safer version of ReadInt() checks for the result not being negative. |
79 // Use it for reading the object sizes. | 81 // Use it for reading the object sizes. |
80 bool ReadLength(void** iter, int* result) const; | 82 bool ReadLength(void** iter, int* result) const; |
81 | 83 |
82 // Methods for adding to the payload of the Pickle. These values are | 84 // Methods for adding to the payload of the Pickle. These values are |
83 // appended to the end of the Pickle's payload. When reading values from a | 85 // appended to the end of the Pickle's payload. When reading values from a |
84 // Pickle, it is important to read them in the order in which they were added | 86 // Pickle, it is important to read them in the order in which they were added |
(...skipping 14 matching lines...) Expand all Loading... |
99 return WriteBytes(&value, sizeof(value)); | 101 return WriteBytes(&value, sizeof(value)); |
100 } | 102 } |
101 bool WriteInt64(int64 value) { | 103 bool WriteInt64(int64 value) { |
102 return WriteBytes(&value, sizeof(value)); | 104 return WriteBytes(&value, sizeof(value)); |
103 } | 105 } |
104 bool WriteIntPtr(intptr_t value) { | 106 bool WriteIntPtr(intptr_t value) { |
105 return WriteBytes(&value, sizeof(value)); | 107 return WriteBytes(&value, sizeof(value)); |
106 } | 108 } |
107 bool WriteString(const std::string& value); | 109 bool WriteString(const std::string& value); |
108 bool WriteWString(const std::wstring& value); | 110 bool WriteWString(const std::wstring& value); |
| 111 bool WriteString16(const string16& value); |
109 bool WriteData(const char* data, int length); | 112 bool WriteData(const char* data, int length); |
110 bool WriteBytes(const void* data, int data_len); | 113 bool WriteBytes(const void* data, int data_len); |
111 | 114 |
112 // Same as WriteData, but allows the caller to write directly into the | 115 // Same as WriteData, but allows the caller to write directly into the |
113 // Pickle. This saves a copy in cases where the data is not already | 116 // Pickle. This saves a copy in cases where the data is not already |
114 // available in a buffer. The caller should take care to not write more | 117 // available in a buffer. The caller should take care to not write more |
115 // than the length it declares it will. Use ReadData to get the data. | 118 // than the length it declares it will. Use ReadData to get the data. |
116 // Returns NULL on failure. | 119 // Returns NULL on failure. |
117 // | 120 // |
118 // The returned pointer will only be valid until the next write operation | 121 // The returned pointer will only be valid until the next write operation |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 size_t capacity_; | 231 size_t capacity_; |
229 size_t variable_buffer_offset_; // IF non-zero, then offset to a buffer. | 232 size_t variable_buffer_offset_; // IF non-zero, then offset to a buffer. |
230 | 233 |
231 FRIEND_TEST(PickleTest, Resize); | 234 FRIEND_TEST(PickleTest, Resize); |
232 FRIEND_TEST(PickleTest, FindNext); | 235 FRIEND_TEST(PickleTest, FindNext); |
233 FRIEND_TEST(PickleTest, IteratorHasRoom); | 236 FRIEND_TEST(PickleTest, IteratorHasRoom); |
234 }; | 237 }; |
235 | 238 |
236 #endif // BASE_PICKLE_H__ | 239 #endif // BASE_PICKLE_H__ |
237 | 240 |
OLD | NEW |