#ifndef CRC_FAST_H
#define CRC_FAST_H
#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
typedef enum CrcFastAlgorithm {
Crc32Aixm,
Crc32Autosar,
Crc32Base91D,
Crc32Bzip2,
Crc32CdRomEdc,
Crc32Cksum,
Crc32Iscsi,
Crc32IsoHdlc,
Crc32Jamcrc,
Crc32Mef,
Crc32Mpeg2,
Crc32Xfer,
Crc64Ecma182,
Crc64GoIso,
Crc64Ms,
Crc64Nvme,
Crc64Redis,
Crc64We,
Crc64Xz,
} CrcFastAlgorithm;
typedef struct CrcFastDigest CrcFastDigest;
typedef struct CrcFastDigestHandle {
struct CrcFastDigest *_0;
} CrcFastDigestHandle;
#ifdef __cplusplus
extern "C" {
#endif
struct CrcFastDigestHandle *crc_fast_digest_new(enum CrcFastAlgorithm algorithm);
void crc_fast_digest_update(struct CrcFastDigestHandle *handle, const char *data, uintptr_t len);
uint64_t crc_fast_digest_finalize(struct CrcFastDigestHandle *handle);
void crc_fast_digest_free(struct CrcFastDigestHandle *handle);
void crc_fast_digest_reset(struct CrcFastDigestHandle *handle);
uint64_t crc_fast_digest_finalize_reset(struct CrcFastDigestHandle *handle);
void crc_fast_digest_combine(struct CrcFastDigestHandle *handle1,
struct CrcFastDigestHandle *handle2);
uint64_t crc_fast_digest_get_amount(struct CrcFastDigestHandle *handle);
uint64_t crc_fast_checksum(enum CrcFastAlgorithm algorithm, const char *data, uintptr_t len);
uint64_t crc_fast_checksum_file(enum CrcFastAlgorithm algorithm,
const uint8_t *path_ptr,
uintptr_t path_len);
uint64_t crc_fast_checksum_combine(enum CrcFastAlgorithm algorithm,
uint64_t checksum1,
uint64_t checksum2,
uint64_t checksum2_len);
const char *crc_fast_get_calculator_target(enum CrcFastAlgorithm algorithm);
const char *crc_fast_get_version(void);
#ifdef __cplusplus
} #endif
#endif