]> git.proxmox.com Git - mirror_edk2.git/blobdiff - AppPkg/Applications/Python/Python-2.7.10/Modules/zlib/inftrees.h
AppPkg/Applications/Python/Python-2.7.10: Initial Checkin part 2/5.
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.10 / Modules / zlib / inftrees.h
diff --git a/AppPkg/Applications/Python/Python-2.7.10/Modules/zlib/inftrees.h b/AppPkg/Applications/Python/Python-2.7.10/Modules/zlib/inftrees.h
new file mode 100644 (file)
index 0000000..a685d8c
--- /dev/null
@@ -0,0 +1,62 @@
+/* inftrees.h -- header to use inftrees.c\r
+ * Copyright (C) 1995-2005, 2010 Mark Adler\r
+ * For conditions of distribution and use, see copyright notice in zlib.h\r
+ */\r
+\r
+/* WARNING: this file should *not* be used by applications. It is\r
+   part of the implementation of the compression library and is\r
+   subject to change. Applications should only use zlib.h.\r
+ */\r
+\r
+/* Structure for decoding tables.  Each entry provides either the\r
+   information needed to do the operation requested by the code that\r
+   indexed that table entry, or it provides a pointer to another\r
+   table that indexes more bits of the code.  op indicates whether\r
+   the entry is a pointer to another table, a literal, a length or\r
+   distance, an end-of-block, or an invalid code.  For a table\r
+   pointer, the low four bits of op is the number of index bits of\r
+   that table.  For a length or distance, the low four bits of op\r
+   is the number of extra bits to get after the code.  bits is\r
+   the number of bits in this code or part of the code to drop off\r
+   of the bit buffer.  val is the actual byte to output in the case\r
+   of a literal, the base length or distance, or the offset from\r
+   the current table to the next table.  Each entry is four bytes. */\r
+typedef struct {\r
+    unsigned char op;           /* operation, extra bits, table bits */\r
+    unsigned char bits;         /* bits in this part of the code */\r
+    unsigned short val;         /* offset in table or code value */\r
+} code;\r
+\r
+/* op values as set by inflate_table():\r
+    00000000 - literal\r
+    0000tttt - table link, tttt != 0 is the number of table index bits\r
+    0001eeee - length or distance, eeee is the number of extra bits\r
+    01100000 - end of block\r
+    01000000 - invalid code\r
+ */\r
+\r
+/* Maximum size of the dynamic table.  The maximum number of code structures is\r
+   1444, which is the sum of 852 for literal/length codes and 592 for distance\r
+   codes.  These values were found by exhaustive searches using the program\r
+   examples/enough.c found in the zlib distribtution.  The arguments to that\r
+   program are the number of symbols, the initial root table size, and the\r
+   maximum bit length of a code.  "enough 286 9 15" for literal/length codes\r
+   returns returns 852, and "enough 30 6 15" for distance codes returns 592.\r
+   The initial root table size (9 or 6) is found in the fifth argument of the\r
+   inflate_table() calls in inflate.c and infback.c.  If the root table size is\r
+   changed, then these maximum sizes would be need to be recalculated and\r
+   updated. */\r
+#define ENOUGH_LENS 852\r
+#define ENOUGH_DISTS 592\r
+#define ENOUGH (ENOUGH_LENS+ENOUGH_DISTS)\r
+\r
+/* Type of code to build for inflate_table() */\r
+typedef enum {\r
+    CODES,\r
+    LENS,\r
+    DISTS\r
+} codetype;\r
+\r
+int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens,\r
+                             unsigned codes, code FAR * FAR *table,\r
+                             unsigned FAR *bits, unsigned short FAR *work));\r