/* ** Command & Conquer Renegade(tm) ** Copyright 2025 Electronic Arts Inc. ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . */ /*********************************************************************************************** *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S *** *********************************************************************************************** * * * Project Name : WWLib * * * * $Archive:: /Commando/Code/wwlib/lzo.cpp $* * * * Author:: Greg Hjelstrom * * * * $Modtime:: 8/24/01 5:07p $* * * * $Revision:: 7 $* * * *---------------------------------------------------------------------------------------------* * Functions: * * LZOCompressor::Compress -- compress a buffer using LZO * * LZOCompressor::Decompress -- decompress a buffer using LZO * * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ #include "lzo.h" #include "mutex.h" #include "wwdebug.h" #include /* ** Work Buffer for the LZOCompressor... */ lzo_byte LZOCompressor::WorkBuffer[LZO1X_MEM_COMPRESS + 1]; lzo_byte * LZOCompressor::EOWorkBuffer = &(LZOCompressor::WorkBuffer[LZO1X_MEM_COMPRESS + 1]); static CriticalSectionClass mutex; #define BUFFER_OVERRUN_TEST_VALUE ((char)0x7d) /*********************************************************************************************** * LZOCompressor::Compress -- compress a buffer using LZO * * * * INPUT: * * * * OUTPUT: * * * * WARNINGS: * * * * HISTORY: * * 7/19/99 GTH : Created. * *=============================================================================================*/ int LZOCompressor::Compress ( const lzo_byte * in, lzo_uint in_len, lzo_byte * out, lzo_uint * out_len ) { CriticalSectionClass::LockClass m(mutex); #ifdef WWDEBUG // Debugging code to verify that the work buffer is not overrun... *EOWorkBuffer = BUFFER_OVERRUN_TEST_VALUE; #endif int result = lzo1x_1_compress(in,in_len,out,out_len,WorkBuffer); #ifdef WWDEBUG WWASSERT(*EOWorkBuffer == BUFFER_OVERRUN_TEST_VALUE); #endif return result; } /*********************************************************************************************** * LZOCompressor::Decompress -- decompress a buffer using LZO * * * * INPUT: * * * * OUTPUT: * * * * WARNINGS: * * * * HISTORY: * * 7/19/99 GTH : Created. * *=============================================================================================*/ int LZOCompressor::Decompress ( const lzo_byte * in, lzo_uint in_len, lzo_byte * out, lzo_uint * out_len ) { CriticalSectionClass::LockClass m(mutex); return lzo1x_decompress(in,in_len,out,out_len,NULL); }