+++ /dev/null
-/** @file\r
- Compression DLL used by PCD Tools\r
-\r
- Copyright (c) 2006, Intel Corporation All rights reserved.\r
- This program and the accompanying materials are licensed and made available \r
- under the terms and conditions of the BSD License which accompanies this \r
- distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-#if defined(__GNUC__)\r
-typedef long long __int64;/*For cygwin build*/\r
-#endif\r
-#include "CompressDll.h"\r
-#include "Compress.h"\r
-\r
-extern\r
-EFI_STATUS\r
-EfiCompress (\r
- IN UINT8 *SrcBuffer,\r
- IN UINT32 SrcSize,\r
- IN UINT8 *DstBuffer,\r
- IN OUT UINT32 *DstSize\r
- );\r
- \r
-JNIEXPORT jbyteArray JNICALL Java_org_tianocore_framework_tasks_Compress_CallCompress \r
-(JNIEnv *env, jobject obj, jbyteArray SourceBuffer, jint SourceSize, jstring path)\r
-{\r
- char* DestBuffer;\r
- int DestSize; \r
- int Result;\r
- char *InputBuffer;\r
- jbyteArray OutputBuffer;\r
- jbyte *TempByte;\r
- \r
- DestSize = 0;\r
- DestBuffer = NULL;\r
- \r
- TempByte = (*env)->GetByteArrayElements(env, SourceBuffer, 0);\r
- InputBuffer = (char*) TempByte;\r
-\r
- \r
- //\r
- // First call compress function and get need buffer size\r
- //\r
-\r
- Result = EfiCompress (\r
- (char*) InputBuffer, \r
- SourceSize, \r
- DestBuffer,\r
- &DestSize\r
- );\r
-\r
- if (Result = EFI_BUFFER_TOO_SMALL) {\r
- DestBuffer = malloc (DestSize);\r
- }\r
-\r
- //\r
- // Second call compress and get the DestBuffer value\r
- //\r
- Result = EfiCompress(\r
- (char*) InputBuffer, \r
- SourceSize, \r
- DestBuffer,\r
- &DestSize \r
- );\r
-\r
- //\r
- // new a MV array to store the return compressed buffer\r
- //\r
- OutputBuffer = (*env)->NewByteArray(env, DestSize);\r
- (*env)->SetByteArrayRegion(env, OutputBuffer,0, DestSize, (jbyte*) DestBuffer);\r
-\r
- //\r
- // Free Ouputbuffer.\r
- //\r
- free (DestBuffer);\r
- \r
-\r
- if (Result != 0) {\r
- return NULL;\r
- } else {\r
- return OutputBuffer;\r
- }\r
-}\r
-\r
-#ifdef _MSC_VER\r
-BOOLEAN \r
-__stdcall \r
-DllMainCRTStartup(\r
- unsigned int hDllHandle, \r
- unsigned int nReason, \r
- void* Reserved \r
-)\r
-{\r
- return TRUE;\r
-}\r
-#else\r
-#ifdef __GNUC__\r
-#endif\r
-#endif\r
-\r