view README @ 1:90cb48b87dcc

*: don't hardcode the list of impls in multiple places
author Paper <paper@tflc.us>
date Mon, 09 Feb 2026 01:18:06 -0500
parents 422835bc1aca
children ead9f84d11db
line wrap: on
line source

This code was mostly written as an experiment, to see just how much
could be done using only the C preprocessor (give or take). Turns out
you can do quite a lot.

In fact, *all* of the tables in this library are generated at compile-time.
The polynomial is #define'd in crc32i.h, and all of the tables are generated
through a combination of enums and preprocessor trickery. Note that this
may cause this code to compile slowly on some machines or compilers.

At the moment it is hardcoded for x86-64 and gcc, but it could be adapted to
other compilers if they also have features like e.g. alignas() or whatever.
You'd also need to disable the x86 code which isn't difficult but is a bit
annoying.