xref: /aosp_15_r20/external/lzma/C/BwtSort.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker /* BwtSort.h -- BWT block sorting
2*f6dc9357SAndroid Build Coastguard Worker 2023-03-03 : Igor Pavlov : Public domain */
3*f6dc9357SAndroid Build Coastguard Worker 
4*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_BWT_SORT_H
5*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_BWT_SORT_H
6*f6dc9357SAndroid Build Coastguard Worker 
7*f6dc9357SAndroid Build Coastguard Worker #include "7zTypes.h"
8*f6dc9357SAndroid Build Coastguard Worker 
9*f6dc9357SAndroid Build Coastguard Worker EXTERN_C_BEGIN
10*f6dc9357SAndroid Build Coastguard Worker 
11*f6dc9357SAndroid Build Coastguard Worker /* use BLOCK_SORT_EXTERNAL_FLAGS if blockSize can be > 1M */
12*f6dc9357SAndroid Build Coastguard Worker /* #define BLOCK_SORT_EXTERNAL_FLAGS */
13*f6dc9357SAndroid Build Coastguard Worker 
14*f6dc9357SAndroid Build Coastguard Worker #ifdef BLOCK_SORT_EXTERNAL_FLAGS
15*f6dc9357SAndroid Build Coastguard Worker #define BLOCK_SORT_EXTERNAL_SIZE(blockSize) ((((blockSize) + 31) >> 5))
16*f6dc9357SAndroid Build Coastguard Worker #else
17*f6dc9357SAndroid Build Coastguard Worker #define BLOCK_SORT_EXTERNAL_SIZE(blockSize) 0
18*f6dc9357SAndroid Build Coastguard Worker #endif
19*f6dc9357SAndroid Build Coastguard Worker 
20*f6dc9357SAndroid Build Coastguard Worker #define BLOCK_SORT_BUF_SIZE(blockSize) ((blockSize) * 2 + BLOCK_SORT_EXTERNAL_SIZE(blockSize) + (1 << 16))
21*f6dc9357SAndroid Build Coastguard Worker 
22*f6dc9357SAndroid Build Coastguard Worker UInt32 BlockSort(UInt32 *indices, const Byte *data, UInt32 blockSize);
23*f6dc9357SAndroid Build Coastguard Worker 
24*f6dc9357SAndroid Build Coastguard Worker EXTERN_C_END
25*f6dc9357SAndroid Build Coastguard Worker 
26*f6dc9357SAndroid Build Coastguard Worker #endif
27