Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(531)

Side by Side Diff: third_party/brotli/enc/streams.cc

Issue 2537133002: Update brotli to v1.0.0-snapshot. (Closed)
Patch Set: Fixed typo Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/brotli/enc/streams.h ('k') | third_party/brotli/enc/transform.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /* Copyright 2009 Google Inc. All Rights Reserved.
2
3 Distributed under MIT license.
4 See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5 */
6
7 // Convience routines to make Brotli I/O classes from some memory containers and
8 // files.
9
10 #include "./streams.h"
11
12 #include <assert.h>
13 #include <stdlib.h>
14 #include <string.h>
15
16 namespace brotli {
17
18 BrotliMemOut::BrotliMemOut(void* buf, size_t len)
19 : buf_(buf),
20 len_(len),
21 pos_(0) {}
22
23 void BrotliMemOut::Reset(void* buf, size_t len) {
24 buf_ = buf;
25 len_ = len;
26 pos_ = 0;
27 }
28
29 // Brotli output routine: copy n bytes to the output buffer.
30 bool BrotliMemOut::Write(const void *buf, size_t n) {
31 if (n + pos_ > len_)
32 return false;
33 char* p = reinterpret_cast<char*>(buf_) + pos_;
34 memcpy(p, buf, n);
35 pos_ += n;
36 return true;
37 }
38
39 BrotliStringOut::BrotliStringOut(std::string* buf, size_t max_size)
40 : buf_(buf),
41 max_size_(max_size) {
42 assert(buf->empty());
43 }
44
45 void BrotliStringOut::Reset(std::string* buf, size_t max_size) {
46 buf_ = buf;
47 max_size_ = max_size;
48 }
49
50 // Brotli output routine: add n bytes to a string.
51 bool BrotliStringOut::Write(const void *buf, size_t n) {
52 if (buf_->size() + n > max_size_)
53 return false;
54 buf_->append(static_cast<const char*>(buf), n);
55 return true;
56 }
57
58 BrotliMemIn::BrotliMemIn(const void* buf, size_t len)
59 : buf_(buf),
60 len_(len),
61 pos_(0) {}
62
63 void BrotliMemIn::Reset(const void* buf, size_t len) {
64 buf_ = buf;
65 len_ = len;
66 pos_ = 0;
67 }
68
69 // Brotli input routine: read the next chunk of memory.
70 const void* BrotliMemIn::Read(size_t n, size_t* output) {
71 if (pos_ == len_) {
72 return NULL;
73 }
74 if (n > len_ - pos_)
75 n = len_ - pos_;
76 const char* p = reinterpret_cast<const char*>(buf_) + pos_;
77 pos_ += n;
78 *output = n;
79 return p;
80 }
81
82 BrotliFileIn::BrotliFileIn(FILE* f, size_t max_read_size)
83 : f_(f),
84 buf_(new char[max_read_size]),
85 buf_size_(max_read_size) { }
86
87 BrotliFileIn::~BrotliFileIn(void) {
88 delete[] buf_;
89 }
90
91 const void* BrotliFileIn::Read(size_t n, size_t* bytes_read) {
92 if (n > buf_size_) {
93 n = buf_size_;
94 } else if (n == 0) {
95 return feof(f_) ? NULL : buf_;
96 }
97 *bytes_read = fread(buf_, 1, n, f_);
98 if (*bytes_read == 0) {
99 return NULL;
100 } else {
101 return buf_;
102 }
103 }
104
105 BrotliFileOut::BrotliFileOut(FILE* f) : f_(f) {}
106
107 bool BrotliFileOut::Write(const void* buf, size_t n) {
108 if (fwrite(buf, n, 1, f_) != 1) {
109 return false;
110 }
111 return true;
112 }
113
114 } // namespace brotli
OLDNEW
« no previous file with comments | « third_party/brotli/enc/streams.h ('k') | third_party/brotli/enc/transform.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698