Index: xz/src/liblzma/simple/simple_private.h |
=================================================================== |
--- xz/src/liblzma/simple/simple_private.h (revision 0) |
+++ xz/src/liblzma/simple/simple_private.h (revision 0) |
@@ -0,0 +1,76 @@ |
+/////////////////////////////////////////////////////////////////////////////// |
+// |
+/// \file simple_private.h |
+/// \brief Private definitions for so called simple filters |
+// |
+// Author: Lasse Collin |
+// |
+// This file has been put into the public domain. |
+// You can do whatever you want with this file. |
+// |
+/////////////////////////////////////////////////////////////////////////////// |
+ |
+#ifndef LZMA_SIMPLE_PRIVATE_H |
+#define LZMA_SIMPLE_PRIVATE_H |
+ |
+#include "simple_coder.h" |
+ |
+ |
+typedef struct lzma_simple_s lzma_simple; |
+ |
+struct lzma_coder_s { |
+ /// Next filter in the chain |
+ lzma_next_coder next; |
+ |
+ /// True if the next coder in the chain has returned LZMA_STREAM_END |
+ /// or if we have processed uncompressed_size bytes. |
+ bool end_was_reached; |
+ |
+ /// True if filter() should encode the data; false to decode. |
+ /// Currently all simple filters use the same function for encoding |
+ /// and decoding, because the difference between encoders and decoders |
+ /// is very small. |
+ bool is_encoder; |
+ |
+ /// Pointer to filter-specific function, which does |
+ /// the actual filtering. |
+ size_t (*filter)(lzma_simple *simple, uint32_t now_pos, |
+ bool is_encoder, uint8_t *buffer, size_t size); |
+ |
+ /// Pointer to filter-specific data, or NULL if filter doesn't need |
+ /// any extra data. |
+ lzma_simple *simple; |
+ |
+ /// The lowest 32 bits of the current position in the data. Most |
+ /// filters need this to do conversions between absolute and relative |
+ /// addresses. |
+ uint32_t now_pos; |
+ |
+ /// Size of the memory allocated for the buffer. |
+ size_t allocated; |
+ |
+ /// Flushing position in the temporary buffer. buffer[pos] is the |
+ /// next byte to be copied to out[]. |
+ size_t pos; |
+ |
+ /// buffer[filtered] is the first unfiltered byte. When pos is smaller |
+ /// than filtered, there is unflushed filtered data in the buffer. |
+ size_t filtered; |
+ |
+ /// Total number of bytes (both filtered and unfiltered) currently |
+ /// in the temporary buffer. |
+ size_t size; |
+ |
+ /// Temporary buffer |
+ uint8_t buffer[]; |
+}; |
+ |
+ |
+extern lzma_ret lzma_simple_coder_init(lzma_next_coder *next, |
+ lzma_allocator *allocator, const lzma_filter_info *filters, |
+ size_t (*filter)(lzma_simple *simple, uint32_t now_pos, |
+ bool is_encoder, uint8_t *buffer, size_t size), |
+ size_t simple_size, size_t unfiltered_max, |
+ uint32_t alignment, bool is_encoder); |
+ |
+#endif |
Property changes on: xz/src/liblzma/simple/simple_private.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |