summaryrefslogtreecommitdiffstats
path: root/hostTools/lzma/decompress/WindowOut.h
diff options
context:
space:
mode:
Diffstat (limited to 'hostTools/lzma/decompress/WindowOut.h')
-rw-r--r--hostTools/lzma/decompress/WindowOut.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/hostTools/lzma/decompress/WindowOut.h b/hostTools/lzma/decompress/WindowOut.h
new file mode 100644
index 0000000..d774cac
--- /dev/null
+++ b/hostTools/lzma/decompress/WindowOut.h
@@ -0,0 +1,47 @@
+#ifndef __STREAM_WINDOWOUT_H
+#define __STREAM_WINDOWOUT_H
+
+#include "IInOutStreams.h"
+
+typedef struct WindowOut
+{
+ BYTE *Buffer;
+ UINT32 Pos;
+} WindowOut;
+
+extern WindowOut out_window;
+
+#define OutWindowInit() \
+ { \
+ out_window.Buffer = (BYTE *) out_stream.data; \
+ out_window.Pos = 0; \
+ }
+
+#define OutWindowFlush() \
+ { \
+ OutStreamSizeSet( out_window.Pos ); \
+ }
+
+// BRCM modification
+INLINE void OutWindowCopyBackBlock(UINT32 aDistance, UINT32 aLen)
+ {
+ BYTE *p = out_window.Buffer + out_window.Pos;
+ UINT32 i;
+ aDistance++;
+ for(i = 0; i < aLen; i++)
+ p[i] = p[i - aDistance];
+ out_window.Pos += aLen;
+ }
+
+
+#define OutWindowPutOneByte(aByte) \
+ { \
+ out_window.Buffer[out_window.Pos++] = aByte; \
+ }
+
+#define OutWindowGetOneByte(anIndex) \
+ (out_window.Buffer[out_window.Pos + anIndex])
+
+
+
+#endif