Files
Sun1602/Server/AuthSystem/CryptLib/LZO.h
T
2022-10-26 12:25:11 +08:00

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 );
};
}