mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-09 00:07:00 -06:00
60 lines
2.1 KiB
C
60 lines
2.1 KiB
C
/*
|
|
* Copyright (c) 2018, Conor McCarthy
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under both the BSD-style license (found in the
|
|
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
* in the COPYING file in the root directory of this source tree).
|
|
* You may select, at your option, one of the above-listed licenses.
|
|
*/
|
|
|
|
#ifndef RADIX_MF_H
|
|
#define RADIX_MF_H
|
|
|
|
#include "fast-lzma2.h"
|
|
#include "data_block.h"
|
|
|
|
#if defined (__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct FL2_matchTable_s FL2_matchTable;
|
|
|
|
#define OVERLAP_FROM_DICT_LOG(d, o) (((size_t)1 << ((d) - 4)) * (o))
|
|
|
|
#define RMF_MIN_BYTES_PER_THREAD 1024
|
|
|
|
typedef struct
|
|
{
|
|
unsigned dictionary_log;
|
|
unsigned match_buffer_log;
|
|
unsigned overlap_fraction;
|
|
unsigned block_size_log;
|
|
unsigned divide_and_conquer;
|
|
unsigned depth;
|
|
#ifdef RMF_REFERENCE
|
|
unsigned use_ref_mf;
|
|
#endif
|
|
} RMF_parameters;
|
|
|
|
FL2_matchTable* RMF_createMatchTable(const RMF_parameters* const params, size_t const dict_reduce, unsigned const thread_count);
|
|
void RMF_freeMatchTable(FL2_matchTable* const tbl);
|
|
BYTE RMF_compatibleParameters(const FL2_matchTable* const tbl, const RMF_parameters* const params, size_t const dict_reduce);
|
|
size_t RMF_applyParameters(FL2_matchTable* const tbl, const RMF_parameters* const params, size_t const dict_reduce);
|
|
size_t RMF_threadCount(const FL2_matchTable * const tbl);
|
|
size_t RMF_initTable(FL2_matchTable* const tbl, const void* const data, size_t const start, size_t const end);
|
|
int RMF_buildTable(FL2_matchTable* const tbl,
|
|
size_t const job,
|
|
unsigned const multi_thread,
|
|
FL2_dataBlock const block,
|
|
FL2_progressFn progress, void* opaque, U32 weight, size_t init_done);
|
|
int RMF_integrityCheck(const FL2_matchTable* const tbl, const BYTE* const data, size_t const index, size_t const end, unsigned const max_depth);
|
|
void RMF_limitLengths(FL2_matchTable* const tbl, size_t const index);
|
|
BYTE* RMF_getTableAsOutputBuffer(FL2_matchTable* const tbl, size_t const index);
|
|
size_t RMF_memoryUsage(unsigned const dict_log, unsigned const buffer_log, unsigned const depth, unsigned thread_count);
|
|
|
|
#if defined (__cplusplus)
|
|
}
|
|
#endif
|
|
|
|
#endif /* RADIX_MF_H */ |