incremental CRC-32 More...
#include "cgul_exception.h"

Typedefs | |
| typedef typedefCGUL_BEGIN_C struct cgul_crc32_incr * | cgul_crc32_incr_t |
This class is a wrapper around the cgul_crc32 class. It is designed so that CRC-32 values can be calculated incrementally. The problem is that cgul_crc32__crc() must be called to calculate the final CRC-32 value, but this operation destroys the previous state making it otherwise impossible to continue a CRC-32 calculation based on data already consumed. Without anything else, you would have to re-calculate the entire CRC-32 value from scratch. This class lets you incrementally calculate CRC-32 values by saving the intermediate state between calls to cgul_crc32__crc().
| typedef typedefCGUL_BEGIN_C struct cgul_crc32_incr* cgul_crc32_incr_t |
Opaque pointer to a cgul_crc32_incr instance.
| CGUL_EXPORT cgul_crc32_incr_t cgul_crc32_incr__new | ( | cgul_exception_t * | cex, |
| unsigned long | g, | ||
| unsigned long | init, | ||
| unsigned long | final_xor, | ||
| int | reflected | ||
| ) |
Create a new cgul_crc32_incr object. Objects created with this constructor do not append the size to the data stream that is CRCed. The client is responsible for calling cgul_crc32_incr__delete() on the object returned. If an error occurs, NULL is returned, and an exception is thrown.
| [in,out] | cex | c-style exception |
| [in] | g | generator polynomial |
| [in] | init | initial value loaded into the accumulator |
| [in] | final_xor | value to xor with the calculated crc |
| [in] | reflected | whether to use the reflected algorithm |
cgul_crc32_incr instance Referenced by cgul_crc32_incr_cxx::cgul_crc32_incr_cxx().
| CGUL_EXPORT cgul_crc32_incr_t cgul_crc32_incr__new_appends_size | ( | cgul_exception_t * | cex, |
| unsigned long | g, | ||
| unsigned long | init, | ||
| unsigned long | final_xor, | ||
| int | reflected, | ||
| size_t | size_xor | ||
| ) |
Create a new cgul_crc32_incr object. Objects created with this constructor append the size to the data stream that is CRCed. The client is responsible for calling cgul_crc32_incr__delete() on the object returned. If an error occurs, NULL is returned, and an exception is thrown.
| [in,out] | cex | c-style exception |
| [in] | g | polynomial |
| [in] | init | initial value loaded into the accumulator |
| [in] | final_xor | value to xor with the calculated crc |
| [in] | reflected | whether to use the reflected algorithm |
| [in] | size_xor | value to xor with the size before appending |
cgul_crc32_incr instance Referenced by cgul_crc32_incr_cxx::cgul_crc32_incr_cxx().
| CGUL_EXPORT void cgul_crc32_incr__delete | ( | cgul_crc32_incr_t | crc | ) |
This function frees all internally allocated resources associated with the crc instance. The client must not attempt to use crc after calling this method.
| [in] | crc | cgul_crc32_incr instance |
Referenced by cgul_crc32_incr_cxx::set_obj(), and cgul_crc32_incr_cxx::~cgul_crc32_incr_cxx().
| CGUL_EXPORT void cgul_crc32_incr__assign | ( | cgul_exception_t * | cex, |
| cgul_crc32_incr_t | lhs, | ||
| cgul_crc32_incr_t | rhs | ||
| ) |
Assign the current state of of rhs to lhs. This operation probably only makes sense if lhs and rhs have been constructed identically. If an error occurs, an exception is thrown.
| [in,out] | cex | c-style exception |
| [in] | lhs | left-hand side |
| [in] | rhs | right-hand side |
Referenced by cgul_crc32_incr_cxx::assign().
| CGUL_EXPORT unsigned long cgul_crc32_incr__crc | ( | cgul_exception_t * | cex, |
| cgul_crc32_incr_t | crc | ||
| ) |
This method completes the CRC calculation by performing the size XOR and the final XOR. Unlike cgul_crc32__crc(), this method does not reset the CRC-32 calculation. Instead, the current CRC-32 calculation can be continued with subsequent calls to cgul_crc32_incr__update_block(). The return value is the current value for the entire CRC-32 calculation. If an error occurs, an exception is thrown.
| [in,out] | cex | c-style exception |
| [in] | crc | cgul_crc32_incr instance |
Referenced by cgul_crc32_incr_cxx::crc().
| CGUL_EXPORT void cgul_crc32_incr__update_block | ( | cgul_exception_t * | cex, |
| cgul_crc32_incr_t | crc, | ||
| const void * | block, | ||
| size_t | length | ||
| ) |
This method updates the CRC by adding all the bytes in block to the calculation.
| [in] | cex | c-style exception |
| [in] | crc | cgul_crc32_incr instance |
| [in] | block | block of data to add to the crc |
| [in] | length | length of block |
Referenced by cgul_crc32_incr_cxx::update_block().
| CGUL_EXPORT void cgul_crc32_incr__update_file | ( | cgul_exception_t * | cex, |
| cgul_crc32_incr_t | crc, | ||
| FILE * | f | ||
| ) |
This method updates the CRC by adding all the bytes (starting at the current offset) in the file f to the calculation. If an error occurs, an exception is thrown.
| [in,out] | cex | c-style exception |
| [in] | crc | cgul_crc32_incr instance |
| [in] | f | input file |
Referenced by cgul_crc32_incr_cxx::update_file().
| CGUL_EXPORT void cgul_crc32_incr__update_fname | ( | cgul_exception_t * | cex, |
| cgul_crc32_incr_t | crc, | ||
| const char * | fname | ||
| ) |
This method updates the CRC by adding all the bytes in the file with name fname to the calculation. If an error occurs, an exception is thrown.
| [in,out] | cex | c-style exception |
| [in] | crc | cgul_crc32_incr instance |
| [in] | fname | input file name |
Referenced by cgul_crc32_incr_cxx::update_fname().
| CGUL_EXPORT void cgul_crc32_incr__reset | ( | cgul_exception_t * | cex, |
| cgul_crc32_incr_t | crc | ||
| ) |
Reset to the initial internal state.
| [in] | cex | c-style exception |
| [in] | crc | cgul_crc32_incr instance |
Referenced by cgul_crc32_incr_cxx::reset().