Basic gzip/gunzip in memory buffer examples using zlib code.
There are small changes needed to the zconf.h file in the zlib distribution (I used 1.2.7). The zlib license applies to the zlib code - I have only imported a subset of the source.
The MBED has limited memory, so we need the following (near the top of zconf.h) to restrict memory allocation sizes:
#define MAX_MEM_LEVEL 3 #define MAX_WBITS 10
Because MAX_MEM_LEVEL and MAX_WBITS are so much lower than the default, there is a danger that the mbed cannot gunzip data compressed by a 'normal' zlib build. My use-case is to gzip on the mbed more than gunzip on the mbed so I have not given much time to this issue.
I also included this (also near the top of zconf.h) to prefix defines with Z_
#define Z_PREFIX
In zconf.h, in the zlib distribution, the includes for <fcntl.h> and <sys/types.h> need commenting out when using the online compiler. No need when using GCC4MBED.
I also looked at miniz. I chose zlib because I needed the gzip headers and miniz does not implement them.
The sample main.cpp reads source data, compresses it, decompresses it, and finally compares the input data with the output data to confirm they are the same.
unsigned char input_data[2048];
unsigned long input_data_length = 0;
FILE *ifp = fopen("/local/src.txt", "r");
if (ifp) {
int br = fread(input_data, 1, sizeof(input_data), ifp);
fclose(ifp);
input_data_length = br;
}
printf("%s:%d: input_data_length:%lu%s", __FILE__, __LINE__, input_data_length, newline);
unsigned char gzip_data[2048];
unsigned long gzip_data_length = 0;
if (input_data_length > 0) {
gzip_data_length = sizeof(gzip_data);
int rv = gzip(gzip_data, &gzip_data_length, input_data, input_data_length);
if (Z_OK == rv) {
FILE *ofp = fopen("/local/dst.gz", "w");
if (ofp) {
int bw = fwrite(gzip_data, 1, gzip_data_length, ofp);
fclose(ofp);
}
} else {
printf("%s:%d: %d%s", __FILE__, __LINE__, rv, newline);
}
}
printf("%s:%d: gzip_data_length:%lu%s", __FILE__, __LINE__, gzip_data_length, newline);
unsigned char output_data[2048];
unsigned long output_data_length = 0;
if (gzip_data_length > 0) {
output_data_length = sizeof(output_data);
int rv = gunzip(output_data, &output_data_length, gzip_data, gzip_data_length);
if (Z_OK != rv) {
printf("%s:%d: %d%s", __FILE__, __LINE__, rv, newline);
}
}
printf("%s:%d: output_data_length:%lu%s", __FILE__, __LINE__, output_data_length, newline);
if (input_data_length > 0 and input_data_length > 0) {
bool input_matches_output = false;
if (input_data_length == output_data_length) {
input_matches_output = true;
for ( size_t i = 0 ; input_matches_output && i < input_data_length ; i++ ) {
if (input_data[i] != output_data[i]) {
input_matches_output = false;
}
}
}
printf("%s:%d: input (%lu bytes) %s output (%lu bytes)%s", __FILE__, __LINE__, input_data_length, input_matches_output?"matches":"does not match", output_data_length, newline);
} else {
printf("%s:%d: input and/or output length is 0%s", __FILE__, __LINE__, newline);
}
zlib/trees.h@0:54f5be781526, 2012-10-21 (annotated)
- Committer:
- jonathonfletcher
- Date:
- Sun Oct 21 07:46:41 2012 +0000
- Revision:
- 0:54f5be781526
initial checkin
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| jonathonfletcher | 0:54f5be781526 | 1 | /* header created automatically with -DGEN_TREES_H */ |
| jonathonfletcher | 0:54f5be781526 | 2 | |
| jonathonfletcher | 0:54f5be781526 | 3 | local const ct_data static_ltree[L_CODES+2] = { |
| jonathonfletcher | 0:54f5be781526 | 4 | {{ 12},{ 8}}, {{140},{ 8}}, {{ 76},{ 8}}, {{204},{ 8}}, {{ 44},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 5 | {{172},{ 8}}, {{108},{ 8}}, {{236},{ 8}}, {{ 28},{ 8}}, {{156},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 6 | {{ 92},{ 8}}, {{220},{ 8}}, {{ 60},{ 8}}, {{188},{ 8}}, {{124},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 7 | {{252},{ 8}}, {{ 2},{ 8}}, {{130},{ 8}}, {{ 66},{ 8}}, {{194},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 8 | {{ 34},{ 8}}, {{162},{ 8}}, {{ 98},{ 8}}, {{226},{ 8}}, {{ 18},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 9 | {{146},{ 8}}, {{ 82},{ 8}}, {{210},{ 8}}, {{ 50},{ 8}}, {{178},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 10 | {{114},{ 8}}, {{242},{ 8}}, {{ 10},{ 8}}, {{138},{ 8}}, {{ 74},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 11 | {{202},{ 8}}, {{ 42},{ 8}}, {{170},{ 8}}, {{106},{ 8}}, {{234},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 12 | {{ 26},{ 8}}, {{154},{ 8}}, {{ 90},{ 8}}, {{218},{ 8}}, {{ 58},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 13 | {{186},{ 8}}, {{122},{ 8}}, {{250},{ 8}}, {{ 6},{ 8}}, {{134},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 14 | {{ 70},{ 8}}, {{198},{ 8}}, {{ 38},{ 8}}, {{166},{ 8}}, {{102},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 15 | {{230},{ 8}}, {{ 22},{ 8}}, {{150},{ 8}}, {{ 86},{ 8}}, {{214},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 16 | {{ 54},{ 8}}, {{182},{ 8}}, {{118},{ 8}}, {{246},{ 8}}, {{ 14},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 17 | {{142},{ 8}}, {{ 78},{ 8}}, {{206},{ 8}}, {{ 46},{ 8}}, {{174},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 18 | {{110},{ 8}}, {{238},{ 8}}, {{ 30},{ 8}}, {{158},{ 8}}, {{ 94},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 19 | {{222},{ 8}}, {{ 62},{ 8}}, {{190},{ 8}}, {{126},{ 8}}, {{254},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 20 | {{ 1},{ 8}}, {{129},{ 8}}, {{ 65},{ 8}}, {{193},{ 8}}, {{ 33},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 21 | {{161},{ 8}}, {{ 97},{ 8}}, {{225},{ 8}}, {{ 17},{ 8}}, {{145},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 22 | {{ 81},{ 8}}, {{209},{ 8}}, {{ 49},{ 8}}, {{177},{ 8}}, {{113},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 23 | {{241},{ 8}}, {{ 9},{ 8}}, {{137},{ 8}}, {{ 73},{ 8}}, {{201},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 24 | {{ 41},{ 8}}, {{169},{ 8}}, {{105},{ 8}}, {{233},{ 8}}, {{ 25},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 25 | {{153},{ 8}}, {{ 89},{ 8}}, {{217},{ 8}}, {{ 57},{ 8}}, {{185},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 26 | {{121},{ 8}}, {{249},{ 8}}, {{ 5},{ 8}}, {{133},{ 8}}, {{ 69},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 27 | {{197},{ 8}}, {{ 37},{ 8}}, {{165},{ 8}}, {{101},{ 8}}, {{229},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 28 | {{ 21},{ 8}}, {{149},{ 8}}, {{ 85},{ 8}}, {{213},{ 8}}, {{ 53},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 29 | {{181},{ 8}}, {{117},{ 8}}, {{245},{ 8}}, {{ 13},{ 8}}, {{141},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 30 | {{ 77},{ 8}}, {{205},{ 8}}, {{ 45},{ 8}}, {{173},{ 8}}, {{109},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 31 | {{237},{ 8}}, {{ 29},{ 8}}, {{157},{ 8}}, {{ 93},{ 8}}, {{221},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 32 | {{ 61},{ 8}}, {{189},{ 8}}, {{125},{ 8}}, {{253},{ 8}}, {{ 19},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 33 | {{275},{ 9}}, {{147},{ 9}}, {{403},{ 9}}, {{ 83},{ 9}}, {{339},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 34 | {{211},{ 9}}, {{467},{ 9}}, {{ 51},{ 9}}, {{307},{ 9}}, {{179},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 35 | {{435},{ 9}}, {{115},{ 9}}, {{371},{ 9}}, {{243},{ 9}}, {{499},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 36 | {{ 11},{ 9}}, {{267},{ 9}}, {{139},{ 9}}, {{395},{ 9}}, {{ 75},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 37 | {{331},{ 9}}, {{203},{ 9}}, {{459},{ 9}}, {{ 43},{ 9}}, {{299},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 38 | {{171},{ 9}}, {{427},{ 9}}, {{107},{ 9}}, {{363},{ 9}}, {{235},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 39 | {{491},{ 9}}, {{ 27},{ 9}}, {{283},{ 9}}, {{155},{ 9}}, {{411},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 40 | {{ 91},{ 9}}, {{347},{ 9}}, {{219},{ 9}}, {{475},{ 9}}, {{ 59},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 41 | {{315},{ 9}}, {{187},{ 9}}, {{443},{ 9}}, {{123},{ 9}}, {{379},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 42 | {{251},{ 9}}, {{507},{ 9}}, {{ 7},{ 9}}, {{263},{ 9}}, {{135},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 43 | {{391},{ 9}}, {{ 71},{ 9}}, {{327},{ 9}}, {{199},{ 9}}, {{455},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 44 | {{ 39},{ 9}}, {{295},{ 9}}, {{167},{ 9}}, {{423},{ 9}}, {{103},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 45 | {{359},{ 9}}, {{231},{ 9}}, {{487},{ 9}}, {{ 23},{ 9}}, {{279},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 46 | {{151},{ 9}}, {{407},{ 9}}, {{ 87},{ 9}}, {{343},{ 9}}, {{215},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 47 | {{471},{ 9}}, {{ 55},{ 9}}, {{311},{ 9}}, {{183},{ 9}}, {{439},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 48 | {{119},{ 9}}, {{375},{ 9}}, {{247},{ 9}}, {{503},{ 9}}, {{ 15},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 49 | {{271},{ 9}}, {{143},{ 9}}, {{399},{ 9}}, {{ 79},{ 9}}, {{335},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 50 | {{207},{ 9}}, {{463},{ 9}}, {{ 47},{ 9}}, {{303},{ 9}}, {{175},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 51 | {{431},{ 9}}, {{111},{ 9}}, {{367},{ 9}}, {{239},{ 9}}, {{495},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 52 | {{ 31},{ 9}}, {{287},{ 9}}, {{159},{ 9}}, {{415},{ 9}}, {{ 95},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 53 | {{351},{ 9}}, {{223},{ 9}}, {{479},{ 9}}, {{ 63},{ 9}}, {{319},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 54 | {{191},{ 9}}, {{447},{ 9}}, {{127},{ 9}}, {{383},{ 9}}, {{255},{ 9}}, |
| jonathonfletcher | 0:54f5be781526 | 55 | {{511},{ 9}}, {{ 0},{ 7}}, {{ 64},{ 7}}, {{ 32},{ 7}}, {{ 96},{ 7}}, |
| jonathonfletcher | 0:54f5be781526 | 56 | {{ 16},{ 7}}, {{ 80},{ 7}}, {{ 48},{ 7}}, {{112},{ 7}}, {{ 8},{ 7}}, |
| jonathonfletcher | 0:54f5be781526 | 57 | {{ 72},{ 7}}, {{ 40},{ 7}}, {{104},{ 7}}, {{ 24},{ 7}}, {{ 88},{ 7}}, |
| jonathonfletcher | 0:54f5be781526 | 58 | {{ 56},{ 7}}, {{120},{ 7}}, {{ 4},{ 7}}, {{ 68},{ 7}}, {{ 36},{ 7}}, |
| jonathonfletcher | 0:54f5be781526 | 59 | {{100},{ 7}}, {{ 20},{ 7}}, {{ 84},{ 7}}, {{ 52},{ 7}}, {{116},{ 7}}, |
| jonathonfletcher | 0:54f5be781526 | 60 | {{ 3},{ 8}}, {{131},{ 8}}, {{ 67},{ 8}}, {{195},{ 8}}, {{ 35},{ 8}}, |
| jonathonfletcher | 0:54f5be781526 | 61 | {{163},{ 8}}, {{ 99},{ 8}}, {{227},{ 8}} |
| jonathonfletcher | 0:54f5be781526 | 62 | }; |
| jonathonfletcher | 0:54f5be781526 | 63 | |
| jonathonfletcher | 0:54f5be781526 | 64 | local const ct_data static_dtree[D_CODES] = { |
| jonathonfletcher | 0:54f5be781526 | 65 | {{ 0},{ 5}}, {{16},{ 5}}, {{ 8},{ 5}}, {{24},{ 5}}, {{ 4},{ 5}}, |
| jonathonfletcher | 0:54f5be781526 | 66 | {{20},{ 5}}, {{12},{ 5}}, {{28},{ 5}}, {{ 2},{ 5}}, {{18},{ 5}}, |
| jonathonfletcher | 0:54f5be781526 | 67 | {{10},{ 5}}, {{26},{ 5}}, {{ 6},{ 5}}, {{22},{ 5}}, {{14},{ 5}}, |
| jonathonfletcher | 0:54f5be781526 | 68 | {{30},{ 5}}, {{ 1},{ 5}}, {{17},{ 5}}, {{ 9},{ 5}}, {{25},{ 5}}, |
| jonathonfletcher | 0:54f5be781526 | 69 | {{ 5},{ 5}}, {{21},{ 5}}, {{13},{ 5}}, {{29},{ 5}}, {{ 3},{ 5}}, |
| jonathonfletcher | 0:54f5be781526 | 70 | {{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}} |
| jonathonfletcher | 0:54f5be781526 | 71 | }; |
| jonathonfletcher | 0:54f5be781526 | 72 | |
| jonathonfletcher | 0:54f5be781526 | 73 | const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = { |
| jonathonfletcher | 0:54f5be781526 | 74 | 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, |
| jonathonfletcher | 0:54f5be781526 | 75 | 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, |
| jonathonfletcher | 0:54f5be781526 | 76 | 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, |
| jonathonfletcher | 0:54f5be781526 | 77 | 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, |
| jonathonfletcher | 0:54f5be781526 | 78 | 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, |
| jonathonfletcher | 0:54f5be781526 | 79 | 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, |
| jonathonfletcher | 0:54f5be781526 | 80 | 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, |
| jonathonfletcher | 0:54f5be781526 | 81 | 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, |
| jonathonfletcher | 0:54f5be781526 | 82 | 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, |
| jonathonfletcher | 0:54f5be781526 | 83 | 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, |
| jonathonfletcher | 0:54f5be781526 | 84 | 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
| jonathonfletcher | 0:54f5be781526 | 85 | 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
| jonathonfletcher | 0:54f5be781526 | 86 | 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, |
| jonathonfletcher | 0:54f5be781526 | 87 | 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, |
| jonathonfletcher | 0:54f5be781526 | 88 | 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, |
| jonathonfletcher | 0:54f5be781526 | 89 | 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, |
| jonathonfletcher | 0:54f5be781526 | 90 | 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, |
| jonathonfletcher | 0:54f5be781526 | 91 | 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, |
| jonathonfletcher | 0:54f5be781526 | 92 | 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, |
| jonathonfletcher | 0:54f5be781526 | 93 | 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, |
| jonathonfletcher | 0:54f5be781526 | 94 | 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, |
| jonathonfletcher | 0:54f5be781526 | 95 | 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, |
| jonathonfletcher | 0:54f5be781526 | 96 | 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, |
| jonathonfletcher | 0:54f5be781526 | 97 | 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, |
| jonathonfletcher | 0:54f5be781526 | 98 | 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, |
| jonathonfletcher | 0:54f5be781526 | 99 | 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29 |
| jonathonfletcher | 0:54f5be781526 | 100 | }; |
| jonathonfletcher | 0:54f5be781526 | 101 | |
| jonathonfletcher | 0:54f5be781526 | 102 | const uch ZLIB_INTERNAL _length_code[MAX_MATCH-MIN_MATCH+1]= { |
| jonathonfletcher | 0:54f5be781526 | 103 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, |
| jonathonfletcher | 0:54f5be781526 | 104 | 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, |
| jonathonfletcher | 0:54f5be781526 | 105 | 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, |
| jonathonfletcher | 0:54f5be781526 | 106 | 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, |
| jonathonfletcher | 0:54f5be781526 | 107 | 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, |
| jonathonfletcher | 0:54f5be781526 | 108 | 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, |
| jonathonfletcher | 0:54f5be781526 | 109 | 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, |
| jonathonfletcher | 0:54f5be781526 | 110 | 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, |
| jonathonfletcher | 0:54f5be781526 | 111 | 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, |
| jonathonfletcher | 0:54f5be781526 | 112 | 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, |
| jonathonfletcher | 0:54f5be781526 | 113 | 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, |
| jonathonfletcher | 0:54f5be781526 | 114 | 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, |
| jonathonfletcher | 0:54f5be781526 | 115 | 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28 |
| jonathonfletcher | 0:54f5be781526 | 116 | }; |
| jonathonfletcher | 0:54f5be781526 | 117 | |
| jonathonfletcher | 0:54f5be781526 | 118 | local const int base_length[LENGTH_CODES] = { |
| jonathonfletcher | 0:54f5be781526 | 119 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, |
| jonathonfletcher | 0:54f5be781526 | 120 | 64, 80, 96, 112, 128, 160, 192, 224, 0 |
| jonathonfletcher | 0:54f5be781526 | 121 | }; |
| jonathonfletcher | 0:54f5be781526 | 122 | |
| jonathonfletcher | 0:54f5be781526 | 123 | local const int base_dist[D_CODES] = { |
| jonathonfletcher | 0:54f5be781526 | 124 | 0, 1, 2, 3, 4, 6, 8, 12, 16, 24, |
| jonathonfletcher | 0:54f5be781526 | 125 | 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, |
| jonathonfletcher | 0:54f5be781526 | 126 | 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576 |
| jonathonfletcher | 0:54f5be781526 | 127 | }; |
| jonathonfletcher | 0:54f5be781526 | 128 |