Index: third_party/lzma_sdk/C/Delta.c |
=================================================================== |
--- third_party/lzma_sdk/C/Delta.c (revision 0) |
+++ third_party/lzma_sdk/C/Delta.c (revision 0) |
@@ -0,0 +1,62 @@ |
+/* Delta.c -- Delta converter |
+2009-05-26 : Igor Pavlov : Public domain */ |
+ |
+#include "Delta.h" |
+ |
+void Delta_Init(Byte *state) |
+{ |
+ unsigned i; |
+ for (i = 0; i < DELTA_STATE_SIZE; i++) |
+ state[i] = 0; |
+} |
+ |
+static void MyMemCpy(Byte *dest, const Byte *src, unsigned size) |
+{ |
+ unsigned i; |
+ for (i = 0; i < size; i++) |
+ dest[i] = src[i]; |
+} |
+ |
+void Delta_Encode(Byte *state, unsigned delta, Byte *data, SizeT size) |
+{ |
+ Byte buf[DELTA_STATE_SIZE]; |
+ unsigned j = 0; |
+ MyMemCpy(buf, state, delta); |
+ { |
+ SizeT i; |
+ for (i = 0; i < size;) |
+ { |
+ for (j = 0; j < delta && i < size; i++, j++) |
+ { |
+ Byte b = data[i]; |
+ data[i] = (Byte)(b - buf[j]); |
+ buf[j] = b; |
+ } |
+ } |
+ } |
+ if (j == delta) |
+ j = 0; |
+ MyMemCpy(state, buf + j, delta - j); |
+ MyMemCpy(state + delta - j, buf, j); |
+} |
+ |
+void Delta_Decode(Byte *state, unsigned delta, Byte *data, SizeT size) |
+{ |
+ Byte buf[DELTA_STATE_SIZE]; |
+ unsigned j = 0; |
+ MyMemCpy(buf, state, delta); |
+ { |
+ SizeT i; |
+ for (i = 0; i < size;) |
+ { |
+ for (j = 0; j < delta && i < size; i++, j++) |
+ { |
+ buf[j] = data[i] = (Byte)(buf[j] + data[i]); |
+ } |
+ } |
+ } |
+ if (j == delta) |
+ j = 0; |
+ MyMemCpy(state, buf + j, delta - j); |
+ MyMemCpy(state + delta - j, buf, j); |
+} |
Property changes on: third_party\lzma_sdk\C\Delta.c |
___________________________________________________________________ |
Added: svn:executable |
+ * |
Added: svn:eol-style |
+ LF |