36 lines
888 B
C++
36 lines
888 B
C++
#pragma once
|
|
|
|
#include "MiniLZO/minilzo.h"
|
|
|
|
#if defined( __LZO_STRICT_16BIT )
|
|
#define __LZO_IN_LEN ( 8 * 1024u )
|
|
#elif defined( LZO_ARCH_I086 ) && !defined( LZO_HAVE_MM_HUGE_ARRAY )
|
|
#define __LZO_IN_LEN ( 60 * 1024u )
|
|
#else
|
|
#define __LZO_IN_LEN ( 128 * 1024ul )
|
|
#endif
|
|
#define __LZO_OUT_LEN ( __LZO_IN_LEN + __LZO_IN_LEN / 16 + 64 + 3 )
|
|
|
|
#define __LZO_HEAP_ALLOC( var, size ) \
|
|
lzo_align_t __LZO_MMODEL var[( size + ( sizeof( lzo_align_t ) - 1 ) ) / sizeof( lzo_align_t )]
|
|
|
|
namespace Crypt
|
|
{
|
|
class LZO
|
|
{
|
|
public:
|
|
LZO();
|
|
~LZO();
|
|
|
|
bool Compress( char* src, int srcLen, char* dest, int* destLen );
|
|
bool Decompress( char* src, int srcLen, char* dest, int* destLen );
|
|
|
|
|
|
|
|
unsigned char __LZO_MMODEL m_dataBuffer[__LZO_IN_LEN];
|
|
unsigned char __LZO_MMODEL m_outBuffer[__LZO_OUT_LEN];
|
|
|
|
private:
|
|
__LZO_HEAP_ALLOC( wrkmem, LZO1X_1_MEM_COMPRESS );
|
|
};
|
|
} |