1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
#include "BinTreeMain.h"
namespace BT_NAMESPACE {
HRESULT CMatchFinderBinTree::Create(UINT32 aSizeHistory,
UINT32 aKeepAddBufferBefore, UINT32 aMatchMaxLen,
UINT32 aKeepAddBufferAfter)
{
const UINT32 kAlignMask = (1 << 16) - 1;
UINT32 aWindowReservSize = aSizeHistory / 2;
aWindowReservSize += kAlignMask;
aWindowReservSize &= ~(kAlignMask);
const int kMinDictSize = (1 << 19);
if (aWindowReservSize < kMinDictSize)
aWindowReservSize = kMinDictSize;
aWindowReservSize += 256;
try
{
return CInTree::Create(aSizeHistory, aKeepAddBufferBefore, aMatchMaxLen,
aKeepAddBufferAfter, aWindowReservSize);
}
catch(...)
{
return E_OUTOFMEMORY;
}
}
}
|