Page Menu
Home
Phabricator (Chris)
Search
Configure Global Search
Log In
Files
F620884
LzFind.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Authored By
Unknown
Size
3 KB
Referenced Files
None
Subscribers
None
LzFind.h
View Options
/* LzFind.h -- Match finder for LZ algorithms
2009-04-22 : Igor Pavlov : Public domain */
#ifndef __LZ_FIND_H
#define __LZ_FIND_H
#include
"Types.h"
#ifdef __cplusplus
extern
"C"
{
#endif
typedef
UInt32
CLzRef
;
typedef
struct
_CMatchFinder
{
Byte
*
buffer
;
UInt32
pos
;
UInt32
posLimit
;
UInt32
streamPos
;
UInt32
lenLimit
;
UInt32
cyclicBufferPos
;
UInt32
cyclicBufferSize
;
/* it must be = (historySize + 1) */
UInt32
matchMaxLen
;
CLzRef
*
hash
;
CLzRef
*
son
;
UInt32
hashMask
;
UInt32
cutValue
;
Byte
*
bufferBase
;
ISeqInStream
*
stream
;
int
streamEndWasReached
;
UInt32
blockSize
;
UInt32
keepSizeBefore
;
UInt32
keepSizeAfter
;
UInt32
numHashBytes
;
int
directInput
;
size_t
directInputRem
;
int
btMode
;
int
bigHash
;
UInt32
historySize
;
UInt32
fixedHashSize
;
UInt32
hashSizeSum
;
UInt32
numSons
;
SRes
result
;
UInt32
crc
[
256
];
}
CMatchFinder
;
#define Inline_MatchFinder_GetPointerToCurrentPos(p) ((p)->buffer)
#define Inline_MatchFinder_GetIndexByte(p, index) ((p)->buffer[(Int32)(index)])
#define Inline_MatchFinder_GetNumAvailableBytes(p) ((p)->streamPos - (p)->pos)
int
MatchFinder_NeedMove
(
CMatchFinder
*
p
);
Byte
*
MatchFinder_GetPointerToCurrentPos
(
CMatchFinder
*
p
);
void
MatchFinder_MoveBlock
(
CMatchFinder
*
p
);
void
MatchFinder_ReadIfRequired
(
CMatchFinder
*
p
);
void
MatchFinder_Construct
(
CMatchFinder
*
p
);
/* Conditions:
historySize <= 3 GB
keepAddBufferBefore + matchMaxLen + keepAddBufferAfter < 511MB
*/
int
MatchFinder_Create
(
CMatchFinder
*
p
,
UInt32
historySize
,
UInt32
keepAddBufferBefore
,
UInt32
matchMaxLen
,
UInt32
keepAddBufferAfter
,
ISzAlloc
*
alloc
);
void
MatchFinder_Free
(
CMatchFinder
*
p
,
ISzAlloc
*
alloc
);
void
MatchFinder_Normalize3
(
UInt32
subValue
,
CLzRef
*
items
,
UInt32
numItems
);
void
MatchFinder_ReduceOffsets
(
CMatchFinder
*
p
,
UInt32
subValue
);
UInt32
*
GetMatchesSpec1
(
UInt32
lenLimit
,
UInt32
curMatch
,
UInt32
pos
,
const
Byte
*
buffer
,
CLzRef
*
son
,
UInt32
_cyclicBufferPos
,
UInt32
_cyclicBufferSize
,
UInt32
_cutValue
,
UInt32
*
distances
,
UInt32
maxLen
);
/*
Conditions:
Mf_GetNumAvailableBytes_Func must be called before each Mf_GetMatchLen_Func.
Mf_GetPointerToCurrentPos_Func's result must be used only before any other function
*/
typedef
void
(
*
Mf_Init_Func
)(
void
*
object
);
typedef
Byte
(
*
Mf_GetIndexByte_Func
)(
void
*
object
,
Int32
index
);
typedef
UInt32
(
*
Mf_GetNumAvailableBytes_Func
)(
void
*
object
);
typedef
const
Byte
*
(
*
Mf_GetPointerToCurrentPos_Func
)(
void
*
object
);
typedef
UInt32
(
*
Mf_GetMatches_Func
)(
void
*
object
,
UInt32
*
distances
);
typedef
void
(
*
Mf_Skip_Func
)(
void
*
object
,
UInt32
);
typedef
struct
_IMatchFinder
{
Mf_Init_Func
Init
;
Mf_GetIndexByte_Func
GetIndexByte
;
Mf_GetNumAvailableBytes_Func
GetNumAvailableBytes
;
Mf_GetPointerToCurrentPos_Func
GetPointerToCurrentPos
;
Mf_GetMatches_Func
GetMatches
;
Mf_Skip_Func
Skip
;
}
IMatchFinder
;
void
MatchFinder_CreateVTable
(
CMatchFinder
*
p
,
IMatchFinder
*
vTable
);
void
MatchFinder_Init
(
CMatchFinder
*
p
);
UInt32
Bt3Zip_MatchFinder_GetMatches
(
CMatchFinder
*
p
,
UInt32
*
distances
);
UInt32
Hc3Zip_MatchFinder_GetMatches
(
CMatchFinder
*
p
,
UInt32
*
distances
);
void
Bt3Zip_MatchFinder_Skip
(
CMatchFinder
*
p
,
UInt32
num
);
void
Hc3Zip_MatchFinder_Skip
(
CMatchFinder
*
p
,
UInt32
num
);
#ifdef __cplusplus
}
#endif
#endif
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Sat, Nov 14, 6:32 PM (17 h, 18 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
135422
Default Alt Text
LzFind.h (3 KB)
Attached To
Mode
R75 R-Tech1
Attached
Detach File
Event Timeline