OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "net/base/bigendian.h" | |
6 | |
7 namespace net { | |
8 | |
9 BigEndianReader::BigEndianReader(const void* buf, size_t len) | |
10 : ptr_(reinterpret_cast<const char*>(buf)), end_(ptr_ + len) {} | |
11 | |
12 bool BigEndianReader::Skip(size_t len) { | |
13 if (ptr_ + len > end_) | |
14 return false; | |
15 ptr_+= len; | |
mmenke
2011/12/02 00:53:55
nit: There should be a space between _ and + in a
szym
2011/12/05 23:06:28
Done.
| |
16 return true; | |
17 } | |
18 | |
19 bool BigEndianReader::Copy(void* out, size_t len) { | |
20 if (ptr_ + len > end_) | |
21 return false; | |
22 memcpy(out, ptr_, len); | |
23 ptr_+= len; | |
24 return true; | |
25 } | |
26 | |
27 bool BigEndianReader::Piece(base::StringPiece* out, size_t len) { | |
28 if (ptr_ + len > end_) | |
29 return false; | |
30 *out = base::StringPiece(ptr_, len); | |
31 ptr_+= len; | |
32 return true; | |
33 } | |
34 | |
35 template<typename T> | |
36 bool BigEndianReader::Read(T* v) { | |
37 if (ptr_ + sizeof(T) > end_) | |
38 return false; | |
39 ReadBigEndian<T>(ptr_, v); | |
40 ptr_+= sizeof(T); | |
41 return true; | |
42 } | |
43 | |
44 bool BigEndianReader::U8(uint8* v) { | |
45 return Read(v); | |
46 } | |
47 | |
48 bool BigEndianReader::U16(uint16* v) { | |
49 return Read(v); | |
50 } | |
51 | |
52 bool BigEndianReader::U32(uint32* v) { | |
53 return Read(v); | |
54 } | |
55 | |
56 BigEndianWriter::BigEndianWriter(void* buf, size_t len) | |
57 : ptr_(reinterpret_cast<char*>(buf)), end_(ptr_ + len) {} | |
58 | |
59 bool BigEndianWriter::Skip(size_t len) { | |
60 if (ptr_ + len > end_) | |
61 return false; | |
62 ptr_+= len; | |
63 return true; | |
64 } | |
65 | |
66 bool BigEndianWriter::Copy(const void* buf, size_t len) { | |
67 if (ptr_ + len > end_) | |
68 return false; | |
69 memcpy(ptr_, buf, len); | |
70 ptr_+= len; | |
71 return true; | |
72 } | |
73 | |
74 template<typename T> | |
75 bool BigEndianWriter::Write(T v) { | |
76 if (ptr_ + sizeof(T) > end_) | |
77 return false; | |
78 WriteBigEndian<T>(ptr_, v); | |
79 ptr_+= sizeof(T); | |
80 return true; | |
81 } | |
82 | |
83 bool BigEndianWriter::U8(uint8 v) { | |
84 return Write(v); | |
85 } | |
86 | |
87 bool BigEndianWriter::U16(uint16 v) { | |
88 return Write(v); | |
89 } | |
90 | |
91 bool BigEndianWriter::U32(uint32 v) { | |
92 return Write(v); | |
93 } | |
94 | |
95 } // namespace net | |
96 | |
OLD | NEW |