diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 02:57:58 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 02:57:58 +0000 |
commit | be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97 (patch) | |
tree | 9754ff1ca740f6346cf8483ec915d4054bc5da2d /fluent-bit/lib/chunkio/deps/crc32/crc32.h | |
parent | Initial commit. (diff) | |
download | netdata-be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97.tar.xz netdata-be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97.zip |
Adding upstream version 1.44.3.upstream/1.44.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'fluent-bit/lib/chunkio/deps/crc32/crc32.h')
-rw-r--r-- | fluent-bit/lib/chunkio/deps/crc32/crc32.h | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/fluent-bit/lib/chunkio/deps/crc32/crc32.h b/fluent-bit/lib/chunkio/deps/crc32/crc32.h new file mode 100644 index 00000000..c3ec3fa3 --- /dev/null +++ b/fluent-bit/lib/chunkio/deps/crc32/crc32.h @@ -0,0 +1,107 @@ +/** + * \file + * Functions and types for CRC checks. + * + * Generated on Wed Mar 18 12:41:20 2020 + * by pycrc v0.9.2, https://pycrc.org + * using the configuration: + * - Width = 32 + * - Poly = 0x04c11db7 + * - XorIn = 0xffffffff + * - ReflectIn = True + * - XorOut = 0xffffffff + * - ReflectOut = True + * - Algorithm = table-driven + * - SliceBy = 8 + * + * This file defines the functions crc_init(), crc_update() and crc_finalize(). + * + * The crc_init() function returns the inital \c crc value and must be called + * before the first call to crc_update(). + * Similarly, the crc_finalize() function must be called after the last call + * to crc_update(), before the \c crc is being used. + * is being used. + * + * The crc_update() function can be called any number of times (including zero + * times) in between the crc_init() and crc_finalize() calls. + * + * This pseudo-code shows an example usage of the API: + * \code{.c} + * crc_t crc; + * unsigned char data[MAX_DATA_LEN]; + * size_t data_len; + * + * crc = crc_init(); + * while ((data_len = read_data(data, MAX_DATA_LEN)) > 0) { + * crc = crc_update(crc, data, data_len); + * } + * crc = crc_finalize(crc); + * \endcode + */ +#ifndef CRC32_H +#define CRC32_H + +#include <stdlib.h> +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * The definition of the used algorithm. + * + * This is not used anywhere in the generated code, but it may be used by the + * application code to call algorithm-specific code, if desired. + */ +#define CRC_ALGO_TABLE_DRIVEN 1 + + +/** + * The type of the CRC values. + * + * This type must be big enough to contain at least 32 bits. + */ +typedef uint_fast32_t crc_t; + + +/** + * Calculate the initial crc value. + * + * \return The initial crc value. + */ +static inline crc_t crc_init(void) +{ + return 0xffffffff; +} + + +/** + * Update the crc value with new data. + * + * \param[in] crc The current crc value. + * \param[in] data Pointer to a buffer of \a data_len bytes. + * \param[in] data_len Number of bytes in the \a data buffer. + * \return The updated crc value. + */ +crc_t crc_update(crc_t crc, const void *data, size_t data_len); + + +/** + * Calculate the final crc value. + * + * \param[in] crc The current crc value. + * \return The final crc value. + */ +static inline crc_t crc_finalize(crc_t crc) +{ + return crc ^ 0xffffffff; +} + + +#ifdef __cplusplus +} /* closing brace for extern "C" */ +#endif + +#endif /* CRC32_H */ |