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

Unified Diff: third_party/brotli/enc/streams.h

Issue 1956893002: Added brotli enc/ and tools/ directories. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated to most recent build tools Created 4 years, 7 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/brotli/enc/static_dict_lut2.h ('k') | third_party/brotli/enc/streams.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/brotli/enc/streams.h
diff --git a/third_party/brotli/enc/streams.h b/third_party/brotli/enc/streams.h
new file mode 100644
index 0000000000000000000000000000000000000000..7fb28092ea04502e7524d7d4c2c89ea0d0a37f0d
--- /dev/null
+++ b/third_party/brotli/enc/streams.h
@@ -0,0 +1,121 @@
+/* Copyright 2009 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+// Input and output classes for streaming brotli compression.
+
+#ifndef BROTLI_ENC_STREAMS_H_
+#define BROTLI_ENC_STREAMS_H_
+
+#include <stdio.h>
+#include <string>
+#include "./port.h"
+#include "./types.h"
+
+namespace brotli {
+
+// Input interface for the compression routines.
+class BrotliIn {
+ public:
+ virtual ~BrotliIn(void) {}
+
+ // Return a pointer to the next block of input of at most n bytes.
+ // Return the actual length in *nread.
+ // At end of data, return NULL. Don't return NULL if there is more data
+ // to read, even if called with n == 0.
+ // Read will only be called if some of its bytes are needed.
+ virtual const void* Read(size_t n, size_t* nread) = 0;
+};
+
+// Output interface for the compression routines.
+class BrotliOut {
+ public:
+ virtual ~BrotliOut(void) {}
+
+ // Write n bytes of data from buf.
+ // Return true if all written, false otherwise.
+ virtual bool Write(const void *buf, size_t n) = 0;
+};
+
+// Adapter class to make BrotliIn objects from raw memory.
+class BrotliMemIn : public BrotliIn {
+ public:
+ BrotliMemIn(const void* buf, size_t len);
+
+ void Reset(const void* buf, size_t len);
+
+ // returns the amount of data consumed
+ size_t position(void) const { return pos_; }
+
+ const void* Read(size_t n, size_t* OUTPUT);
+
+ private:
+ const void* buf_; // start of input buffer
+ size_t len_; // length of input
+ size_t pos_; // current read position within input
+};
+
+// Adapter class to make BrotliOut objects from raw memory.
+class BrotliMemOut : public BrotliOut {
+ public:
+ BrotliMemOut(void* buf, size_t len);
+
+ void Reset(void* buf, size_t len);
+
+ // returns the amount of data written
+ size_t position(void) const { return pos_; }
+
+ bool Write(const void* buf, size_t n);
+
+ private:
+ void* buf_; // start of output buffer
+ size_t len_; // length of output
+ size_t pos_; // current write position within output
+};
+
+// Adapter class to make BrotliOut objects from a string.
+class BrotliStringOut : public BrotliOut {
+ public:
+ // Create a writer that appends its data to buf.
+ // buf->size() will grow to at most max_size
+ // buf is expected to be empty when constructing BrotliStringOut.
+ BrotliStringOut(std::string* buf, size_t max_size);
+
+ void Reset(std::string* buf, size_t max_len);
+
+ bool Write(const void* buf, size_t n);
+
+ private:
+ std::string* buf_; // start of output buffer
+ size_t max_size_; // max length of output
+};
+
+// Adapter class to make BrotliIn object from a file.
+class BrotliFileIn : public BrotliIn {
+ public:
+ BrotliFileIn(FILE* f, size_t max_read_size);
+ ~BrotliFileIn(void);
+
+ const void* Read(size_t n, size_t* bytes_read);
+
+ private:
+ FILE* f_;
+ char* buf_;
+ size_t buf_size_;
+};
+
+// Adapter class to make BrotliOut object from a file.
+class BrotliFileOut : public BrotliOut {
+ public:
+ explicit BrotliFileOut(FILE* f);
+
+ bool Write(const void* buf, size_t n);
+ private:
+ FILE* f_;
+};
+
+} // namespace brotli
+
+#endif // BROTLI_ENC_STREAMS_H_
« no previous file with comments | « third_party/brotli/enc/static_dict_lut2.h ('k') | third_party/brotli/enc/streams.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698