//========= Copyright Valve Corporation, All rights reserved. ============//
//
//	Purpose: LZMA Glue. Designed for Tool time Encoding/Decoding.
//
//  LZMA Codec interface for engine. Based largely on LzmaUtil.c in SDK
//
//  LZMA SDK 9.38 beta
//  2015-01-03 : Igor Pavlov : Public domain
//  http://www.7-zip.org/
//
//====================================================================================//

#ifndef LZMA_H
#define LZMA_H

#ifdef _WIN32
#pragma once
#endif

//-----------------------------------------------------------------------------
//	These routines are designed for TOOL TIME encoding/decoding on the PC!
//	They have not been made to encode/decode on the PPC and lack big endian awarnesss.
//	Lightweight GAME TIME Decoding is part of tier1.lib, via CLZMA.
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Encoding glue. Returns non-null Compressed buffer if successful.
// Caller must free.
//-----------------------------------------------------------------------------
unsigned char *LZMA_Compress(
unsigned char	*pInput,
unsigned int	inputSize,
unsigned int	*pOutputSize );

//-----------------------------------------------------------------------------
// Above, but returns null if compression would not yield a size improvement
//-----------------------------------------------------------------------------
unsigned char *LZMA_OpportunisticCompress(
unsigned char	*pInput,
unsigned int	inputSize,
unsigned int	*pOutputSize );

//-----------------------------------------------------------------------------
// Decoding glue. Returns TRUE if succesful.
//-----------------------------------------------------------------------------
bool LZMA_Uncompress(
unsigned char	*pInput,
unsigned char	**ppOutput,
unsigned int	*pOutputSize );

//-----------------------------------------------------------------------------
// Decoding helper, returns TRUE if buffer is LZMA compressed.
//-----------------------------------------------------------------------------
bool LZMA_IsCompressed( unsigned char *pInput );

//-----------------------------------------------------------------------------
// Decoding helper, returns non-zero size of data when uncompressed, otherwise 0.
//-----------------------------------------------------------------------------
unsigned int LZMA_GetActualSize( unsigned char *pInput );

#endif