Added Extract interface for easier wrapping of decompressor in Python
[people/mcb30/basetools.git] / Source / C / Common / Decompress.c
index a76dd25..8e54b5d 100644 (file)
@@ -921,3 +921,37 @@ Returns:
   mPbit = MAXPBIT;\r
   return Decompress (Source, SrcSize, Destination, DstSize, Scratch, ScratchSize);\r
 }\r
+\r
+EFI_STATUS\r
+Extract (\r
+  IN      VOID    *Source,\r
+  IN      UINT32  SrcSize,\r
+  IN OUT  VOID    *Destination,\r
+  IN      UINT32  DstSize,\r
+  IN      UINT    Algorithm\r
+  )\r
+{\r
+  SCRATCH_DATA  Scratch;\r
+  EFI_STATUS    Status;\r
+\r
+  Status = EFI_SUCCESS;\r
+  switch (Algorithm) {\r
+  case 0:\r
+    if (SrcSize != DstSize) {\r
+      return EFI_INVALID_PARAMETER;\r
+    }\r
+    memcpy(Destination, Source, DstSize);\r
+    break;\r
+  case 1:\r
+    Status = EfiDecompress(Source, SrcSize, Destination, DstSize, &Scratch, sizeof(SCRATCH_DATA));\r
+    break;\r
+  case 2:\r
+    Status = TianoDecompress(Source, SrcSize, Destination, DstSize, &Scratch, sizeof(SCRATCH_DATA));\r
+    break;\r
+  default:\r
+    Status = EFI_INVALID_PARAMETER;    \r
+  }\r
+\r
+  return Status;\r
+}\r
+\r