Added Extract interface for easier wrapping of decompressor in Python
authorjwang36 <jwang36@7335b38e-4728-0410-8992-fb3ffe349368>
Mon, 28 Apr 2008 03:13:42 +0000 (03:13 +0000)
committerjwang36 <jwang36@7335b38e-4728-0410-8992-fb3ffe349368>
Mon, 28 Apr 2008 03:13:42 +0000 (03:13 +0000)
git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@1180 7335b38e-4728-0410-8992-fb3ffe349368

Source/C/Common/Decompress.c
Source/C/Common/Decompress.h

index a76dd25..8e54b5d 100644 (file)
@@ -921,3 +921,37 @@ Returns:
   mPbit = MAXPBIT;\r
   return Decompress (Source, SrcSize, Destination, DstSize, Scratch, ScratchSize);\r
 }\r
   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
index fa7b202..8bcf504 100644 (file)
@@ -159,4 +159,14 @@ EFI_STATUS
   IN OUT  VOID    *Scratch,\r
   IN      UINT32  ScratchSize\r
   );\r
   IN OUT  VOID    *Scratch,\r
   IN      UINT32  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
 #endif\r
 #endif\r